{
  "openapi": "3.1.0",
  "info": {
    "title": "Agentic Weekly model and release data",
    "version": "2026-10-26",
    "description": "Read-only endpoints. Data licence: CC BY 4.0. Data: Agentic Weekly (https://theagenticweekly.com), CC BY 4.0. No authentication. Facts are Reported (from vendor pages) unless labelled Tested.",
    "license": {
      "name": "CC BY 4.0",
      "url": "https://creativecommons.org/licenses/by/4.0/"
    },
    "contact": {
      "name": "Agentic Weekly",
      "url": "https://theagenticweekly.com/about"
    }
  },
  "servers": [
    {
      "url": "https://theagenticweekly.com"
    }
  ],
  "security": [],
  "paths": {
    "/models.json": {
      "get": {
        "operationId": "models_json",
        "summary": "All models (JSON)",
        "description": "Every model with sourced facts: release date, context window, modalities, licence, price, source URL, last-verified date.",
        "responses": {
          "200": {
            "description": "All models (JSON)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/models.csv": {
      "get": {
        "operationId": "models_csv",
        "summary": "All models (CSV)",
        "description": "Flat table of the same data for spreadsheets.",
        "responses": {
          "200": {
            "description": "All models (CSV)",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/models": {
      "get": {
        "operationId": "api_models",
        "summary": "Models API",
        "description": "Same payload as /models.json. Filter client-side by category, vendor or groups.",
        "responses": {
          "200": {
            "description": "Models API",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/models/{slug}": {
      "get": {
        "operationId": "api_models_slug",
        "summary": "One model",
        "description": "One model by slug, e.g. gemini-4-argon. Per-fact source URL, as-of date and evidence label.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "gpt-6-1-terra",
                "kimi-k3-1-pro",
                "kimi-k3-1-pro-highspeed",
                "nemotron-3-5-bolt-e4b",
                "voxtral-3",
                "mercury-3",
                "minimax-m3-1-flash",
                "deepseek-v4-1-flash-1017",
                "muse-spark-open",
                "grok-voice-3-0",
                "gemini-4-argon",
                "muse-wonder",
                "muse-wonder-full",
                "claude-haiku-5-5",
                "mistral-large-4",
                "nano-banana-2-1",
                "gpt-6-1-sol",
                "claude-sonnet-5-5",
                "claude-opus-5-5",
                "gemini-3-8-flash-tts",
                "gemini-3-8-flash-lite-tts",
                "gpt-6-luna",
                "gpt-6-sol",
                "grok-4-7",
                "grok-voice-transcribe-2-0",
                "claude-fable-5-1",
                "gemini-3-8-live",
                "gemini-3-8-live-extended-thinking",
                "deepseek-v4-1-flash",
                "gpt-live-1",
                "north-small-translate",
                "gpt-image-2-5-flare",
                "gpt-image-2-5-sunburst",
                "gpt-6-astra",
                "gemini-3-8-flash",
                "claude-mythos-5-1",
                "gemini-omni-1-1-flash",
                "gemini-3-5-transcribe",
                "glm-5-3-flash",
                "glm-5-3",
                "qwen3-8-27b",
                "grok-4-6",
                "qwen3-8-2-4t-a95b",
                "gemini-robotics-er-2",
                "gpt-live-transcribe",
                "gpt-transcribe",
                "claude-opus-5",
                "gemini-3-5-flash-lite",
                "gemini-3-6-flash",
                "kimi-k3",
                "gpt-5-6-luna",
                "gpt-5-6-sol",
                "gpt-5-6-terra",
                "grok-4-5",
                "cohere-transcribe-arabic",
                "gpt-realtime-2-1",
                "gpt-realtime-2-1-mini",
                "claude-sonnet-5",
                "nano-banana-2-lite",
                "glm-5-2",
                "claude-fable-5",
                "claude-mythos-5",
                "north-mini-code",
                "claude-opus-4-8",
                "nano-banana-pro",
                "command-a-plus",
                "grok-build-0-1",
                "gemini-3-1-flash-lite",
                "mistral-medium-3-5",
                "gpt-5-5",
                "gpt-5-5-pro",
                "qwen3-6-27b",
                "gpt-image-2",
                "claude-opus-4-7",
                "glm-5-1",
                "gemma-4",
                "cohere-transcribe",
                "voxtral-tts",
                "gpt-5-4-mini",
                "mistral-small-4",
                "grok-4-20",
                "gpt-5-4",
                "gemini-3-1-pro",
                "claude-sonnet-4-6",
                "glm-5",
                "claude-opus-4-6",
                "glm-image",
                "ministral-3-14b"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "One model",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelResponse"
                }
              }
            }
          },
          "404": {
            "description": "Unknown slug (an HTML not-found page)",
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/answers.json": {
      "get": {
        "operationId": "answers_json",
        "summary": "Answers",
        "description": "Question and answer pairs (newest model per vendor, best by named criteria, cheapest, open weights) with sources and an as-of date.",
        "responses": {
          "200": {
            "description": "Answers",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnswersResponse"
                }
              }
            }
          }
        }
      }
    },
    "/latest.json": {
      "get": {
        "operationId": "latest_json",
        "summary": "Latest news briefs",
        "description": "The 50 newest release briefs with first-seen and source timestamps (UTC).",
        "responses": {
          "200": {
            "description": "Latest news briefs",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LatestResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tools.json": {
      "get": {
        "operationId": "tools_json",
        "summary": "All tools",
        "description": "Every AI tool we cover with verdict and Reported or Tested label.",
        "responses": {
          "200": {
            "description": "All tools",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/models/feed.xml": {
      "get": {
        "operationId": "models_feed_xml",
        "summary": "Models RSS",
        "description": "RSS of model releases, newest first.",
        "responses": {
          "200": {
            "description": "Models RSS",
            "content": {
              "application/rss+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/openapi.json": {
      "get": {
        "operationId": "openapi_json",
        "summary": "OpenAPI 3.1 description",
        "description": "Machine description of the read-only endpoints above.",
        "responses": {
          "200": {
            "description": "OpenAPI 3.1 description",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiDocument"
                }
              }
            }
          }
        }
      }
    },
    "/mcp": {
      "post": {
        "operationId": "mcp",
        "summary": "MCP server (streamable HTTP)",
        "description": "Read-only Model Context Protocol server with tools latest_models, get_model, latest_releases and compare_tools. Stateless; JSON-RPC 2.0 over POST.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRpcRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC 2.0 response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonRpcResponse"
                }
              }
            }
          },
          "202": {
            "description": "Notification accepted"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "License": {
        "type": "object",
        "description": "Data licence for the dataset (CC BY 4.0).",
        "properties": {
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "name",
          "url"
        ],
        "additionalProperties": true
      },
      "EvidenceLabels": {
        "type": "object",
        "description": "What the two evidence labels mean.",
        "properties": {
          "Reported": {
            "type": "string"
          },
          "Tested": {
            "type": "string"
          }
        },
        "required": [
          "Reported",
          "Tested"
        ],
        "additionalProperties": true
      },
      "Pricing": {
        "type": "object",
        "description": "List price as stated on the vendor page. Which fields are present depends on how the vendor prices the model.",
        "properties": {
          "currency": {
            "type": "string",
            "description": "ISO currency code, e.g. USD or CNY."
          },
          "unit": {
            "type": "string",
            "description": "e.g. per 1M tokens."
          },
          "input": {
            "type": "number"
          },
          "output": {
            "type": "number"
          },
          "cachedInput": {
            "type": "number"
          },
          "later": {
            "type": "object",
            "description": "A scheduled later price.",
            "properties": {
              "effective": {
                "type": "string"
              },
              "input": {
                "type": "number"
              },
              "output": {
                "type": "number"
              },
              "cachedInput": {
                "type": "number"
              }
            },
            "required": [
              "effective",
              "input",
              "output"
            ],
            "additionalProperties": true
          },
          "peak": {
            "type": "object",
            "properties": {
              "input": {
                "type": "number"
              },
              "output": {
                "type": "number"
              },
              "cachedInput": {
                "type": "number"
              }
            },
            "required": [
              "input",
              "output"
            ],
            "additionalProperties": true
          },
          "tiers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string"
                },
                "input": {
                  "type": "number"
                },
                "output": {
                  "type": "number"
                },
                "cachedInput": {
                  "type": "number"
                }
              },
              "required": [
                "input",
                "output"
              ],
              "additionalProperties": true
            }
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string"
                },
                "price": {
                  "type": "number"
                }
              },
              "required": [
                "label",
                "price"
              ],
              "additionalProperties": true
            }
          },
          "text": {
            "type": "string",
            "description": "Human-readable price line (present in the model payload)."
          }
        },
        "required": [
          "currency",
          "unit"
        ],
        "additionalProperties": true
      },
      "ModelFact": {
        "type": "object",
        "description": "One sourced fact: its value, the page it came from, the date it was read, and its evidence label.",
        "properties": {
          "value": {
            "description": "The fact. Type depends on the fact: string, integer, string array, or an object (parameters, license, pricing)."
          },
          "source_url": {
            "type": "string",
            "format": "uri"
          },
          "as_of": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD"
          },
          "evidence": {
            "type": "string",
            "enum": [
              "Reported",
              "Tested"
            ],
            "description": "Reported: read from the cited vendor page, not run by us. Tested: we ran it ourselves; scope is in tested_note."
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "value",
          "source_url",
          "as_of",
          "evidence"
        ],
        "additionalProperties": true
      },
      "Model": {
        "type": "object",
        "description": "One model with sourced facts.",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "vendor": {
            "type": "string"
          },
          "family": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "enum": [
              "llm",
              "image",
              "voice",
              "video"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "generally-available",
              "public-preview",
              "limited-access"
            ]
          },
          "groups": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "short_answer": {
            "type": "string",
            "description": "A self-contained first sentence answer for this model."
          },
          "summary": {
            "type": "string"
          },
          "release_date": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD"
          },
          "latest_update": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "api_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "context_tokens": {
            "type": [
              "integer",
              "null"
            ]
          },
          "max_output_tokens": {
            "type": [
              "integer",
              "null"
            ]
          },
          "input_modalities": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "output_modalities": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "parameters": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "total": {
                "type": "string"
              },
              "active": {
                "type": "string"
              },
              "architecture": {
                "type": "string"
              }
            },
            "additionalProperties": true
          },
          "license": {
            "type": [
              "string",
              "null"
            ]
          },
          "open_weights": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "pricing": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Pricing"
              },
              {
                "type": "null"
              }
            ]
          },
          "evidence": {
            "type": "string",
            "enum": [
              "Reported",
              "Tested"
            ],
            "description": "Reported: read from the cited vendor page, not run by us. Tested: we ran it ourselves; scope is in tested_note."
          },
          "tested_note": {
            "type": [
              "string",
              "null"
            ]
          },
          "last_verified": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD"
          },
          "is_stale": {
            "type": "boolean",
            "description": "True when last_verified is older than the staleness window."
          },
          "facts": {
            "type": "object",
            "description": "Per-fact objects keyed by snake_case fact name (release_date, api_id, context_tokens, max_output_tokens, input_modalities, output_modalities, parameters, license, pricing, latest_update).",
            "additionalProperties": {
              "$ref": "#/components/schemas/ModelFact"
            }
          },
          "vendor_claims": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "notes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "not_verified": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "required": [
                "label",
                "url"
              ],
              "additionalProperties": true
            }
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "markdown": {
            "type": "string",
            "format": "uri"
          },
          "api": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "slug",
          "name",
          "vendor",
          "category",
          "status",
          "release_date",
          "evidence",
          "last_verified",
          "facts",
          "sources",
          "url"
        ],
        "additionalProperties": true
      },
      "DatasetEnvelope": {
        "type": "object",
        "description": "Fields shared by every model-data response.",
        "properties": {
          "site": {
            "type": "string"
          },
          "dataset": {
            "type": "string"
          },
          "as_of": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD"
          },
          "license": {
            "$ref": "#/components/schemas/License"
          },
          "attribution": {
            "type": "string"
          },
          "page": {
            "type": "string",
            "format": "uri"
          },
          "evidence_labels": {
            "$ref": "#/components/schemas/EvidenceLabels"
          }
        },
        "required": [
          "site",
          "dataset",
          "as_of",
          "license",
          "attribution",
          "page",
          "evidence_labels"
        ],
        "additionalProperties": true
      },
      "ModelsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/DatasetEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer"
              },
              "docs": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "models": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Model"
                }
              }
            },
            "required": [
              "count",
              "models"
            ],
            "additionalProperties": true
          }
        ]
      },
      "ModelResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/DatasetEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "model": {
                "$ref": "#/components/schemas/Model"
              }
            },
            "required": [
              "model"
            ],
            "additionalProperties": true
          }
        ]
      },
      "Answer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "question": {
            "type": "string"
          },
          "answer": {
            "type": "string"
          },
          "criterion": {
            "type": "string",
            "description": "How the answer was derived."
          },
          "models": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Model slugs the answer names."
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            }
          },
          "as_of": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD"
          },
          "caveat": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "question",
          "answer",
          "criterion",
          "models",
          "sources",
          "as_of"
        ],
        "additionalProperties": true
      },
      "Leaderboard": {
        "type": "object",
        "description": "A third-party leaderboard we cite, with the date of the snapshot.",
        "properties": {
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "snapshot_date": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD"
          }
        },
        "required": [
          "name",
          "url"
        ],
        "additionalProperties": true
      },
      "AnswersResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/DatasetEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer"
              },
              "how_to_cite": {
                "type": "string"
              },
              "answers": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Answer"
                }
              },
              "leaderboards": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Leaderboard"
                }
              }
            },
            "required": [
              "count",
              "answers"
            ],
            "additionalProperties": true
          }
        ]
      },
      "NewsItem": {
        "type": "object",
        "description": "One release brief. Timestamps are UTC.",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "markdown": {
            "type": "string",
            "format": "uri"
          },
          "vendor": {
            "type": [
              "string",
              "null"
            ]
          },
          "tool": {
            "type": [
              "string",
              "null"
            ]
          },
          "evidence": {
            "type": "string"
          },
          "first_seen_utc": {
            "type": "string",
            "format": "date-time"
          },
          "source_published_utc": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "published_utc": {
            "type": "string",
            "format": "date-time"
          },
          "updated_utc": {
            "type": "string",
            "format": "date-time"
          },
          "primary_source": {
            "type": "string",
            "format": "uri"
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            }
          }
        },
        "required": [
          "slug",
          "title",
          "summary",
          "url",
          "first_seen_utc",
          "published_utc",
          "primary_source",
          "sources"
        ],
        "additionalProperties": true
      },
      "LatestResponse": {
        "type": "object",
        "description": "The newest release briefs, newest first.",
        "properties": {
          "site": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "description": {
            "type": "string"
          },
          "generated_for_deploy": {
            "type": "string",
            "format": "date-time"
          },
          "count": {
            "type": "integer"
          },
          "feeds": {
            "type": "object",
            "properties": {
              "rss": {
                "type": "string",
                "format": "uri"
              },
              "atom": {
                "type": "string",
                "format": "uri"
              },
              "json_feed": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": [
              "rss",
              "atom",
              "json_feed"
            ],
            "additionalProperties": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NewsItem"
            }
          }
        },
        "required": [
          "site",
          "url",
          "count",
          "items"
        ],
        "additionalProperties": true
      },
      "ToolEvidenceDetail": {
        "type": "object",
        "description": "For Tested tools: what was run, on what, and what was not covered. A smoke test is not a benchmark.",
        "properties": {
          "label": {
            "type": "string",
            "enum": [
              "tested",
              "reported"
            ]
          },
          "kind": {
            "type": "string"
          },
          "date": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD"
          },
          "ran": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "environment": {
            "type": "string"
          },
          "notTested": {
            "type": "string"
          },
          "isBenchmark": {
            "type": "boolean"
          }
        },
        "required": [
          "label"
        ],
        "additionalProperties": true
      },
      "Tool": {
        "type": "object",
        "description": "One tool with verdict and evidence label.",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "vendor": {
            "type": "string"
          },
          "version": {
            "type": [
              "string",
              "null"
            ]
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "slug": {
                  "type": "string"
                },
                "rank": {
                  "type": [
                    "integer",
                    "null"
                  ]
                }
              },
              "required": [
                "slug"
              ],
              "additionalProperties": true
            }
          },
          "verdict": {
            "type": "string"
          },
          "evidence": {
            "type": "string",
            "enum": [
              "reported",
              "tested"
            ]
          },
          "evidenceLabel": {
            "type": "string"
          },
          "evidenceDetail": {
            "$ref": "#/components/schemas/ToolEvidenceDetail"
          },
          "pricing": {
            "type": "object",
            "description": "Pricing status and a dated note; prices appear only with a date and an official source.",
            "properties": {
              "status": {
                "type": "string"
              },
              "note": {
                "type": "string"
              }
            },
            "required": [
              "status"
            ],
            "additionalProperties": true
          },
          "releaseDate": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD"
          },
          "releaseDatePublishedByVendor": {
            "type": "boolean"
          },
          "updated": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD"
          },
          "paidPlacement": {
            "type": "boolean",
            "description": "True only for labelled Featured placements. Payment never changes a rank."
          },
          "officialUrl": {
            "type": "string",
            "format": "uri"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "markdown": {
            "type": "string",
            "format": "uri"
          },
          "citation": {
            "type": "string"
          },
          "guides": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "slug": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "markdown": {
                  "type": "string",
                  "format": "uri"
                },
                "evidence": {
                  "type": "string"
                },
                "updated": {
                  "type": "string",
                  "format": "date",
                  "description": "YYYY-MM-DD"
                }
              },
              "required": [
                "slug",
                "title",
                "url"
              ],
              "additionalProperties": true
            },
            "description": "Setup guides that cover this tool."
          }
        },
        "required": [
          "slug",
          "name",
          "vendor",
          "categories",
          "verdict",
          "evidence",
          "releaseDate",
          "updated",
          "paidPlacement",
          "url"
        ],
        "additionalProperties": true
      },
      "ToolsResponse": {
        "type": "object",
        "properties": {
          "site": {
            "type": "string"
          },
          "canonical": {
            "type": "string",
            "format": "uri"
          },
          "updated": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD"
          },
          "count": {
            "type": "integer"
          },
          "guidesCount": {
            "type": "integer"
          },
          "evidenceLabels": {
            "type": "object",
            "properties": {
              "reported": {
                "type": "string"
              },
              "tested": {
                "type": "string"
              }
            },
            "required": [
              "reported",
              "tested"
            ],
            "additionalProperties": true
          },
          "rankingBasis": {
            "type": "object",
            "properties": {
              "summary": {
                "type": "string"
              },
              "points": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "summary",
              "points"
            ],
            "additionalProperties": true
          },
          "howToCite": {
            "type": "string"
          },
          "tools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Tool"
            }
          },
          "pages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string"
                },
                "kind": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "markdown": {
                  "type": "string",
                  "format": "uri"
                },
                "updated": {
                  "type": "string",
                  "format": "date",
                  "description": "YYYY-MM-DD"
                }
              },
              "required": [
                "title",
                "kind",
                "url",
                "updated"
              ],
              "additionalProperties": true
            },
            "description": "Index of site pages with markdown twins."
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "slug": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "markdown": {
                  "type": "string",
                  "format": "uri"
                },
                "ranking": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Tool slugs, best first."
                }
              },
              "required": [
                "slug",
                "title",
                "url",
                "ranking"
              ],
              "additionalProperties": true
            }
          }
        },
        "required": [
          "site",
          "canonical",
          "updated",
          "count",
          "tools",
          "categories"
        ],
        "additionalProperties": true
      },
      "JsonRpcRequest": {
        "type": "object",
        "description": "JSON-RPC 2.0 request (MCP). Methods include initialize, tools/list and tools/call.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "const": "2.0"
          },
          "id": {
            "type": [
              "string",
              "integer",
              "null"
            ]
          },
          "method": {
            "type": "string"
          },
          "params": {
            "type": "object"
          }
        },
        "required": [
          "jsonrpc",
          "method"
        ],
        "additionalProperties": true
      },
      "JsonRpcResponse": {
        "type": "object",
        "description": "JSON-RPC 2.0 response: either result or error.",
        "properties": {
          "jsonrpc": {
            "type": "string",
            "const": "2.0"
          },
          "id": {
            "type": [
              "string",
              "integer",
              "null"
            ]
          },
          "result": {},
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "integer"
              },
              "message": {
                "type": "string"
              },
              "data": {}
            },
            "required": [
              "code",
              "message"
            ],
            "additionalProperties": true
          }
        },
        "required": [
          "jsonrpc"
        ],
        "additionalProperties": true
      },
      "OpenApiDocument": {
        "type": "object",
        "description": "This OpenAPI 3.1 document.",
        "required": [
          "openapi",
          "info",
          "paths"
        ],
        "properties": {
          "openapi": {
            "type": "string"
          },
          "info": {
            "type": "object"
          },
          "paths": {
            "type": "object"
          },
          "components": {
            "type": "object"
          }
        },
        "additionalProperties": true
      }
    }
  },
  "externalDocs": {
    "description": "Developer docs",
    "url": "https://theagenticweekly.com/developers"
  }
}