{
  "contract": "sourcey.site-record/v1alpha1",
  "release_id": "sha256:1042b2f7b6130b564b0059e00560960c50db2d7578dfa5178d401e5d14d9b11f",
  "snapshot_id": "sha256:696d9730d13ebc723115e4a92f695a0f26345d4350d440a417805b69d1b209e4",
  "artifact_sha256": "sha256:a695609a4d6872bd447e3125d912e7f84e605d0f064df0b08e62a9f24d9d2e80",
  "data": {
    "entity_id": "ent_01kyh8fpe3new9gxd18qs3bskh",
    "entity_slug": "hubspot",
    "profile": {
      "projection_contract": "sourcey.agent-readiness-projection/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:5082ec07047a2324648f569d234cc64342ce2707b2f3d77fde8fc06af517cee6",
        "entity_revision_digest": "sha256:d834f446f341ff50dd565416a3b8489b405fe189c597bcfa66ca67249314dd03"
      },
      "declaration_revision_digest": "sha256:a1675efc4153495e37a4b55f13314a0146879a63aa12ef8e797471cbbae9cd2c",
      "declaration": {
        "declaration_id": "declaration_hubspot_crm_api_integration_lifecycle",
        "provenance": {
          "repository": "sourcey/agent-ready-services",
          "commit": "00f00edd170194cc1cf3081b97b218474537ffdb",
          "path": "vendors/hu/hubspot.yaml",
          "git_blob_oid": "10ee382e13968d45b38555368c898b1697477a07",
          "blob_digest": "sha256:0abad36b327c2a292df5a4399992212cbfe2fbe92ba52355f570629c0c352716"
        },
        "status": "community_declared"
      },
      "surface_catalog": {
        "participants": [
          {
            "participant_id": "hubspot",
            "roles": [
              "access_operator",
              "identity_provider",
              "operations_provider",
              "payment_provider",
              "provisioning_provider",
              "subject"
            ],
            "identity": {
              "entity_id": "ent_01kyh8fpe3new9gxd18qs3bskh"
            }
          }
        ],
        "resources": [
          {
            "resource_id": "api-errors",
            "uri": "https://developers.hubspot.com/docs/api-reference/error-handling",
            "roles": [
              "documentation",
              "operations",
              "recovery",
              "status"
            ],
            "operated_by_participant_id": "hubspot",
            "standard_bindings": []
          },
          {
            "resource_id": "api-limits",
            "uri": "https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines",
            "roles": [
              "documentation",
              "operations",
              "status"
            ],
            "operated_by_participant_id": "hubspot",
            "standard_bindings": []
          },
          {
            "resource_id": "api-overview",
            "uri": "https://developers.hubspot.com/docs/api-reference/overview",
            "roles": [
              "discovery",
              "documentation",
              "operations"
            ],
            "operated_by_participant_id": "hubspot",
            "standard_bindings": []
          },
          {
            "resource_id": "crm-operations",
            "uri": "https://developers.hubspot.com/docs/api-reference/crm-objects-v3/guide",
            "roles": [
              "documentation",
              "operations",
              "provisioning",
              "status"
            ],
            "operated_by_participant_id": "hubspot",
            "standard_bindings": []
          },
          {
            "resource_id": "crm-signup",
            "uri": "https://app.hubspot.com/signup-hubspot/crm",
            "roles": [
              "checkout",
              "provisioning",
              "sign_up"
            ],
            "operated_by_participant_id": "hubspot",
            "standard_bindings": []
          },
          {
            "resource_id": "oauth",
            "uri": "https://developers.hubspot.com/docs/apps/developer-platform/build-apps/authentication/oauth/working-with-oauth",
            "roles": [
              "descriptor",
              "documentation",
              "provisioning"
            ],
            "operated_by_participant_id": "hubspot",
            "standard_bindings": [
              {
                "namespace": "oauth",
                "version": "2.0",
                "relation": "describes"
              }
            ]
          },
          {
            "resource_id": "pricing",
            "uri": "https://developers.hubspot.com/developer-platform-basics",
            "roles": [
              "pricing"
            ],
            "operated_by_participant_id": "hubspot",
            "standard_bindings": []
          },
          {
            "resource_id": "service-terms",
            "uri": "https://legal.hubspot.com/legal-stuff",
            "roles": [
              "terms"
            ],
            "operated_by_participant_id": "hubspot",
            "standard_bindings": []
          },
          {
            "resource_id": "support",
            "uri": "https://knowledge.hubspot.com/",
            "roles": [
              "documentation",
              "recovery"
            ],
            "operated_by_participant_id": "hubspot",
            "standard_bindings": []
          }
        ],
        "endpoints": [
          {
            "endpoint_id": "hubspot-api",
            "uri": "https://api.hubapi.com",
            "transport": "http",
            "roles": [
              "service",
              "status"
            ],
            "operated_by_participant_id": "hubspot",
            "standard_bindings": []
          },
          {
            "endpoint_id": "oauth-token",
            "uri": "https://api.hubapi.com/oauth/v1/token",
            "transport": "http",
            "roles": [
              "authorization",
              "token"
            ],
            "operated_by_participant_id": "hubspot",
            "standard_bindings": [
              {
                "namespace": "oauth",
                "version": "2.0",
                "relation": "implements"
              }
            ]
          }
        ],
        "interfaces": [
          {
            "interface_id": "crm-api",
            "capabilities": [
              "api",
              "tools"
            ],
            "endpoint_ids": [
              "hubspot-api"
            ],
            "resource_ids": [
              "api-errors",
              "api-limits",
              "api-overview",
              "crm-operations"
            ],
            "operated_by_participant_id": "hubspot",
            "standard_bindings": []
          },
          {
            "interface_id": "integration-authentication",
            "capabilities": [
              "authentication"
            ],
            "endpoint_ids": [
              "oauth-token"
            ],
            "resource_ids": [
              "oauth"
            ],
            "operated_by_participant_id": "hubspot",
            "standard_bindings": [
              {
                "namespace": "oauth",
                "version": "2.0",
                "relation": "uses"
              }
            ]
          }
        ],
        "relations": [
          {
            "relation_id": "authentication-authenticates-api",
            "kind": "authenticates",
            "from": {
              "node_kind": "interface",
              "node_id": "integration-authentication"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "crm-api"
            }
          },
          {
            "relation_id": "crm-describes-api",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "crm-operations"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "crm-api"
            }
          },
          {
            "relation_id": "overview-describes-api",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "api-overview"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "crm-api"
            }
          },
          {
            "relation_id": "signup-precedes-authentication",
            "kind": "precedes",
            "from": {
              "node_kind": "resource",
              "node_id": "crm-signup"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "integration-authentication"
            }
          }
        ]
      },
      "lifecycle": "active",
      "effective_from": "2026-08-08T02:06:59.735Z",
      "revision_digest": "sha256:c2ad3b65e86423943af0819b8bd2554895af553186b5407b556dea1f8562d75a",
      "policy_digest": "sha256:334e56852b5c38e178fcea839cfba680fb82dd96693842d933776baed21d63df",
      "policy_version": "service-lifecycle-2026-08-08-calibrated",
      "policy_as_of": "2026-08-06T00:00:00Z",
      "overall_outcome": "fail",
      "public_state": "blocked",
      "state_label": "Blocked",
      "grade": "D",
      "grade_derivation": {
        "label": "Agent Readiness service-use grade",
        "explanation": "Complete, fresh evidence for the core service lifecycle first applies hard stage severity, then grades the share of applicable evidenced signals that are constrained. Optional blocker probes affect the grade when established and remain visible as unknown when public evidence cannot establish them.",
        "coverage_rule": "Any incomplete, contradictory, unsupported, or non-fresh required evidence produces an unrated profile.",
        "outcome_rule": "A failed Evaluate, Sign up, or Pay stage derives D; a failed Provision or Operate stage derives F; otherwise constrained-signal ratio derives A+ through C."
      },
      "publication": {
        "visibility": "discoverable",
        "reasons": []
      },
      "first_autonomy_break": {
        "stage": "evaluate",
        "stage_label": "Evaluate",
        "public_state": "blocked",
        "finding": {
          "signal_code": "decidable_eligibility",
          "condition": "Decidable eligibility unavailable",
          "finding": "Eligibility depends on information or judgment unavailable to an agent."
        },
        "blocker": {
          "signal_code": "decidable_eligibility",
          "code": "evaluate.decidable_eligibility",
          "explanation": "Eligibility depends on information or judgment unavailable to an agent."
        }
      },
      "stages": [
        {
          "stage": "evaluate",
          "stage_label": "Evaluate",
          "outcome": "fail",
          "public_state": "blocked",
          "state_label": "Blocked",
          "primary_finding": {
            "signal_code": "decidable_eligibility",
            "condition": "Decidable eligibility unavailable",
            "finding": "Eligibility depends on information or judgment unavailable to an agent."
          },
          "secondary_context": [
            {
              "signal_code": "structured_terms",
              "condition": "Structured terms limited",
              "finding": "Only part of the applicable terms is machine-readable."
            },
            {
              "signal_code": "ard_declaration",
              "condition": "ARD declaration unknown",
              "finding": "An ARD declaration has not been established."
            },
            {
              "signal_code": "machine_discovery",
              "condition": "Machine discovery",
              "finding": "An agent can discover the product and funnel from the tested public entrypoints."
            },
            {
              "signal_code": "readable_pricing",
              "condition": "Readable pricing",
              "finding": "Pricing or the absence of a charge is explicit and machine-readable."
            }
          ],
          "signals": [
            {
              "signal_code": "ard_declaration",
              "evaluation_role": "informational",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "ARD declaration unknown",
              "finding": "An ARD declaration has not been established.",
              "evidence_status": "missing",
              "freshness": "unknown",
              "tested_surfaces": []
            },
            {
              "signal_code": "decidable_eligibility",
              "evaluation_role": "graded",
              "required": false,
              "value": "no",
              "value_label": "Blocked",
              "outcome": "fail",
              "public_state": "blocked",
              "condition": "Decidable eligibility unavailable",
              "finding": "Eligibility depends on information or judgment unavailable to an agent.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:13:27.297Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "service-terms"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "negative_coverage": {
                "kind": "complete-response-inspection",
                "scope": "exact-resource",
                "covered_surfaces": [
                  {
                    "node_kind": "resource",
                    "node_id": "service-terms"
                  }
                ]
              },
              "note": "Public eligibility criteria for the HubSpot API integration platform depend on user-specific agreement choices and partner/customer classifications that cannot be fully decided by an automated agent alone.",
              "blocker": {
                "signal_code": "decidable_eligibility",
                "code": "evaluate.decidable_eligibility",
                "explanation": "Eligibility depends on information or judgment unavailable to an agent."
              },
              "remediation": {
                "signal_code": "decidable_eligibility",
                "code": "improve.evaluate.decidable_eligibility",
                "instruction": "Publish complete, explicit eligibility criteria and required inputs."
              }
            },
            {
              "signal_code": "machine_discovery",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Machine discovery",
              "finding": "An agent can discover the product and funnel from the tested public entrypoints.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:13:30.961Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "api-overview"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "HubSpot's developer documentation index and API reference entrypoints provide machine-discoverable documentation and structure (including llms.txt and structured metadata)."
            },
            {
              "signal_code": "readable_pricing",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Readable pricing",
              "finding": "Pricing or the absence of a charge is explicit and machine-readable.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-08T00:14:20.635Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "pricing"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "HubSpot explicitly documents that developer accounts and API access for building and testing integrations are free without requiring a paid subscription."
            },
            {
              "signal_code": "structured_terms",
              "evaluation_role": "graded",
              "required": true,
              "value": "partial",
              "value_label": "Limited",
              "outcome": "constrained",
              "public_state": "limited",
              "condition": "Structured terms limited",
              "finding": "Only part of the applicable terms is machine-readable.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:13:27.297Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "service-terms"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "negative_coverage": {
                "kind": "complete-response-inspection",
                "scope": "exact-resource",
                "covered_surfaces": [
                  {
                    "node_kind": "resource",
                    "node_id": "service-terms"
                  }
                ]
              },
              "note": "HubSpot legal terms are accessible via stable, readable web pages across customer, developer, and public categories, but are not provided as a structured data API/contract.",
              "remediation": {
                "signal_code": "structured_terms",
                "code": "improve.evaluate.structured_terms",
                "instruction": "Publish complete applicable terms in a stable machine-readable document."
              }
            }
          ],
          "blockers": [
            {
              "signal_code": "decidable_eligibility",
              "code": "evaluate.decidable_eligibility",
              "explanation": "Eligibility depends on information or judgment unavailable to an agent."
            }
          ],
          "remediations": [
            {
              "signal_code": "decidable_eligibility",
              "code": "improve.evaluate.decidable_eligibility",
              "instruction": "Publish complete, explicit eligibility criteria and required inputs."
            },
            {
              "signal_code": "structured_terms",
              "code": "improve.evaluate.structured_terms",
              "instruction": "Publish complete applicable terms in a stable machine-readable document."
            }
          ]
        },
        {
          "stage": "sign_up",
          "stage_label": "Sign up",
          "outcome": "pass",
          "public_state": "ready",
          "state_label": "Ready",
          "primary_finding": {
            "signal_code": "stable_entrypoint",
            "condition": "Stable signup entrypoint",
            "finding": "A stable signup entrypoint is available."
          },
          "secondary_context": [
            {
              "signal_code": "machine_operable_form",
              "condition": "Machine-operable signup unknown",
              "finding": "Machine-operable signup has not been established."
            },
            {
              "signal_code": "captcha_free",
              "condition": "CAPTCHA-free signup unknown",
              "finding": "Whether CAPTCHA blocks signup has not been established."
            },
            {
              "signal_code": "phone_verification_free",
              "condition": "Phone-free signup unknown",
              "finding": "Whether phone verification is required has not been established."
            },
            {
              "signal_code": "supported_identity_flow",
              "condition": "Supported identity flow",
              "finding": "A scoped, revocable machine identity flow is documented, including explicit human authorization boundaries."
            }
          ],
          "signals": [
            {
              "signal_code": "captcha_free",
              "evaluation_role": "graded",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "CAPTCHA-free signup unknown",
              "finding": "Whether CAPTCHA blocks signup has not been established.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:13:46.317Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "crm-signup"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "note": "Reid/headless capture confirms landing on signup page but does not conclusively establish whether CAPTCHA is absent across the complete signup flow."
            },
            {
              "signal_code": "machine_operable_form",
              "evaluation_role": "graded",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "Machine-operable signup unknown",
              "finding": "Machine-operable signup has not been established.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:13:46.317Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "crm-signup"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "note": "The signup landing page content was captured, but machine-operability of the complete signup form fields could not be verified from the initial page payload alone."
            },
            {
              "signal_code": "phone_verification_free",
              "evaluation_role": "graded",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "Phone-free signup unknown",
              "finding": "Whether phone verification is required has not been established.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:13:46.317Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "crm-signup"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "note": "Whether phone or SMS verification is required during the signup flow is not established in the provided signup evidence."
            },
            {
              "signal_code": "stable_entrypoint",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Stable signup entrypoint",
              "finding": "A stable signup entrypoint is available.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:14:08.852Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "crm-signup"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "A stable HTTP signup entrypoint was accessible at https://app.hubspot.com/signup-hubspot/crm."
            },
            {
              "signal_code": "supported_identity_flow",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Supported identity flow",
              "finding": "A scoped, revocable machine identity flow is documented, including explicit human authorization boundaries.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:14:02.455Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "oauth"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "note": "HubSpot documents a scoped, revocable OAuth identity flow featuring explicit human authorization boundaries and token refresh mechanisms."
            }
          ],
          "blockers": [],
          "remediations": []
        },
        {
          "stage": "pay",
          "stage_label": "Pay",
          "outcome": "not_applicable",
          "public_state": "not_applicable",
          "state_label": "Not applicable",
          "primary_finding": {
            "signal_code": "explicit_price",
            "condition": "Explicit price not applicable",
            "finding": "Evidence establishes that this funnel has no payment step."
          },
          "secondary_context": [
            {
              "signal_code": "machine_operable_checkout",
              "condition": "Machine-operable checkout not applicable",
              "finding": "Evidence establishes that this funnel has no checkout step."
            },
            {
              "signal_code": "supported_payment_rail",
              "condition": "Supported payment rail not applicable",
              "finding": "Evidence establishes that this funnel has no payment step."
            },
            {
              "signal_code": "sales_intervention_free",
              "condition": "Sales-free purchase not applicable",
              "finding": "Evidence establishes that this funnel has no purchase step."
            }
          ],
          "signals": [
            {
              "signal_code": "explicit_price",
              "evaluation_role": "graded",
              "required": true,
              "value": "not_applicable",
              "value_label": "Not applicable",
              "outcome": "not_applicable",
              "public_state": "not_applicable",
              "condition": "Explicit price not applicable",
              "finding": "Evidence establishes that this funnel has no payment step.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-08T00:14:20.635Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "pricing"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "negative_coverage": {
                "kind": "complete-response-inspection",
                "scope": "exact-resource",
                "covered_surfaces": [
                  {
                    "node_kind": "resource",
                    "node_id": "pricing"
                  }
                ]
              },
              "note": "Evidence confirms that developers can build apps and access public APIs using a free HubSpot account without requiring a paid subscription or payment step."
            },
            {
              "signal_code": "machine_operable_checkout",
              "evaluation_role": "graded",
              "required": false,
              "value": "not_applicable",
              "value_label": "Not applicable",
              "outcome": "not_applicable",
              "public_state": "not_applicable",
              "condition": "Machine-operable checkout not applicable",
              "finding": "Evidence establishes that this funnel has no checkout step.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:13:46.317Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "crm-signup"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "negative_coverage": {
                "kind": "bounded-rendered-flow-inspection",
                "scope": "tested-surfaces",
                "covered_surfaces": [
                  {
                    "node_kind": "resource",
                    "node_id": "crm-signup"
                  }
                ]
              },
              "note": "No checkout or payment step is required as developer platform features and accounts are free."
            },
            {
              "signal_code": "sales_intervention_free",
              "evaluation_role": "graded",
              "required": false,
              "value": "not_applicable",
              "value_label": "Not applicable",
              "outcome": "not_applicable",
              "public_state": "not_applicable",
              "condition": "Sales-free purchase not applicable",
              "finding": "Evidence establishes that this funnel has no purchase step.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:13:46.317Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "crm-signup"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "negative_coverage": {
                "kind": "bounded-rendered-flow-inspection",
                "scope": "tested-surfaces",
                "covered_surfaces": [
                  {
                    "node_kind": "resource",
                    "node_id": "crm-signup"
                  }
                ]
              },
              "note": "No payment or purchase step exists for developer access, making sales intervention not applicable."
            },
            {
              "signal_code": "supported_payment_rail",
              "evaluation_role": "graded",
              "required": false,
              "value": "not_applicable",
              "value_label": "Not applicable",
              "outcome": "not_applicable",
              "public_state": "not_applicable",
              "condition": "Supported payment rail not applicable",
              "finding": "Evidence establishes that this funnel has no payment step.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:13:46.317Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "crm-signup"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "negative_coverage": {
                "kind": "bounded-rendered-flow-inspection",
                "scope": "tested-surfaces",
                "covered_surfaces": [
                  {
                    "node_kind": "resource",
                    "node_id": "crm-signup"
                  }
                ]
              },
              "note": "Payment rails are not applicable because developer accounts and API testing do not require payment."
            }
          ],
          "blockers": [],
          "remediations": []
        },
        {
          "stage": "provision",
          "stage_label": "Provision",
          "outcome": "constrained",
          "public_state": "limited",
          "state_label": "Limited",
          "primary_finding": {
            "signal_code": "machine_readable_status",
            "condition": "Machine-readable provisioning status limited",
            "finding": "Only part of the provisioning lifecycle exposes machine-readable status."
          },
          "secondary_context": [
            {
              "signal_code": "automatic_activation",
              "condition": "Automatic activation unknown",
              "finding": "Automatic activation has not been established."
            },
            {
              "signal_code": "bounded_delay",
              "condition": "Bounded provisioning delay unknown",
              "finding": "A bounded provisioning delay has not been established."
            },
            {
              "signal_code": "credential_delivery",
              "condition": "Credential delivery",
              "finding": "Usable credentials or delegated access are delivered through a documented flow."
            }
          ],
          "signals": [
            {
              "signal_code": "automatic_activation",
              "evaluation_role": "graded",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "Automatic activation unknown",
              "finding": "Automatic activation has not been established.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:13:52.217Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "crm-operations"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "note": "Retained evidence for the headless capture of crm-operations returned a 500 error page, which does not establish whether automatic activation is present."
            },
            {
              "signal_code": "bounded_delay",
              "evaluation_role": "graded",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "Bounded provisioning delay unknown",
              "finding": "A bounded provisioning delay has not been established.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:13:38.966Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "crm-operations"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "Documentation describes batch operations and API usage limits, but does not state a documented bounded delay for record or service provisioning completion."
            },
            {
              "signal_code": "credential_delivery",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Credential delivery",
              "finding": "Usable credentials or delegated access are delivered through a documented flow.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:14:02.455Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "oauth"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "note": "HubSpot documents an OAuth authorization flow where exchanging the authorization code with /oauth/v3/token delivers an access token and refresh token."
            },
            {
              "signal_code": "machine_readable_status",
              "evaluation_role": "graded",
              "required": false,
              "value": "partial",
              "value_label": "Limited",
              "outcome": "constrained",
              "public_state": "limited",
              "condition": "Machine-readable provisioning status limited",
              "finding": "Only part of the provisioning lifecycle exposes machine-readable status.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:13:38.966Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "crm-operations"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "negative_coverage": {
                "kind": "complete-response-inspection",
                "scope": "exact-resource",
                "covered_surfaces": [
                  {
                    "node_kind": "resource",
                    "node_id": "crm-operations"
                  }
                ]
              },
              "note": "Batch create operations allow enabling multi-status error responses with a trace ID and terminal status, but complete asynchronous provisioning lifecycle tracking is not fully exposed across all operations.",
              "remediation": {
                "signal_code": "machine_readable_status",
                "code": "improve.provision.machine_readable_status",
                "instruction": "Expose deterministic provisioning progress, terminal states, errors, cancellation, and reconciliation where applicable."
              }
            }
          ],
          "blockers": [],
          "remediations": [
            {
              "signal_code": "machine_readable_status",
              "code": "improve.provision.machine_readable_status",
              "instruction": "Expose deterministic provisioning progress, terminal states, errors, cancellation, and reconciliation where applicable."
            }
          ]
        },
        {
          "stage": "operate",
          "stage_label": "Operate",
          "outcome": "pass",
          "public_state": "ready",
          "state_label": "Ready",
          "primary_finding": {
            "signal_code": "api_tool_access",
            "condition": "API or tool access",
            "finding": "A documented API or tool interface is available for operation."
          },
          "secondary_context": [
            {
              "signal_code": "agent_protocol_interface",
              "condition": "Agent protocol interface unknown",
              "finding": "An agent protocol interface has not been established."
            },
            {
              "signal_code": "usable_authentication",
              "condition": "Usable authentication",
              "finding": "Authentication is documented and usable within an agent authorization boundary."
            },
            {
              "signal_code": "documented_limits_errors",
              "condition": "Documented limits and errors",
              "finding": "Limits, structured errors, retry behavior, and idempotency semantics are documented where applicable."
            },
            {
              "signal_code": "delegated_recovery",
              "condition": "Delegated recovery",
              "finding": "Credential rotation, revocation, retry, and recovery paths are documented within delegated authority."
            }
          ],
          "signals": [
            {
              "signal_code": "agent_protocol_interface",
              "evaluation_role": "informational",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "Agent protocol interface unknown",
              "finding": "An agent protocol interface has not been established.",
              "evidence_status": "missing",
              "freshness": "unknown",
              "tested_surfaces": []
            },
            {
              "signal_code": "api_tool_access",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "API or tool access",
              "finding": "A documented API or tool interface is available for operation.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:13:30.961Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "api-overview"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "HubSpot provides documented CRM API endpoints under api.hubapi.com for managing records such as contacts and deals."
            },
            {
              "signal_code": "delegated_recovery",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Delegated recovery",
              "finding": "Credential rotation, revocation, retry, and recovery paths are documented within delegated authority.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:13:33.292Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "api-errors"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "HubSpot documents token generation, access token refresh, and retry behavior for rate limits and transient errors."
            },
            {
              "signal_code": "documented_limits_errors",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Documented limits and errors",
              "finding": "Limits, structured errors, retry behavior, and idempotency semantics are documented where applicable.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:13:38.966Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "crm-operations"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "HubSpot documents batch request limits (100 inputs), detailed error structures, and retry/rate-limiting guidelines."
            },
            {
              "signal_code": "usable_authentication",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Usable authentication",
              "finding": "Authentication is documented and usable within an agent authorization boundary.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:13:42.627Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "oauth"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "HubSpot documents OAuth authentication using authorization codes to obtain access tokens for API requests."
            }
          ],
          "blockers": [],
          "remediations": []
        }
      ],
      "coverage": {
        "status": "complete",
        "required_signals": 11,
        "covered_signals": 11,
        "ratio": 1
      },
      "last_tested_at": "2026-08-08T00:14:20.635Z",
      "freshness": "fresh",
      "provenance": {
        "tier": "observed",
        "freshness": "fresh",
        "dispute": "none",
        "coverage_policy_digest": "sha256:334e56852b5c38e178fcea839cfba680fb82dd96693842d933776baed21d63df",
        "freshness_policy_digest": "sha256:f4e31a29c2ce994bb8c3009207294ffa086e82b8e0d695abc95d6d6bdb30c2e5",
        "basis_event_ids": [
          "sha256:0ad08207a52233bc5550de88e60a20a234be63b530435d92f726110b286ff632",
          "sha256:1161d0f4cd95b786f93bd99fb2d78ca46e6f5419e8eb39ab932e88f85fe6a370",
          "sha256:21484aa3cdfa7beb7db8932de022595bdf91beecceb755b3928204e0070fd709",
          "sha256:270e63e586e1bef6e1a5f52552f64a7d196432e83117c5a48b77c49cb40596d5",
          "sha256:285d4a6b03eb2440eaf76c428d22f3866d556280c386fd8645ed3470bb918dda",
          "sha256:2bdb8b1abd0f7d89011ffe58d999e842704d849f07c0b37ec72bb1dac6975d31",
          "sha256:3ae3ea24de8bd9aed0df4493207fbbc6e3873e739356b2b0c39155fb713fb0e9",
          "sha256:4bd6376f40ce609dcd7484cc4dda5e92e7f46e751fdb92155ab3270e116c7c2c",
          "sha256:65d4fb330634a74c0cdca2d48ecbc3f90c541fcbc0674cebbf36116dd90abe7a",
          "sha256:678de55068dedd14d93ddd6c52d67a857286f8f623bd2246295a1fc06d110423",
          "sha256:7315c739033582fdb21bb6f41bfbeeff9b50cdc2467e685739456599697466b5",
          "sha256:79d9e743969273621c155eceab28da4d0cbc29065b545e636d5cf30127fa2064",
          "sha256:7c09e9aef813b3f7a998b21b960c27b1d28e3765b72b3fdd64c5d45b1c288d04",
          "sha256:7c31f30fbc3d29c77c72e5c90a9488522eceae65185bc64bbd216e2badd27ca5",
          "sha256:aaa1c77ef36bd788473b9f602cb7b8aed20a08b14626db2be37b882b9f96a446",
          "sha256:ad7e4e0fddc99c3517b2124db9a0bfd4e162a8e500b83e1a9a95974b80ea6654",
          "sha256:c0e06c661d1a8126276e4ad26636e49e99d28431530f19eecff8ab0789b3d70c",
          "sha256:c2beb6b994639a10d68d0f28f2b7e626d9ae61d493be8ebc7f6887d0670cff58",
          "sha256:ee5feb2f442725aaf7f6fa952211cdb4109775c53d1bb124b3bb504898de32e0",
          "sha256:f4baab5962368773b542f2d6606f78b0f313dd0f4349123a6e078bae5d2fd44c",
          "sha256:fa089d2dcd49c6f674e7295769d051d3a5c4b7cb2d8e6cdfba1f93bfe10f2c3b"
        ],
        "fields": [
          {
            "path": "/signals/0",
            "supporting_event_ids": [
              "sha256:79d9e743969273621c155eceab28da4d0cbc29065b545e636d5cf30127fa2064"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:13:27.297Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/1",
            "supporting_event_ids": [
              "sha256:c2beb6b994639a10d68d0f28f2b7e626d9ae61d493be8ebc7f6887d0670cff58"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:13:30.961Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/2",
            "supporting_event_ids": [
              "sha256:aaa1c77ef36bd788473b9f602cb7b8aed20a08b14626db2be37b882b9f96a446"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-08T00:14:20.635Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/3",
            "supporting_event_ids": [
              "sha256:ee5feb2f442725aaf7f6fa952211cdb4109775c53d1bb124b3bb504898de32e0"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:13:27.297Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/4",
            "supporting_event_ids": [
              "sha256:21484aa3cdfa7beb7db8932de022595bdf91beecceb755b3928204e0070fd709"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:13:46.317Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/5",
            "supporting_event_ids": [
              "sha256:ad7e4e0fddc99c3517b2124db9a0bfd4e162a8e500b83e1a9a95974b80ea6654"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:13:46.317Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/6",
            "supporting_event_ids": [
              "sha256:285d4a6b03eb2440eaf76c428d22f3866d556280c386fd8645ed3470bb918dda"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:13:46.317Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/7",
            "supporting_event_ids": [
              "sha256:fa089d2dcd49c6f674e7295769d051d3a5c4b7cb2d8e6cdfba1f93bfe10f2c3b"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:14:08.852Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/8",
            "supporting_event_ids": [
              "sha256:0ad08207a52233bc5550de88e60a20a234be63b530435d92f726110b286ff632"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:14:02.455Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/9",
            "supporting_event_ids": [
              "sha256:7c09e9aef813b3f7a998b21b960c27b1d28e3765b72b3fdd64c5d45b1c288d04"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-08T00:14:20.635Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/10",
            "supporting_event_ids": [
              "sha256:4bd6376f40ce609dcd7484cc4dda5e92e7f46e751fdb92155ab3270e116c7c2c"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:13:46.317Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/11",
            "supporting_event_ids": [
              "sha256:678de55068dedd14d93ddd6c52d67a857286f8f623bd2246295a1fc06d110423"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:13:46.317Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/12",
            "supporting_event_ids": [
              "sha256:3ae3ea24de8bd9aed0df4493207fbbc6e3873e739356b2b0c39155fb713fb0e9"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:13:46.317Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/13",
            "supporting_event_ids": [
              "sha256:65d4fb330634a74c0cdca2d48ecbc3f90c541fcbc0674cebbf36116dd90abe7a"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:13:52.217Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/14",
            "supporting_event_ids": [
              "sha256:270e63e586e1bef6e1a5f52552f64a7d196432e83117c5a48b77c49cb40596d5"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:13:38.966Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/15",
            "supporting_event_ids": [
              "sha256:f4baab5962368773b542f2d6606f78b0f313dd0f4349123a6e078bae5d2fd44c"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:14:02.455Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/16",
            "supporting_event_ids": [
              "sha256:c0e06c661d1a8126276e4ad26636e49e99d28431530f19eecff8ab0789b3d70c"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:13:38.966Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/17",
            "supporting_event_ids": [
              "sha256:7c31f30fbc3d29c77c72e5c90a9488522eceae65185bc64bbd216e2badd27ca5"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:13:30.961Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/18",
            "supporting_event_ids": [
              "sha256:7315c739033582fdb21bb6f41bfbeeff9b50cdc2467e685739456599697466b5"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:13:33.292Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/19",
            "supporting_event_ids": [
              "sha256:1161d0f4cd95b786f93bd99fb2d78ca46e6f5419e8eb39ab932e88f85fe6a370"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:13:38.966Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/20",
            "supporting_event_ids": [
              "sha256:2bdb8b1abd0f7d89011ffe58d999e842704d849f07c0b37ec72bb1dac6975d31"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:13:42.627Z",
            "freshness": "fresh"
          }
        ]
      },
      "canonical_url": "https://sourcey.com/agent-readiness/hubspot/hubspot-crm-api/api-integration-lifecycle",
      "projection_digest": "sha256:00947fefc2eebdcf69226735ae062d95b830ad4cdc41d82b1cfca5c21a628a2c"
    }
  }
}
