{
  "contract": "sourcey.site-record/v1alpha1",
  "release_id": "sha256:b78f22c5ea873b3115531a2e15e6015144e93a27e087127457856629b2908c98",
  "snapshot_id": "sha256:59a215f5c3c95e3452980d6aea6165704b8b608d180f09bfe23d3a7bc06b5b76",
  "artifact_sha256": "sha256:b76be265264024bb68f072dade46e90059a19d0a7d1e97335c9a218ed7e58a86",
  "data": {
    "entity_id": "ent_01kyyts97tg62epymp01r8t62x",
    "entity_slug": "twilio",
    "profile": {
      "projection_contract": "sourcey.agent-readiness-projection/v1alpha1",
      "agent_readiness_profile_id": "arp_01m4pm5ckbxjv672kt739zt3t6",
      "entity_id": "ent_01kyyts97tg62epymp01r8t62x",
      "scope": {
        "product": {
          "key": "twilio-messaging-api",
          "name": "Twilio Messaging API"
        },
        "job": {
          "key": "sms-send",
          "name": "Send a text message"
        }
      },
      "catalog_binding": {
        "base_release_id": "sha256:b869bb4c1dda91c02b2afe3c6e99e446e48569d62a7b385dfad674d0d6b94ac8",
        "entity_revision_digest": "sha256:6789395a68188d85e262606330dbb20d4dcfd49f918934a99993ca476c86ca81"
      },
      "declaration_revision_digest": "sha256:eb6bd14c2747b9195efb0fc1fc81fab71dd74955efb401c330b0e96fd1699ff0",
      "declaration": {
        "declaration_id": "declaration_twilio_twilio_messaging_api_sms_send",
        "provenance": {
          "repository": "sourcey/agent-ready-services",
          "commit": "d0349b59eac1f864862be6cae9c25d97bec9e731",
          "path": "entities/tw/twilio.yaml",
          "git_blob_oid": "fea61fa5b524b14c13a40815c6635b01310e91ac",
          "blob_digest": "sha256:ab4d1c7defa0dff2e21c765f26117bf93a10c590dbf919ffd82a1111cb2e4c09"
        },
        "status": "community_declared"
      },
      "surface_catalog": {
        "participants": [
          {
            "participant_id": "twilio",
            "roles": [
              "access_operator",
              "identity_provider",
              "operations_provider",
              "payment_provider",
              "provisioning_provider",
              "subject"
            ],
            "identity": {
              "entity_id": "ent_01kyyts97tg62epymp01r8t62x"
            }
          }
        ],
        "resources": [
          {
            "resource_id": "account-signup",
            "uri": "https://www.twilio.com/docs/usage/tutorials/how-to-use-your-free-trial-account",
            "roles": [
              "access",
              "checkout",
              "documentation"
            ],
            "operated_by_participant_id": "twilio",
            "standard_bindings": []
          },
          {
            "resource_id": "api-errors",
            "uri": "https://www.twilio.com/docs/usage/twilios-response",
            "roles": [
              "documentation",
              "operations",
              "recovery",
              "status"
            ],
            "operated_by_participant_id": "twilio",
            "standard_bindings": []
          },
          {
            "resource_id": "api-overview",
            "uri": "https://www.twilio.com/docs/usage/api",
            "roles": [
              "discovery",
              "documentation",
              "operations"
            ],
            "operated_by_participant_id": "twilio",
            "standard_bindings": []
          },
          {
            "resource_id": "authentication",
            "uri": "https://www.twilio.com/docs/usage/requests-to-twilio",
            "roles": [
              "authentication",
              "descriptor",
              "documentation",
              "provisioning"
            ],
            "operated_by_participant_id": "twilio",
            "standard_bindings": []
          },
          {
            "resource_id": "authtoken",
            "uri": "https://www.twilio.com/docs/iam/api/authtoken",
            "roles": [
              "authentication",
              "documentation"
            ],
            "operated_by_participant_id": "twilio",
            "standard_bindings": []
          },
          {
            "resource_id": "delivery-status",
            "uri": "https://www.twilio.com/docs/messaging/guides/track-outbound-message-status",
            "roles": [
              "documentation",
              "operations",
              "recovery",
              "status"
            ],
            "operated_by_participant_id": "twilio",
            "standard_bindings": []
          },
          {
            "resource_id": "keys",
            "uri": "https://www.twilio.com/docs/usage/api/keys",
            "roles": [
              "authentication",
              "documentation"
            ],
            "operated_by_participant_id": "twilio",
            "standard_bindings": []
          },
          {
            "resource_id": "message-operations",
            "uri": "https://www.twilio.com/docs/messaging/api/message-resource",
            "roles": [
              "documentation",
              "operations",
              "provisioning",
              "status"
            ],
            "operated_by_participant_id": "twilio",
            "standard_bindings": []
          },
          {
            "resource_id": "messaging",
            "uri": "https://www.twilio.com/en-us/pricing/messaging",
            "roles": [
              "documentation",
              "pricing"
            ],
            "operated_by_participant_id": "twilio",
            "standard_bindings": []
          },
          {
            "resource_id": "pricing",
            "uri": "https://www.twilio.com/en-us/pricing",
            "roles": [
              "pricing"
            ],
            "operated_by_participant_id": "twilio",
            "standard_bindings": []
          },
          {
            "resource_id": "service-terms",
            "uri": "https://www.twilio.com/en-us/legal/tos",
            "roles": [
              "terms"
            ],
            "operated_by_participant_id": "twilio",
            "standard_bindings": []
          },
          {
            "resource_id": "support",
            "uri": "https://www.twilio.com/docs/usage/troubleshooting",
            "roles": [
              "documentation",
              "recovery"
            ],
            "operated_by_participant_id": "twilio",
            "standard_bindings": []
          }
        ],
        "endpoints": [
          {
            "endpoint_id": "registration",
            "uri": "https://www.twilio.com/try-twilio",
            "transport": "http",
            "roles": [
              "registration"
            ],
            "operated_by_participant_id": "twilio",
            "standard_bindings": []
          },
          {
            "endpoint_id": "twilio-api",
            "uri": "https://api.twilio.com/2010-04-01",
            "transport": "http",
            "roles": [
              "service",
              "status"
            ],
            "operated_by_participant_id": "twilio",
            "standard_bindings": []
          }
        ],
        "interfaces": [
          {
            "interface_id": "api-authentication",
            "modality": "network_api",
            "functions": [
              "authentication"
            ],
            "endpoint_ids": [],
            "resource_ids": [
              "authentication"
            ],
            "operated_by_participant_id": "twilio",
            "standard_bindings": []
          },
          {
            "interface_id": "messaging-api",
            "modality": "network_api",
            "functions": [
              "events",
              "service_operation"
            ],
            "endpoint_ids": [
              "twilio-api"
            ],
            "resource_ids": [
              "api-errors",
              "api-overview",
              "delivery-status",
              "message-operations"
            ],
            "operated_by_participant_id": "twilio",
            "standard_bindings": []
          }
        ],
        "relations": [
          {
            "relation_id": "authentication-authenticates-api",
            "kind": "authenticates",
            "from": {
              "node_kind": "interface",
              "node_id": "api-authentication"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "messaging-api"
            }
          },
          {
            "relation_id": "authtoken-describes-api-authentication",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "authtoken"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "api-authentication"
            }
          },
          {
            "relation_id": "keys-describes-api-authentication",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "keys"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "api-authentication"
            }
          },
          {
            "relation_id": "messages-describe-api",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "message-operations"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "messaging-api"
            }
          },
          {
            "relation_id": "overview-describes-api",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "api-overview"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "messaging-api"
            }
          },
          {
            "relation_id": "signup-precedes-authentication",
            "kind": "precedes",
            "from": {
              "node_kind": "resource",
              "node_id": "account-signup"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "api-authentication"
            }
          }
        ],
        "surface_exclusions": [
          {
            "exclusion_id": "separate-eligibility-resource",
            "role": "eligibility",
            "rationale": "Applicable access conditions are published within the service terms; no separate eligibility resource is declared."
          }
        ]
      },
      "lifecycle": "active",
      "effective_from": "2026-10-11T23:19:12.604Z",
      "revision_digest": "sha256:63bb82a4a9545f29141ed108f76bae9eb684650efb973e68e0cd6f1974767a3b",
      "policy_digest": "sha256:0a4e4996176ce674b4f3ce910c5fca4f37c9b53bcdf51656d53a1a92fcf2c879",
      "policy_version": "kind-2026-10-12",
      "policy_as_of": "2026-10-05T00:00:00Z",
      "job": {
        "job_id": "sms-send",
        "job_digest": "sha256:07f97793f42f674eaa8f3c29c8fb421f5e2f8b8e5a69b3416e39a66ebf0b1eb4",
        "category": "sms-messaging",
        "name": "Send a text message",
        "statement": "Send a text message carrying the run's nonce to the number its runner supplies, then read its delivery status."
      },
      "interface_id": "messaging-api",
      "label": "probed",
      "label_run_at": null,
      "grade": {
        "letter": "B",
        "statement": "A card on file.",
        "steps": [
          {
            "step": "discover",
            "outcome": "machine",
            "timing": null
          },
          {
            "step": "authority",
            "outcome": "workaround",
            "timing": "setup"
          },
          {
            "step": "onboard",
            "outcome": "workaround",
            "timing": "setup"
          },
          {
            "step": "pay",
            "outcome": "workaround",
            "timing": "setup"
          },
          {
            "step": "confirm",
            "outcome": "machine",
            "timing": null
          },
          {
            "step": "sustain",
            "outcome": "machine",
            "timing": null
          }
        ],
        "job": "reachable",
        "approvals": [],
        "workarounds": [
          {
            "step": "authority",
            "timing": "setup"
          },
          {
            "step": "onboard",
            "timing": "setup"
          },
          {
            "step": "pay",
            "timing": "setup"
          }
        ]
      },
      "discovery": [
        {
          "fact": "mcp_endpoint",
          "value": "https://www.twilio.com/.well-known/mcp",
          "descriptor_url": "https://www.twilio.com/.well-known/mcp/server-card.json",
          "attempt_digest": "sha256:0c2d901a3a6759cb23e0ef0d35b8617a3ce9ada042aec4d7de594052d374a214",
          "adapter": {
            "namespace": "mcp-server-card",
            "version": "server-json"
          }
        },
        {
          "fact": "unsupported_descriptor",
          "value": "https://www.twilio.com/llms.txt",
          "descriptor_url": "https://www.twilio.com/llms.txt",
          "attempt_digest": "sha256:f9d755007bb45e4f04e590e25bb7181514dbff9baef5e1f3782472232a19ac70",
          "adapter": {
            "namespace": "llms.txt",
            "version": "unknown"
          }
        },
        {
          "fact": "unsupported_descriptor",
          "value": "https://www.twilio.com/llms.txt",
          "descriptor_url": "https://www.twilio.com/llms.txt",
          "attempt_digest": "sha256:b09d48635223da9ad537dc83fb2b53e2a79e17036b31be1c5b89da22cc0234a3",
          "adapter": {
            "namespace": "llms.txt",
            "version": "unknown"
          }
        },
        {
          "fact": "documentation_route",
          "value": "https://api.twilio.com/",
          "descriptor_url": "https://www.twilio.com/docs/messaging/guides/track-outbound-message-status",
          "attempt_digest": "sha256:7cd669bc248bab8cb3b44554c0f4583fe9387ca53631e6b5a0e0db8b38bbf36f",
          "adapter": {
            "namespace": "markdown",
            "version": "request"
          }
        }
      ],
      "discovery_run_at": null,
      "run": {
        "started_at": "2026-10-11T23:18:28.654Z",
        "finished_at": "2026-10-11T23:19:12.604Z",
        "discovery_reads": 32,
        "exchanges": [
          {
            "purpose": "probe_operation",
            "role": "request",
            "method": "POST",
            "url": "https://api.twilio.com/2010-04-01/Accounts/AC00000000000000000000000000000000/Messages.json",
            "started_at": "2026-10-11T23:18:53.173Z",
            "finished_at": "2026-10-11T23:18:53.228Z",
            "response": {
              "status": 401,
              "media_type": "application/json",
              "content_bytes": 141,
              "content_digest": "sha256:45fbb92c209ec6fa404fd8e4884fbc7cd402fff1c914cbdd925945a8c1c44d92"
            },
            "transport_error": null,
            "exchange_digest": "sha256:069d00b252cd9eae74f83c86f621ad3627508c2191d6dbe689b52ce6810f312f"
          },
          {
            "purpose": "probe_resource_metadata",
            "role": "request",
            "method": "GET",
            "url": "https://api.twilio.com/.well-known/oauth-protected-resource/2010-04-01/Accounts/AC00000000000000000000000000000000/Messages.json",
            "started_at": "2026-10-11T23:18:57.022Z",
            "finished_at": "2026-10-11T23:18:57.105Z",
            "response": {
              "status": 404,
              "media_type": "application/json",
              "content_bytes": 238,
              "content_digest": "sha256:666b94f89eb174ee61afb8e21ba370499e113d9712154b06f6fb0a3b44667cce"
            },
            "transport_error": null,
            "exchange_digest": "sha256:a9ae93720def11ea5bb7c9a78b3cf158bfdb52447402d43cccd889506c426461"
          },
          {
            "purpose": "probe_resource_metadata",
            "role": "request",
            "method": "GET",
            "url": "https://api.twilio.com/.well-known/oauth-protected-resource",
            "started_at": "2026-10-11T23:19:01.160Z",
            "finished_at": "2026-10-11T23:19:01.223Z",
            "response": {
              "status": 404,
              "media_type": "application/json",
              "content_bytes": 169,
              "content_digest": "sha256:26e549681ee2d42ac2342f0f8c4b80d04f280f8d685024a3a6b72bc1f754d7f4"
            },
            "transport_error": null,
            "exchange_digest": "sha256:dc11ab0e2c46ed53acaede055d2b78355d4ce56ec80ed01d2e854d0a6a4b5e1d"
          },
          {
            "purpose": "probe_page",
            "role": "request",
            "method": "GET",
            "url": "https://www.twilio.com/try-twilio",
            "started_at": "2026-10-11T23:19:05.112Z",
            "finished_at": "2026-10-11T23:19:05.207Z",
            "response": {
              "status": 307,
              "media_type": "text/html",
              "content_bytes": 0,
              "content_digest": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "transport_error": null,
            "exchange_digest": "sha256:01352403fbed8120f65cef23e014ec151e36679cf7713b513615532203e334f2"
          },
          {
            "purpose": "probe_page",
            "role": "request",
            "method": "GET",
            "url": "https://www.twilio.com/docs/usage/tutorials/how-to-use-your-free-trial-account",
            "started_at": "2026-10-11T23:19:08.432Z",
            "finished_at": "2026-10-11T23:19:08.488Z",
            "response": {
              "status": 200,
              "media_type": "text/html",
              "content_bytes": 423441,
              "content_digest": "sha256:a65fb5bc3efca78d9564f98f26aadb090d28fd7476ece38785615d465a7cbe2d"
            },
            "transport_error": null,
            "exchange_digest": "sha256:bce4cfde05087137f7e42c4f7908f08c738da90343f534adb963bd4c1aea3c8a"
          }
        ],
        "assertions": []
      },
      "last_run_at": "2026-10-11T23:19:12.604Z",
      "publication": {
        "visibility": "discoverable",
        "reasons": []
      },
      "provenance": {
        "dispute": "none",
        "vendor_attestation": {
          "status": "none"
        },
        "basis_event_ids": []
      },
      "canonical_url": "https://sourcey.com/c/twilio/agent-readiness/twilio-messaging-api/sms-send",
      "projection_digest": "sha256:2eebc92c3f7bcbcfcbe73b956d681d9b2b9be9aaab377a7a7e9a7c2e5cfdf3b2"
    }
  }
}
