{
  "api_contract": "sourcey.catalog-api/v1",
  "release_id": "sha256:5f55a0147eca9a82d821b7cfb73339dd8059c146b9acbb6ed66c9e3d40a8e1b0",
  "artifact_sha256": "sha256:ec393385ec4e7be15a393d925f0df78d54a12787f2995a84fad1b570583dac06",
  "data": {
    "revision_contract": "sourcey.agent-readiness-revision/v1alpha1",
    "agent_readiness_profile_id": "arp_01kzf0m4xa1m8yr7cf5q2b9vn6",
    "entity_id": "ent_01kyh8fpe3new9gxd18qs3bskh",
    "scope": {
      "product": {
        "key": "hubspot-crm-api",
        "name": "HubSpot CRM API"
      },
      "funnel": {
        "key": "api-integration-lifecycle",
        "name": "API integration lifecycle"
      }
    },
    "catalog_binding": {
      "base_release_id": "sha256:8986cb1640fd748dd005e5c94c7b02d3f44a3d39ff6b72573091bd81af84c61e",
      "entity_revision_digest": "sha256:d834f446f341ff50dd565416a3b8489b405fe189c597bcfa66ca67249314dd03"
    },
    "declaration_revision_digest": "sha256:2538ff7b69270e0b651ecd3add7601bd2e6619766e25ce9b137579cdd014d881",
    "declaration": {
      "declaration_id": "declaration_hubspot_crm_api_integration_lifecycle",
      "provenance": {
        "repository": "sourcey/agent-ready-services",
        "commit": "ca383f7867c18d91567fcb8326be55f7411d9554",
        "path": "entities/hu/hubspot.yaml",
        "git_blob_oid": "55ec5a2192e3611b222bbd521a5774de964c89a2",
        "blob_digest": "sha256:cd8e9d116ae09a6eee1599fd1e1b8cba958666ee64d25436c5a7495fe2a98e2f"
      },
      "status": "community_declared"
    },
    "lifecycle": "active",
    "effective_from": "2026-09-06T08:47:58Z",
    "signals": [
      {
        "stage": "evaluate",
        "signal_code": "eligibility_decidability",
        "selector_group_id": "eligibility_decidability-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:50:54.788Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "readiness-237735cc5ba6ecc44afc3287e10b76ffb4c73481fb6a5a1f2ca6e1fa98a8ee41"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:f4fcebfb20578d2110bf4e34acd5553752daa94cab890f80d6a85109d3c21978",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:64a37c9326b044f11a34fc930ff5b9786e5e0ace669abee6907492384863f4db",
              "sha256:7db22c6e2df73a618ca8347b6565646dec559b2650829d79218411fbca60a8e8",
              "sha256:e9bcd942a0945a46b606712beecfea8b3d9b6e691010a5e7e4e4637247d7d66d",
              "sha256:f4d90baf96764232a3f29a2fe5c70ab1d1dfd922e5a3e9682d6088d0b3f571ec"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "readiness-237735cc5ba6ecc44afc3287e10b76ffb4c73481fb6a5a1f2ca6e1fa98a8ee41"
            },
            "locators": [
              {
                "artifact_digest": "sha256:f4d90baf96764232a3f29a2fe5c70ab1d1dfd922e5a3e9682d6088d0b3f571ec",
                "start_byte": 20607,
                "end_byte": 21415,
                "value_digest": "sha256:6053b30b7f5644557b47aedaf40450c9c1452978e8052c2a3e2371204456598b"
              }
            ]
          }
        ],
        "note": "The Developer Terms state that an individual representing an entity must have appropriate authority to accept the terms on behalf of the entity, be of legal age to form a binding contract, and not be prevented from using or receiving the Developer Tools under applicable laws."
      },
      {
        "stage": "evaluate",
        "signal_code": "pricing_decidability",
        "selector_group_id": "pricing_decidability-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:52:22.641Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-commitment"
          },
          {
            "node_kind": "resource",
            "node_id": "pricing"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:9af747dba6b0a6a632883ad74b12c442e17130d3454d8d8dd6475d9685846423",
                "capture_rung": "headless"
              }
            ],
            "artifact_digests": [
              "sha256:173e496512fa87a833e9935a20cdddf96ef17770b56efa79b9bd933e9d7ef345",
              "sha256:1ff6b7762a8bae9a99ee9a77e6a2dc3624a59188323b019c40716c4664f20bdf",
              "sha256:3878570f4a62a0d65f57cf1754e0269e56ec797f4e36e26b44c172eb6e800401",
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:6d71c44a4fdccb0b26d0e0b1d69b06751677f232137111782c6d6362e9c67913",
              "sha256:bf3c0d695fd07c6ca799a0412971ebe9d1e7aa55554fd5134d6a7d267954b138"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "pricing"
            },
            "locators": [
              {
                "artifact_digest": "sha256:1ff6b7762a8bae9a99ee9a77e6a2dc3624a59188323b019c40716c4664f20bdf",
                "start_byte": 0,
                "end_byte": 796,
                "value_digest": "sha256:0347e27d309bc7222defc72b4b18f0d66d7993b921b8f8275dae3cc4f6726e70"
              }
            ]
          },
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:6976a0b8e956c7106066b462a893d9966b76fc40eb711408eb582e99a5b05d03",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:6e39a3979a5f196cb4794a3898fbe7597f5164044c62efea918aabf6388f7ed1",
              "sha256:dd9882504630822d904e3e5e81cd89194dc1db6acaf75d140185b630a32c4191",
              "sha256:f3bfa21cb5860c14d396ce08f20a2128d9b31860ffe1c4eb3a9aa88d0026ecef"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "crm-commitment"
            },
            "locators": [
              {
                "artifact_digest": "sha256:dd9882504630822d904e3e5e81cd89194dc1db6acaf75d140185b630a32c4191",
                "start_byte": 29327,
                "end_byte": 30129,
                "value_digest": "sha256:43da9dbff6076010b8a8e63aa4a681d0b0f8108edb06cb723a3f72133a9eb76e"
              }
            ]
          }
        ],
        "note": "HubSpot explicitly declares that HubSpot's CRM is 100% free with no credit card required and no expiration date, providing clear no-charge pricing status before commitment."
      },
      {
        "stage": "evaluate",
        "signal_code": "service_discovery",
        "selector_group_id": "service_discovery-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:05.662Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "api-overview"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "direct_observation",
            "captures": [
              {
                "retained_capture_digest": "sha256:455abedca7a40ea9c4389671a9fb1668fa3262904926893b7cd22f5bfdf507c9",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:5cdace01395b6c44bb4cbae7421cff5fdedc6a0424d6d6a6e612787b93a2cee8",
              "sha256:62b090664baddee217f0ee6cb396d836067021a2d06fda285d27439dc5ef620b",
              "sha256:7a84c1d0c588ba670ed0cb116985a03916a33dbace96e926deaec65368794651",
              "sha256:c1db4c9d30ca7766dd85df625b828afd18941958eddd2f446c0b43ecf4f149b3"
            ],
            "locators": [
              {
                "artifact_digest": "sha256:c1db4c9d30ca7766dd85df625b828afd18941958eddd2f446c0b43ecf4f149b3",
                "start_byte": 3970,
                "end_byte": 4774,
                "value_digest": "sha256:d8ccbdc4975b479689984c2d9a6d6b7001654f4367426f1cd1319ecdcc07dbb1"
              }
            ]
          }
        ],
        "note": "The API overview publicly exposes stable entrypoints and endpoint patterns, such as GET /crm/objects/2026-03/contacts, under the root URL https://api.hubapi.com/."
      },
      {
        "stage": "evaluate",
        "signal_code": "structured_evaluation_discovery",
        "selector_group_id": "structured_evaluation_discovery-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:05.662Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "api-overview"
          },
          {
            "node_kind": "resource",
            "node_id": "oauth"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "direct_observation",
            "captures": [
              {
                "retained_capture_digest": "sha256:455abedca7a40ea9c4389671a9fb1668fa3262904926893b7cd22f5bfdf507c9",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:5cdace01395b6c44bb4cbae7421cff5fdedc6a0424d6d6a6e612787b93a2cee8",
              "sha256:62b090664baddee217f0ee6cb396d836067021a2d06fda285d27439dc5ef620b",
              "sha256:7a84c1d0c588ba670ed0cb116985a03916a33dbace96e926deaec65368794651",
              "sha256:c1db4c9d30ca7766dd85df625b828afd18941958eddd2f446c0b43ecf4f149b3"
            ],
            "locators": [
              {
                "artifact_digest": "sha256:c1db4c9d30ca7766dd85df625b828afd18941958eddd2f446c0b43ecf4f149b3",
                "start_byte": 3970,
                "end_byte": 4774,
                "value_digest": "sha256:d8ccbdc4975b479689984c2d9a6d6b7001654f4367426f1cd1319ecdcc07dbb1"
              }
            ]
          }
        ],
        "note": "HubSpot explicitly provides a machine-readable structured documentation index located at /docs/llms.txt to discover available pages."
      },
      {
        "stage": "evaluate",
        "signal_code": "terms_access",
        "selector_group_id": "terms_access-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:50:08.842Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "readiness-fedf565215bcde83431a45666a9a0edc7be9032ca5dbd43956ab753094c89a09"
          },
          {
            "node_kind": "resource",
            "node_id": "service-terms"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:d5f9e4177b60fd315d00feac9b814d8dfdae26892a7b40c0e8ec7ff3479b9ba7",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:119f8508e6e418f4880bb646eafce7b18a802da8be724d949fb43033f744aa06",
              "sha256:1aa9ab5f353ba00bccb36bbf0aa711d3af9e439185927131abb38e359d6fbe05",
              "sha256:776a9ad7c502be5b4333c74d38ddb85481b20bd5a2ad7cd33f24def2cd7bf385",
              "sha256:94fd146d8c4898b5be660458c89e9a82a94670c88822f33e434f37e12545bb75"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "service-terms"
            },
            "locators": [
              {
                "artifact_digest": "sha256:94fd146d8c4898b5be660458c89e9a82a94670c88822f33e434f37e12545bb75",
                "start_byte": 19664,
                "end_byte": 20462,
                "value_digest": "sha256:44df1a28ddf6333d3e07e29bc90a89eb9e9128352d2625fb13bcea2686eb0d05"
              }
            ]
          },
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:1aeac83940a709dbae5a5a0f36a1259bff20a6b67c2a5969a97deb2c85bfabf5",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:3782b3c86133d8ab70cb7636c7ab048739362fa5993581ed501e4c58dac748a7",
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:a74c216c33bc095a7a5fffdc378d2262029c6bec827502e9c52dfef644ef2926",
              "sha256:c49c0fc7af6fe1f1b7ca5462b28a4abdf41561e1d337ec8d50cf8755bd8555c3"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "readiness-fedf565215bcde83431a45666a9a0edc7be9032ca5dbd43956ab753094c89a09"
            },
            "locators": [
              {
                "artifact_digest": "sha256:a74c216c33bc095a7a5fffdc378d2262029c6bec827502e9c52dfef644ef2926",
                "start_byte": 15042,
                "end_byte": 15843,
                "value_digest": "sha256:9fd8f76fcab037ca2f5e853ae566fdcdff92369ee61eca972dbcb517b239c891"
              }
            ]
          }
        ],
        "note": "Applicable legal terms, including the Customer Terms of Service and HubSpot Developer Terms, are readable, retrievable, and structured within HubSpot's Legal Center."
      },
      {
        "stage": "evaluate",
        "signal_code": "verified_web_agent_access",
        "selector_group_id": "verified_web_agent_access-primary",
        "value": "unknown",
        "observed_at": "2026-09-06T08:51:05.662Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "api-overview"
          },
          {
            "node_kind": "resource",
            "node_id": "oauth"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [],
        "note": "The retained evidence mentions /docs/llms.txt for discovery, but does not provide explicit robots.txt or web agent access policy rules for the assessed resources."
      },
      {
        "stage": "sign_up",
        "signal_code": "access_control_operability",
        "selector_group_id": "access_control_operability-primary",
        "value": "unknown",
        "observed_at": "2026-09-06T08:50:20.125Z",
        "tested_surfaces": [
          {
            "node_kind": "endpoint",
            "node_id": "registration"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [],
        "note": "The retained page displays 'Get started with HubSpot' but does not provide complete evidence of form fields, validation, navigation, or handoffs needed to establish access control operability."
      },
      {
        "stage": "sign_up",
        "signal_code": "access_entrypoint_stability",
        "selector_group_id": "access_entrypoint_stability-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:50:20.125Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-signup"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "direct_observation",
            "captures": [
              {
                "retained_capture_digest": "sha256:4d7717c15d90b8902118888ecb756fc32a4e69c10352b08752d3fd53f5668a3e",
                "capture_rung": "headless"
              }
            ],
            "artifact_digests": [
              "sha256:3186256e939318e87a90f6620216137c75a3a70ef00deb091f8b307d4ac1bbe9",
              "sha256:3878570f4a62a0d65f57cf1754e0269e56ec797f4e36e26b44c172eb6e800401",
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:b2c39630be1dec5a038a99af71ee93298399ef2df8ce557bf590a44c910b82cb",
              "sha256:b7d3ab371115bb130152828efacd7b8b39daa06516dc15991fd1dc194dd523a5",
              "sha256:c4c643d6f75b2ac2f863d0385d4007236bd9fbebb500cd58a97d305d5a002042"
            ],
            "locators": [
              {
                "artifact_digest": "sha256:b2c39630be1dec5a038a99af71ee93298399ef2df8ce557bf590a44c910b82cb",
                "start_byte": 303,
                "end_byte": 337,
                "value_digest": "sha256:a43aea4e70ffbd2578366bd4c5e24ac6c4529d30065d12322d84d1f932cbefd6"
              }
            ]
          }
        ],
        "note": "A stable signup entry point to begin obtaining HubSpot service access is directly observed at the canonical URL."
      },
      {
        "stage": "sign_up",
        "signal_code": "captcha_compatible_access",
        "selector_group_id": "captcha_compatible_access-primary",
        "value": "unknown",
        "observed_at": "2026-09-06T08:50:20.125Z",
        "tested_surfaces": [
          {
            "node_kind": "endpoint",
            "node_id": "registration"
          },
          {
            "node_kind": "resource",
            "node_id": "crm-signup"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [],
        "note": "The captured evidence for the registration endpoint and CRM signup page contains no explicit declaration or direct observation regarding CAPTCHA requirements."
      },
      {
        "stage": "sign_up",
        "signal_code": "delegated_identity_access",
        "selector_group_id": "delegated_identity_access-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:50:52.529Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "oauth"
          },
          {
            "node_kind": "resource",
            "node_id": "readiness-ae84fdbaa51b9b88febbd2301b4157e03f052892fed3e42d69d878696fe3944c"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:70bef1e17d38f0c992d1f80f006007b9fbe837e961e375d23c259e3ef7316f0d",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:0b49ff43e213d509c1026a58e49413a0672bda5aa3a895e4601f656dd06ddef9",
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:634e493fa2444dccfa8f51870ff0caf5c723c92eed5575816f550e3080a9fb7e",
              "sha256:b5a8a3a8c4a8bf13348eb0c183f168f50870bd9d685b864d8f8ee2b70ca098e1"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "oauth"
            },
            "locators": [
              {
                "artifact_digest": "sha256:b5a8a3a8c4a8bf13348eb0c183f168f50870bd9d685b864d8f8ee2b70ca098e1",
                "start_byte": 0,
                "end_byte": 590,
                "value_digest": "sha256:6cdd35ffb1b88eb841b3c61de9e07ec4519ae7906f1f90e2dba1aff66791c32f"
              },
              {
                "artifact_digest": "sha256:b5a8a3a8c4a8bf13348eb0c183f168f50870bd9d685b864d8f8ee2b70ca098e1",
                "start_byte": 9170,
                "end_byte": 9962,
                "value_digest": "sha256:c2cf9661a9ebeb4f5ee59a9b0b35fce1f0636af723d6c49bbdf8308804f20048"
              }
            ]
          }
        ],
        "note": "HubSpot explicitly documents delegated identity access using OAuth, detailed query parameters, authorization URLs, redirect flows, and access/refresh token exchanges."
      },
      {
        "stage": "sign_up",
        "signal_code": "phone_verification_compatible",
        "selector_group_id": "phone_verification_compatible-primary",
        "value": "unknown",
        "observed_at": "2026-09-06T08:50:20.125Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-signup"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [],
        "note": "The captured evidence does not mention phone verification or SMS requirements."
      },
      {
        "stage": "pay",
        "signal_code": "checkout_operability",
        "selector_group_id": "checkout_operability-primary",
        "value": "unknown",
        "observed_at": "2026-09-06T08:50:38.759Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "billing-checkout"
          },
          {
            "node_kind": "resource",
            "node_id": "subscription-upgrade"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [],
        "note": "The retained evidence describes an online upgrade process via a 'Buy now' button that leads to checkout, but does not provide documented API or protocol details establishing deterministic checkout construction, authorization handoff, and resumption."
      },
      {
        "stage": "pay",
        "signal_code": "commitment_disclosure",
        "selector_group_id": "commitment_disclosure-primary",
        "value": "partial",
        "observed_at": "2026-09-06T08:51:52.481Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-commitment"
          },
          {
            "node_kind": "resource",
            "node_id": "pricing"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:6976a0b8e956c7106066b462a893d9966b76fc40eb711408eb582e99a5b05d03",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:5e4721cc8b093d0bc3d0243e2d075cc8ce31936ec5ab9d52d63e55af73339e3a",
              "sha256:dd9882504630822d904e3e5e81cd89194dc1db6acaf75d140185b630a32c4191",
              "sha256:f3bfa21cb5860c14d396ce08f20a2128d9b31860ffe1c4eb3a9aa88d0026ecef"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "crm-commitment"
            },
            "locators": [
              {
                "artifact_digest": "sha256:dd9882504630822d904e3e5e81cd89194dc1db6acaf75d140185b630a32c4191",
                "start_byte": 29383,
                "end_byte": 29594,
                "value_digest": "sha256:f6b4c14ede33cd3bd1a2bcc7f9a6dee4131b8051f23b3e3942f53340202d952c"
              },
              {
                "artifact_digest": "sha256:dd9882504630822d904e3e5e81cd89194dc1db6acaf75d140185b630a32c4191",
                "start_byte": 29941,
                "end_byte": 30096,
                "value_digest": "sha256:0f522b5a4896e13eff181a1f25c2687da5442a5698496711bc8d02d9f55e2111"
              }
            ]
          }
        ],
        "note": "HubSpot discloses the no-charge commitment for the free CRM before any authorization (100% free with no expiration date, no credit card required) and states that premium functionality is an upgrade; the charge, currency and recurrence of the paid tiers are not disclosed on the tested surfaces, so a material component of the paid commitment is deferred."
      },
      {
        "stage": "pay",
        "signal_code": "payment_authorization",
        "selector_group_id": "payment_authorization-primary",
        "value": "unknown",
        "observed_at": "2026-09-06T08:50:38.759Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "billing-checkout"
          },
          {
            "node_kind": "resource",
            "node_id": "subscription-upgrade"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [],
        "note": "The evidence notes that a credit card will be charged according to the billing period during the subscription term, but does not establish a documented rail for scoped delegation or explicit human-confirmed authorization with receipts."
      },
      {
        "stage": "pay",
        "signal_code": "self_service_purchase",
        "selector_group_id": "self_service_purchase-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:50:38.759Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "billing-checkout"
          },
          {
            "node_kind": "resource",
            "node_id": "subscription-upgrade"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:1e6042fb13bd07bbd1153ae0fbce0696b90792ffc9592d796360788edf85b20f",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:5602a5949518b1baf67c6c547821201a460bd253b499ee2d02fe5481735026d0",
              "sha256:6c663df4cbf5a98dea52f1830ae396d188af13738fd12ed33eea0a4cfceb4f1d",
              "sha256:7c824e2daee90901692a86a13940629f7094798bd91b477c2a81eab4a1eec665"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "subscription-upgrade"
            },
            "locators": [
              {
                "artifact_digest": "sha256:5602a5949518b1baf67c6c547821201a460bd253b499ee2d02fe5481735026d0",
                "start_byte": 8574,
                "end_byte": 9364,
                "value_digest": "sha256:f0fb122626ecad0dd12bdd314999c268ded69c1217dfc61307c9829639af4ffa"
              }
            ]
          }
        ],
        "note": "HubSpot documentation explicitly declares a direct self-service path to upgrade or purchase an individual subscription by clicking 'Buy now' and completing the on-screen checkout process right from the user's HubSpot account."
      },
      {
        "stage": "provision",
        "signal_code": "access_material_delivery",
        "selector_group_id": "access_material_delivery-primary",
        "value": "partial",
        "observed_at": "2026-09-06T08:50:52.529Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "oauth"
          },
          {
            "node_kind": "resource",
            "node_id": "readiness-ae84fdbaa51b9b88febbd2301b4157e03f052892fed3e42d69d878696fe3944c"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:70bef1e17d38f0c992d1f80f006007b9fbe837e961e375d23c259e3ef7316f0d",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:0b49ff43e213d509c1026a58e49413a0672bda5aa3a895e4601f656dd06ddef9",
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:9febdd2e7dc71ec8057e2537296b256903037ddf366a118f41b0240584e97906",
              "sha256:b5a8a3a8c4a8bf13348eb0c183f168f50870bd9d685b864d8f8ee2b70ca098e1"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "oauth"
            },
            "locators": [
              {
                "artifact_digest": "sha256:b5a8a3a8c4a8bf13348eb0c183f168f50870bd9d685b864d8f8ee2b70ca098e1",
                "start_byte": 8370,
                "end_byte": 9169,
                "value_digest": "sha256:c14641ad7b925d7a59c570c7345ef8561353d22a1876a00ee5aa8996c095014d"
              },
              {
                "artifact_digest": "sha256:b5a8a3a8c4a8bf13348eb0c183f168f50870bd9d685b864d8f8ee2b70ca098e1",
                "start_byte": 9170,
                "end_byte": 9962,
                "value_digest": "sha256:c2cf9661a9ebeb4f5ee59a9b0b35fce1f0636af723d6c49bbdf8308804f20048"
              }
            ]
          }
        ],
        "note": "HubSpot OAuth tokens (access and refresh tokens) are delivered via an authorization code exchange request to /oauth/v3/token using the client ID and client secret."
      },
      {
        "stage": "provision",
        "signal_code": "provisioning_completion",
        "selector_group_id": "provisioning_completion-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:32.728Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-operations"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:51f922c47089a2d9d66a1749515c728607a78b4fe8520e7e3b696645ab781214",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:6f3869c49ccbda0740226c732aabaad4c32ac018b5a2a7d9150f0e522ea8a193",
              "sha256:c8ce0571de8dd969519fb4805b4044fbde769ddab2ad3ec280f62f677d3bd2c5",
              "sha256:f1746c69c5dee859873c94472bb87b19ae9bdbcccabbb4a3af79618e01805005"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "crm-operations"
            },
            "locators": [
              {
                "artifact_digest": "sha256:c8ce0571de8dd969519fb4805b4044fbde769ddab2ad3ec280f62f677d3bd2c5",
                "start_byte": 15164,
                "end_byte": 15977,
                "value_digest": "sha256:f36b7933ec2251b2966945bcca313d317a5709c50e30516da7bfb31530186eb7"
              },
              {
                "artifact_digest": "sha256:c8ce0571de8dd969519fb4805b4044fbde769ddab2ad3ec280f62f677d3bd2c5",
                "start_byte": 8373,
                "end_byte": 9173,
                "value_digest": "sha256:24133138d75db762d8a551b8c4d358ebf7bf9d5344204d20d12dc5f31e3808cf"
              }
            ]
          }
        ],
        "note": "Creating a CRM object synchronously returns a 201 response containing a usable created object copy, including its unique ID and properties."
      },
      {
        "stage": "provision",
        "signal_code": "provisioning_operability",
        "selector_group_id": "provisioning_operability-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:32.728Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "crm-operations"
          },
          {
            "node_kind": "resource",
            "node_id": "oauth"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:51f922c47089a2d9d66a1749515c728607a78b4fe8520e7e3b696645ab781214",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:3436751780df7bf220db8be2a6fcb88f409cfaf97a2ad5fa3b3c98fb166da51c",
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:c8ce0571de8dd969519fb4805b4044fbde769ddab2ad3ec280f62f677d3bd2c5",
              "sha256:f1746c69c5dee859873c94472bb87b19ae9bdbcccabbb4a3af79618e01805005"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "crm-operations"
            },
            "locators": [
              {
                "artifact_digest": "sha256:c8ce0571de8dd969519fb4805b4044fbde769ddab2ad3ec280f62f677d3bd2c5",
                "start_byte": 5175,
                "end_byte": 5979,
                "value_digest": "sha256:100ba0cae74e6f56c8f00c3c9a219c7443fb2620260b68a7b5c21a0b680261ae"
              },
              {
                "artifact_digest": "sha256:c8ce0571de8dd969519fb4805b4044fbde769ddab2ad3ec280f62f677d3bd2c5",
                "start_byte": 9174,
                "end_byte": 9959,
                "value_digest": "sha256:627552140b273c89f019f9071fe739f28d3f52c2af5076b6ac6b5bc90210b44c"
              }
            ]
          }
        ],
        "note": "CRM object creation can be initiated programmatically via a POST request to /crm/v3/objects/{objectType}."
      },
      {
        "stage": "operate",
        "signal_code": "agent_protocol_interface",
        "selector_group_id": "agent_protocol_interface-primary",
        "value": "unknown",
        "observed_at": "2026-09-06T08:51:05.662Z",
        "tested_surfaces": [
          {
            "node_kind": "interface",
            "node_id": "crm-api"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [],
        "note": "The retained excerpts describe REST or RPC interfaces, SDKs and CLIs for HubSpot CRM API; they contain no first-party statement that an agent-native protocol interface is absent, and several navigation excerpts mention MCP resources without establishing coverage of the assessed targets."
      },
      {
        "stage": "operate",
        "signal_code": "credential_lifecycle",
        "selector_group_id": "credential_lifecycle-primary",
        "value": "partial",
        "observed_at": "2026-09-06T08:50:59.751Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "oauth"
          },
          {
            "node_kind": "resource",
            "node_id": "readiness-ae84fdbaa51b9b88febbd2301b4157e03f052892fed3e42d69d878696fe3944c"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:95d710318ce067a3bc073fcc58e69f9f22f76c2cf749daa2fc5477614fa885e7",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:60b1f4833cf9d9ee751c1fdb41e46f5ca8c41531279fe0b18a40f98833aa1097",
              "sha256:cc609a6b00edc7cdea917e19b1ef0ee97eabdd1b10fde1d4e500a87903f30a4e",
              "sha256:e6795254b882d12553f2e5df9c22a38dcfeaa549dfa334ff716a0860303e6a8e",
              "sha256:e691779bd0bfb8943d3b0da54bf70516a0a2e7f1d4fb6830eb0f71f466920d62"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "readiness-ae84fdbaa51b9b88febbd2301b4157e03f052892fed3e42d69d878696fe3944c"
            },
            "locators": [
              {
                "artifact_digest": "sha256:e6795254b882d12553f2e5df9c22a38dcfeaa549dfa334ff716a0860303e6a8e",
                "start_byte": 11526,
                "end_byte": 12328,
                "value_digest": "sha256:dc400a997bd8dd8fabffd993daaf96cf4f041dce2664fbee391d56fb2bafdc9a"
              },
              {
                "artifact_digest": "sha256:e6795254b882d12553f2e5df9c22a38dcfeaa549dfa334ff716a0860303e6a8e",
                "start_byte": 12329,
                "end_byte": 13132,
                "value_digest": "sha256:b2b4ef971e343fa2d2f2f397f219e0e8ae4675405edf22b489cb21266e0a62e0"
              }
            ]
          }
        ],
        "note": "Private app access tokens can be rotated in the HubSpot UI under Legacy apps by clicking Rotate (either immediate rotation via 'Rotate and expire now' or scheduled via 'Rotate and expire later'), or revoked by deleting the app, but the rotation procedure is UI-based."
      },
      {
        "stage": "operate",
        "signal_code": "failure_contract",
        "selector_group_id": "failure_contract-primary",
        "value": "partial",
        "observed_at": "2026-09-06T08:50:40.067Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "api-errors"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:c81368126aa9d750904ca32c7c900dfd2100f16e7304e77a0b2967cf06fc0eb0",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:6df6f7dd2fc6d3c4c5ed496d0ff5d15d21f326629893b0c3f3a5cf77a9af1145",
              "sha256:a018ce10fa94570ca2a05658f326a5df113e92df2d46e24f62dab19a7ea7a788",
              "sha256:c3bfd1ad4ea879ae3ca780903b4181d568511f542c1fc9e4f35ef318a7341952"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "api-errors"
            },
            "locators": [
              {
                "artifact_digest": "sha256:6df6f7dd2fc6d3c4c5ed496d0ff5d15d21f326629893b0c3f3a5cf77a9af1145",
                "start_byte": 9430,
                "end_byte": 10214,
                "value_digest": "sha256:630516a42a425fb9057ae7ba06f07249f0cd7f8c08af75a51548e7f1c13d7e37"
              },
              {
                "artifact_digest": "sha256:6df6f7dd2fc6d3c4c5ed496d0ff5d15d21f326629893b0c3f3a5cf77a9af1145",
                "start_byte": 7024,
                "end_byte": 7823,
                "value_digest": "sha256:7a3ab3877c6dcda57eceffd69d4208e271d12028d68fe6b1e22f553386b9e6bb"
              }
            ]
          }
        ],
        "note": "HubSpot documents status codes (such as 429 Rate limits and 5xx timeouts), retry recommendations (pausing for a few seconds), and JSON error object structure (message, code, context), but does not fully specify idempotency or cancellation semantics."
      },
      {
        "stage": "operate",
        "signal_code": "operation_authentication",
        "selector_group_id": "operation_authentication-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:50:59.751Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "oauth"
          },
          {
            "node_kind": "resource",
            "node_id": "readiness-ae84fdbaa51b9b88febbd2301b4157e03f052892fed3e42d69d878696fe3944c"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:95d710318ce067a3bc073fcc58e69f9f22f76c2cf749daa2fc5477614fa885e7",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:60b1f4833cf9d9ee751c1fdb41e46f5ca8c41531279fe0b18a40f98833aa1097",
              "sha256:cad04c9bc69687d37165088e2c371f8feb5ddcc1af4788dba443590e76828ed6",
              "sha256:cc609a6b00edc7cdea917e19b1ef0ee97eabdd1b10fde1d4e500a87903f30a4e",
              "sha256:e6795254b882d12553f2e5df9c22a38dcfeaa549dfa334ff716a0860303e6a8e"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "readiness-ae84fdbaa51b9b88febbd2301b4157e03f052892fed3e42d69d878696fe3944c"
            },
            "locators": [
              {
                "artifact_digest": "sha256:e6795254b882d12553f2e5df9c22a38dcfeaa549dfa334ff716a0860303e6a8e",
                "start_byte": 9286,
                "end_byte": 9932,
                "value_digest": "sha256:45bbe217e840df39d07dcf7da82157fa8f1142d0bf5edc5df1af1debd0dbe5df"
              }
            ]
          }
        ],
        "note": "Requests to HubSpot API endpoints support scoped request-time authentication using an access token passed via the HTTP Authorization header as 'Bearer [YOUR_TOKEN]'."
      },
      {
        "stage": "operate",
        "signal_code": "operation_contract",
        "selector_group_id": "operation_contract-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:32.728Z",
        "tested_surfaces": [
          {
            "node_kind": "interface",
            "node_id": "crm-api"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:455abedca7a40ea9c4389671a9fb1668fa3262904926893b7cd22f5bfdf507c9",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:5cdace01395b6c44bb4cbae7421cff5fdedc6a0424d6d6a6e612787b93a2cee8",
              "sha256:62b090664baddee217f0ee6cb396d836067021a2d06fda285d27439dc5ef620b",
              "sha256:7a84c1d0c588ba670ed0cb116985a03916a33dbace96e926deaec65368794651",
              "sha256:c1db4c9d30ca7766dd85df625b828afd18941958eddd2f446c0b43ecf4f149b3"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "api-overview"
            },
            "locators": [
              {
                "artifact_digest": "sha256:c1db4c9d30ca7766dd85df625b828afd18941958eddd2f446c0b43ecf4f149b3",
                "start_byte": 3970,
                "end_byte": 4774,
                "value_digest": "sha256:d8ccbdc4975b479689984c2d9a6d6b7001654f4367426f1cd1319ecdcc07dbb1"
              }
            ]
          },
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:c81368126aa9d750904ca32c7c900dfd2100f16e7304e77a0b2967cf06fc0eb0",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:5bf8ebde608d6732839516120776d7c90e79be2e26b0eb8b77c50e3a0a16bed8",
              "sha256:6df6f7dd2fc6d3c4c5ed496d0ff5d15d21f326629893b0c3f3a5cf77a9af1145",
              "sha256:a018ce10fa94570ca2a05658f326a5df113e92df2d46e24f62dab19a7ea7a788"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "api-errors"
            },
            "locators": [
              {
                "artifact_digest": "sha256:6df6f7dd2fc6d3c4c5ed496d0ff5d15d21f326629893b0c3f3a5cf77a9af1145",
                "start_byte": 8624,
                "end_byte": 9429,
                "value_digest": "sha256:d678e52c2dca044741a094a9a8d7446de2a7edc607aff34ffc18b6a43759e28c"
              }
            ]
          },
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:ade61c36c6a51f142cc97c726733be3e2850cb070b54e0daf27179a50ae73235",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:5d7c3be181e6d714bbad0c4e220feab8882a06f3d48320f717f5cb7a0bd96352",
              "sha256:a470c6ba6259ba2d72aef0fe78c27fbaf464a560e8b4cb8e705b280752f68f69",
              "sha256:f467948c6f3297ebbe20e4392323ba70127978eed77b221b07c838bf19885a1e"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "api-limits"
            },
            "locators": [
              {
                "artifact_digest": "sha256:5d7c3be181e6d714bbad0c4e220feab8882a06f3d48320f717f5cb7a0bd96352",
                "start_byte": 14867,
                "end_byte": 15605,
                "value_digest": "sha256:d4af4f9f4e30a5f041a6b38f66a031067c081e53769804fe7271c9d06c8901ea"
              }
            ]
          },
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:51f922c47089a2d9d66a1749515c728607a78b4fe8520e7e3b696645ab781214",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:7a1c92638f79d66a6e149bfd2b7f04061c5fc1f92effc7c66950d626b73c7c3d",
              "sha256:c8ce0571de8dd969519fb4805b4044fbde769ddab2ad3ec280f62f677d3bd2c5",
              "sha256:f1746c69c5dee859873c94472bb87b19ae9bdbcccabbb4a3af79618e01805005"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "crm-operations"
            },
            "locators": [
              {
                "artifact_digest": "sha256:c8ce0571de8dd969519fb4805b4044fbde769ddab2ad3ec280f62f677d3bd2c5",
                "start_byte": 6624,
                "end_byte": 7422,
                "value_digest": "sha256:da70de3aa7314348983240d1517f10db51c9150343a133987b9dc890f148c9ae"
              }
            ]
          }
        ],
        "note": "HubSpot API documentation defines REST endpoints, methods, parameters, JSON error structures, rate limit headers (such as X-HubSpot-RateLimit-Max), and detailed request/response schemas for CRM object operations."
      },
      {
        "stage": "operate",
        "signal_code": "target_interface_access",
        "selector_group_id": "target_interface_access-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:32.728Z",
        "tested_surfaces": [
          {
            "node_kind": "interface",
            "node_id": "crm-api"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:ade61c36c6a51f142cc97c726733be3e2850cb070b54e0daf27179a50ae73235",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:405dd2adc679f243a31fcabf11bada70a7d6d1c3c4e8e81d4df357f4ba3bda18",
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:5d7c3be181e6d714bbad0c4e220feab8882a06f3d48320f717f5cb7a0bd96352",
              "sha256:a470c6ba6259ba2d72aef0fe78c27fbaf464a560e8b4cb8e705b280752f68f69"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "api-limits"
            },
            "locators": [
              {
                "artifact_digest": "sha256:5d7c3be181e6d714bbad0c4e220feab8882a06f3d48320f717f5cb7a0bd96352",
                "start_byte": 7655,
                "end_byte": 8459,
                "value_digest": "sha256:e200283ecd9c35847a48311f4bbd62c5a246b52c34cbe554b3eb2c9ebd55bdcd"
              }
            ]
          },
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:c81368126aa9d750904ca32c7c900dfd2100f16e7304e77a0b2967cf06fc0eb0",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:00c98fa0acb0810cff4e90b42f9945d8d7c82cd5ed70b88d30263deb44e8fd9c",
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:6df6f7dd2fc6d3c4c5ed496d0ff5d15d21f326629893b0c3f3a5cf77a9af1145",
              "sha256:a018ce10fa94570ca2a05658f326a5df113e92df2d46e24f62dab19a7ea7a788"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "api-errors"
            },
            "locators": [
              {
                "artifact_digest": "sha256:6df6f7dd2fc6d3c4c5ed496d0ff5d15d21f326629893b0c3f3a5cf77a9af1145",
                "start_byte": 4628,
                "end_byte": 5431,
                "value_digest": "sha256:7f91a8eb14134db4bf33c59941c13b887460857edf1a201dad053dec839e98b0"
              }
            ]
          },
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:455abedca7a40ea9c4389671a9fb1668fa3262904926893b7cd22f5bfdf507c9",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:5cdace01395b6c44bb4cbae7421cff5fdedc6a0424d6d6a6e612787b93a2cee8",
              "sha256:62b090664baddee217f0ee6cb396d836067021a2d06fda285d27439dc5ef620b",
              "sha256:7a84c1d0c588ba670ed0cb116985a03916a33dbace96e926deaec65368794651",
              "sha256:c1db4c9d30ca7766dd85df625b828afd18941958eddd2f446c0b43ecf4f149b3"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "api-overview"
            },
            "locators": [
              {
                "artifact_digest": "sha256:c1db4c9d30ca7766dd85df625b828afd18941958eddd2f446c0b43ecf4f149b3",
                "start_byte": 3970,
                "end_byte": 4774,
                "value_digest": "sha256:d8ccbdc4975b479689984c2d9a6d6b7001654f4367426f1cd1319ecdcc07dbb1"
              }
            ]
          },
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:51f922c47089a2d9d66a1749515c728607a78b4fe8520e7e3b696645ab781214",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:9ae294e06a20a76cfbd8bb7b98ea4f72da8680c92626c4f975b2f3604dd3340c",
              "sha256:c8ce0571de8dd969519fb4805b4044fbde769ddab2ad3ec280f62f677d3bd2c5",
              "sha256:f1746c69c5dee859873c94472bb87b19ae9bdbcccabbb4a3af79618e01805005"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "crm-operations"
            },
            "locators": [
              {
                "artifact_digest": "sha256:c8ce0571de8dd969519fb4805b4044fbde769ddab2ad3ec280f62f677d3bd2c5",
                "start_byte": 15164,
                "end_byte": 15977,
                "value_digest": "sha256:f36b7933ec2251b2966945bcca313d317a5709c50e30516da7bfb31530186eb7"
              }
            ]
          }
        ],
        "note": "Documented HTTP REST API interfaces are available across all essential target documentation resources, allowing machine execution of operations via documented endpoints."
      }
    ],
    "revision_digest": "sha256:2f3b49ebdee173ea1951147656ae676c691fcbc22b55a64c29ae92d2c18fbb23"
  }
}
