{
  "api_contract": "sourcey.catalog-api/v1",
  "release_id": "sha256:1042b2f7b6130b564b0059e00560960c50db2d7578dfa5178d401e5d14d9b11f",
  "artifact_sha256": "sha256:a695609a4d6872bd447e3125d912e7f84e605d0f064df0b08e62a9f24d9d2e80",
  "data": {
    "revision_contract": "sourcey.agent-readiness-revision/v1alpha1",
    "agent_readiness_profile_id": "arp_01kzf0m4xm8n4vc1f7z6qs2yh5",
    "entity_id": "ent_01kyyts97tg62epymp01r8t62x",
    "scope": {
      "product": {
        "key": "twilio-messaging-api",
        "name": "Twilio Messaging API"
      },
      "funnel": {
        "key": "message-operations",
        "name": "Message operations"
      }
    },
    "catalog_binding": {
      "base_release_id": "sha256:5082ec07047a2324648f569d234cc64342ce2707b2f3d77fde8fc06af517cee6",
      "entity_revision_digest": "sha256:6789395a68188d85e262606330dbb20d4dcfd49f918934a99993ca476c86ca81"
    },
    "declaration_revision_digest": "sha256:94072f4133e05f27b9d01e80da40ebafdc84dccc1639115a8a3fcbb2b037f066",
    "declaration": {
      "declaration_id": "declaration_twilio_messaging_api_operations",
      "provenance": {
        "repository": "sourcey/agent-ready-services",
        "commit": "00f00edd170194cc1cf3081b97b218474537ffdb",
        "path": "vendors/tw/twilio.yaml",
        "git_blob_oid": "c55e199762c25edb16ba3020cccd7dc901626014",
        "blob_digest": "sha256:9b9a119478c784ea9df6f92c529ef2d29f4490ca571ad21f970d7a7fa38af8e8"
      },
      "status": "community_declared"
    },
    "lifecycle": "active",
    "effective_from": "2026-08-08T02:07:16.640Z",
    "signals": [
      {
        "stage": "evaluate",
        "signal_code": "decidable_eligibility",
        "value": "yes",
        "observed_at": "2026-08-07T21:15:08.840Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "service-terms"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "Twilio publishes explicit eligibility terms in its Terms of Service, specifying intended business or professional use and defining entity jurisdiction rules."
      },
      {
        "stage": "evaluate",
        "signal_code": "machine_discovery",
        "value": "yes",
        "observed_at": "2026-08-07T21:15:10.892Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "api-overview"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "Twilio Messaging API and usage documentation are machine-discoverable via structured TechArticle schema and documentation entrypoints."
      },
      {
        "stage": "evaluate",
        "signal_code": "readable_pricing",
        "value": "yes",
        "observed_at": "2026-08-07T21:15:12.289Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "pricing"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "Twilio provides explicit, machine-readable pricing rates per channel and message volume on its pricing page."
      },
      {
        "stage": "evaluate",
        "signal_code": "structured_terms",
        "value": "partial",
        "observed_at": "2026-08-07T21:15:08.840Z",
        "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": "Twilio's Terms of Service are available as stable HTML legal text on its public website."
      },
      {
        "stage": "sign_up",
        "signal_code": "captcha_free",
        "value": "no",
        "observed_at": "2026-08-07T21:54:26.612Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "account-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": "account-signup"
            }
          ]
        },
        "note": "The signup URL returned an unexpected application error (404 Not Found), blocking CAPTCHA-free autonomous signup."
      },
      {
        "stage": "sign_up",
        "signal_code": "machine_operable_form",
        "value": "no",
        "observed_at": "2026-08-07T21:54:26.612Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "account-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": "account-signup"
            }
          ]
        },
        "note": "The signup page resulted in an application 404 error, failing to provide machine-operable signup controls."
      },
      {
        "stage": "sign_up",
        "signal_code": "phone_verification_free",
        "value": "no",
        "observed_at": "2026-08-07T21:54:26.612Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "account-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": "account-signup"
            }
          ]
        },
        "note": "Autonomous signup could not be completed due to a 404 application error on the signup URL."
      },
      {
        "stage": "sign_up",
        "signal_code": "stable_entrypoint",
        "value": "no",
        "observed_at": "2026-08-07T21:54:28.010Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "account-signup"
          }
        ],
        "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": "account-signup"
            }
          ]
        },
        "note": "The signup entrypoint URL returned an unexpected 404 Not Found application error."
      },
      {
        "stage": "sign_up",
        "signal_code": "supported_identity_flow",
        "value": "yes",
        "observed_at": "2026-08-07T21:16:01.449Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "authentication"
          }
        ],
        "assessment_method": {
          "name": "headless",
          "version": "1",
          "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
        },
        "note": "Twilio documents scoped and revocable machine identity flows, including API keys (Main, Standard, and Restricted) with clear creation and revocation boundaries."
      },
      {
        "stage": "pay",
        "signal_code": "explicit_price",
        "value": "yes",
        "observed_at": "2026-08-07T21:15:12.289Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "pricing"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "Twilio publishes explicit pay-as-you-go pricing for messaging channels, such as SMS starting at $0.0083 to send or receive a message."
      },
      {
        "stage": "pay",
        "signal_code": "machine_operable_checkout",
        "value": "no",
        "observed_at": "2026-08-07T21:54:26.612Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "account-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": "account-signup"
            }
          ]
        },
        "note": "The signup and checkout flow URL returned a 404 error during testing, rendering machine-operable checkout unavailable."
      },
      {
        "stage": "pay",
        "signal_code": "sales_intervention_free",
        "value": "unknown",
        "observed_at": "2026-08-07T21:54:26.612Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "account-signup"
          }
        ],
        "assessment_method": {
          "name": "headless",
          "version": "1",
          "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
        },
        "note": "The sign-up funnel page encountered a 404 error during testing, preventing verification of whether sales intervention is required."
      },
      {
        "stage": "pay",
        "signal_code": "supported_payment_rail",
        "value": "unknown",
        "observed_at": "2026-08-07T21:54:26.612Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "account-signup"
          }
        ],
        "assessment_method": {
          "name": "headless",
          "version": "1",
          "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
        },
        "note": "The signup and payment entry page returned a 404 error, so payment rails could not be verified in this test run."
      },
      {
        "stage": "provision",
        "signal_code": "automatic_activation",
        "value": "not_applicable",
        "observed_at": "2026-08-07T21:15:54.935Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "message-operations"
          }
        ],
        "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": "message-operations"
            }
          ]
        },
        "note": "The message-operations scope covers sending, fetching, updating, and deleting individual message resources via the Twilio Messaging API, where explicit provisioning steps do not apply."
      },
      {
        "stage": "provision",
        "signal_code": "bounded_delay",
        "value": "unknown",
        "observed_at": "2026-08-07T21:15:17.303Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "message-operations"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "Documentation notes queuing and validity parameters, but does not document an exact bounded provisioning time guarantee for Message resources."
      },
      {
        "stage": "provision",
        "signal_code": "credential_delivery",
        "value": "yes",
        "observed_at": "2026-08-07T21:16:01.449Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "authentication"
          }
        ],
        "assessment_method": {
          "name": "headless",
          "version": "1",
          "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
        },
        "note": "Twilio provides documented flows to obtain API Keys (Username/Password) via the Console or API, as well as using Account SID and Auth Token."
      },
      {
        "stage": "provision",
        "signal_code": "machine_readable_status",
        "value": "yes",
        "observed_at": "2026-08-07T21:15:17.303Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "message-operations"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "Message resource exposes machine-readable statuses (e.g. queued, sending, sent, delivered, failed, undelivered, scheduled, canceled) via API responses and status callback webhooks."
      },
      {
        "stage": "operate",
        "signal_code": "api_tool_access",
        "value": "yes",
        "observed_at": "2026-08-07T21:15:10.892Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "api-overview"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "Twilio Messaging API provides a documented REST API and SDK interfaces for sending and managing messages over HTTPS."
      },
      {
        "stage": "operate",
        "signal_code": "delegated_recovery",
        "value": "partial",
        "observed_at": "2026-08-07T21:15:14.624Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "delivery-status"
          }
        ],
        "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": "delivery-status"
            }
          ]
        },
        "note": "Status callbacks support tracking message states and error codes, but recovery handling and message cancellation are limited to specific scenarios like scheduled messages."
      },
      {
        "stage": "operate",
        "signal_code": "documented_limits_errors",
        "value": "yes",
        "observed_at": "2026-08-07T21:15:17.303Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "message-operations"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "The Messaging API documentation outlines message status values, structured error codes, validity periods, and rate limits."
      },
      {
        "stage": "operate",
        "signal_code": "usable_authentication",
        "value": "yes",
        "observed_at": "2026-08-07T21:15:18.490Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "authentication"
          }
        ],
        "assessment_method": {
          "name": "http",
          "version": "1",
          "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
        },
        "note": "API requests can be authenticated using HTTP Basic Authentication with API Keys and Secrets or Account SID and Auth Token."
      }
    ],
    "revision_digest": "sha256:cae85d58ad7ba8dd6160dcfa1cab95f78564a42d166cb5ba995139e434fa5182"
  }
}
