{
  "format": "agent-article-v0",
  "article_id": "EA-165",
  "canonical_url": "/tools/ea-165-openrouter",
  "page_type": "reference",
  "claim_ids": [],
  "evidence_ids": [
    "EVD-EA-165-URL-62E5A2D5FE3E",
    "EVD-EA-165-URL-C1CC13E818A2",
    "EVD-EA-165-URL-6DBA8B525A6D",
    "EA-165-R11-RESEARCH",
    "EA-165-R11-WEB-READBACK"
  ],
  "unknown_ids": [
    "EA-165-UNKNOWN-01",
    "EA-165-UNKNOWN-CURRENTNESS"
  ],
  "operational_object_ids": [],
  "provider": [
    "OpenAI"
  ],
  "models": [],
  "plans": [],
  "surfaces": [],
  "regions": [],
  "current_status": "UNKNOWN",
  "observation_status": "SPEC_ONLY",
  "freshness": "UNKNOWN",
  "last_verified": null,
  "supersedes": [],
  "superseded_by": [],
  "provenance": [
    "COMM-048-EA0165",
    "SRC-EA-165-URL-62E5A2D5FE3E",
    "SRC-EA-165-URL-C1CC13E818A2",
    "SRC-EA-165-URL-6DBA8B525A6D",
    "WEBBODY-EA0165-R8-A9821FC9"
  ],
  "article_sources": [
    {
      "id": "EVD-EA-165-URL-62E5A2D5FE3E",
      "evidence_class": "RESEARCH",
      "title": "[S1] SOURCE_CLASS: official_provider_docs | EXACT_TITLE: OpenRouter API Reference | AUTHOR_ORG: OpenRouter | CANONICAL_URL:",
      "href": "https://openrouter.ai/docs/api_reference/overview",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-165-URL-62E5A2D5FE3E"
      ],
      "supporting_locators": [
        "EVIDENCE_TABLE",
        "S1",
        "[S1] SOURCE_CLASS: official_provider_docs | EXACT_TITLE: OpenRouter API Reference | AUTHOR_ORG: OpenRouter | CANONICAL_URL: https://openrouter.ai/docs/api_reference/overview"
      ],
      "scope": "EVIDENCE_TABLE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-165-URL-C1CC13E818A2",
      "evidence_class": "RESEARCH",
      "title": "Intelligent Model Selection | AUTHOR_ORG: OpenRouter | CANONICAL_URL:",
      "href": "https://openrouter.ai/docs/guides/routing/routers/auto-router",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-165-URL-C1CC13E818A2"
      ],
      "supporting_locators": [
        "EVIDENCE_TABLE",
        "- Intelligent Model Selection | AUTHOR_ORG: OpenRouter | CANONICAL_URL: https://openrouter.ai/docs/guides/routing/routers/auto-router"
      ],
      "scope": "EVIDENCE_TABLE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-165-URL-6DBA8B525A6D",
      "evidence_class": "RESEARCH",
      "title": "[S1] SOURCE_CLASS: official_provider_docs | EXACT_TITLE: OpenRouter API Reference | AUTHOR_ORG: OpenRouter | CANONICAL_URL:",
      "href": "https://openrouter.ai/",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-165-URL-6DBA8B525A6D"
      ],
      "supporting_locators": [
        "EVIDENCE_TABLE",
        "S1",
        "[S1] SOURCE_CLASS: official_provider_docs | EXACT_TITLE: OpenRouter API Reference | AUTHOR_ORG: OpenRouter | CANONICAL_URL: https://openrouter.ai/"
      ],
      "scope": "EVIDENCE_TABLE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EA-165-R11-RESEARCH",
      "evidence_class": "RESEARCH",
      "title": "EA-165 監査済みresearch / canonical revision binding",
      "supports": [
        "1. ESTABLISHED [S1 support]: OpenRouter documents request/response schemas as similar to the OpenAI Chat API and says it normalizes the schema across models/providers. It publishes an OpenAPI description of its API.\n2. ESTABLISHED [S1 support]: For tool calling, the documentation states that tools may be passed through for providers implementing OpenAI's interface, transformed/mapped for custom interfaces, or transformed into a YAML template otherwise. This is an explicit provider-path distinction, not universal equivalence.\n3. ESTABLISHED [S2 support]: Auto Router documents allowed/excluded model patterns and a failure when restrictions leave no eligible model. It documents cost tiers from low through max and says a tier is a band, not a hard numeric ceiling; within a tier, models are ranked by market spend share.\n4. INFERENCE [S1+S2]: OpenRouter can be treated as a routing/control boundary, but route selection can change provider, model behavior, latency, cost, policy, and tool semantics. A normalized request is not evidence of normalized outcome quality."
      ],
      "limit": "canonical監査・revision bindingの存在を示す。外部ソースcurrentnessが本文またはcontrol-planeで確定していない場合は、currentnessをUNKNOWNのまま保持する。",
      "origin_class": "AUDITED_CANONICAL_RESEARCH_PACKET",
      "source_or_experiment_ids": [
        "COMM-048-EA0165"
      ],
      "supporting_locators": [
        "COMM-048-EA0165",
        "EA-165-R5-LEGACY-MIGRATION-20261008-R1",
        "content/staging/EA-165.md"
      ],
      "scope": "監査済みEA本文・canonical revision・既存Source Graph relationの範囲。欠損currentnessは推測で閉じない。",
      "provenance_status": "AUDIT_PASS_CANONICAL_BINDING"
    },
    {
      "id": "EA-165-R11-WEB-READBACK",
      "evidence_class": "IMPL",
      "title": "EA-165 Web body identity / canonical readback",
      "supports": [
        "canonical staging bodyのSHA-256一致とR9 canonical ledger readbackをProduction projectionの入力として検証する。"
      ],
      "limit": "body identity/readbackは本文claim自体の真偽や外部ソースの最新性を追加保証しない。",
      "checked_at": null,
      "origin_class": "IMPLEMENTATION_READBACK",
      "source_or_experiment_ids": [
        "WEBBODY-EA0165-R8-A9821FC9"
      ],
      "supporting_locators": [
        "WEBBODY-EA0165-R8-A9821FC9",
        "content/staging/EA-165.md",
        "EA-165-R5-LEGACY-MIGRATION-20261008-R1"
      ],
      "scope": "R9/R10 canonical readback後のProduction生成時body identity。",
      "provenance_status": "CANONICAL_READBACK_BODY_HASH_MATCH"
    }
  ],
  "research_sections": [
    {
      "heading": "WHY_THIS_MATTERS_TO_UPDATE",
      "text": "OpenRouter is a multi-provider API and routing service that may reduce application-side model switching. Future writing must preserve the provider/model/version/data-policy boundary and the fact that routing changes which endpoint serves a request."
    },
    {
      "heading": "SCOPE_ROUTING",
      "text": "provider mapping / gateway / routing / cost / operability / governance / security"
    },
    {
      "heading": "CLAIM_OR_RESEARCH_QUESTION",
      "text": "What do the current OpenRouter API and Auto Router documents establish about schema normalization, tool mapping, model restrictions, cost tiers, and provider selection?"
    },
    {
      "heading": "EVIDENCE_TABLE",
      "text": "[S1] SOURCE_CLASS: official_provider_docs | EXACT_TITLE: OpenRouter API Reference | AUTHOR_ORG: OpenRouter | CANONICAL_URL: https://openrouter.ai/docs/api_reference/overview | PUBLICATION_UPDATE_ACCESS: current API reference accessed 2026-09-14 00:16 JST | VERSION_RELEASE_TAG: current docs; API path /api/v1/chat/completions; no immutable docs release pin exposed | SUPPORTING_LOCATOR: lines 19-36 for API normalization/OpenAPI publication; lines 47-81 for request schema, tools, provider transformation, and tool_choice; lines 98-104 for OpenRouter-only models/route/provider/user fields | EVIDENCE_LABEL: VERIFIED_SPEC + PRODUCT_VOLATILE | RELATION: support for documented API boundary; limit for provider behavior.\n[S2] SOURCE_CLASS: official_provider_docs | EXACT_TITLE: Auto Router - Intelligent Model Selection | AUTHOR_ORG: OpenRouter | CANONICAL_URL: https://openrouter.ai/docs/guides/routing/routers/auto-router | PUBLICATION_UPDATE_ACCESS: current guide accessed 2026-09-14 00:16 JST | VERSION_RELEASE_TAG: current Auto Router docs; exact API/model/plugin semantics require recheck | SUPPORTING_LOCATOR: lines 450-476 for pattern allow/exclude restrictions and no-eligible-model failure; lines 481-487 for cost tiers and ranking; related links lines 610-613 for model fallback/provider selection | EVIDENCE_LABEL: VERIFIED_SPEC + PRODUCT_VOLATILE | RELATION: support for routing controls; limit for quality/availability.\n[S3] SOURCE_CLASS: official_provider_docs | EXACT_TITLE: OpenRouter | AUTHOR_ORG: OpenRouter | CANONICAL_URL: https://openrouter.ai/ | PUBLICATION_UPDATE_ACCESS: current product page accessed 2026-09-14 00:16 JST | VERSION_RELEASE_TAG: product page current; displayed model/provider counts and claims are volatile | SUPPORTING_LOCATOR: product page model/provider access, fallback, data-policy, and credit/API-key claims | EVIDENCE_LABEL: PRODUCT_VOLATILE | RELATION: context only; not independent benchmark or contract proof."
    },
    {
      "heading": "FINDINGS",
      "text": "1. ESTABLISHED [S1 support]: OpenRouter documents request/response schemas as similar to the OpenAI Chat API and says it normalizes the schema across models/providers. It publishes an OpenAPI description of its API.\n2. ESTABLISHED [S1 support]: For tool calling, the documentation states that tools may be passed through for providers implementing OpenAI's interface, transformed/mapped for custom interfaces, or transformed into a YAML template otherwise. This is an explicit provider-path distinction, not universal equivalence.\n3. ESTABLISHED [S2 support]: Auto Router documents allowed/excluded model patterns and a failure when restrictions leave no eligible model. It documents cost tiers from low through max and says a tier is a band, not a hard numeric ceiling; within a tier, models are ranked by market spend share.\n4. INFERENCE [S1+S2]: OpenRouter can be treated as a routing/control boundary, but route selection can change provider, model behavior, latency, cost, policy, and tool semantics. A normalized request is not evidence of normalized outcome quality."
    },
    {
      "heading": "LIMITS / COUNTEREVIDENCE / FAILURE ENVELOPE",
      "text": "Current docs are mutable and product-page counts are not a reproducible benchmark. Provider transformation may lose or alter parameters; tool YAML fallback changes the runtime contract. Cost tiers do not establish a fixed price, quality floor, data residency, or SLO. Model/provider availability, credits, API keys, data policy, and fallback behavior are account/plan/request dependent. No request was executed."
    },
    {
      "heading": "AVAILABILITY_GATES",
      "text": "OpenRouter API revision/path; model ID and provider endpoint; allowed/excluded models; Auto Router plugin/version; provider preference and fallback; tool/structured-output support; API key/credits; provider data policy/ZDR/retention; region; rate/context limits; cost tier/max price; audit/logging; error/retry behavior; organization policy."
    },
    {
      "heading": "IMPLEMENTATION_STATE",
      "text": "Evidence-only desk research. No OpenRouter key, credit purchase, model request, tool call, or provider route was used."
    },
    {
      "heading": "BENCHMARK_OR_EVAL",
      "text": "No model-selection, tool-transformation, cost, latency, fallback, data-policy, or cross-provider output-equivalence benchmark was run."
    },
    {
      "heading": "SECURITY / PRIVACY / AUDIT / COST / OPERABILITY",
      "text": "Provider route and request transformation must be recorded per call; prompts/results may traverse different provider boundaries. Audit needs requested model, selected provider/model, all fallback attempts, policy filters, data policy, token/cost, and result. Treat provider routing as an operational change, not a transparent implementation detail. Cost tiers/credits require reconciliation to provider invoices; not measured."
    },
    {
      "heading": "SAFE_WORDING_FOR_FUTURE_BOOK",
      "text": "「OpenRouterは、複数model/providerへのAPIアクセスを一つのrequest形状へ寄せ、tool callingではproviderの実装に応じて透過・変換・YAML化を行うと文書化している。Auto Routerのallow／exclude／cost tier等はroute制御であり、モデル品質・価格上限・データ境界・SLOの保証ではない。」"
    },
    {
      "heading": "UPDATE_WORK_HANDOFF",
      "text": "Future update Work should pin API docs and model/provider catalog snapshots, then compare one direct-provider request with the same OpenRouter request using safe read-only prompts and no external tool side effect. Record schema transformation, route, fallback, cost, latency, data policy, and output/tool differences."
    },
    {
      "heading": "OPEN_UNKNOWN",
      "text": "current provider/model catalog; route algorithm and ranking data; transformation edge cases; tool/schema semantics; provider-specific retention/region; max-price enforcement; fallback retry duplication; observability/audit; enterprise contract and SLO; independent benchmarks."
    },
    {
      "heading": "STOP_CONDITION",
      "text": "Do not cite OpenRouter's normalized schema as proof of provider equivalence. Do not convert a displayed model count, fallback feature, or Auto Router cost tier into a performance, quality, price, privacy, or availability guarantee.\nUNIT_CLOSE_STATUS: INDIVIDUAL_BOUNDED_CLOSE / EVIDENCE_RECORDED / UNKNOWN_PRESERVED"
    },
    {
      "heading": "EVIDENCE PACKET",
      "text": "---"
    }
  ],
  "human_url": "/tools/ea-165-openrouter",
  "markdown_url": "/agent/article.md?path=%2Ftools%2Fea-165-openrouter",
  "json_url": "/agent/article.json?path=%2Ftools%2Fea-165-openrouter"
}