{
  "contract": "sourcey.site-record/v1alpha1",
  "release_id": "sha256:01b359a390ebda92a006f234d568fc9842c8c082fadce9ecc21b609afcd1aed3",
  "snapshot_id": "sha256:58615afe58c7d52c32402babba0c30b1401dccd9683da846896b2d3f349d2e5c",
  "artifact_sha256": "sha256:ee582f16bc03a09e4d41e9efabf2a7cfca00cdd5b485854dfdb621286fb0e6a8",
  "data": {
    "entity_id": "ent_01kyy6rm11txma0afjpbmd0wr7",
    "entity_slug": "openrouter",
    "profile": {
      "projection_contract": "sourcey.agent-readiness-projection/v1alpha1",
      "agent_readiness_profile_id": "arp_01m4pmaa3hzmehhtgx2ea10thv",
      "entity_id": "ent_01kyy6rm11txma0afjpbmd0wr7",
      "scope": {
        "product": {
          "key": "openrouter-api",
          "name": "OpenRouter API"
        },
        "job": {
          "key": "model-chat-stream-tool",
          "name": "Stream a completion with a tool call"
        }
      },
      "catalog_binding": {
        "base_release_id": "sha256:ebd0bd5dad3b775e456391508efd08c26c37f83239d00dec0802c3aba3dd90e5",
        "entity_revision_digest": "sha256:f8b05dc647ed757a086f5ac4857a7673cfad1e5a2edafdc3a5625b7ddcdc3f1e"
      },
      "declaration_revision_digest": "sha256:b0185c7315365e122946026e5c184b3029d2c0a121610e8735e79ba4cac63700",
      "declaration": {
        "declaration_id": "declaration_openrouter_openrouter_api_model_chat_stream_tool",
        "provenance": {
          "repository": "sourcey/agent-ready-services",
          "commit": "d0349b59eac1f864862be6cae9c25d97bec9e731",
          "path": "entities/op/openrouter.yaml",
          "git_blob_oid": "c35c6d502fb15d61abd512f3a2bfc7c77a17e885",
          "blob_digest": "sha256:48255770af1ccba22217abefd1383040e0941ce14bda1d163a3691642ffd5c1a"
        },
        "status": "community_declared"
      },
      "surface_catalog": {
        "participants": [
          {
            "participant_id": "openrouter",
            "roles": [
              "access_operator",
              "identity_provider",
              "operations_provider",
              "payment_provider",
              "provisioning_provider",
              "subject"
            ],
            "identity": {
              "entity_id": "ent_01kyy6rm11txma0afjpbmd0wr7"
            }
          }
        ],
        "resources": [
          {
            "resource_id": "account-signup",
            "uri": "https://openrouter.ai/sign-up",
            "roles": [
              "access"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          },
          {
            "resource_id": "agent-discovery-index",
            "uri": "https://openrouter.ai/llms.txt",
            "roles": [
              "descriptor",
              "discovery",
              "documentation"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          },
          {
            "resource_id": "agent-setup-guide",
            "uri": "https://openrouter.ai/agents.md",
            "roles": [
              "authentication",
              "discovery",
              "documentation",
              "provisioning"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          },
          {
            "resource_id": "api-key-management",
            "uri": "https://openrouter.ai/docs/api/api-reference/api-keys/create-keys",
            "roles": [
              "authentication",
              "documentation",
              "provisioning",
              "recovery",
              "status"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          },
          {
            "resource_id": "crawler-policy",
            "uri": "https://openrouter.ai/robots.txt",
            "roles": [
              "policy"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          },
          {
            "resource_id": "credits-api",
            "uri": "https://openrouter.ai/docs/api/api-reference/credits/get-credits",
            "roles": [
              "documentation",
              "operations",
              "pricing",
              "status"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          },
          {
            "resource_id": "error-contract",
            "uri": "https://openrouter.ai/docs/api/reference/errors-and-debugging",
            "roles": [
              "documentation",
              "operations",
              "recovery",
              "status"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          },
          {
            "resource_id": "live-model-catalog",
            "uri": "https://openrouter.ai/api/v1/models",
            "roles": [
              "descriptor",
              "discovery",
              "pricing",
              "status"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          },
          {
            "resource_id": "mcp-guide",
            "uri": "https://openrouter.ai/docs/guides/overview/mcp-server",
            "roles": [
              "authentication",
              "descriptor",
              "discovery",
              "documentation",
              "operations",
              "provisioning"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": [
              {
                "namespace": "mcp",
                "version": "2025-11-25",
                "relation": "describes"
              }
            ]
          },
          {
            "resource_id": "model-catalog-guide",
            "uri": "https://openrouter.ai/docs/guides/overview/models",
            "roles": [
              "discovery",
              "documentation",
              "operations",
              "pricing",
              "status"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          },
          {
            "resource_id": "oauth-pkce",
            "uri": "https://openrouter.ai/docs/guides/overview/auth/oauth",
            "roles": [
              "access",
              "authentication",
              "descriptor",
              "documentation",
              "provisioning",
              "recovery"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": [
              {
                "namespace": "oauth",
                "version": "2.0",
                "relation": "describes"
              }
            ]
          },
          {
            "resource_id": "openapi-description",
            "uri": "https://openrouter.ai/openapi.json",
            "roles": [
              "authentication",
              "descriptor",
              "discovery",
              "operations",
              "status"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": [
              {
                "namespace": "openapi",
                "version": "3.1.0",
                "relation": "implements"
              }
            ]
          },
          {
            "resource_id": "pricing",
            "uri": "https://openrouter.ai/pricing",
            "roles": [
              "documentation",
              "pricing"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          },
          {
            "resource_id": "pricing-and-billing",
            "uri": "https://openrouter.ai/docs/faq",
            "roles": [
              "documentation",
              "pricing",
              "recovery",
              "status"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          },
          {
            "resource_id": "quickstart",
            "uri": "https://openrouter.ai/docs/quickstart",
            "roles": [
              "authentication",
              "discovery",
              "documentation",
              "operations",
              "provisioning"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          },
          {
            "resource_id": "rate-limits",
            "uri": "https://openrouter.ai/docs/api/reference/limits",
            "roles": [
              "documentation",
              "operations",
              "status"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          },
          {
            "resource_id": "service-status",
            "uri": "https://status.openrouter.ai/",
            "roles": [
              "recovery",
              "status"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          },
          {
            "resource_id": "service-terms",
            "uri": "https://openrouter.ai/terms",
            "roles": [
              "eligibility",
              "terms"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          },
          {
            "resource_id": "streaming-guide",
            "uri": "https://openrouter.ai/docs/api/reference/streaming",
            "roles": [
              "documentation",
              "operations",
              "status"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          },
          {
            "resource_id": "tool-calling-guide",
            "uri": "https://openrouter.ai/docs/guides/features/tool-calling",
            "roles": [
              "documentation",
              "operations"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          }
        ],
        "endpoints": [
          {
            "endpoint_id": "chat-completions",
            "uri": "https://openrouter.ai/api/v1/chat/completions",
            "transport": "http",
            "roles": [
              "service"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": [
              {
                "namespace": "openapi",
                "version": "3.1.0",
                "relation": "implements"
              }
            ]
          },
          {
            "endpoint_id": "credit-balance",
            "uri": "https://openrouter.ai/api/v1/credits",
            "transport": "http",
            "roles": [
              "status"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": [
              {
                "namespace": "openapi",
                "version": "3.1.0",
                "relation": "implements"
              }
            ]
          },
          {
            "endpoint_id": "key-management",
            "uri": "https://openrouter.ai/api/v1/keys",
            "transport": "http",
            "roles": [
              "recovery",
              "service"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": [
              {
                "namespace": "openapi",
                "version": "3.1.0",
                "relation": "implements"
              }
            ]
          },
          {
            "endpoint_id": "mcp-server",
            "uri": "https://mcp.openrouter.ai/mcp",
            "transport": "http",
            "roles": [
              "protected_resource",
              "service"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": [
              {
                "namespace": "mcp",
                "version": "2025-11-25",
                "relation": "implements"
              }
            ]
          },
          {
            "endpoint_id": "models",
            "uri": "https://openrouter.ai/api/v1/models",
            "transport": "http",
            "roles": [
              "service",
              "status"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": [
              {
                "namespace": "openapi",
                "version": "3.1.0",
                "relation": "implements"
              }
            ]
          },
          {
            "endpoint_id": "oauth-authorization",
            "uri": "https://openrouter.ai/auth",
            "transport": "http",
            "roles": [
              "authorization"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": [
              {
                "namespace": "oauth",
                "version": "2.0",
                "relation": "implements"
              }
            ]
          },
          {
            "endpoint_id": "oauth-key-exchange",
            "uri": "https://openrouter.ai/api/v1/auth/keys",
            "transport": "http",
            "roles": [
              "token"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": [
              {
                "namespace": "oauth",
                "version": "2.0",
                "relation": "implements"
              }
            ]
          },
          {
            "endpoint_id": "registration",
            "uri": "https://openrouter.ai/sign-up",
            "transport": "http",
            "roles": [
              "registration"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": []
          }
        ],
        "interfaces": [
          {
            "interface_id": "delegated-authentication",
            "modality": "network_api",
            "functions": [
              "authentication",
              "recovery"
            ],
            "endpoint_ids": [
              "key-management",
              "oauth-authorization",
              "oauth-key-exchange"
            ],
            "resource_ids": [
              "api-key-management",
              "oauth-pkce"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": [
              {
                "namespace": "oauth",
                "version": "2.0",
                "relation": "uses"
              }
            ]
          },
          {
            "interface_id": "inference-api",
            "modality": "network_api",
            "functions": [
              "service_operation"
            ],
            "endpoint_ids": [
              "chat-completions",
              "models"
            ],
            "resource_ids": [
              "error-contract",
              "live-model-catalog",
              "model-catalog-guide",
              "openapi-description",
              "quickstart",
              "rate-limits",
              "streaming-guide",
              "tool-calling-guide"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": [
              {
                "namespace": "openapi",
                "version": "3.1.0",
                "relation": "uses"
              }
            ]
          },
          {
            "interface_id": "openrouter-mcp",
            "modality": "tool_server",
            "functions": [
              "authentication",
              "commerce"
            ],
            "endpoint_ids": [
              "mcp-server"
            ],
            "resource_ids": [
              "credits-api",
              "live-model-catalog",
              "mcp-guide"
            ],
            "operated_by_participant_id": "openrouter",
            "standard_bindings": [
              {
                "namespace": "mcp",
                "version": "2025-11-25",
                "relation": "uses"
              },
              {
                "namespace": "oauth",
                "version": "2.0",
                "relation": "uses"
              }
            ]
          }
        ],
        "relations": [
          {
            "relation_id": "errors-describe-inference",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "error-contract"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "inference-api"
            }
          },
          {
            "relation_id": "limits-describe-inference",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "rate-limits"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "inference-api"
            }
          },
          {
            "relation_id": "llms-describes-inference",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "agent-discovery-index"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "inference-api"
            }
          },
          {
            "relation_id": "mcp-guide-describes-server",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "mcp-guide"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "openrouter-mcp"
            }
          },
          {
            "relation_id": "models-describe-inference",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "live-model-catalog"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "inference-api"
            }
          },
          {
            "relation_id": "oauth-authenticates-inference",
            "kind": "authenticates",
            "from": {
              "node_kind": "interface",
              "node_id": "delegated-authentication"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "inference-api"
            }
          },
          {
            "relation_id": "oauth-authenticates-mcp",
            "kind": "authenticates",
            "from": {
              "node_kind": "interface",
              "node_id": "delegated-authentication"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "openrouter-mcp"
            }
          },
          {
            "relation_id": "openapi-describes-inference",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "openapi-description"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "inference-api"
            }
          },
          {
            "relation_id": "quickstart-describes-inference",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "quickstart"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "inference-api"
            }
          },
          {
            "relation_id": "signup-precedes-authentication",
            "kind": "precedes",
            "from": {
              "node_kind": "resource",
              "node_id": "account-signup"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "delegated-authentication"
            }
          }
        ],
        "surface_exclusions": [
          {
            "exclusion_id": "free-job-no-checkout",
            "role": "checkout",
            "rationale": "OpenRouter's free models, tool calling included, need no credits or card."
          }
        ]
      },
      "lifecycle": "active",
      "effective_from": "2026-10-11T23:21:41.101Z",
      "revision_digest": "sha256:0a04d9831ccb34af9f7e538fc53413499084e3320ed4d31a1acacd9d1db9ab04",
      "policy_digest": "sha256:0a4e4996176ce674b4f3ce910c5fca4f37c9b53bcdf51656d53a1a92fcf2c879",
      "policy_version": "kind-2026-10-12",
      "policy_as_of": "2026-10-05T00:00:00Z",
      "job": {
        "job_id": "model-chat-stream-tool",
        "job_digest": "sha256:cf24cf5a09c30d7a4fa9628254011a9f3026799b9579e48947eb828312e853da",
        "category": "model-api",
        "name": "Stream a completion with a tool call",
        "statement": "Choose a model from the service's live model list, stream a chat completion from it and receive a call to a provided tool."
      },
      "interface_id": "inference-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": "workaround",
            "timing": "setup"
          }
        ],
        "job": "reachable",
        "approvals": [],
        "workarounds": [
          {
            "step": "authority",
            "timing": "setup"
          },
          {
            "step": "onboard",
            "timing": "setup"
          },
          {
            "step": "sustain",
            "timing": "setup"
          }
        ]
      },
      "discovery": [
        {
          "fact": "api_catalog_link",
          "value": "https://openrouter.ai/api/v1",
          "descriptor_url": "https://openrouter.ai/.well-known/api-catalog",
          "attempt_digest": "sha256:99b33ba22c2188a2376a1687c0df5da7c0eca59a21499b73636492edb30c3559",
          "adapter": {
            "namespace": "rfc9727",
            "version": "linkset"
          }
        },
        {
          "fact": "ard_entry",
          "value": "https://openrouter.ai/.well-known/mcp/server-card.json",
          "descriptor_url": "https://openrouter.ai/.well-known/ard.json",
          "attempt_digest": "sha256:39d2bf5e7eed2a9b6c81dd899a1a71d56009287ce2802e5f9d31945812bc31ca",
          "adapter": {
            "namespace": "ard",
            "version": "1.0"
          }
        },
        {
          "fact": "ard_entry",
          "value": "https://openrouter.ai/openapi.json",
          "descriptor_url": "https://openrouter.ai/.well-known/ard.json",
          "attempt_digest": "sha256:39d2bf5e7eed2a9b6c81dd899a1a71d56009287ce2802e5f9d31945812bc31ca",
          "adapter": {
            "namespace": "ard",
            "version": "1.0"
          }
        },
        {
          "fact": "ard_entry",
          "value": "https://openrouter.ai/.well-known/skills/index.json",
          "descriptor_url": "https://openrouter.ai/.well-known/ard.json",
          "attempt_digest": "sha256:39d2bf5e7eed2a9b6c81dd899a1a71d56009287ce2802e5f9d31945812bc31ca",
          "adapter": {
            "namespace": "ard",
            "version": "1.0"
          }
        },
        {
          "fact": "mcp_endpoint",
          "value": "https://mcp.openrouter.ai/mcp",
          "descriptor_url": "https://openrouter.ai/.well-known/mcp/server-card.json",
          "attempt_digest": "sha256:da778193091d07ef3475ae357ada7f7ed5edf45941aa14eb90fd366a96e6c3bb",
          "adapter": {
            "namespace": "mcp-server-card",
            "version": "server-json"
          }
        },
        {
          "fact": "agent_documentation",
          "value": "https://openrouter.ai/llms.txt",
          "descriptor_url": "https://openrouter.ai/llms.txt",
          "attempt_digest": "sha256:90ddb8e3be9a8999e8e3c837f244d309dc28749640aa61f0c876ac8b5013b39c",
          "adapter": {
            "namespace": "llms.txt",
            "version": "1"
          }
        },
        {
          "fact": "openapi_server",
          "value": "https://openrouter.ai/api/v1",
          "descriptor_url": "https://openrouter.ai/openapi.json",
          "attempt_digest": "sha256:1bbe2324a95c3f35693476a9275475492476f2e4a356e3346edc20d1c09f5caf",
          "adapter": {
            "namespace": "openapi",
            "version": "3.1.0"
          }
        },
        {
          "fact": "openapi_server",
          "value": "https://openrouter.ai/",
          "descriptor_url": "https://openrouter.ai/openapi.json",
          "attempt_digest": "sha256:1bbe2324a95c3f35693476a9275475492476f2e4a356e3346edc20d1c09f5caf",
          "adapter": {
            "namespace": "openapi",
            "version": "3.1.0"
          }
        },
        {
          "fact": "documentation_route",
          "value": "https://openrouter.ai/",
          "descriptor_url": "https://openrouter.ai/llms.txt",
          "attempt_digest": "sha256:90ddb8e3be9a8999e8e3c837f244d309dc28749640aa61f0c876ac8b5013b39c",
          "adapter": {
            "namespace": "llms.txt",
            "version": "route"
          }
        }
      ],
      "discovery_run_at": null,
      "run": {
        "started_at": "2026-10-11T23:21:09.975Z",
        "finished_at": "2026-10-11T23:21:41.101Z",
        "discovery_reads": 14,
        "exchanges": [
          {
            "purpose": "probe_operation",
            "role": "request",
            "method": "POST",
            "url": "https://openrouter.ai/api/v1/chat/completions",
            "started_at": "2026-10-11T23:21:23.882Z",
            "finished_at": "2026-10-11T23:21:23.905Z",
            "response": {
              "status": 401,
              "media_type": "application/json",
              "content_bytes": 67,
              "content_digest": "sha256:36c1407c049a212826f183eabdf3eae02172f79f80806f9afed93f5eeb68c49c"
            },
            "transport_error": null,
            "exchange_digest": "sha256:a66f1ca56fcac324ba1b67493902b2dd768d9ea57371768b45f486e8ae35c651"
          },
          {
            "purpose": "probe_resource_metadata",
            "role": "request",
            "method": "GET",
            "url": "https://openrouter.ai/.well-known/oauth-protected-resource/api/v1/chat/completions",
            "started_at": "2026-10-11T23:21:27.779Z",
            "finished_at": "2026-10-11T23:21:27.844Z",
            "response": {
              "status": 404,
              "media_type": "text/html",
              "content_bytes": 30162,
              "content_digest": "sha256:b431b7086b356a0fae1e7eb846701493600305d10ceef545357245d3205e6454"
            },
            "transport_error": null,
            "exchange_digest": "sha256:8a83d0f2635de390d6e95fbb1841cfcdd7b8f0962a8af60ad98a61d8fc4d2bfd"
          },
          {
            "purpose": "probe_resource_metadata",
            "role": "request",
            "method": "GET",
            "url": "https://openrouter.ai/.well-known/oauth-protected-resource",
            "started_at": "2026-10-11T23:21:31.802Z",
            "finished_at": "2026-10-11T23:21:31.915Z",
            "response": {
              "status": 404,
              "media_type": "text/html",
              "content_bytes": 30835,
              "content_digest": "sha256:c1226fb21cafee6b570edec8f0a77f9d312bd8a4fa18d3ffbfdd508ccad89438"
            },
            "transport_error": null,
            "exchange_digest": "sha256:cb550ffca21ea09e307a04037bf4c18fc5dcd785d5558cdf660edb13daa060c2"
          },
          {
            "purpose": "probe_page",
            "role": "request",
            "method": "GET",
            "url": "https://openrouter.ai/sign-up",
            "started_at": "2026-10-11T23:21:35.882Z",
            "finished_at": "2026-10-11T23:21:35.996Z",
            "response": {
              "status": 200,
              "media_type": "text/html",
              "content_bytes": 157694,
              "content_digest": "sha256:c016ce5a2cf37a6ce2f34214f16717c58fc6c7c010357d6a94ab5e1222f60907"
            },
            "transport_error": null,
            "exchange_digest": "sha256:fb00f4488dada376185153b00577071d41e84b4679e8946b23e2f3f381d04c7b"
          }
        ],
        "assertions": []
      },
      "last_run_at": "2026-10-11T23:21:41.101Z",
      "publication": {
        "visibility": "discoverable",
        "reasons": []
      },
      "provenance": {
        "dispute": "none",
        "vendor_attestation": {
          "status": "none"
        },
        "basis_event_ids": []
      },
      "canonical_url": "https://sourcey.com/c/openrouter/agent-readiness/openrouter-api/model-chat-stream-tool",
      "projection_digest": "sha256:ff2aac02d9c3247b265954a2fce016a22f4cffe5ac476509402f91bc46f22d57"
    }
  }
}
