{
  "object_id": "asca:openrouter-model-page-structured-tool-models@2026-08-31.v1",
  "title": "Models declaring both tools and structured outputs",
  "slug": "structured-tool-models",
  "snapshot_date": "2026-08-31",
  "snapshot_time": "2026-08-31T14:20:27.346Z",
  "snapshot_time_zone": "Asia/Seoul",
  "data": {
    "raw_json": "/data/openrouter-models-2026-08-31.json",
    "normalized_csv": "/data/openrouter-models-2026-08-31.csv",
    "raw_sha256": "sha256:b05830e49e69d5126bd8f71cb82f6f81cb414982821b057885df34beea5e4516",
    "csv_sha256": "sha256:28e6ba221b0b2edd9a8ff1f0505404b6890a4ade3151e0d2fbf7137cc14c4659"
  },
  "source_urls": [
    "https://openrouter.ai/api/v1/models?sort=top-weekly"
  ],
  "scope": "Paid models declaring both tools and structured_outputs support.",
  "formula_or_selection_rule": "Keep both declared capabilities and positive prompt/completion prices; sort by prompt + completion USD per 1M text tokens.",
  "observed_range": {
    "rows": 269,
    "listed_models": 396
  },
  "bias": "Declared compatibility and OpenRouter catalog bias.",
  "limitation": "Declarations do not prove schema adherence, correct tool choice, or end-to-end task success.",
  "confidence": "high",
  "rows": [
    {
      "id": "mistralai/mistral-nemo",
      "name": "Mistral: Mistral Nemo",
      "rank": 69,
      "model_id": "mistralai/mistral-nemo",
      "model_name": "Mistral: Mistral Nemo",
      "created_at": "2024-07-19T00:00:00.000Z",
      "input_price_per_token_usd": 1.9e-8,
      "output_price_per_token_usd": 3e-8,
      "request_price_per_request_usd": 0,
      "derived_cost_usd": 0.049,
      "derived_cost_basis": "$ per 1M input + 1M output text tokens",
      "context_tokens": 131072,
      "supports_tools": true,
      "supports_structured_outputs": true,
      "input_modalities": [
        "text"
      ],
      "output_modalities": [
        "text"
      ],
      "rank_top_weekly": 69,
      "rank_throughput": 311,
      "rank_coding": 263,
      "rank_agentic": 256
    },
    {
      "id": "nex-agi/nex-n2-mini",
      "name": "Nex AGI: Nex-N2-Mini",
      "rank": 149,
      "model_id": "nex-agi/nex-n2-mini",
      "model_name": "Nex AGI: Nex-N2-Mini",
      "created_at": "2026-06-24T14:56:04.000Z",
      "input_price_per_token_usd": 2.5e-8,
      "output_price_per_token_usd": 1e-7,
      "request_price_per_request_usd": 0,
      "derived_cost_usd": 0.12499999999999999,
      "derived_cost_basis": "$ per 1M input + 1M output text tokens",
      "context_tokens": 262144,
      "supports_tools": true,
      "supports_structured_outputs": true,
      "input_modalities": [
        "text",
        "image"
      ],
      "output_modalities": [
        "text"
      ],
      "rank_top_weekly": 149,
      "rank_throughput": 204,
      "rank_coding": 274,
      "rank_agentic": 268
    },
    {
      "id": "meta-llama/llama-3.1-8b-instruct",
      "name": "Meta: Llama 3.1 8B Instruct",
      "rank": 72,
      "model_id": "meta-llama/llama-3.1-8b-instruct",
      "model_name": "Meta: Llama 3.1 8B Instruct",
      "created_at": "2024-07-23T00:00:00.000Z",
      "input_price_per_token_usd": 5e-8,
      "output_price_per_token_usd": 8e-8,
      "request_price_per_request_usd": 0,
      "derived_cost_usd": 0.13,
      "derived_cost_basis": "$ per 1M input + 1M output text tokens",
      "context_tokens": 131072,
      "supports_tools": true,
      "supports_structured_outputs": true,
      "input_modalities": [
        "text"
      ],
      "output_modalities": [
        "text"
      ],
      "rank_top_weekly": 72,
      "rank_throughput": 118,
      "rank_coding": 163,
      "rank_agentic": 235
    },
    {
      "id": "ibm-granite/granite-4.1-8b",
      "name": "IBM: Granite 4.1 8B",
      "rank": 186,
      "model_id": "ibm-granite/granite-4.1-8b",
      "model_name": "IBM: Granite 4.1 8B",
      "created_at": "2026-04-30T19:24:31.000Z",
      "input_price_per_token_usd": 5e-8,
      "output_price_per_token_usd": 1e-7,
      "request_price_per_request_usd": 0,
      "derived_cost_usd": 0.15,
      "derived_cost_basis": "$ per 1M input + 1M output text tokens",
      "context_tokens": 131072,
      "supports_tools": true,
      "supports_structured_outputs": true,
      "input_modalities": [
        "text"
      ],
      "output_modalities": [
        "text"
      ],
      "rank_top_weekly": 186,
      "rank_throughput": 23,
      "rank_coding": 159,
      "rank_agentic": 228
    },
    {
      "id": "upstage/solar-pro4",
      "name": "Upstage: Solar Pro 4",
      "rank": 25,
      "model_id": "upstage/solar-pro4",
      "model_name": "Upstage: Solar Pro 4",
      "created_at": "2026-08-10T14:20:36.000Z",
      "input_price_per_token_usd": 3e-8,
      "output_price_per_token_usd": 1.2e-7,
      "request_price_per_request_usd": 0,
      "derived_cost_usd": 0.15,
      "derived_cost_basis": "$ per 1M input + 1M output text tokens",
      "context_tokens": 524288,
      "supports_tools": true,
      "supports_structured_outputs": true,
      "input_modalities": [
        "text"
      ],
      "output_modalities": [
        "text"
      ],
      "rank_top_weekly": 25,
      "rank_throughput": 301,
      "rank_coding": 67,
      "rank_agentic": 51
    },
    {
      "id": "openai/gpt-oss-20b",
      "name": "OpenAI: gpt-oss-20b",
      "rank": 38,
      "model_id": "openai/gpt-oss-20b",
      "model_name": "OpenAI: gpt-oss-20b",
      "created_at": "2025-08-05T17:17:09.000Z",
      "input_price_per_token_usd": 3e-8,
      "output_price_per_token_usd": 1.3e-7,
      "request_price_per_request_usd": 0,
      "derived_cost_usd": 0.16,
      "derived_cost_basis": "$ per 1M input + 1M output text tokens",
      "context_tokens": 131072,
      "supports_tools": true,
      "supports_structured_outputs": true,
      "input_modalities": [
        "text"
      ],
      "output_modalities": [
        "text"
      ],
      "rank_top_weekly": 38,
      "rank_throughput": 85,
      "rank_coding": 133,
      "rank_agentic": 131
    },
    {
      "id": "~deepseek/deepseek-v4-flash-latest",
      "name": "DeepSeek V4 Flash Latest",
      "rank": 376,
      "model_id": "~deepseek/deepseek-v4-flash-latest",
      "model_name": "DeepSeek V4 Flash Latest",
      "created_at": "2026-08-01T17:40:09.000Z",
      "input_price_per_token_usd": 3e-8,
      "output_price_per_token_usd": 1.6e-7,
      "request_price_per_request_usd": 0,
      "derived_cost_usd": 0.19,
      "derived_cost_basis": "$ per 1M input + 1M output text tokens",
      "context_tokens": 1310720,
      "supports_tools": true,
      "supports_structured_outputs": true,
      "input_modalities": [
        "text"
      ],
      "output_modalities": [
        "text"
      ],
      "rank_top_weekly": 376,
      "rank_throughput": 303,
      "rank_coding": 170,
      "rank_agentic": 157
    },
    {
      "id": "google/gemma-3-12b-it",
      "name": "Google: Gemma 3 12B",
      "rank": 138,
      "model_id": "google/gemma-3-12b-it",
      "model_name": "Google: Gemma 3 12B",
      "created_at": "2025-03-13T21:50:25.000Z",
      "input_price_per_token_usd": 5e-8,
      "output_price_per_token_usd": 1.5e-7,
      "request_price_per_request_usd": 0,
      "derived_cost_usd": 0.19999999999999998,
      "derived_cost_basis": "$ per 1M input + 1M output text tokens",
      "context_tokens": 131072,
      "supports_tools": true,
      "supports_structured_outputs": true,
      "input_modalities": [
        "text",
        "image"
      ],
      "output_modalities": [
        "text"
      ],
      "rank_top_weekly": 138,
      "rank_throughput": 253,
      "rank_coding": 162,
      "rank_agentic": 151
    },
    {
      "id": "mistralai/ministral-3b-2512",
      "name": "Mistral: Ministral 3 3B 2512",
      "rank": 181,
      "model_id": "mistralai/ministral-3b-2512",
      "model_name": "Mistral: Ministral 3 3B 2512",
      "created_at": "2025-12-02T13:19:20.000Z",
      "input_price_per_token_usd": 1e-7,
      "output_price_per_token_usd": 1e-7,
      "request_price_per_request_usd": 0,
      "derived_cost_usd": 0.19999999999999998,
      "derived_cost_basis": "$ per 1M input + 1M output text tokens",
      "context_tokens": 131072,
      "supports_tools": true,
      "supports_structured_outputs": true,
      "input_modalities": [
        "text",
        "image"
      ],
      "output_modalities": [
        "text"
      ],
      "rank_top_weekly": 181,
      "rank_throughput": 218,
      "rank_coding": 164,
      "rank_agentic": 143
    },
    {
      "id": "rekaai/reka-edge",
      "name": "Reka Edge",
      "rank": 341,
      "model_id": "rekaai/reka-edge",
      "model_name": "Reka Edge",
      "created_at": "2026-03-20T17:16:05.000Z",
      "input_price_per_token_usd": 1e-7,
      "output_price_per_token_usd": 1e-7,
      "request_price_per_request_usd": 0,
      "derived_cost_usd": 0.19999999999999998,
      "derived_cost_basis": "$ per 1M input + 1M output text tokens",
      "context_tokens": 16384,
      "supports_tools": true,
      "supports_structured_outputs": true,
      "input_modalities": [
        "image",
        "text",
        "video"
      ],
      "output_modalities": [
        "text"
      ],
      "rank_top_weekly": 341,
      "rank_throughput": 271,
      "rank_coding": 365,
      "rank_agentic": 365
    }
  ]
}
