diff --git a/vendors/op/openrouter.yaml b/vendors/op/openrouter.yaml new file mode 100644 index 0000000..7cfe43c --- /dev/null +++ b/vendors/op/openrouter.yaml @@ -0,0 +1,157 @@ +schema_version: sourcey.agent-readiness-authoring/v1alpha1 +vendor: + entity_id: ent_01kyy6rm11txma0afjpbmd0wr7 + slug: openrouter + slug_aliases: [] + name: OpenRouter + domains: + - { value: openrouter.ai, role: primary, valid_from: 2026-08-01T07:25:22.175Z } + category: ai-ml + description: OpenRouter provides a unified API and agent-facing interfaces for discovering and using models from multiple AI providers. + links: { site: https://openrouter.ai, pricing: https://openrouter.ai/models } + sources: + - { source_id: source_openrouter_quickstart, url: https://openrouter.ai/docs/quickstart } + - { source_id: source_openrouter_terms, url: https://openrouter.ai/terms } + - { source_id: source_openrouter_faq, url: https://openrouter.ai/docs/faq } + - { source_id: source_openrouter_signup, url: https://openrouter.ai/sign-up } + - { source_id: source_openrouter_models, url: https://openrouter.ai/docs/guides/overview/models } + - { source_id: source_openrouter_models_api, url: https://openrouter.ai/api/v1/models } + - { source_id: source_openrouter_openapi, url: https://openrouter.ai/openapi.json } + - { source_id: source_openrouter_streaming, url: https://openrouter.ai/docs/api/reference/streaming } + - { source_id: source_openrouter_tools, url: https://openrouter.ai/docs/guides/features/tool-calling } + - { source_id: source_openrouter_errors, url: https://openrouter.ai/docs/api/reference/errors-and-debugging } + - { source_id: source_openrouter_limits, url: https://openrouter.ai/docs/api/reference/limits } + - { source_id: source_openrouter_oauth, url: https://openrouter.ai/docs/guides/overview/auth/oauth } + - { source_id: source_openrouter_keys, url: https://openrouter.ai/docs/api/api-reference/api-keys/create-keys } + - { source_id: source_openrouter_credits_api, url: https://openrouter.ai/docs/api/api-reference/credits/get-credits } + - { source_id: source_openrouter_checkout, url: https://openrouter.ai/settings/credits } + - { source_id: source_openrouter_status, url: https://status.openrouter.ai/ } + - { source_id: source_openrouter_robots, url: https://openrouter.ai/robots.txt } + - { source_id: source_openrouter_llms, url: https://openrouter.ai/llms.txt } + - { source_id: source_openrouter_agents, url: https://openrouter.ai/agents.md } + - { source_id: source_openrouter_mcp, url: https://openrouter.ai/docs/guides/overview/mcp-server } +declarations: + - declaration_id: declaration_openrouter_model_access_lifecycle + scope: + product: { key: openrouter-api, name: OpenRouter API } + funnel: { key: model-access-lifecycle, name: Model access lifecycle } + assessment_targets: + - target_id: model-discovery + name: Discover currently available models, capabilities, and prices + interface_ids: [model-catalog-api, openrouter-mcp] + - target_id: model-inference + name: Submit streaming inference requests with tool calls and handle results + interface_ids: [inference-api, openrouter-mcp] + participants: + - participant_id: openrouter + roles: [subject, access_operator, identity_provider, payment_provider, provisioning_provider, operations_provider] + identity: { entity_id: ent_01kyy6rm11txma0afjpbmd0wr7 } + resources: + - { resource_id: quickstart, uri: https://openrouter.ai/docs/quickstart, roles: [discovery, authentication, provisioning, operations, documentation], operated_by_participant_id: openrouter, standard_bindings: [] } + - { resource_id: service-terms, uri: https://openrouter.ai/terms, roles: [terms, eligibility], operated_by_participant_id: openrouter, standard_bindings: [] } + - { resource_id: pricing-and-billing, uri: https://openrouter.ai/docs/faq, roles: [pricing, checkout, status, recovery, documentation], operated_by_participant_id: openrouter, standard_bindings: [] } + - { resource_id: account-signup, uri: https://openrouter.ai/sign-up, roles: [access], operated_by_participant_id: openrouter, standard_bindings: [] } + - { resource_id: model-catalog-guide, uri: https://openrouter.ai/docs/guides/overview/models, roles: [discovery, pricing, operations, status, documentation], operated_by_participant_id: openrouter, standard_bindings: [] } + - { resource_id: live-model-catalog, uri: https://openrouter.ai/api/v1/models, roles: [discovery, pricing, descriptor, status], operated_by_participant_id: openrouter, standard_bindings: [] } + - { resource_id: openapi-description, uri: https://openrouter.ai/openapi.json, roles: [discovery, authentication, descriptor, operations, status], operated_by_participant_id: openrouter, standard_bindings: [{ namespace: openapi, version: "3.1.0", relation: implements }] } + - { resource_id: streaming-guide, uri: https://openrouter.ai/docs/api/reference/streaming, roles: [operations, status, documentation], operated_by_participant_id: openrouter, standard_bindings: [] } + - { resource_id: tool-calling-guide, uri: https://openrouter.ai/docs/guides/features/tool-calling, roles: [operations, documentation], operated_by_participant_id: openrouter, standard_bindings: [] } + - { resource_id: error-contract, uri: https://openrouter.ai/docs/api/reference/errors-and-debugging, roles: [operations, status, recovery, documentation], operated_by_participant_id: openrouter, standard_bindings: [] } + - { resource_id: rate-limits, uri: https://openrouter.ai/docs/api/reference/limits, roles: [operations, status, documentation], operated_by_participant_id: openrouter, standard_bindings: [] } + - { resource_id: oauth-pkce, uri: https://openrouter.ai/docs/guides/overview/auth/oauth, roles: [access, authentication, provisioning, recovery, descriptor, documentation], operated_by_participant_id: openrouter, standard_bindings: [{ namespace: oauth, version: "2.0", relation: describes }] } + - { resource_id: api-key-management, uri: https://openrouter.ai/docs/api/api-reference/api-keys/create-keys, roles: [authentication, provisioning, recovery, status, documentation], operated_by_participant_id: openrouter, standard_bindings: [] } + - { resource_id: credits-api, uri: https://openrouter.ai/docs/api/api-reference/credits/get-credits, roles: [pricing, operations, status, documentation], operated_by_participant_id: openrouter, standard_bindings: [] } + - { resource_id: credit-checkout, uri: https://openrouter.ai/settings/credits, roles: [pricing, checkout], operated_by_participant_id: openrouter, standard_bindings: [] } + - { resource_id: service-status, uri: https://status.openrouter.ai/, roles: [status, recovery], 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: agent-discovery-index, uri: https://openrouter.ai/llms.txt, roles: [discovery, descriptor, documentation], operated_by_participant_id: openrouter, standard_bindings: [] } + - { resource_id: agent-setup-guide, uri: https://openrouter.ai/agents.md, roles: [discovery, authentication, provisioning, documentation], operated_by_participant_id: openrouter, standard_bindings: [] } + - { resource_id: mcp-guide, uri: https://openrouter.ai/docs/guides/overview/mcp-server, roles: [discovery, authentication, provisioning, operations, descriptor, documentation], operated_by_participant_id: openrouter, standard_bindings: [{ namespace: mcp, version: "2025-11-25", relation: describes }] } + endpoints: + - { endpoint_id: registration, uri: https://openrouter.ai/sign-up, transport: http, roles: [registration], operated_by_participant_id: openrouter, standard_bindings: [] } + - { 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: 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: key-management, uri: https://openrouter.ai/api/v1/keys, transport: http, roles: [service, recovery], 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: checkout, uri: https://openrouter.ai/settings/credits, transport: http, roles: [checkout], operated_by_participant_id: openrouter, standard_bindings: [] } + - { endpoint_id: mcp-server, uri: https://mcp.openrouter.ai/mcp, transport: http, roles: [service, protected_resource], operated_by_participant_id: openrouter, standard_bindings: [{ namespace: mcp, version: "2025-11-25", relation: implements }] } + interfaces: + - { interface_id: inference-api, modality: network_api, functions: [service_operation], endpoint_ids: [chat-completions], resource_ids: [quickstart, openapi-description, streaming-guide, tool-calling-guide, error-contract, rate-limits], operated_by_participant_id: openrouter, standard_bindings: [{ namespace: openapi, version: "3.1.0", relation: uses }] } + - { interface_id: model-catalog-api, modality: network_api, functions: [service_operation], endpoint_ids: [models], resource_ids: [model-catalog-guide, live-model-catalog, openapi-description], operated_by_participant_id: openrouter, standard_bindings: [{ namespace: openapi, version: "3.1.0", relation: uses }] } + - { interface_id: delegated-authentication, modality: network_api, functions: [authentication, recovery], endpoint_ids: [oauth-authorization, oauth-key-exchange, key-management], resource_ids: [oauth-pkce, api-key-management], operated_by_participant_id: openrouter, standard_bindings: [{ namespace: oauth, version: "2.0", relation: uses }] } + - { interface_id: credit-commerce, modality: web_application, functions: [commerce], endpoint_ids: [checkout], resource_ids: [pricing-and-billing, credit-checkout, credits-api], operated_by_participant_id: openrouter, standard_bindings: [] } + - { interface_id: openrouter-mcp, modality: tool_server, functions: [service_operation, authentication], endpoint_ids: [mcp-server], resource_ids: [mcp-guide, live-model-catalog, credits-api], 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: quickstart-describes-inference, kind: describes, from: { node_kind: resource, node_id: quickstart }, to: { node_kind: interface, node_id: inference-api } } + - { 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: models-describe-catalog, kind: describes, from: { node_kind: resource, node_id: live-model-catalog }, to: { node_kind: interface, node_id: model-catalog-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-catalog, kind: authenticates, from: { node_kind: interface, node_id: delegated-authentication }, to: { node_kind: interface, node_id: model-catalog-api } } + - { relation_id: signup-precedes-authentication, kind: precedes, from: { node_kind: resource, node_id: account-signup }, to: { node_kind: interface, node_id: delegated-authentication } } + - { relation_id: checkout-precedes-inference, kind: precedes, from: { node_kind: interface, node_id: credit-commerce }, to: { node_kind: interface, node_id: inference-api } } + - { 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: oauth-authenticates-mcp, kind: authenticates, from: { node_kind: interface, node_id: delegated-authentication }, to: { node_kind: interface, node_id: openrouter-mcp } } + - { relation_id: mcp-alternative-inference, kind: alternative_to, from: { node_kind: interface, node_id: inference-api }, to: { node_kind: interface, node_id: openrouter-mcp } } + - { relation_id: mcp-alternative-catalog, kind: alternative_to, from: { node_kind: interface, node_id: model-catalog-api }, to: { node_kind: interface, node_id: openrouter-mcp } } + offer_relations: [] + source_bindings: + - { source_binding_id: openrouter-scope, source_id: source_openrouter_quickstart, target: { node_kind: declaration, node_id: declaration_openrouter_model_access_lifecycle }, field_paths: [/scope/product/name, /scope/funnel/name] } + - { source_binding_id: openrouter-target-models, source_id: source_openrouter_models, target: { node_kind: assessment_target, node_id: model-discovery }, field_paths: [/name, /interface_ids] } + - { source_binding_id: openrouter-target-inference, source_id: source_openrouter_quickstart, target: { node_kind: assessment_target, node_id: model-inference }, field_paths: [/name, /interface_ids] } + - { source_binding_id: openrouter-participant, source_id: source_openrouter_terms, target: { node_kind: participant, node_id: openrouter }, field_paths: [/roles, /identity] } + - { source_binding_id: openrouter-resource-quickstart, source_id: source_openrouter_quickstart, target: { node_kind: resource, node_id: quickstart }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-terms, source_id: source_openrouter_terms, target: { node_kind: resource, node_id: service-terms }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-billing, source_id: source_openrouter_faq, target: { node_kind: resource, node_id: pricing-and-billing }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-signup, source_id: source_openrouter_signup, target: { node_kind: resource, node_id: account-signup }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-model-guide, source_id: source_openrouter_models, target: { node_kind: resource, node_id: model-catalog-guide }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-model-api, source_id: source_openrouter_models_api, target: { node_kind: resource, node_id: live-model-catalog }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-openapi, source_id: source_openrouter_openapi, target: { node_kind: resource, node_id: openapi-description }, field_paths: [/uri, /roles, /operated_by_participant_id, /standard_bindings] } + - { source_binding_id: openrouter-resource-streaming, source_id: source_openrouter_streaming, target: { node_kind: resource, node_id: streaming-guide }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-tools, source_id: source_openrouter_tools, target: { node_kind: resource, node_id: tool-calling-guide }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-errors, source_id: source_openrouter_errors, target: { node_kind: resource, node_id: error-contract }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-limits, source_id: source_openrouter_limits, target: { node_kind: resource, node_id: rate-limits }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-oauth, source_id: source_openrouter_oauth, target: { node_kind: resource, node_id: oauth-pkce }, field_paths: [/uri, /roles, /operated_by_participant_id, /standard_bindings] } + - { source_binding_id: openrouter-resource-keys, source_id: source_openrouter_keys, target: { node_kind: resource, node_id: api-key-management }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-credits, source_id: source_openrouter_credits_api, target: { node_kind: resource, node_id: credits-api }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-checkout, source_id: source_openrouter_checkout, target: { node_kind: resource, node_id: credit-checkout }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-status, source_id: source_openrouter_status, target: { node_kind: resource, node_id: service-status }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-robots, source_id: source_openrouter_robots, target: { node_kind: resource, node_id: crawler-policy }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-llms, source_id: source_openrouter_llms, target: { node_kind: resource, node_id: agent-discovery-index }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-agents, source_id: source_openrouter_agents, target: { node_kind: resource, node_id: agent-setup-guide }, field_paths: [/uri, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-resource-mcp, source_id: source_openrouter_mcp, target: { node_kind: resource, node_id: mcp-guide }, field_paths: [/uri, /roles, /operated_by_participant_id, /standard_bindings] } + - { source_binding_id: openrouter-endpoint-registration, source_id: source_openrouter_signup, target: { node_kind: endpoint, node_id: registration }, field_paths: [/uri, /transport, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-endpoint-inference, source_id: source_openrouter_openapi, target: { node_kind: endpoint, node_id: chat-completions }, field_paths: [/uri, /transport, /roles, /operated_by_participant_id, /standard_bindings] } + - { source_binding_id: openrouter-endpoint-models, source_id: source_openrouter_openapi, target: { node_kind: endpoint, node_id: models }, field_paths: [/uri, /transport, /roles, /operated_by_participant_id, /standard_bindings] } + - { source_binding_id: openrouter-endpoint-oauth-authorization, source_id: source_openrouter_oauth, target: { node_kind: endpoint, node_id: oauth-authorization }, field_paths: [/uri, /transport, /roles, /operated_by_participant_id, /standard_bindings] } + - { source_binding_id: openrouter-endpoint-oauth-token, source_id: source_openrouter_oauth, target: { node_kind: endpoint, node_id: oauth-key-exchange }, field_paths: [/uri, /transport, /roles, /operated_by_participant_id, /standard_bindings] } + - { source_binding_id: openrouter-endpoint-keys, source_id: source_openrouter_keys, target: { node_kind: endpoint, node_id: key-management }, field_paths: [/uri, /transport, /roles, /operated_by_participant_id, /standard_bindings] } + - { source_binding_id: openrouter-endpoint-credits, source_id: source_openrouter_credits_api, target: { node_kind: endpoint, node_id: credit-balance }, field_paths: [/uri, /transport, /roles, /operated_by_participant_id, /standard_bindings] } + - { source_binding_id: openrouter-endpoint-checkout, source_id: source_openrouter_checkout, target: { node_kind: endpoint, node_id: checkout }, field_paths: [/uri, /transport, /roles, /operated_by_participant_id] } + - { source_binding_id: openrouter-endpoint-mcp, source_id: source_openrouter_mcp, target: { node_kind: endpoint, node_id: mcp-server }, field_paths: [/uri, /transport, /roles, /operated_by_participant_id, /standard_bindings] } + - { source_binding_id: openrouter-interface-inference, source_id: source_openrouter_openapi, target: { node_kind: interface, node_id: inference-api }, field_paths: [/modality, /functions, /endpoint_ids, /resource_ids, /operated_by_participant_id, /standard_bindings] } + - { source_binding_id: openrouter-interface-models, source_id: source_openrouter_models_api, target: { node_kind: interface, node_id: model-catalog-api }, field_paths: [/modality, /functions, /endpoint_ids, /resource_ids, /operated_by_participant_id, /standard_bindings] } + - { source_binding_id: openrouter-interface-auth, source_id: source_openrouter_oauth, target: { node_kind: interface, node_id: delegated-authentication }, field_paths: [/modality, /functions, /endpoint_ids, /resource_ids, /operated_by_participant_id, /standard_bindings] } + - { source_binding_id: openrouter-interface-commerce, source_id: source_openrouter_faq, target: { node_kind: interface, node_id: credit-commerce }, field_paths: [/modality, /functions, /endpoint_ids, /resource_ids, /operated_by_participant_id] } + - { source_binding_id: openrouter-interface-mcp, source_id: source_openrouter_mcp, target: { node_kind: interface, node_id: openrouter-mcp }, field_paths: [/modality, /functions, /endpoint_ids, /resource_ids, /operated_by_participant_id, /standard_bindings] } + - { source_binding_id: openrouter-relation-quickstart, source_id: source_openrouter_quickstart, target: { node_kind: relation, node_id: quickstart-describes-inference }, field_paths: [/kind, /from, /to] } + - { source_binding_id: openrouter-relation-openapi, source_id: source_openrouter_openapi, target: { node_kind: relation, node_id: openapi-describes-inference }, field_paths: [/kind, /from, /to] } + - { source_binding_id: openrouter-relation-models, source_id: source_openrouter_models_api, target: { node_kind: relation, node_id: models-describe-catalog }, field_paths: [/kind, /from, /to] } + - { source_binding_id: openrouter-relation-auth-inference, source_id: source_openrouter_oauth, target: { node_kind: relation, node_id: oauth-authenticates-inference }, field_paths: [/kind, /from, /to] } + - { source_binding_id: openrouter-relation-auth-catalog, source_id: source_openrouter_oauth, target: { node_kind: relation, node_id: oauth-authenticates-catalog }, field_paths: [/kind, /from, /to] } + - { source_binding_id: openrouter-relation-signup, source_id: source_openrouter_signup, target: { node_kind: relation, node_id: signup-precedes-authentication }, field_paths: [/kind, /from, /to] } + - { source_binding_id: openrouter-relation-checkout, source_id: source_openrouter_faq, target: { node_kind: relation, node_id: checkout-precedes-inference }, field_paths: [/kind, /from, /to] } + - { source_binding_id: openrouter-relation-errors, source_id: source_openrouter_errors, target: { node_kind: relation, node_id: errors-describe-inference }, field_paths: [/kind, /from, /to] } + - { source_binding_id: openrouter-relation-limits, source_id: source_openrouter_limits, target: { node_kind: relation, node_id: limits-describe-inference }, field_paths: [/kind, /from, /to] } + - { source_binding_id: openrouter-relation-llms, source_id: source_openrouter_llms, target: { node_kind: relation, node_id: llms-describes-inference }, field_paths: [/kind, /from, /to] } + - { source_binding_id: openrouter-relation-mcp-guide, source_id: source_openrouter_mcp, target: { node_kind: relation, node_id: mcp-guide-describes-server }, field_paths: [/kind, /from, /to] } + - { source_binding_id: openrouter-relation-auth-mcp, source_id: source_openrouter_mcp, target: { node_kind: relation, node_id: oauth-authenticates-mcp }, field_paths: [/kind, /from, /to] } + - { source_binding_id: openrouter-relation-mcp-inference, source_id: source_openrouter_mcp, target: { node_kind: relation, node_id: mcp-alternative-inference }, field_paths: [/kind, /from, /to] } + - { source_binding_id: openrouter-relation-mcp-catalog, source_id: source_openrouter_mcp, target: { node_kind: relation, node_id: mcp-alternative-catalog }, field_paths: [/kind, /from, /to] } + surface_exclusions: [] + authority_intent: community + declared_at: 2026-08-21T11:25:00.000Z