{
  "contract": "sourcey.site-record/v1alpha1",
  "release_id": "sha256:a96a8345e55afef397cafeb76938a0804770a4eb6102a396587c4fc7b6d7172d",
  "snapshot_id": "sha256:52581801c3a52d89c562228608d1d4c8682d2d58dbcd758788de7cf70a26ecd6",
  "artifact_sha256": "sha256:9f0d2133860c83ece5b6211da6c02728902e7b7bb8fe96c5f33090ea7c1cf3dc",
  "data": {
    "entity_id": "ent_01kyh8fpe5dk9hex187x4g03fn",
    "entity_slug": "vercel",
    "profile": {
      "projection_contract": "sourcey.agent-readiness-projection/v1alpha1",
      "agent_readiness_profile_id": "arp_01m4pmaa065jm25wbanbwc8mmj",
      "entity_id": "ent_01kyh8fpe5dk9hex187x4g03fn",
      "scope": {
        "product": {
          "key": "vercel-rest-api",
          "name": "Vercel REST API"
        },
        "job": {
          "key": "deployment-create",
          "name": "Create a deployment"
        }
      },
      "catalog_binding": {
        "base_release_id": "sha256:3419bfe1ac9cd9fe6046be457a7d5048c1246e888cc87cc23d00c2c8b77e2f31",
        "entity_revision_digest": "sha256:2ca7db4f429b3bb813bb1ac6d59c8cb5213e3c16a9096dfaa1455909f7b73e13"
      },
      "declaration_revision_digest": "sha256:c3c6b0bf31dd6ba392b9e7c131e31002689f2e3a467c8a887edb5b8336970a6f",
      "declaration": {
        "declaration_id": "declaration_vercel_vercel_rest_api_deployment_create",
        "provenance": {
          "repository": "sourcey/agent-ready-services",
          "commit": "d0349b59eac1f864862be6cae9c25d97bec9e731",
          "path": "entities/ve/vercel.yaml",
          "git_blob_oid": "78e0c802f9eb0fd7461aed8bff02face3b31c353",
          "blob_digest": "sha256:cabfab92dc1ea7faf0b7ae8782db44532a41c9229b6e6841fd6a8e1d34e2edfe"
        },
        "status": "community_declared"
      },
      "surface_catalog": {
        "participants": [
          {
            "participant_id": "vercel",
            "roles": [
              "access_operator",
              "identity_provider",
              "operations_provider",
              "payment_provider",
              "provisioning_provider",
              "subject"
            ],
            "identity": {
              "entity_id": "ent_01kyh8fpe5dk9hex187x4g03fn"
            }
          }
        ],
        "resources": [
          {
            "resource_id": "access-tokens",
            "uri": "https://vercel.com/guides/how-do-i-use-a-vercel-api-access-token",
            "roles": [
              "authentication",
              "descriptor",
              "documentation",
              "provisioning"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          },
          {
            "resource_id": "account-signup",
            "uri": "https://vercel.com/signup",
            "roles": [
              "access"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          },
          {
            "resource_id": "api-errors",
            "uri": "https://vercel.com/docs/rest-api/errors",
            "roles": [
              "documentation",
              "operations",
              "recovery",
              "status"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          },
          {
            "resource_id": "api-reference",
            "uri": "https://vercel.com/docs/rest-api",
            "roles": [
              "discovery",
              "documentation",
              "operations"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          },
          {
            "resource_id": "billing-checkout",
            "uri": "https://vercel.com/docs/plans/pro-plan/billing",
            "roles": [
              "documentation",
              "pricing"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          },
          {
            "resource_id": "cli-tokens",
            "uri": "https://vercel.com/docs/cli/tokens",
            "roles": [
              "authentication",
              "documentation"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          },
          {
            "resource_id": "deployment-operations",
            "uri": "https://vercel.com/docs/rest-api/reference/endpoints/deployments/create-a-new-deployment",
            "roles": [
              "documentation",
              "operations",
              "provisioning",
              "status"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          },
          {
            "resource_id": "mcp-docs",
            "uri": "https://vercel.com/docs/agent-resources/vercel-mcp/tools/deployments",
            "roles": [
              "discovery",
              "documentation",
              "operations"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          },
          {
            "resource_id": "pricing",
            "uri": "https://vercel.com/pricing",
            "roles": [
              "pricing"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          },
          {
            "resource_id": "service-terms",
            "uri": "https://vercel.com/legal/terms",
            "roles": [
              "terms"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          },
          {
            "resource_id": "support",
            "uri": "https://vercel.com/help",
            "roles": [
              "documentation",
              "recovery"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          }
        ],
        "endpoints": [
          {
            "endpoint_id": "mcp-client-review",
            "uri": "https://forms.gle/FQ3nYPbovoHvbfmz9",
            "transport": "http",
            "roles": [
              "access_request"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          },
          {
            "endpoint_id": "mcp-server",
            "uri": "https://mcp.vercel.com",
            "transport": "http",
            "roles": [
              "protected_resource",
              "service"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          },
          {
            "endpoint_id": "registration",
            "uri": "https://vercel.com/signup",
            "transport": "http",
            "roles": [
              "registration"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          },
          {
            "endpoint_id": "vercel-api",
            "uri": "https://api.vercel.com",
            "transport": "http",
            "roles": [
              "service",
              "status"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          }
        ],
        "interfaces": [
          {
            "interface_id": "api-authentication",
            "modality": "network_api",
            "functions": [
              "authentication"
            ],
            "endpoint_ids": [],
            "resource_ids": [
              "access-tokens"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          },
          {
            "interface_id": "deployment-api",
            "modality": "network_api",
            "functions": [
              "service_operation"
            ],
            "endpoint_ids": [
              "vercel-api"
            ],
            "resource_ids": [
              "api-errors",
              "api-reference",
              "deployment-operations"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          },
          {
            "interface_id": "vercel-mcp",
            "modality": "tool_server",
            "functions": [
              "service_operation"
            ],
            "endpoint_ids": [
              "mcp-client-review",
              "mcp-server"
            ],
            "resource_ids": [
              "mcp-docs"
            ],
            "operated_by_participant_id": "vercel",
            "standard_bindings": []
          }
        ],
        "relations": [
          {
            "relation_id": "authentication-authenticates-api",
            "kind": "authenticates",
            "from": {
              "node_kind": "interface",
              "node_id": "api-authentication"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "deployment-api"
            }
          },
          {
            "relation_id": "cli-tokens-describes-api-authentication",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "cli-tokens"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "api-authentication"
            }
          },
          {
            "relation_id": "deployments-describe-api",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "deployment-operations"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "deployment-api"
            }
          },
          {
            "relation_id": "mcp-docs-describe-server",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "mcp-docs"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "vercel-mcp"
            }
          },
          {
            "relation_id": "reference-describes-api",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "api-reference"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "deployment-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": "free-job-no-checkout",
            "role": "checkout",
            "rationale": "Vercel's free Hobby plan creates deployments with no payment."
          },
          {
            "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-12T00:00:14.843Z",
      "revision_digest": "sha256:45b10698d0f50144f5f4b0657c4fa110df1b4e1b0b59477bf4a0aaf08acc7a2c",
      "policy_digest": "sha256:b612172aad277b54461de84e006815126f2df566563954b02f4432a39cad89ac",
      "policy_version": "kind-2026-10-12.2",
      "policy_as_of": "2026-10-05T00:00:00Z",
      "job": {
        "job_id": "deployment-create",
        "job_digest": "sha256:ddf2fde714184f458c1d0cbc53e3a9a4522174f2d2d792b2abbe8b9a54eecd36",
        "category": "frontend-hosting",
        "name": "Create a deployment",
        "statement": "Create a deployment named with the run's nonce, then read it back."
      },
      "interface_id": "deployment-api",
      "label": "probed",
      "label_run_at": null,
      "grade": {
        "letter": "B+",
        "statement": "A person signs up and hands over a key.",
        "steps": [
          {
            "step": "discover",
            "outcome": "machine",
            "timing": null
          },
          {
            "step": "authority",
            "outcome": "workaround",
            "timing": "setup"
          },
          {
            "step": "onboard",
            "outcome": "workaround",
            "timing": "setup"
          },
          {
            "step": "pay",
            "outcome": "not_applicable",
            "timing": null
          },
          {
            "step": "confirm",
            "outcome": "machine",
            "timing": null
          },
          {
            "step": "sustain",
            "outcome": "machine",
            "timing": null
          }
        ],
        "job": "reachable",
        "approvals": [],
        "workarounds": [
          {
            "step": "authority",
            "timing": "setup"
          },
          {
            "step": "onboard",
            "timing": "setup"
          }
        ]
      },
      "discovery": [
        {
          "fact": "ard_entry",
          "value": "https://mcp.vercel.com/.well-known/oauth-protected-resource",
          "descriptor_url": "https://vercel.com/.well-known/ai-catalog.json",
          "attempt_digest": "sha256:505842d48babb30b62ecd60deaf808bd82c68821cee9b9b65149d4b471187aeb",
          "adapter": {
            "namespace": "ard",
            "version": "1.0"
          }
        },
        {
          "fact": "ard_entry",
          "value": "https://vercel.com/openapi.json",
          "descriptor_url": "https://vercel.com/.well-known/ai-catalog.json",
          "attempt_digest": "sha256:505842d48babb30b62ecd60deaf808bd82c68821cee9b9b65149d4b471187aeb",
          "adapter": {
            "namespace": "ard",
            "version": "1.0"
          }
        },
        {
          "fact": "ard_entry",
          "value": "https://vercel.com/docs/agent-resources.md",
          "descriptor_url": "https://vercel.com/.well-known/ai-catalog.json",
          "attempt_digest": "sha256:505842d48babb30b62ecd60deaf808bd82c68821cee9b9b65149d4b471187aeb",
          "adapter": {
            "namespace": "ard",
            "version": "1.0"
          }
        },
        {
          "fact": "ard_entry",
          "value": "https://vercel.com/docs/graph.json",
          "descriptor_url": "https://vercel.com/.well-known/ai-catalog.json",
          "attempt_digest": "sha256:505842d48babb30b62ecd60deaf808bd82c68821cee9b9b65149d4b471187aeb",
          "adapter": {
            "namespace": "ard",
            "version": "1.0"
          }
        },
        {
          "fact": "api_catalog_link",
          "value": "https://vercel.com/.well-known/api-catalog",
          "descriptor_url": "https://vercel.com/.well-known/api-catalog",
          "attempt_digest": "sha256:8b83e44bfe979ee6cd6f679241a4d70ab05179a2c8fb3f1703202a0f254a6257",
          "adapter": {
            "namespace": "rfc9727",
            "version": "linkset"
          }
        },
        {
          "fact": "api_catalog_link",
          "value": "https://api.vercel.com/",
          "descriptor_url": "https://vercel.com/.well-known/api-catalog",
          "attempt_digest": "sha256:8b83e44bfe979ee6cd6f679241a4d70ab05179a2c8fb3f1703202a0f254a6257",
          "adapter": {
            "namespace": "rfc9727",
            "version": "linkset"
          }
        },
        {
          "fact": "oauth_authorization_server",
          "value": "https://vercel.com/",
          "descriptor_url": "https://vercel.com/.well-known/oauth-authorization-server",
          "attempt_digest": "sha256:4546c1c07cabd2b42db4d37ba813211335f9e81025459053cc1c1371eea5b25d",
          "adapter": {
            "namespace": "rfc8414",
            "version": "1"
          }
        },
        {
          "fact": "agent_documentation",
          "value": "https://vercel.com/llms.txt",
          "descriptor_url": "https://vercel.com/llms.txt",
          "attempt_digest": "sha256:0f2a15b860b56a78e6297c5b7b35050349e1e90e7bb4ec33fae911273a211355",
          "adapter": {
            "namespace": "llms.txt",
            "version": "1"
          }
        },
        {
          "fact": "openapi_server",
          "value": "https://api.vercel.com/",
          "descriptor_url": "https://vercel.com/openapi.json",
          "attempt_digest": "sha256:6888825a47fcb89f076c4d5521e8bd8b11818f6d55d8fa345ab4de277df68bc8",
          "adapter": {
            "namespace": "openapi",
            "version": "3.0.3"
          }
        },
        {
          "fact": "oauth_authorization_server",
          "value": "https://vercel.com/",
          "descriptor_url": "https://mcp.vercel.com/.well-known/oauth-authorization-server",
          "attempt_digest": "sha256:587d91d70642f8b355bd8f754728467115693de0969a5292d7cc723d33704e51",
          "adapter": {
            "namespace": "rfc8414",
            "version": "1"
          }
        },
        {
          "fact": "oauth_protected_resource",
          "value": "https://mcp.vercel.com/",
          "descriptor_url": "https://mcp.vercel.com/.well-known/oauth-protected-resource",
          "attempt_digest": "sha256:25d77cdadea7f126e16173a60b9a2b65d9c104ef3623f5cd1f481a5b7b05c427",
          "adapter": {
            "namespace": "rfc9728",
            "version": "1"
          }
        },
        {
          "fact": "oauth_authorization_server",
          "value": "https://vercel.com/",
          "descriptor_url": "https://mcp.vercel.com/.well-known/oauth-protected-resource",
          "attempt_digest": "sha256:25d77cdadea7f126e16173a60b9a2b65d9c104ef3623f5cd1f481a5b7b05c427",
          "adapter": {
            "namespace": "rfc9728",
            "version": "1"
          }
        },
        {
          "fact": "documentation_route",
          "value": "https://api.vercel.com/",
          "descriptor_url": "https://vercel.com/docs/rest-api/deployments/create-a-new-deployment",
          "attempt_digest": "sha256:3aef5e7041135076798a9cbb1e01ec97b56e76c896038905f5bf06ff5c647048",
          "adapter": {
            "namespace": "markdown",
            "version": "request"
          }
        },
        {
          "fact": "documentation_route",
          "value": "https://mcp.vercel.com/",
          "descriptor_url": "https://vercel.com/docs/getting-started-with-vercel?from=related&source_path=%2Fdocs%2Fagent-resources%2Fskills&source_site=vercel-docs&relationship=related",
          "attempt_digest": "sha256:6a1d7f5a3ddbc6ef3be802496fcaa5fd9cc16d128f6c4e8b1aefc0dbc397eec8",
          "adapter": {
            "namespace": "llms.txt",
            "version": "route"
          }
        },
        {
          "fact": "openapi_server",
          "value": "https://api.vercel.com/",
          "descriptor_url": "https://openapi.vercel.sh/",
          "attempt_digest": "sha256:2baaba32e0acd6946d6058675bfaae184b16b95e8d3f39066c2ecaf7577b88fd",
          "adapter": {
            "namespace": "openapi",
            "version": "3.0.3"
          }
        }
      ],
      "discovery_run_at": null,
      "run": {
        "started_at": "2026-10-11T23:58:36.967Z",
        "finished_at": "2026-10-12T00:00:14.843Z",
        "discovery_reads": 55,
        "exchanges": [
          {
            "purpose": "probe_operation",
            "role": "request",
            "method": "POST",
            "url": "https://api.vercel.com/v13/deployments",
            "started_at": "2026-10-11T23:59:36.519Z",
            "finished_at": "2026-10-11T23:59:36.720Z",
            "response": {
              "status": 403,
              "media_type": "application/json",
              "content_bytes": 109,
              "content_digest": "sha256:a7376f1babc9adb592343115381b4f804a616920c00de4fd5d83d41d3e9a9dad"
            },
            "transport_error": null,
            "exchange_digest": "sha256:4da77699ea3ed246a2b8222c669d0dc43850890bb870241aaf07f9469abcde75"
          },
          {
            "purpose": "probe_resource_metadata",
            "role": "request",
            "method": "GET",
            "url": "https://api.vercel.com/.well-known/oauth-protected-resource/v13/deployments",
            "started_at": "2026-10-11T23:59:41.860Z",
            "finished_at": "2026-10-11T23:59:42.089Z",
            "response": {
              "status": 404,
              "media_type": "application/json",
              "content_bytes": 84,
              "content_digest": "sha256:a8c751a31ee518927f364df0798629a20e5dc09afec7b80fcaefd97177d51495"
            },
            "transport_error": null,
            "exchange_digest": "sha256:f5d4bde0ad3800e692e0b250d867347c0e9d0a26e395aa7d70baa9819db87296"
          },
          {
            "purpose": "probe_resource_metadata",
            "role": "request",
            "method": "GET",
            "url": "https://api.vercel.com/.well-known/oauth-protected-resource",
            "started_at": "2026-10-11T23:59:46.742Z",
            "finished_at": "2026-10-11T23:59:46.967Z",
            "response": {
              "status": 404,
              "media_type": "application/json",
              "content_bytes": 84,
              "content_digest": "sha256:a8c751a31ee518927f364df0798629a20e5dc09afec7b80fcaefd97177d51495"
            },
            "transport_error": null,
            "exchange_digest": "sha256:12d1c5b0533818044bc2d2beff761ac45b3843720c626e1ef0b82e005e17aaee"
          },
          {
            "purpose": "probe_operation",
            "role": "session_opening",
            "method": "POST",
            "url": "https://mcp.vercel.com",
            "started_at": "2026-10-11T23:59:50.758Z",
            "finished_at": "2026-10-11T23:59:50.829Z",
            "response": {
              "status": 401,
              "media_type": "application/json",
              "content_bytes": 73,
              "content_digest": "sha256:b5b8cdba3d63b5e7598ad5dfe2190d441d62bef6098f4bbbcf679c3f51608a12"
            },
            "transport_error": null,
            "exchange_digest": "sha256:bde4ae9a7bc69741ab5146829e37621e4e4613a051af3ab92a0c00a348b0297f"
          },
          {
            "purpose": "probe_resource_metadata",
            "role": "request",
            "method": "GET",
            "url": "https://mcp.vercel.com/.well-known/oauth-protected-resource",
            "started_at": "2026-10-11T23:59:53.936Z",
            "finished_at": "2026-10-11T23:59:53.999Z",
            "response": {
              "status": 200,
              "media_type": "application/json",
              "content_bytes": 470,
              "content_digest": "sha256:4d4a3df2f12152119db65cc3d46a792aa6e50944399740f879ba22bb8cfddc3a"
            },
            "transport_error": null,
            "exchange_digest": "sha256:53d28b359a85d7f5e9bc499bf717c3870a065b1c7efffefcf7d8bb5e205d6d10"
          },
          {
            "purpose": "probe_authorization_server",
            "role": "request",
            "method": "GET",
            "url": "https://vercel.com/.well-known/oauth-authorization-server",
            "started_at": "2026-10-11T23:59:57.184Z",
            "finished_at": "2026-10-11T23:59:57.254Z",
            "response": {
              "status": 200,
              "media_type": "application/json",
              "content_bytes": 2213,
              "content_digest": "sha256:6c856723f1336f7d3a3a9db8be33350af7b5f538065a9b4802663351da53024d"
            },
            "transport_error": null,
            "exchange_digest": "sha256:2650bdc7e35bb3d79167b9142b6cddbcfd5caa62834040caeffdf027c0a76f3e"
          },
          {
            "purpose": "probe_client_registration",
            "role": "request",
            "method": "POST",
            "url": "https://api.vercel.com/login/oauth/register",
            "started_at": "2026-10-12T00:00:01.276Z",
            "finished_at": "2026-10-12T00:00:01.536Z",
            "response": {
              "status": 400,
              "media_type": "application/json",
              "content_bytes": 136,
              "content_digest": "sha256:e1be881440bb51ef42d0d9faf3832178766aa8128ac77118ad4b2768c099e044"
            },
            "transport_error": null,
            "exchange_digest": "sha256:f124475d1485c1a72ab148da75e7ab03d07ee23e374df879cee3b4b55f40b0de"
          },
          {
            "purpose": "probe_page",
            "role": "request",
            "method": "GET",
            "url": "https://forms.gle/FQ3nYPbovoHvbfmz9",
            "started_at": "2026-10-12T00:00:05.700Z",
            "finished_at": "2026-10-12T00:00:05.859Z",
            "response": {
              "status": 302,
              "media_type": "text/html",
              "content_bytes": 0,
              "content_digest": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
            },
            "transport_error": null,
            "exchange_digest": "sha256:3ea35ddd02e3f303b70a021aa49d92d6abeb109551bfbbb72dac86f72d0ee65e"
          },
          {
            "purpose": "probe_page",
            "role": "request",
            "method": "GET",
            "url": "https://vercel.com/signup",
            "started_at": "2026-10-12T00:00:09.149Z",
            "finished_at": "2026-10-12T00:00:09.568Z",
            "response": {
              "status": 200,
              "media_type": "text/html",
              "content_bytes": 333225,
              "content_digest": "sha256:47802e7c3b96a822d7401201882962a08450ce5079b19a555a524c865da02938"
            },
            "transport_error": null,
            "exchange_digest": "sha256:cb79db18917cc11f8df3be01452c478c9937922c4447daf04d6e84e15b71cf09"
          }
        ],
        "assertions": []
      },
      "last_run_at": "2026-10-12T00:00:14.843Z",
      "publication": {
        "visibility": "discoverable",
        "reasons": []
      },
      "provenance": {
        "dispute": "none",
        "vendor_attestation": {
          "status": "none"
        },
        "basis_event_ids": []
      },
      "canonical_url": "https://sourcey.com/c/vercel/agent-readiness/vercel-rest-api/deployment-create",
      "projection_digest": "sha256:85203d04013407a29d60894358dde3e3e5de877ccb62ee3e203f9c7793f8432c"
    }
  }
}
