Registry · Capabilities · openrouter.ai
Capability registryWhat openrouter.ai declares an agent can do
Measured 2026-10-11 18:03 UTC from the declarations the site publishes (record 2yu19bpb53). Each capability is shown as declared, under the policy class that decides whether anything may call it, beside what a call observed.
Declared versus observed
| Capability | Policy class | Declared | Observed |
|---|---|---|---|
| getUserActivity openapi · GET · https://openrouter.ai/api/v1/activity | Identity and accounts never called automatically | its name contains “user” auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| getAnalyticsMeta openapi · GET · https://openrouter.ai/api/v1/analytics/meta | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| queryAnalytics openapi · POST · https://openrouter.ai/api/v1/analytics/query | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| createApiAlphaDecisions openapi · POST · https://openrouter.ai/api/v1/api/alpha/decisions | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| createAudioSpeech openapi · POST · https://openrouter.ai/api/v1/audio/speech | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| createAudioTranscriptions openapi · POST · https://openrouter.ai/api/v1/audio/transcriptions | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| exchangeAuthCodeForAPIKey openapi · POST · https://openrouter.ai/api/v1/auth/keys | Identity and accounts never called automatically | its name contains “auth” auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| createAuthKeysCode openapi · POST · https://openrouter.ai/api/v1/auth/keys/code | Identity and accounts never called automatically | its name contains “auth” auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listBatches openapi · GET · https://openrouter.ai/api/v1/batches | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| createBatches openapi · POST · https://openrouter.ai/api/v1/batches | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getBatches openapi · GET · https://openrouter.ai/api/v1/batches/{id} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| deleteBatch openapi · DELETE · https://openrouter.ai/api/v1/batches/{id} | Irreversible write never called automatically | HTTP DELETE auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getBenchmarks openapi · GET · https://openrouter.ai/api/v1/benchmarks | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| listBYOKKeys openapi · GET · https://openrouter.ai/api/v1/byok | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| createBYOKKey openapi · POST · https://openrouter.ai/api/v1/byok | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getBYOKKey openapi · GET · https://openrouter.ai/api/v1/byok/{id} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| updateBYOKKey openapi · PATCH · https://openrouter.ai/api/v1/byok/{id} | Unknown never called automatically | PATCH with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| deleteBYOKKey openapi · DELETE · https://openrouter.ai/api/v1/byok/{id} | Irreversible write never called automatically | HTTP DELETE auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| sendChatCompletionRequest openapi · POST · https://openrouter.ai/api/v1/chat/completions | External communication never called automatically | its name contains “send” auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getTaskClassifications openapi · GET · https://openrouter.ai/api/v1/classifications/task | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| listContainerFiles openapi · GET · https://openrouter.ai/api/v1/containers/{container_id}/files | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getContainerFile openapi · GET · https://openrouter.ai/api/v1/containers/{container_id}/files/{file_id} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| downloadContainerFileContent openapi · GET · https://openrouter.ai/api/v1/containers/{container_id}/files/{file_id}/content | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| promoteContainerFile openapi · POST · https://openrouter.ai/api/v1/containers/{container_id}/files/{file_id}/promote | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| getCredits openapi · GET · https://openrouter.ai/api/v1/credits | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| createCoinbaseCharge openapi · POST · https://openrouter.ai/api/v1/credits/coinbase | Financial never called automatically | its name contains “charge” auth: none · required inputs: 3 | not attempted classed financial: only read-only public actions are ever called |
| getAppRankings openapi · GET · https://openrouter.ai/api/v1/datasets/app-rankings | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| getRankingsDaily openapi · GET · https://openrouter.ai/api/v1/datasets/rankings-daily | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| getSessionCost openapi · GET · https://openrouter.ai/api/v1/datasets/session-cost | Identity and accounts never called automatically | its name contains “session” auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| createEmbeddings openapi · POST · https://openrouter.ai/api/v1/embeddings | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listEmbeddingsModels openapi · GET · https://openrouter.ai/api/v1/embeddings/models | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| listEndUsers openapi · GET · https://openrouter.ai/api/v1/end-users | Identity and accounts never called automatically | its name contains “users” auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| createEndUser openapi · POST · https://openrouter.ai/api/v1/end-users | Identity and accounts never called automatically | its name contains “user” auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getEndUser openapi · GET · https://openrouter.ai/api/v1/end-users/{user} | Identity and accounts never called automatically | its name contains “user” auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| updateEndUser openapi · PATCH · https://openrouter.ai/api/v1/end-users/{user} | Identity and accounts never called automatically | its name contains “user” auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| deleteEndUser openapi · DELETE · https://openrouter.ai/api/v1/end-users/{user} | Identity and accounts never called automatically | its name contains “user” auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listEndpointsZdr openapi · GET · https://openrouter.ai/api/v1/endpoints/zdr | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| listFiles openapi · GET · https://openrouter.ai/api/v1/files | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| uploadFile openapi · POST · https://openrouter.ai/api/v1/files | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getFileMetadata openapi · GET · https://openrouter.ai/api/v1/files/{file_id} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| deleteFile openapi · DELETE · https://openrouter.ai/api/v1/files/{file_id} | Irreversible write never called automatically | HTTP DELETE auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| downloadFileContent openapi · GET · https://openrouter.ai/api/v1/files/{file_id}/content | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getGeneration openapi · GET · https://openrouter.ai/api/v1/generation | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listGenerationContent openapi · GET · https://openrouter.ai/api/v1/generation/content | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| submitGenerationFeedback openapi · POST · https://openrouter.ai/api/v1/generation/feedback | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listGuardrails openapi · GET · https://openrouter.ai/api/v1/guardrails | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| createGuardrail openapi · POST · https://openrouter.ai/api/v1/guardrails | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getGuardrail openapi · GET · https://openrouter.ai/api/v1/guardrails/{id} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| updateGuardrail openapi · PATCH · https://openrouter.ai/api/v1/guardrails/{id} | Unknown never called automatically | PATCH with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| deleteGuardrail openapi · DELETE · https://openrouter.ai/api/v1/guardrails/{id} | Irreversible write never called automatically | HTTP DELETE auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listGuardrailKeyAssignments openapi · GET · https://openrouter.ai/api/v1/guardrails/{id}/assignments/keys | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| bulkAssignKeysToGuardrail openapi · POST · https://openrouter.ai/api/v1/guardrails/{id}/assignments/keys | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| bulkUnassignKeysFromGuardrail openapi · POST · https://openrouter.ai/api/v1/guardrails/{id}/assignments/keys/remove | Irreversible write never called automatically | a write whose name contains “remove” auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| listGuardrailMemberAssignments openapi · GET · https://openrouter.ai/api/v1/guardrails/{id}/assignments/members | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| bulkAssignMembersToGuardrail openapi · POST · https://openrouter.ai/api/v1/guardrails/{id}/assignments/members | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| bulkUnassignMembersFromGuardrail openapi · POST · https://openrouter.ai/api/v1/guardrails/{id}/assignments/members/remove | Irreversible write never called automatically | a write whose name contains “remove” auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| listKeyAssignments openapi · GET · https://openrouter.ai/api/v1/guardrails/assignments/keys | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| listMemberAssignments openapi · GET · https://openrouter.ai/api/v1/guardrails/assignments/members | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| createImages openapi · POST · https://openrouter.ai/api/v1/images | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listImageModels openapi · GET · https://openrouter.ai/api/v1/images/models | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| listImageModelEndpoints openapi · GET · https://openrouter.ai/api/v1/images/models/{author}/{slug}/endpoints | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| listInterns openapi · GET · https://openrouter.ai/api/v1/interns | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| createIntern openapi · POST · https://openrouter.ai/api/v1/interns | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getIntern openapi · GET · https://openrouter.ai/api/v1/interns/{internId} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| updateIntern openapi · PATCH · https://openrouter.ai/api/v1/interns/{internId} | Unknown never called automatically | PATCH with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| deleteIntern openapi · DELETE · https://openrouter.ai/api/v1/interns/{internId} | Irreversible write never called automatically | HTTP DELETE auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| createInternChatCompletion openapi · POST · https://openrouter.ai/api/v1/interns/{internId}/chat/completions | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| getInternDaemon openapi · GET · https://openrouter.ai/api/v1/interns/{internId}/daemon | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getInternDaemonAccess openapi · GET · https://openrouter.ai/api/v1/interns/{internId}/daemon-access | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| signInternDaemonAccessRequest openapi · POST · https://openrouter.ai/api/v1/interns/{internId}/daemon-access/sign | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| signInternDaemonRequest openapi · POST · https://openrouter.ai/api/v1/interns/{internId}/daemon/sign | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| invokeIntern openapi · POST · https://openrouter.ai/api/v1/interns/{internId}/invoke | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| provisionIntern openapi · POST · https://openrouter.ai/api/v1/interns/{internId}/provision | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| suspendIntern openapi · POST · https://openrouter.ai/api/v1/interns/{internId}/suspend | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getCurrentKey openapi · GET · https://openrouter.ai/api/v1/key | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| list openapi · GET · https://openrouter.ai/api/v1/keys | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| createKeys openapi · POST · https://openrouter.ai/api/v1/keys | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getKey openapi · GET · https://openrouter.ai/api/v1/keys/{hash} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| updateKeys openapi · PATCH · https://openrouter.ai/api/v1/keys/{hash} | Unknown never called automatically | PATCH with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| deleteKeys openapi · DELETE · https://openrouter.ai/api/v1/keys/{hash} | Irreversible write never called automatically | HTTP DELETE auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| createMessages openapi · POST · https://openrouter.ai/api/v1/messages | External communication never called automatically | its name contains “messages” auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getModel openapi · GET · https://openrouter.ai/api/v1/model/{author}/{slug} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| getModels openapi · GET · https://openrouter.ai/api/v1/models | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| listEndpoints openapi · GET · https://openrouter.ai/api/v1/models/{author}/{slug}/endpoints | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| listModelsCount openapi · GET · https://openrouter.ai/api/v1/models/count | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| listModelsUser openapi · GET · https://openrouter.ai/api/v1/models/user | Identity and accounts never called automatically | its name contains “user” auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| listOauthJwks openapi · GET · https://openrouter.ai/api/v1/oauth/jwks | Identity and accounts never called automatically | its name contains “oauth” auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| createOauthToken openapi · POST · https://openrouter.ai/api/v1/oauth/token | Identity and accounts never called automatically | its name contains “oauth” auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listObservabilityDestinations openapi · GET · https://openrouter.ai/api/v1/observability/destinations | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| createObservabilityDestination openapi · POST · https://openrouter.ai/api/v1/observability/destinations | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getObservabilityDestination openapi · GET · https://openrouter.ai/api/v1/observability/destinations/{id} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| updateObservabilityDestination openapi · PATCH · https://openrouter.ai/api/v1/observability/destinations/{id} | Unknown never called automatically | PATCH with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| deleteObservabilityDestination openapi · DELETE · https://openrouter.ai/api/v1/observability/destinations/{id} | Irreversible write never called automatically | HTTP DELETE auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listOrganizationMembers openapi · GET · https://openrouter.ai/api/v1/organization/members | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| getOrganizationSettings openapi · GET · https://openrouter.ai/api/v1/organization/settings | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| updateOrganizationSettings openapi · PATCH · https://openrouter.ai/api/v1/organization/settings | Unknown never called automatically | PATCH with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listPresets openapi · GET · https://openrouter.ai/api/v1/presets | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| getPreset openapi · GET · https://openrouter.ai/api/v1/presets/{slug} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| createPresetsChatCompletions openapi · POST · https://openrouter.ai/api/v1/presets/{slug}/chat/completions | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| createPresetsMessages openapi · POST · https://openrouter.ai/api/v1/presets/{slug}/messages | External communication never called automatically | its name contains “messages” auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| createPresetsResponses openapi · POST · https://openrouter.ai/api/v1/presets/{slug}/responses | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| listPresetVersions openapi · GET · https://openrouter.ai/api/v1/presets/{slug}/versions | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getPresetVersion openapi · GET · https://openrouter.ai/api/v1/presets/{slug}/versions/{version} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| listPrivateEndpoints openapi · GET · https://openrouter.ai/api/v1/private-endpoints | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| createPrivateEndpoint openapi · POST · https://openrouter.ai/api/v1/private-endpoints | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getPrivateEndpoint openapi · GET · https://openrouter.ai/api/v1/private-endpoints/{id} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| updatePrivateEndpoint openapi · PATCH · https://openrouter.ai/api/v1/private-endpoints/{id} | Unknown never called automatically | PATCH with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| deletePrivateEndpoint openapi · DELETE · https://openrouter.ai/api/v1/private-endpoints/{id} | Irreversible write never called automatically | HTTP DELETE auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| activatePrivateEndpoint openapi · POST · https://openrouter.ai/api/v1/private-endpoints/{id}/activate | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| disablePrivateEndpoint openapi · POST · https://openrouter.ai/api/v1/private-endpoints/{id}/disable | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| enablePrivateEndpoint openapi · POST · https://openrouter.ai/api/v1/private-endpoints/{id}/enable | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| updatePrivateEndpointPricing openapi · PUT · https://openrouter.ai/api/v1/private-endpoints/{id}/pricing | Unknown never called automatically | PUT with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| validatePrivateEndpoint openapi · POST · https://openrouter.ai/api/v1/private-endpoints/{id}/validate | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| listProviders openapi · GET · https://openrouter.ai/api/v1/providers | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| createRerank openapi · POST · https://openrouter.ai/api/v1/rerank | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| createResponses openapi · POST · https://openrouter.ai/api/v1/responses | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listScimGroupMappings openapi · GET · https://openrouter.ai/api/v1/scim/group-mappings | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| createScimGroupMapping openapi · POST · https://openrouter.ai/api/v1/scim/group-mappings | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getScimGroupMapping openapi · GET · https://openrouter.ai/api/v1/scim/group-mappings/{id} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| updateScimGroupMapping openapi · PATCH · https://openrouter.ai/api/v1/scim/group-mappings/{id} | Unknown never called automatically | PATCH with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| deleteScimGroupMapping openapi · DELETE · https://openrouter.ai/api/v1/scim/group-mappings/{id} | Irreversible write never called automatically | HTTP DELETE auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| listScimGroups openapi · GET · https://openrouter.ai/api/v1/scim/groups | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| createScimSyncJob openapi · POST · https://openrouter.ai/api/v1/scim/sync-jobs | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| getScimSyncJob openapi · GET · https://openrouter.ai/api/v1/scim/sync-jobs/{id} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| createSystemone openapi · POST · https://openrouter.ai/api/v1/systemone | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listTools openapi · GET · https://openrouter.ai/api/v1/tools | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| getTool openapi · GET · https://openrouter.ai/api/v1/tools/{name} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listInternEffectiveVaultSecrets openapi · GET · https://openrouter.ai/api/v1/vault/interns/{internId}/effective-secrets | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listInternVaultSecrets openapi · GET · https://openrouter.ai/api/v1/vault/interns/{internId}/secrets | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| storeInternVaultSecret openapi · PUT · https://openrouter.ai/api/v1/vault/interns/{internId}/secrets/{name} | Unknown never called automatically | PUT with no declared reversibility auth: http_bearer · required inputs: 6 | not attempted requires http_bearer: never called without the operator's own credentials |
| deleteInternVaultSecret openapi · DELETE · https://openrouter.ai/api/v1/vault/interns/{internId}/secrets/{name} | Irreversible write never called automatically | HTTP DELETE auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| copyVaultSecretsToIntern openapi · POST · https://openrouter.ai/api/v1/vault/interns/{internId}/secrets/copy | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| listVaultSecrets openapi · GET · https://openrouter.ai/api/v1/vault/secrets | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| storeVaultSecret openapi · PUT · https://openrouter.ai/api/v1/vault/secrets/{name} | Unknown never called automatically | PUT with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| deleteVaultSecret openapi · DELETE · https://openrouter.ai/api/v1/vault/secrets/{name} | Irreversible write never called automatically | HTTP DELETE auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| createVideos openapi · POST · https://openrouter.ai/api/v1/videos | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getVideos openapi · GET · https://openrouter.ai/api/v1/videos/{jobId} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listVideosContent openapi · GET · https://openrouter.ai/api/v1/videos/{jobId}/content | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listVideosModels openapi · GET · https://openrouter.ai/api/v1/videos/models | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| listWorkspaces openapi · GET · https://openrouter.ai/api/v1/workspaces | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 3 | not attempted requires http_bearer: never called without the operator's own credentials |
| createWorkspace openapi · POST · https://openrouter.ai/api/v1/workspaces | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getWorkspace openapi · GET · https://openrouter.ai/api/v1/workspaces/{id} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| updateWorkspace openapi · PATCH · https://openrouter.ai/api/v1/workspaces/{id} | Unknown never called automatically | PATCH with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| deleteWorkspace openapi · DELETE · https://openrouter.ai/api/v1/workspaces/{id} | Irreversible write never called automatically | HTTP DELETE auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| listWorkspaceMembers openapi · GET · https://openrouter.ai/api/v1/workspaces/{id}/members | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| bulkAddWorkspaceMembers openapi · POST · https://openrouter.ai/api/v1/workspaces/{id}/members/add | Unknown never called automatically | POST with no declared reversibility auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| bulkRemoveWorkspaceMembers openapi · POST · https://openrouter.ai/api/v1/workspaces/{id}/members/remove | Irreversible write never called automatically | a write whose name contains “remove” auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| listWorkspaceBudgets openapi · GET · https://openrouter.ai/api/v1/workspaces/{workspace_ref}/budgets | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 4 | not attempted requires http_bearer: never called without the operator's own credentials |
| getWorkspaceBudget openapi · GET · https://openrouter.ai/api/v1/workspaces/{workspace_ref}/budgets/{interval} | Authenticated read-only never called automatically | HTTP GET behind http_bearer auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| upsertWorkspaceBudget openapi · PUT · https://openrouter.ai/api/v1/workspaces/{workspace_ref}/budgets/{interval} | Unknown never called automatically | PUT with no declared reversibility auth: http_bearer · required inputs: 6 | not attempted requires http_bearer: never called without the operator's own credentials |
| deleteWorkspaceBudget openapi · DELETE · https://openrouter.ai/api/v1/workspaces/{workspace_ref}/budgets/{interval} | Irreversible write never called automatically | HTTP DELETE auth: http_bearer · required inputs: 5 | not attempted requires http_bearer: never called without the operator's own credentials |
| ping mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| list-models mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| get-model mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| list-model-endpoints mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| list-providers mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| get-endpoint-uptime-history mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| list-benchmarks mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| list-task-classifications mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| list-daily-model-rankings mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| list-app-rankings mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| list-presets mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| get-preset mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| get-credits mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| get-generation mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| send-feedback mcp · https://mcp.openrouter.ai/mcp | External communication never called automatically | its name contains “send” auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| search-docs mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| send-message mcp · https://mcp.openrouter.ai/mcp | External communication never called automatically | its name contains “send” auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| generate-image mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| transcribe-audio mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| generate-speech mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| spawn-ori-eval mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
| install-ori-harness mcp · https://mcp.openrouter.ai/mcp | Unknown never called automatically | its effect is not stated in the declaration auth: unknown | not attempted on another origin (mcp.openrouter.ai): only the scanned origin is called |
Where the declaration and the call disagree
None: every capability that was called answered as declared.
Signed certificate
This page’s rows, signed by the observer’s Ed25519 key: every capability’s id, endpoint, safety class, policy class and observed state, the declaration hashes and the record’s sealed manifest. The certificate is derived from the record alone, so the same record always yields the same id.
alg Ed25519 · kid 1hHmE3fo1rg5Ig70wuFtJ5wBc7G-sUTgUJkxyPWFRps
sig J91Fcm-kHNxsB1w9v4CmGTzE2l6TofeP_khNG9R63NUr-MUg0HJkops_fzHMFuCKh8BCHRLAIlCxmGuPCs-zBg
The certificate as JSON · verify it now · the key directory · machine-readability certificate
To verify it yourself: SHA-256 the certificate object as canonical JSON (keys sorted, no whitespace); the hex digest must equal certificate_sha256 and the id; then check the Ed25519 signature over "crawlcheck-capability-certificate-v1\n" followed by that hex digest, with the key in the directory whose RFC 7638 thumbprint is the kid.
Policy classes
| Policy class | Called automatically? | Rule |
|---|---|---|
| Public read-only public_read_only | yes, to verify | May be called without credentials. CrawlCheck calls it only to check the declaration: GET with no input, on the scanned origin. |
| Authenticated read-only authenticated_read_only | never | Never called by CrawlCheck. An agent needs the user's own credentials and consent. |
| Reversible write reversible_write | never | Never invoked automatically. Needs the owner's written authorisation and a test account. |
| Irreversible write irreversible_write | never | Never invoked automatically. Deletes or changes something that cannot be undone. |
| Financial financial | never | Never invoked automatically. Moves money or creates a charge. |
| External communication external_communication | never | Never invoked automatically. Sends a message, email or notification to someone. |
| Identity and accounts identity | never | Never invoked automatically. Creates, signs in to or changes an account or credential. |
| Unknown unknown | never | Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case. |
| Metadata metadata | never | Nothing to invoke: a listing, a server card or a skill file, not an operation. |