{
  "tools": [
    {
      "description": "Search the agent-first web index. Returns metadata-only hits (url, host, snippet, score, trust and graph signals) — never the page body; fetch that with get_document when a snippet is not enough.\n\nThe query supports boolean operators: AND, OR, -term to exclude, and \"exact phrase\". Name a vertical to disambiguate, or omit it and the router picks one from the query.\n\nThe index is admission-controlled, so a small result set usually means the index holds little on the topic, not that the query was wrong. One exception: if `partial` comes back true, part of the corpus was unreachable and the answer really is incomplete.\n\nEvery filter below is also a query parameter on GET /search, with the same name and the same meaning. IN-list filters accept either an array or a comma-separated string.\n\nCosts 1 credit.",
      "inputSchema": {
        "properties": {
          "authority": {
            "description": "Publisher-authority IN-list",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "string"
            ]
          },
          "collapse": {
            "default": "none",
            "description": "Group results: one per host, per page, or per story (near-dup cluster). collapse=story is how you stop reading the same wire copy five times.",
            "enum": [
              "none",
              "host",
              "page",
              "story"
            ],
            "type": "string"
          },
          "community": {
            "description": "Graph signal: restrict to these graph communities",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "string"
            ]
          },
          "content_type": {
            "description": "IN-list: article, news, docs, reference, qa, forum, academic, product, code, how-to, opinion, video, document",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "string"
            ]
          },
          "exclude_site": {
            "description": "Hosts to exclude",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "string"
            ]
          },
          "facets": {
            "description": "Also return host/vertical/source/content-type facet counts and a publish-year histogram",
            "type": "boolean"
          },
          "fields": {
            "description": "Project the hit down to these fields, to save context",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "string"
            ]
          },
          "from": {
            "description": "Only results fetched at/after this unix-second timestamp",
            "type": "integer"
          },
          "lang": {
            "description": "Single language code, e.g. en",
            "type": "string"
          },
          "langs": {
            "description": "Language IN-list",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "string"
            ]
          },
          "limit": {
            "default": 10,
            "description": "0 returns only the match count; a value above the maximum is clamped",
            "maximum": 100,
            "type": "integer"
          },
          "max_words": {
            "description": "Passage length ceiling",
            "type": "integer"
          },
          "min_centrality": {
            "description": "Graph signal: only passages this central to the corpus",
            "type": "number"
          },
          "min_host_rank": {
            "description": "Trust floor (0..1)",
            "type": "number"
          },
          "min_independent_sources": {
            "description": "Graph signal: only stories asserted by at least this many distinct hosts. The corroboration filter.",
            "type": "integer"
          },
          "min_quality": {
            "description": "Quality floor",
            "type": "integer"
          },
          "min_words": {
            "description": "Passage length floor",
            "type": "integer"
          },
          "mode": {
            "default": "hybrid",
            "enum": [
              "keyword",
              "semantic",
              "hybrid"
            ],
            "type": "string"
          },
          "prefer_authority": {
            "description": "Soft rerank bias toward higher-authority hosts",
            "type": "boolean"
          },
          "prefer_recent": {
            "description": "Soft rerank bias toward newer passages — a nudge, not a filter",
            "type": "boolean"
          },
          "published_from": {
            "description": "Content publish date at/after this unix-second timestamp (not crawl time)",
            "type": "integer"
          },
          "published_to": {
            "description": "Content publish date at/before this",
            "type": "integer"
          },
          "query": {
            "description": "Boolean-capable: rust AND async, -python, \"exact phrase\"",
            "type": "string"
          },
          "safe": {
            "description": "true (the default) drops explicit content; false allows everything",
            "type": "boolean"
          },
          "site": {
            "description": "Restrict to an exact host, e.g. docs.rs",
            "type": "string"
          },
          "sort": {
            "default": "relevance",
            "enum": [
              "relevance",
              "recency",
              "host_rank",
              "quality",
              "published",
              "words",
              "centrality"
            ],
            "type": "string"
          },
          "source": {
            "description": "cc = Common Crawl, delta = freshly crawled",
            "enum": [
              "cc",
              "delta"
            ],
            "type": "string"
          },
          "term": {
            "description": "Exact-needle: only passages carrying this salient term, e.g. CVE-2024-3094. Use it for identifiers an embedder is blind to.",
            "type": "string"
          },
          "tld": {
            "description": "Top-level-domain IN-list, e.g. edu, gov",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "string"
            ]
          },
          "to": {
            "description": "Only results fetched at/before this unix-second timestamp",
            "type": "integer"
          },
          "topic": {
            "description": "Topic-tag IN-list",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "string"
            ]
          },
          "vertical": {
            "description": "e.g. code, cooking, science. Omit to auto-route.",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "web_search",
      "outputSchema": {
        "properties": {
          "facets": {
            "description": "Present only when facets=true",
            "type": "object"
          },
          "mode": {
            "description": "The mode actually used",
            "enum": [
              "keyword",
              "semantic",
              "hybrid"
            ],
            "type": "string"
          },
          "partial": {
            "description": "true when at least one shard failed or timed out — the answer is short because a slice of the corpus was unreachable, NOT because that is all there is. Never treat a partial result as complete.",
            "type": "boolean"
          },
          "results": {
            "items": {
              "properties": {
                "authority": {
                  "type": "string"
                },
                "centrality": {
                  "description": "Graph centrality — how central this passage is to the corpus",
                  "type": "number"
                },
                "community_id": {
                  "type": "string"
                },
                "content_type": {
                  "type": "string"
                },
                "fetched_at": {
                  "description": "Unix seconds when this passage was crawled",
                  "type": "integer"
                },
                "group_size": {
                  "description": "Present when collapse grouped rows: how many were folded in",
                  "type": "integer"
                },
                "host": {
                  "type": "string"
                },
                "host_rank": {
                  "description": "Host trust prior, 0..1",
                  "type": "number"
                },
                "id": {
                  "description": "Passage id (page:no) — pass to get_document, similar, related, corroborate, path",
                  "type": "string"
                },
                "in_degree": {
                  "type": "integer"
                },
                "independent_sources": {
                  "description": "Distinct hosts asserting this story",
                  "type": "integer"
                },
                "published_at": {
                  "type": "integer"
                },
                "quality": {
                  "type": "integer"
                },
                "safety": {
                  "type": "string"
                },
                "score": {
                  "type": "number"
                },
                "snippet": {
                  "description": "The passage text — often enough to answer without get_document",
                  "type": "string"
                },
                "source": {
                  "description": "cc | delta",
                  "type": "string"
                },
                "story_id": {
                  "description": "Near-dup cluster this passage belongs to",
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "tld": {
                  "type": "string"
                },
                "topics": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "url": {
                  "type": "string"
                },
                "vertical": {
                  "type": "string"
                },
                "word_count": {
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "url",
                "host",
                "title",
                "vertical",
                "host_rank",
                "quality",
                "fetched_at",
                "source",
                "story_id",
                "score",
                "snippet"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "routed": {
            "description": "true when the router chose the vertical, false when you named it",
            "type": "boolean"
          },
          "total": {
            "type": "integer"
          },
          "vertical": {
            "description": "The vertical actually queried",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "routed",
          "mode",
          "total",
          "results"
        ],
        "type": "object"
      }
    },
    {
      "description": "Fetch the full cleaned text of a passage by its id (from a web_search hit), with its metadata.\n\nSnippets in search results are the passage text, so most questions need no call here. Reach for it when you need the whole document rather than the matching passage.\n\nCosts 1 credit.",
      "inputSchema": {
        "properties": {
          "id": {
            "description": "Passage id from a hit",
            "type": "string"
          },
          "risk": {
            "default": false,
            "description": "Also return risk_flags for the text: instruction_like, hidden_text, role_markers, low_trust_source",
            "type": "boolean"
          },
          "strip": {
            "default": false,
            "description": "Remove instruction-like sentences from the text (each becomes '[removed: instruction-like text]'). Implies risk.",
            "type": "boolean"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "get_document",
      "outputSchema": {
        "properties": {
          "host": {
            "type": "string"
          },
          "host_rank": {
            "type": "number"
          },
          "id": {
            "type": "string"
          },
          "lang": {
            "type": "string"
          },
          "quality": {
            "type": "integer"
          },
          "risk_flags": {
            "description": "Present when risk or strip was set. Computed on the original text.",
            "items": {
              "enum": [
                "instruction_like",
                "hidden_text",
                "role_markers",
                "low_trust_source"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "sentences_removed": {
            "description": "Present when strip was set: how many sentences were removed",
            "type": "integer"
          },
          "text": {
            "description": "The full cleaned body",
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "vertical": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "url",
          "host",
          "title",
          "vertical",
          "lang",
          "host_rank",
          "quality",
          "text"
        ],
        "type": "object"
      }
    },
    {
      "description": "More-like-this: given a passage id from a web_search hit, return its semantic neighbours.\n\nUse it when a result is nearly what you wanted — it searches by meaning from that passage rather than from words you have to guess.\n\nCosts 1 credit.",
      "inputSchema": {
        "properties": {
          "id": {
            "description": "Seed passage id",
            "type": "string"
          },
          "limit": {
            "default": 10,
            "maximum": 100,
            "type": "integer"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "similar",
      "outputSchema": {
        "properties": {
          "facets": {
            "description": "Present only when facets=true",
            "type": "object"
          },
          "mode": {
            "description": "The mode actually used",
            "enum": [
              "keyword",
              "semantic",
              "hybrid"
            ],
            "type": "string"
          },
          "partial": {
            "description": "true when at least one shard failed or timed out — the answer is short because a slice of the corpus was unreachable, NOT because that is all there is. Never treat a partial result as complete.",
            "type": "boolean"
          },
          "results": {
            "items": {
              "properties": {
                "authority": {
                  "type": "string"
                },
                "centrality": {
                  "description": "Graph centrality — how central this passage is to the corpus",
                  "type": "number"
                },
                "community_id": {
                  "type": "string"
                },
                "content_type": {
                  "type": "string"
                },
                "fetched_at": {
                  "description": "Unix seconds when this passage was crawled",
                  "type": "integer"
                },
                "group_size": {
                  "description": "Present when collapse grouped rows: how many were folded in",
                  "type": "integer"
                },
                "host": {
                  "type": "string"
                },
                "host_rank": {
                  "description": "Host trust prior, 0..1",
                  "type": "number"
                },
                "id": {
                  "description": "Passage id (page:no) — pass to get_document, similar, related, corroborate, path",
                  "type": "string"
                },
                "in_degree": {
                  "type": "integer"
                },
                "independent_sources": {
                  "description": "Distinct hosts asserting this story",
                  "type": "integer"
                },
                "published_at": {
                  "type": "integer"
                },
                "quality": {
                  "type": "integer"
                },
                "safety": {
                  "type": "string"
                },
                "score": {
                  "type": "number"
                },
                "snippet": {
                  "description": "The passage text — often enough to answer without get_document",
                  "type": "string"
                },
                "source": {
                  "description": "cc | delta",
                  "type": "string"
                },
                "story_id": {
                  "description": "Near-dup cluster this passage belongs to",
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "tld": {
                  "type": "string"
                },
                "topics": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "url": {
                  "type": "string"
                },
                "vertical": {
                  "type": "string"
                },
                "word_count": {
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "url",
                "host",
                "title",
                "vertical",
                "host_rank",
                "quality",
                "fetched_at",
                "source",
                "story_id",
                "score",
                "snippet"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "routed": {
            "description": "true when the router chose the vertical, false when you named it",
            "type": "boolean"
          },
          "total": {
            "type": "integer"
          },
          "vertical": {
            "description": "The vertical actually queried",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "routed",
          "mode",
          "total",
          "results"
        ],
        "type": "object"
      }
    },
    {
      "description": "Coverage transparency: is this URL in the index, and if not, what happened to it?\n\nAnswers one of three things. `present` returns the hit. `removed` names the reason — redundant, superseded, stale, access-starved, lost-replacement, or tombstoned-source — and, where one exists, the passage that superseded it. `unknown` means it was never admitted, or was never seen.\n\nUse it before concluding the web is silent on something: an absent URL and an absent topic are different findings.\n\nCosts 1 credit.",
      "inputSchema": {
        "properties": {
          "url": {
            "description": "The URL to ask about",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "why_not",
      "outputSchema": {
        "properties": {
          "hit": {
            "properties": {
              "authority": {
                "type": "string"
              },
              "centrality": {
                "description": "Graph centrality — how central this passage is to the corpus",
                "type": "number"
              },
              "community_id": {
                "type": "string"
              },
              "content_type": {
                "type": "string"
              },
              "fetched_at": {
                "description": "Unix seconds when this passage was crawled",
                "type": "integer"
              },
              "group_size": {
                "description": "Present when collapse grouped rows: how many were folded in",
                "type": "integer"
              },
              "host": {
                "type": "string"
              },
              "host_rank": {
                "description": "Host trust prior, 0..1",
                "type": "number"
              },
              "id": {
                "description": "Passage id (page:no) — pass to get_document, similar, related, corroborate, path",
                "type": "string"
              },
              "in_degree": {
                "type": "integer"
              },
              "independent_sources": {
                "description": "Distinct hosts asserting this story",
                "type": "integer"
              },
              "published_at": {
                "type": "integer"
              },
              "quality": {
                "type": "integer"
              },
              "safety": {
                "type": "string"
              },
              "score": {
                "type": "number"
              },
              "snippet": {
                "description": "The passage text — often enough to answer without get_document",
                "type": "string"
              },
              "source": {
                "description": "cc | delta",
                "type": "string"
              },
              "story_id": {
                "description": "Near-dup cluster this passage belongs to",
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "tld": {
                "type": "string"
              },
              "topics": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "url": {
                "type": "string"
              },
              "vertical": {
                "type": "string"
              },
              "word_count": {
                "type": "integer"
              }
            },
            "required": [
              "id",
              "url",
              "host",
              "title",
              "vertical",
              "host_rank",
              "quality",
              "fetched_at",
              "source",
              "story_id",
              "score",
              "snippet"
            ],
            "type": "object"
          },
          "reason": {
            "enum": [
              "redundant",
              "superseded",
              "stale",
              "access-starved",
              "lost-replacement",
              "tombstoned-source"
            ],
            "type": "string"
          },
          "removed_at": {
            "type": "integer"
          },
          "status": {
            "enum": [
              "present",
              "removed",
              "unknown"
            ],
            "type": "string"
          },
          "superseded_by": {
            "description": "The passage id that replaced it, when there is one",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "status"
        ],
        "type": "object"
      }
    },
    {
      "description": "Browse without a query: the most-recent (or top-host-rank) passages, optionally within a vertical.\n\nFor 'what is new here' rather than 'find me X'.\n\nCosts 1 credit.",
      "inputSchema": {
        "properties": {
          "limit": {
            "default": 10,
            "maximum": 100,
            "type": "integer"
          },
          "sort": {
            "default": "recency",
            "enum": [
              "recency",
              "host_rank",
              "quality",
              "published",
              "words",
              "centrality"
            ],
            "type": "string"
          },
          "vertical": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "browse",
      "outputSchema": {
        "properties": {
          "facets": {
            "description": "Present only when facets=true",
            "type": "object"
          },
          "mode": {
            "description": "The mode actually used",
            "enum": [
              "keyword",
              "semantic",
              "hybrid"
            ],
            "type": "string"
          },
          "partial": {
            "description": "true when at least one shard failed or timed out — the answer is short because a slice of the corpus was unreachable, NOT because that is all there is. Never treat a partial result as complete.",
            "type": "boolean"
          },
          "results": {
            "items": {
              "properties": {
                "authority": {
                  "type": "string"
                },
                "centrality": {
                  "description": "Graph centrality — how central this passage is to the corpus",
                  "type": "number"
                },
                "community_id": {
                  "type": "string"
                },
                "content_type": {
                  "type": "string"
                },
                "fetched_at": {
                  "description": "Unix seconds when this passage was crawled",
                  "type": "integer"
                },
                "group_size": {
                  "description": "Present when collapse grouped rows: how many were folded in",
                  "type": "integer"
                },
                "host": {
                  "type": "string"
                },
                "host_rank": {
                  "description": "Host trust prior, 0..1",
                  "type": "number"
                },
                "id": {
                  "description": "Passage id (page:no) — pass to get_document, similar, related, corroborate, path",
                  "type": "string"
                },
                "in_degree": {
                  "type": "integer"
                },
                "independent_sources": {
                  "description": "Distinct hosts asserting this story",
                  "type": "integer"
                },
                "published_at": {
                  "type": "integer"
                },
                "quality": {
                  "type": "integer"
                },
                "safety": {
                  "type": "string"
                },
                "score": {
                  "type": "number"
                },
                "snippet": {
                  "description": "The passage text — often enough to answer without get_document",
                  "type": "string"
                },
                "source": {
                  "description": "cc | delta",
                  "type": "string"
                },
                "story_id": {
                  "description": "Near-dup cluster this passage belongs to",
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "tld": {
                  "type": "string"
                },
                "topics": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "url": {
                  "type": "string"
                },
                "vertical": {
                  "type": "string"
                },
                "word_count": {
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "url",
                "host",
                "title",
                "vertical",
                "host_rank",
                "quality",
                "fetched_at",
                "source",
                "story_id",
                "score",
                "snippet"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "routed": {
            "description": "true when the router chose the vertical, false when you named it",
            "type": "boolean"
          },
          "total": {
            "type": "integer"
          },
          "vertical": {
            "description": "The vertical actually queried",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "routed",
          "mode",
          "total",
          "results"
        ],
        "type": "object"
      }
    },
    {
      "description": "Coverage Graph: the connected neighbourhood of a passage — 'follow the thread'.\n\nA bounded k-hop walk over hosted-on / same-story / topic / entity edges, returning the passages it reaches. The edges are what to read next, so one call decomposes a question that would otherwise be a search per hop.\n\nRaise hops to widen the net; 2 is usually right, and 3 gets noisy fast.\n\nCosts 2 credits; a call that runs and fails costs 1.",
      "inputSchema": {
        "properties": {
          "hops": {
            "default": 2,
            "type": "integer"
          },
          "id": {
            "description": "Start passage id",
            "type": "string"
          },
          "limit": {
            "default": 10,
            "maximum": 100,
            "type": "integer"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "related",
      "outputSchema": {
        "properties": {
          "facets": {
            "description": "Present only when facets=true",
            "type": "object"
          },
          "mode": {
            "description": "The mode actually used",
            "enum": [
              "keyword",
              "semantic",
              "hybrid"
            ],
            "type": "string"
          },
          "partial": {
            "description": "true when at least one shard failed or timed out — the answer is short because a slice of the corpus was unreachable, NOT because that is all there is. Never treat a partial result as complete.",
            "type": "boolean"
          },
          "results": {
            "items": {
              "properties": {
                "authority": {
                  "type": "string"
                },
                "centrality": {
                  "description": "Graph centrality — how central this passage is to the corpus",
                  "type": "number"
                },
                "community_id": {
                  "type": "string"
                },
                "content_type": {
                  "type": "string"
                },
                "fetched_at": {
                  "description": "Unix seconds when this passage was crawled",
                  "type": "integer"
                },
                "group_size": {
                  "description": "Present when collapse grouped rows: how many were folded in",
                  "type": "integer"
                },
                "host": {
                  "type": "string"
                },
                "host_rank": {
                  "description": "Host trust prior, 0..1",
                  "type": "number"
                },
                "id": {
                  "description": "Passage id (page:no) — pass to get_document, similar, related, corroborate, path",
                  "type": "string"
                },
                "in_degree": {
                  "type": "integer"
                },
                "independent_sources": {
                  "description": "Distinct hosts asserting this story",
                  "type": "integer"
                },
                "published_at": {
                  "type": "integer"
                },
                "quality": {
                  "type": "integer"
                },
                "safety": {
                  "type": "string"
                },
                "score": {
                  "type": "number"
                },
                "snippet": {
                  "description": "The passage text — often enough to answer without get_document",
                  "type": "string"
                },
                "source": {
                  "description": "cc | delta",
                  "type": "string"
                },
                "story_id": {
                  "description": "Near-dup cluster this passage belongs to",
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "tld": {
                  "type": "string"
                },
                "topics": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "url": {
                  "type": "string"
                },
                "vertical": {
                  "type": "string"
                },
                "word_count": {
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "url",
                "host",
                "title",
                "vertical",
                "host_rank",
                "quality",
                "fetched_at",
                "source",
                "story_id",
                "score",
                "snippet"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "routed": {
            "description": "true when the router chose the vertical, false when you named it",
            "type": "boolean"
          },
          "total": {
            "type": "integer"
          },
          "vertical": {
            "description": "The vertical actually queried",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "routed",
          "mode",
          "total",
          "results"
        ],
        "type": "object"
      }
    },
    {
      "description": "Check whether a claim is independently reported.\n\nReturns the DISTINCT hosts carrying this passage's story, grouped by source and ranked by host authority, and counts them.\n\nThe anti-hallucination check: one echoed rumour and an independently reported fact look identical in a result list, and different here. `independent_sources` counts every host that asserted the story, including hosts whose copy was folded into this one as a near-duplicate.\n\nCheck it before you state something as established.\n\nCosts 2 credits; a call that runs and fails costs 1.",
      "inputSchema": {
        "properties": {
          "id": {
            "description": "Passage id to corroborate",
            "type": "string"
          },
          "limit": {
            "default": 10,
            "maximum": 100,
            "type": "integer"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "corroborate",
      "outputSchema": {
        "properties": {
          "independent_sources": {
            "description": "Distinct hosts asserting this story",
            "type": "integer"
          },
          "merged_duplicates": {
            "description": "Copies folded into the survivor",
            "type": "integer"
          },
          "sources": {
            "items": {
              "properties": {
                "host": {
                  "type": "string"
                },
                "host_rank": {
                  "type": "number"
                },
                "passages": {
                  "items": {
                    "properties": {
                      "authority": {
                        "type": "string"
                      },
                      "centrality": {
                        "description": "Graph centrality — how central this passage is to the corpus",
                        "type": "number"
                      },
                      "community_id": {
                        "type": "string"
                      },
                      "content_type": {
                        "type": "string"
                      },
                      "fetched_at": {
                        "description": "Unix seconds when this passage was crawled",
                        "type": "integer"
                      },
                      "group_size": {
                        "description": "Present when collapse grouped rows: how many were folded in",
                        "type": "integer"
                      },
                      "host": {
                        "type": "string"
                      },
                      "host_rank": {
                        "description": "Host trust prior, 0..1",
                        "type": "number"
                      },
                      "id": {
                        "description": "Passage id (page:no) — pass to get_document, similar, related, corroborate, path",
                        "type": "string"
                      },
                      "in_degree": {
                        "type": "integer"
                      },
                      "independent_sources": {
                        "description": "Distinct hosts asserting this story",
                        "type": "integer"
                      },
                      "published_at": {
                        "type": "integer"
                      },
                      "quality": {
                        "type": "integer"
                      },
                      "safety": {
                        "type": "string"
                      },
                      "score": {
                        "type": "number"
                      },
                      "snippet": {
                        "description": "The passage text — often enough to answer without get_document",
                        "type": "string"
                      },
                      "source": {
                        "description": "cc | delta",
                        "type": "string"
                      },
                      "story_id": {
                        "description": "Near-dup cluster this passage belongs to",
                        "type": "string"
                      },
                      "title": {
                        "type": "string"
                      },
                      "tld": {
                        "type": "string"
                      },
                      "topics": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "url": {
                        "type": "string"
                      },
                      "vertical": {
                        "type": "string"
                      },
                      "word_count": {
                        "type": "integer"
                      }
                    },
                    "required": [
                      "id",
                      "url",
                      "host",
                      "title",
                      "vertical",
                      "host_rank",
                      "quality",
                      "fetched_at",
                      "source",
                      "story_id",
                      "score",
                      "snippet"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "required": [
                "host",
                "host_rank",
                "passages"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "story_id": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "independent_sources",
          "merged_duplicates",
          "sources"
        ],
        "type": "object"
      }
    },
    {
      "description": "Coverage Graph: the top passages about a topic (or entity), ranked by graph centrality rather than by match to a query.\n\nTrust-triage a field you do not know yet — read the central sources first instead of reading junk into your context and discovering later that it was junk.\n\nCosts 2 credits; a call that runs and fails costs 1.",
      "inputSchema": {
        "properties": {
          "limit": {
            "default": 10,
            "maximum": 100,
            "type": "integer"
          },
          "topic": {
            "description": "Topic tag, or an entity / salient term",
            "type": "string"
          }
        },
        "required": [
          "topic"
        ],
        "type": "object"
      },
      "name": "authorities",
      "outputSchema": {
        "properties": {
          "facets": {
            "description": "Present only when facets=true",
            "type": "object"
          },
          "mode": {
            "description": "The mode actually used",
            "enum": [
              "keyword",
              "semantic",
              "hybrid"
            ],
            "type": "string"
          },
          "partial": {
            "description": "true when at least one shard failed or timed out — the answer is short because a slice of the corpus was unreachable, NOT because that is all there is. Never treat a partial result as complete.",
            "type": "boolean"
          },
          "results": {
            "items": {
              "properties": {
                "authority": {
                  "type": "string"
                },
                "centrality": {
                  "description": "Graph centrality — how central this passage is to the corpus",
                  "type": "number"
                },
                "community_id": {
                  "type": "string"
                },
                "content_type": {
                  "type": "string"
                },
                "fetched_at": {
                  "description": "Unix seconds when this passage was crawled",
                  "type": "integer"
                },
                "group_size": {
                  "description": "Present when collapse grouped rows: how many were folded in",
                  "type": "integer"
                },
                "host": {
                  "type": "string"
                },
                "host_rank": {
                  "description": "Host trust prior, 0..1",
                  "type": "number"
                },
                "id": {
                  "description": "Passage id (page:no) — pass to get_document, similar, related, corroborate, path",
                  "type": "string"
                },
                "in_degree": {
                  "type": "integer"
                },
                "independent_sources": {
                  "description": "Distinct hosts asserting this story",
                  "type": "integer"
                },
                "published_at": {
                  "type": "integer"
                },
                "quality": {
                  "type": "integer"
                },
                "safety": {
                  "type": "string"
                },
                "score": {
                  "type": "number"
                },
                "snippet": {
                  "description": "The passage text — often enough to answer without get_document",
                  "type": "string"
                },
                "source": {
                  "description": "cc | delta",
                  "type": "string"
                },
                "story_id": {
                  "description": "Near-dup cluster this passage belongs to",
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "tld": {
                  "type": "string"
                },
                "topics": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "url": {
                  "type": "string"
                },
                "vertical": {
                  "type": "string"
                },
                "word_count": {
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "url",
                "host",
                "title",
                "vertical",
                "host_rank",
                "quality",
                "fetched_at",
                "source",
                "story_id",
                "score",
                "snippet"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "routed": {
            "description": "true when the router chose the vertical, false when you named it",
            "type": "boolean"
          },
          "total": {
            "type": "integer"
          },
          "vertical": {
            "description": "The vertical actually queried",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "routed",
          "mode",
          "total",
          "results"
        ],
        "type": "object"
      }
    },
    {
      "description": "Coverage Graph: a one-hop brief on an entity — the passages that mention it, its top source hosts, and the entities it co-occurs with.\n\nReplaces roughly ten searches and a manual merge. The co-mentioned entities are the leads: they are what you did not know to search for.\n\nCosts 2 credits; a call that runs and fails costs 1.",
      "inputSchema": {
        "properties": {
          "entity": {
            "description": "Entity / salient term",
            "type": "string"
          },
          "limit": {
            "default": 10,
            "maximum": 100,
            "type": "integer"
          }
        },
        "required": [
          "entity"
        ],
        "type": "object"
      },
      "name": "dossier",
      "outputSchema": {
        "properties": {
          "entity": {
            "type": "string"
          },
          "mentions": {
            "items": {
              "properties": {
                "authority": {
                  "type": "string"
                },
                "centrality": {
                  "description": "Graph centrality — how central this passage is to the corpus",
                  "type": "number"
                },
                "community_id": {
                  "type": "string"
                },
                "content_type": {
                  "type": "string"
                },
                "fetched_at": {
                  "description": "Unix seconds when this passage was crawled",
                  "type": "integer"
                },
                "group_size": {
                  "description": "Present when collapse grouped rows: how many were folded in",
                  "type": "integer"
                },
                "host": {
                  "type": "string"
                },
                "host_rank": {
                  "description": "Host trust prior, 0..1",
                  "type": "number"
                },
                "id": {
                  "description": "Passage id (page:no) — pass to get_document, similar, related, corroborate, path",
                  "type": "string"
                },
                "in_degree": {
                  "type": "integer"
                },
                "independent_sources": {
                  "description": "Distinct hosts asserting this story",
                  "type": "integer"
                },
                "published_at": {
                  "type": "integer"
                },
                "quality": {
                  "type": "integer"
                },
                "safety": {
                  "type": "string"
                },
                "score": {
                  "type": "number"
                },
                "snippet": {
                  "description": "The passage text — often enough to answer without get_document",
                  "type": "string"
                },
                "source": {
                  "description": "cc | delta",
                  "type": "string"
                },
                "story_id": {
                  "description": "Near-dup cluster this passage belongs to",
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "tld": {
                  "type": "string"
                },
                "topics": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "url": {
                  "type": "string"
                },
                "vertical": {
                  "type": "string"
                },
                "word_count": {
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "url",
                "host",
                "title",
                "vertical",
                "host_rank",
                "quality",
                "fetched_at",
                "source",
                "story_id",
                "score",
                "snippet"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "related_entities": {
            "items": {
              "description": "[entity, count]",
              "type": "array"
            },
            "type": "array"
          },
          "top_sources": {
            "items": {
              "description": "[host, count]",
              "type": "array"
            },
            "type": "array"
          }
        },
        "required": [
          "entity",
          "mentions",
          "top_sources",
          "related_entities"
        ],
        "type": "object"
      }
    },
    {
      "description": "Coverage Graph: the shortest chain of edges linking two passages — connect-the-dots retrieval.\n\nReturns the node chain between them: passages (p:), hosts (h:), stories (s:), topics (t:), entities (e:). `found: false` means no chain exists within the corpus, which is itself an answer — these two things are not connected in anything we hold.\n\nCosts 2 credits; a call that runs and fails costs 1.",
      "inputSchema": {
        "properties": {
          "a": {
            "description": "Start passage id. `from` is accepted as an alias.",
            "type": "string"
          },
          "b": {
            "description": "Goal passage id. `to` is accepted as an alias.",
            "type": "string"
          }
        },
        "required": [
          "a",
          "b"
        ],
        "type": "object"
      },
      "name": "path",
      "outputSchema": {
        "properties": {
          "found": {
            "type": "boolean"
          },
          "hops": {
            "type": "integer"
          },
          "nodes": {
            "items": {
              "properties": {
                "hit": {
                  "properties": {
                    "authority": {
                      "type": "string"
                    },
                    "centrality": {
                      "description": "Graph centrality — how central this passage is to the corpus",
                      "type": "number"
                    },
                    "community_id": {
                      "type": "string"
                    },
                    "content_type": {
                      "type": "string"
                    },
                    "fetched_at": {
                      "description": "Unix seconds when this passage was crawled",
                      "type": "integer"
                    },
                    "group_size": {
                      "description": "Present when collapse grouped rows: how many were folded in",
                      "type": "integer"
                    },
                    "host": {
                      "type": "string"
                    },
                    "host_rank": {
                      "description": "Host trust prior, 0..1",
                      "type": "number"
                    },
                    "id": {
                      "description": "Passage id (page:no) — pass to get_document, similar, related, corroborate, path",
                      "type": "string"
                    },
                    "in_degree": {
                      "type": "integer"
                    },
                    "independent_sources": {
                      "description": "Distinct hosts asserting this story",
                      "type": "integer"
                    },
                    "published_at": {
                      "type": "integer"
                    },
                    "quality": {
                      "type": "integer"
                    },
                    "safety": {
                      "type": "string"
                    },
                    "score": {
                      "type": "number"
                    },
                    "snippet": {
                      "description": "The passage text — often enough to answer without get_document",
                      "type": "string"
                    },
                    "source": {
                      "description": "cc | delta",
                      "type": "string"
                    },
                    "story_id": {
                      "description": "Near-dup cluster this passage belongs to",
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "tld": {
                      "type": "string"
                    },
                    "topics": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "url": {
                      "type": "string"
                    },
                    "vertical": {
                      "type": "string"
                    },
                    "word_count": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "url",
                    "host",
                    "title",
                    "vertical",
                    "host_rank",
                    "quality",
                    "fetched_at",
                    "source",
                    "story_id",
                    "score",
                    "snippet"
                  ],
                  "type": "object"
                },
                "key": {
                  "description": "Namespaced node key: p: passage, h: host, s: story, t: topic, e: entity",
                  "type": "string"
                },
                "kind": {
                  "type": "string"
                }
              },
              "required": [
                "key",
                "kind"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "found",
          "hops",
          "nodes"
        ],
        "type": "object"
      }
    },
    {
      "description": "Get a ready-to-read context pack for a question, instead of a link list.\n\nReturns the corroborated, story-deduped, trust-ranked passages for a question, packed to a token budget, each carrying the reason it was included.\n\nThe engine runs the whole retrieval loop — search, dedup, corroborate, rank, pack — so you just read. Use this when the question is 'what should I know about X' rather than 'find me the page that says Y'.\n\n`budget` is in tokens and is honoured as a ceiling; `estimated_tokens` reports what was actually packed.\n\nCosts 3 credits; a call that runs and fails costs 1.",
      "inputSchema": {
        "properties": {
          "budget": {
            "default": 4000,
            "description": "Token budget for the pack",
            "type": "integer"
          },
          "mode": {
            "default": "hybrid",
            "enum": [
              "keyword",
              "semantic",
              "hybrid"
            ],
            "type": "string"
          },
          "q": {
            "description": "The question",
            "type": "string"
          }
        },
        "required": [
          "q"
        ],
        "type": "object"
      },
      "name": "assemble_context",
      "outputSchema": {
        "properties": {
          "estimated_tokens": {
            "type": "integer"
          },
          "items": {
            "items": {
              "properties": {
                "hit": {
                  "properties": {
                    "authority": {
                      "type": "string"
                    },
                    "centrality": {
                      "description": "Graph centrality — how central this passage is to the corpus",
                      "type": "number"
                    },
                    "community_id": {
                      "type": "string"
                    },
                    "content_type": {
                      "type": "string"
                    },
                    "fetched_at": {
                      "description": "Unix seconds when this passage was crawled",
                      "type": "integer"
                    },
                    "group_size": {
                      "description": "Present when collapse grouped rows: how many were folded in",
                      "type": "integer"
                    },
                    "host": {
                      "type": "string"
                    },
                    "host_rank": {
                      "description": "Host trust prior, 0..1",
                      "type": "number"
                    },
                    "id": {
                      "description": "Passage id (page:no) — pass to get_document, similar, related, corroborate, path",
                      "type": "string"
                    },
                    "in_degree": {
                      "type": "integer"
                    },
                    "independent_sources": {
                      "description": "Distinct hosts asserting this story",
                      "type": "integer"
                    },
                    "published_at": {
                      "type": "integer"
                    },
                    "quality": {
                      "type": "integer"
                    },
                    "safety": {
                      "type": "string"
                    },
                    "score": {
                      "type": "number"
                    },
                    "snippet": {
                      "description": "The passage text — often enough to answer without get_document",
                      "type": "string"
                    },
                    "source": {
                      "description": "cc | delta",
                      "type": "string"
                    },
                    "story_id": {
                      "description": "Near-dup cluster this passage belongs to",
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "tld": {
                      "type": "string"
                    },
                    "topics": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "url": {
                      "type": "string"
                    },
                    "vertical": {
                      "type": "string"
                    },
                    "word_count": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "url",
                    "host",
                    "title",
                    "vertical",
                    "host_rank",
                    "quality",
                    "fetched_at",
                    "source",
                    "story_id",
                    "score",
                    "snippet"
                  ],
                  "type": "object"
                },
                "reason": {
                  "description": "Why this passage earned its place in the pack",
                  "type": "string"
                }
              },
              "required": [
                "hit",
                "reason"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "query": {
            "type": "string"
          },
          "token_budget": {
            "type": "integer"
          }
        },
        "required": [
          "query",
          "token_budget",
          "estimated_tokens",
          "items"
        ],
        "type": "object"
      }
    },
    {
      "description": "Get the smallest defensible evidence set for an objective, with provenance and a coverage receipt — the call to start with.\n\nRuns retrieval, story deduplication, origin clustering and ranking on the server and returns evidence items rather than links: each says who originally published it (origin_type), who republished it, what kind of source it is (source_role), who owns it, and whether it is independent of the others. `coverage` says what was searched, what was not, how fresh the set is and which source classes are missing; `independent_origins` counts origins with distinct owners, so seventeen copies of one wire story are one origin.\n\nRead `status` first. sufficient: enough independent origins and a primary or official source. insufficient: evidence exists but does not meet the bar — `next_actions` says what would. stale: nothing inside max_age; `stale_evidence` shows what older material exists. partial: part of the index was unreachable — never treat the answer as complete. empty: nothing found.\n\nNo generated answer is returned: the evidence and its structure are, and the reasoning is yours.\n\nCosts 5 credits; a call that runs and fails costs 1.",
      "inputSchema": {
        "properties": {
          "claim": {
            "description": "Experimental: relate each evidence item to this claim as supports / contradicts / qualifies / unresolved. Heuristic; no model.",
            "type": "string"
          },
          "lang": {
            "description": "Single language code",
            "type": "string"
          },
          "latency_budget_ms": {
            "description": "Bound on the time spent expanding stories into their members; when it cuts in, coverage.not_searched.story_expansion_truncated is true",
            "type": "integer"
          },
          "max_age": {
            "description": "Freshness contract: seconds, or 30m / 6h / 7d / 2w. Evidence published outside the window is never substituted silently; it is reported as stale_evidence when nothing inside the window exists",
            "type": "string"
          },
          "min_independent_origins": {
            "default": 2,
            "description": "Origins with distinct owners required for status=sufficient",
            "type": "integer"
          },
          "mode": {
            "default": "hybrid",
            "enum": [
              "keyword",
              "semantic",
              "hybrid"
            ],
            "type": "string"
          },
          "objective": {
            "description": "What you need evidence for — a question, a task, or a claim to check",
            "type": "string"
          },
          "require_role": {
            "description": "Roles of which at least one must be present for sufficient. Default primary,official. Empty means no requirement.",
            "items": {
              "enum": [
                "official",
                "primary",
                "secondary",
                "aggregator",
                "ugc"
              ],
              "type": "string"
            },
            "type": [
              "array",
              "string"
            ]
          },
          "safe": {
            "description": "true (the default) drops explicit content",
            "type": "boolean"
          },
          "strip_instruction_like": {
            "default": false,
            "description": "Remove instruction-like sentences from snippets instead of only flagging them",
            "type": "boolean"
          },
          "token_budget": {
            "default": 3000,
            "description": "Ceiling on the evidence returned, in estimated tokens",
            "type": "integer"
          },
          "vertical": {
            "description": "Restrict to one vertical; the receipt then lists the others as not searched",
            "type": "string"
          }
        },
        "required": [
          "objective"
        ],
        "type": "object"
      },
      "name": "ground",
      "outputSchema": {
        "properties": {
          "budget": {
            "properties": {
              "context_tokens": {
                "description": "Estimated tokens of the evidence returned",
                "type": "integer"
              },
              "credits_billed": {
                "description": "Credits this call costs when it succeeds; a call that fails costs 1.",
                "type": "integer"
              },
              "elapsed_ms": {
                "type": "integer"
              },
              "story_lookups": {
                "type": "integer"
              },
              "token_budget": {
                "type": "integer"
              }
            },
            "required": [
              "token_budget",
              "context_tokens",
              "credits_billed",
              "story_lookups",
              "elapsed_ms"
            ],
            "type": "object"
          },
          "contradictions": {
            "description": "Ids of evidence items whose claim_relation is contradicts",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "coverage": {
            "description": "The coverage receipt",
            "properties": {
              "complete": {
                "description": "false whenever any part of the index was unreachable or expansion was cut short",
                "type": "boolean"
              },
              "copies": {
                "description": "Passages seen across every expanded story, republishes included",
                "type": "integer"
              },
              "freshness": {
                "properties": {
                  "max_age": {
                    "type": "integer"
                  },
                  "newest_published_at": {
                    "type": "integer"
                  },
                  "oldest_published_at": {
                    "type": "integer"
                  },
                  "undated_excluded": {
                    "description": "A max_age window excludes passages that declare no publish date",
                    "type": "boolean"
                  },
                  "within_max_age": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "hosts": {
                "type": "integer"
              },
              "independent_origins": {
                "description": "Origins with distinct owners across the evidence set",
                "type": "integer"
              },
              "known_gaps": {
                "description": "Plain-language gaps a reader should know about",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "not_searched": {
                "properties": {
                  "explicit_dropped": {
                    "type": "boolean"
                  },
                  "shards_configured": {
                    "type": "integer"
                  },
                  "shards_down": {
                    "type": "integer"
                  },
                  "stories_not_expanded": {
                    "type": "integer"
                  },
                  "story_expansion_truncated": {
                    "type": "boolean"
                  },
                  "verticals_excluded": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "origins": {
                "type": "integer"
              },
              "partial": {
                "type": "boolean"
              },
              "searched": {
                "properties": {
                  "filters_applied": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "mode": {
                    "type": "string"
                  },
                  "objective": {
                    "type": "string"
                  },
                  "pool": {
                    "description": "Story-collapsed candidates retrieved",
                    "type": "integer"
                  },
                  "routed": {
                    "description": "true when the router chose the vertical",
                    "type": "boolean"
                  },
                  "stories": {
                    "type": "integer"
                  },
                  "stories_expanded": {
                    "type": "integer"
                  },
                  "vertical": {
                    "description": "The vertical actually queried: named, or chosen by the router",
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "source_roles_missing": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "source_roles_present": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              }
            },
            "required": [
              "complete",
              "partial",
              "searched",
              "not_searched",
              "freshness",
              "independent_origins",
              "origins",
              "hosts",
              "copies",
              "source_roles_present",
              "source_roles_missing",
              "known_gaps"
            ],
            "type": "object"
          },
          "evidence": {
            "items": {
              "properties": {
                "age_secs": {
                  "description": "Seconds since publication, or since crawl when no publish date is declared",
                  "type": "integer"
                },
                "claim_relation": {
                  "description": "Present when a claim was given. Heuristic and experimental.",
                  "enum": [
                    "supports",
                    "contradicts",
                    "qualifies",
                    "unresolved"
                  ],
                  "type": "string"
                },
                "hit": {
                  "properties": {
                    "authority": {
                      "type": "string"
                    },
                    "centrality": {
                      "description": "Graph centrality — how central this passage is to the corpus",
                      "type": "number"
                    },
                    "community_id": {
                      "type": "string"
                    },
                    "content_type": {
                      "type": "string"
                    },
                    "fetched_at": {
                      "description": "Unix seconds when this passage was crawled",
                      "type": "integer"
                    },
                    "group_size": {
                      "description": "Present when collapse grouped rows: how many were folded in",
                      "type": "integer"
                    },
                    "host": {
                      "type": "string"
                    },
                    "host_rank": {
                      "description": "Host trust prior, 0..1",
                      "type": "number"
                    },
                    "id": {
                      "description": "Passage id (page:no) — pass to get_document, similar, related, corroborate, path",
                      "type": "string"
                    },
                    "in_degree": {
                      "type": "integer"
                    },
                    "independent_sources": {
                      "description": "Distinct hosts asserting this story",
                      "type": "integer"
                    },
                    "published_at": {
                      "type": "integer"
                    },
                    "quality": {
                      "type": "integer"
                    },
                    "safety": {
                      "type": "string"
                    },
                    "score": {
                      "type": "number"
                    },
                    "snippet": {
                      "description": "The passage text — often enough to answer without get_document",
                      "type": "string"
                    },
                    "source": {
                      "description": "cc | delta",
                      "type": "string"
                    },
                    "story_id": {
                      "description": "Near-dup cluster this passage belongs to",
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "tld": {
                      "type": "string"
                    },
                    "topics": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "url": {
                      "type": "string"
                    },
                    "vertical": {
                      "type": "string"
                    },
                    "word_count": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "url",
                    "host",
                    "title",
                    "vertical",
                    "host_rank",
                    "quality",
                    "fetched_at",
                    "source",
                    "story_id",
                    "score",
                    "snippet"
                  ],
                  "type": "object"
                },
                "independence_score": {
                  "description": "1.0: the only origin with this owner in the set · 0.5: another origin in the set shares the owner · 0.0: a republish",
                  "type": "number"
                },
                "origin": {
                  "description": "The origin id this item represents; see origins[]",
                  "type": "string"
                },
                "origin_type": {
                  "description": "original: the earliest member of its origin · wire: a news-wire dispatch · press_release · republish: a later copy of an origin already in the set (never an evidence item)",
                  "enum": [
                    "original",
                    "wire",
                    "press_release",
                    "republish",
                    "unknown"
                  ],
                  "type": "string"
                },
                "owner": {
                  "description": "Who is responsible for the origin: the wire service, the media group, or the registrable domain",
                  "type": "string"
                },
                "reason": {
                  "description": "Why this item earned its place, in words",
                  "type": "string"
                },
                "relation_basis": {
                  "enum": [
                    "passage",
                    "snippet"
                  ],
                  "type": "string"
                },
                "relation_confidence": {
                  "type": "number"
                },
                "risk_flags": {
                  "description": "instruction_like: the text addresses an AI system rather than the reader. Check before quoting.",
                  "items": {
                    "enum": [
                      "instruction_like",
                      "hidden_text",
                      "role_markers",
                      "low_trust_source"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                },
                "role_confidence": {
                  "type": "number"
                },
                "source_role": {
                  "description": "official: a government, regulator, court or university host · primary: documentation, an academic paper, code, a published document or an organisation's own release · secondary: reporting or reference about the subject · aggregator · ugc: forums, Q&A, social",
                  "enum": [
                    "official",
                    "primary",
                    "secondary",
                    "aggregator",
                    "ugc",
                    "unknown"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "hit",
                "reason",
                "source_role",
                "role_confidence",
                "origin_type",
                "origin",
                "owner",
                "independence_score",
                "risk_flags"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "next_actions": {
            "items": {
              "properties": {
                "action": {
                  "enum": [
                    "retry",
                    "widen_max_age",
                    "search",
                    "why_not",
                    "corroborate",
                    "get_document"
                  ],
                  "type": "string"
                },
                "target": {
                  "type": "string"
                },
                "why": {
                  "type": "string"
                }
              },
              "required": [
                "action",
                "why"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "objective": {
            "type": "string"
          },
          "origins": {
            "items": {
              "properties": {
                "confidence": {
                  "type": "number"
                },
                "earliest_published_at": {
                  "type": "integer"
                },
                "hosts": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "id": {
                  "type": "string"
                },
                "kind": {
                  "enum": [
                    "original",
                    "wire",
                    "press_release",
                    "unknown"
                  ],
                  "type": "string"
                },
                "members": {
                  "description": "Passage ids, earliest first",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "owner": {
                  "type": "string"
                },
                "registrable_domains": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "representative": {
                  "type": "string"
                },
                "story_id": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "story_id",
                "kind",
                "owner",
                "hosts",
                "registrable_domains",
                "members",
                "representative",
                "earliest_published_at",
                "confidence"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "provenance": {
            "properties": {
              "experimental": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "generated_at": {
                "type": "integer"
              },
              "limitations": {
                "description": "What this answer structurally cannot know",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "method": {
                "description": "Always deterministic: no model is involved",
                "type": "string"
              }
            },
            "required": [
              "method",
              "generated_at"
            ],
            "type": "object"
          },
          "stale_evidence": {
            "description": "Only when max_age was set and nothing inside it was found",
            "items": {
              "properties": {
                "age_secs": {
                  "description": "Seconds since publication, or since crawl when no publish date is declared",
                  "type": "integer"
                },
                "claim_relation": {
                  "description": "Present when a claim was given. Heuristic and experimental.",
                  "enum": [
                    "supports",
                    "contradicts",
                    "qualifies",
                    "unresolved"
                  ],
                  "type": "string"
                },
                "hit": {
                  "properties": {
                    "authority": {
                      "type": "string"
                    },
                    "centrality": {
                      "description": "Graph centrality — how central this passage is to the corpus",
                      "type": "number"
                    },
                    "community_id": {
                      "type": "string"
                    },
                    "content_type": {
                      "type": "string"
                    },
                    "fetched_at": {
                      "description": "Unix seconds when this passage was crawled",
                      "type": "integer"
                    },
                    "group_size": {
                      "description": "Present when collapse grouped rows: how many were folded in",
                      "type": "integer"
                    },
                    "host": {
                      "type": "string"
                    },
                    "host_rank": {
                      "description": "Host trust prior, 0..1",
                      "type": "number"
                    },
                    "id": {
                      "description": "Passage id (page:no) — pass to get_document, similar, related, corroborate, path",
                      "type": "string"
                    },
                    "in_degree": {
                      "type": "integer"
                    },
                    "independent_sources": {
                      "description": "Distinct hosts asserting this story",
                      "type": "integer"
                    },
                    "published_at": {
                      "type": "integer"
                    },
                    "quality": {
                      "type": "integer"
                    },
                    "safety": {
                      "type": "string"
                    },
                    "score": {
                      "type": "number"
                    },
                    "snippet": {
                      "description": "The passage text — often enough to answer without get_document",
                      "type": "string"
                    },
                    "source": {
                      "description": "cc | delta",
                      "type": "string"
                    },
                    "story_id": {
                      "description": "Near-dup cluster this passage belongs to",
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "tld": {
                      "type": "string"
                    },
                    "topics": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "url": {
                      "type": "string"
                    },
                    "vertical": {
                      "type": "string"
                    },
                    "word_count": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "url",
                    "host",
                    "title",
                    "vertical",
                    "host_rank",
                    "quality",
                    "fetched_at",
                    "source",
                    "story_id",
                    "score",
                    "snippet"
                  ],
                  "type": "object"
                },
                "independence_score": {
                  "description": "1.0: the only origin with this owner in the set · 0.5: another origin in the set shares the owner · 0.0: a republish",
                  "type": "number"
                },
                "origin": {
                  "description": "The origin id this item represents; see origins[]",
                  "type": "string"
                },
                "origin_type": {
                  "description": "original: the earliest member of its origin · wire: a news-wire dispatch · press_release · republish: a later copy of an origin already in the set (never an evidence item)",
                  "enum": [
                    "original",
                    "wire",
                    "press_release",
                    "republish",
                    "unknown"
                  ],
                  "type": "string"
                },
                "owner": {
                  "description": "Who is responsible for the origin: the wire service, the media group, or the registrable domain",
                  "type": "string"
                },
                "reason": {
                  "description": "Why this item earned its place, in words",
                  "type": "string"
                },
                "relation_basis": {
                  "enum": [
                    "passage",
                    "snippet"
                  ],
                  "type": "string"
                },
                "relation_confidence": {
                  "type": "number"
                },
                "risk_flags": {
                  "description": "instruction_like: the text addresses an AI system rather than the reader. Check before quoting.",
                  "items": {
                    "enum": [
                      "instruction_like",
                      "hidden_text",
                      "role_markers",
                      "low_trust_source"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                },
                "role_confidence": {
                  "type": "number"
                },
                "source_role": {
                  "description": "official: a government, regulator, court or university host · primary: documentation, an academic paper, code, a published document or an organisation's own release · secondary: reporting or reference about the subject · aggregator · ugc: forums, Q&A, social",
                  "enum": [
                    "official",
                    "primary",
                    "secondary",
                    "aggregator",
                    "ugc",
                    "unknown"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "hit",
                "reason",
                "source_role",
                "role_confidence",
                "origin_type",
                "origin",
                "owner",
                "independence_score",
                "risk_flags"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "status": {
            "enum": [
              "sufficient",
              "insufficient",
              "stale",
              "partial",
              "empty"
            ],
            "type": "string"
          }
        },
        "required": [
          "status",
          "objective",
          "evidence",
          "origins",
          "coverage",
          "budget",
          "next_actions",
          "provenance"
        ],
        "type": "object"
      }
    },
    {
      "description": "What changed in the evidence for an objective since an instant — new evidence, origins gained, an official or primary source appearing, contradictions gained — and what became of the URLs you relied on before.\n\nDeterministic: the evidence set is built twice, once over everything and once over only what had been crawled by `since`, and the two are diffed. `known_urls` are answered like why_not: present, removed with the reason (and the passage that superseded it), or unknown.\n\nWhat it cannot know is stated in `provenance.limitations`: passages removed after `since` are not reconstructable, so before-counts are lower bounds, and 'as of' means crawled by then, not published by then.\n\nCosts 10 credits; a call that runs and fails costs 1.",
      "inputSchema": {
        "properties": {
          "claim": {
            "description": "Experimental: also report evidence that newly contradicts this claim",
            "type": "string"
          },
          "known_urls": {
            "description": "URLs you relied on before; each comes back present, removed (with the reason) or unknown",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "string"
            ]
          },
          "lang": {
            "type": "string"
          },
          "mode": {
            "default": "hybrid",
            "enum": [
              "keyword",
              "semantic",
              "hybrid"
            ],
            "type": "string"
          },
          "objective": {
            "description": "What you need evidence for",
            "type": "string"
          },
          "safe": {
            "type": "boolean"
          },
          "since": {
            "description": "An absolute unix timestamp, a bare number of seconds ago, or a duration ago: 1d, 12h, 2w",
            "type": "string"
          },
          "token_budget": {
            "default": 3000,
            "type": "integer"
          },
          "vertical": {
            "type": "string"
          }
        },
        "required": [
          "objective",
          "since"
        ],
        "type": "object"
      },
      "name": "evidence_changes",
      "outputSchema": {
        "properties": {
          "budget": {
            "properties": {
              "context_tokens": {
                "description": "Estimated tokens of the evidence returned",
                "type": "integer"
              },
              "credits_billed": {
                "description": "Credits this call costs when it succeeds; a call that fails costs 1.",
                "type": "integer"
              },
              "elapsed_ms": {
                "type": "integer"
              },
              "story_lookups": {
                "type": "integer"
              },
              "token_budget": {
                "type": "integer"
              }
            },
            "required": [
              "token_budget",
              "context_tokens",
              "credits_billed",
              "story_lookups",
              "elapsed_ms"
            ],
            "type": "object"
          },
          "contradictions_gained": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "coverage": {
            "description": "The coverage receipt",
            "properties": {
              "complete": {
                "description": "false whenever any part of the index was unreachable or expansion was cut short",
                "type": "boolean"
              },
              "copies": {
                "description": "Passages seen across every expanded story, republishes included",
                "type": "integer"
              },
              "freshness": {
                "properties": {
                  "max_age": {
                    "type": "integer"
                  },
                  "newest_published_at": {
                    "type": "integer"
                  },
                  "oldest_published_at": {
                    "type": "integer"
                  },
                  "undated_excluded": {
                    "description": "A max_age window excludes passages that declare no publish date",
                    "type": "boolean"
                  },
                  "within_max_age": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "hosts": {
                "type": "integer"
              },
              "independent_origins": {
                "description": "Origins with distinct owners across the evidence set",
                "type": "integer"
              },
              "known_gaps": {
                "description": "Plain-language gaps a reader should know about",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "not_searched": {
                "properties": {
                  "explicit_dropped": {
                    "type": "boolean"
                  },
                  "shards_configured": {
                    "type": "integer"
                  },
                  "shards_down": {
                    "type": "integer"
                  },
                  "stories_not_expanded": {
                    "type": "integer"
                  },
                  "story_expansion_truncated": {
                    "type": "boolean"
                  },
                  "verticals_excluded": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "origins": {
                "type": "integer"
              },
              "partial": {
                "type": "boolean"
              },
              "searched": {
                "properties": {
                  "filters_applied": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "mode": {
                    "type": "string"
                  },
                  "objective": {
                    "type": "string"
                  },
                  "pool": {
                    "description": "Story-collapsed candidates retrieved",
                    "type": "integer"
                  },
                  "routed": {
                    "description": "true when the router chose the vertical",
                    "type": "boolean"
                  },
                  "stories": {
                    "type": "integer"
                  },
                  "stories_expanded": {
                    "type": "integer"
                  },
                  "vertical": {
                    "description": "The vertical actually queried: named, or chosen by the router",
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "source_roles_missing": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "source_roles_present": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              }
            },
            "required": [
              "complete",
              "partial",
              "searched",
              "not_searched",
              "freshness",
              "independent_origins",
              "origins",
              "hosts",
              "copies",
              "source_roles_present",
              "source_roles_missing",
              "known_gaps"
            ],
            "type": "object"
          },
          "coverage_before": {
            "description": "The coverage receipt",
            "properties": {
              "complete": {
                "description": "false whenever any part of the index was unreachable or expansion was cut short",
                "type": "boolean"
              },
              "copies": {
                "description": "Passages seen across every expanded story, republishes included",
                "type": "integer"
              },
              "freshness": {
                "properties": {
                  "max_age": {
                    "type": "integer"
                  },
                  "newest_published_at": {
                    "type": "integer"
                  },
                  "oldest_published_at": {
                    "type": "integer"
                  },
                  "undated_excluded": {
                    "description": "A max_age window excludes passages that declare no publish date",
                    "type": "boolean"
                  },
                  "within_max_age": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "hosts": {
                "type": "integer"
              },
              "independent_origins": {
                "description": "Origins with distinct owners across the evidence set",
                "type": "integer"
              },
              "known_gaps": {
                "description": "Plain-language gaps a reader should know about",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "not_searched": {
                "properties": {
                  "explicit_dropped": {
                    "type": "boolean"
                  },
                  "shards_configured": {
                    "type": "integer"
                  },
                  "shards_down": {
                    "type": "integer"
                  },
                  "stories_not_expanded": {
                    "type": "integer"
                  },
                  "story_expansion_truncated": {
                    "type": "boolean"
                  },
                  "verticals_excluded": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "origins": {
                "type": "integer"
              },
              "partial": {
                "type": "boolean"
              },
              "searched": {
                "properties": {
                  "filters_applied": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "mode": {
                    "type": "string"
                  },
                  "objective": {
                    "type": "string"
                  },
                  "pool": {
                    "description": "Story-collapsed candidates retrieved",
                    "type": "integer"
                  },
                  "routed": {
                    "description": "true when the router chose the vertical",
                    "type": "boolean"
                  },
                  "stories": {
                    "type": "integer"
                  },
                  "stories_expanded": {
                    "type": "integer"
                  },
                  "vertical": {
                    "description": "The vertical actually queried: named, or chosen by the router",
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "source_roles_missing": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "source_roles_present": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              }
            },
            "required": [
              "complete",
              "partial",
              "searched",
              "not_searched",
              "freshness",
              "independent_origins",
              "origins",
              "hosts",
              "copies",
              "source_roles_present",
              "source_roles_missing",
              "known_gaps"
            ],
            "type": "object"
          },
          "independent_origins": {
            "properties": {
              "after": {
                "type": "integer"
              },
              "before": {
                "type": "integer"
              }
            },
            "required": [
              "before",
              "after"
            ],
            "type": "object"
          },
          "known_urls": {
            "items": {
              "properties": {
                "reason": {
                  "type": "string"
                },
                "removed_at": {
                  "type": "integer"
                },
                "status": {
                  "enum": [
                    "present",
                    "removed",
                    "unknown",
                    "error"
                  ],
                  "type": "string"
                },
                "superseded_by": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                }
              },
              "required": [
                "url",
                "status"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "new_evidence": {
            "description": "Evidence items that did not exist as of since",
            "items": {
              "properties": {
                "age_secs": {
                  "description": "Seconds since publication, or since crawl when no publish date is declared",
                  "type": "integer"
                },
                "claim_relation": {
                  "description": "Present when a claim was given. Heuristic and experimental.",
                  "enum": [
                    "supports",
                    "contradicts",
                    "qualifies",
                    "unresolved"
                  ],
                  "type": "string"
                },
                "hit": {
                  "properties": {
                    "authority": {
                      "type": "string"
                    },
                    "centrality": {
                      "description": "Graph centrality — how central this passage is to the corpus",
                      "type": "number"
                    },
                    "community_id": {
                      "type": "string"
                    },
                    "content_type": {
                      "type": "string"
                    },
                    "fetched_at": {
                      "description": "Unix seconds when this passage was crawled",
                      "type": "integer"
                    },
                    "group_size": {
                      "description": "Present when collapse grouped rows: how many were folded in",
                      "type": "integer"
                    },
                    "host": {
                      "type": "string"
                    },
                    "host_rank": {
                      "description": "Host trust prior, 0..1",
                      "type": "number"
                    },
                    "id": {
                      "description": "Passage id (page:no) — pass to get_document, similar, related, corroborate, path",
                      "type": "string"
                    },
                    "in_degree": {
                      "type": "integer"
                    },
                    "independent_sources": {
                      "description": "Distinct hosts asserting this story",
                      "type": "integer"
                    },
                    "published_at": {
                      "type": "integer"
                    },
                    "quality": {
                      "type": "integer"
                    },
                    "safety": {
                      "type": "string"
                    },
                    "score": {
                      "type": "number"
                    },
                    "snippet": {
                      "description": "The passage text — often enough to answer without get_document",
                      "type": "string"
                    },
                    "source": {
                      "description": "cc | delta",
                      "type": "string"
                    },
                    "story_id": {
                      "description": "Near-dup cluster this passage belongs to",
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "tld": {
                      "type": "string"
                    },
                    "topics": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "url": {
                      "type": "string"
                    },
                    "vertical": {
                      "type": "string"
                    },
                    "word_count": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "url",
                    "host",
                    "title",
                    "vertical",
                    "host_rank",
                    "quality",
                    "fetched_at",
                    "source",
                    "story_id",
                    "score",
                    "snippet"
                  ],
                  "type": "object"
                },
                "independence_score": {
                  "description": "1.0: the only origin with this owner in the set · 0.5: another origin in the set shares the owner · 0.0: a republish",
                  "type": "number"
                },
                "origin": {
                  "description": "The origin id this item represents; see origins[]",
                  "type": "string"
                },
                "origin_type": {
                  "description": "original: the earliest member of its origin · wire: a news-wire dispatch · press_release · republish: a later copy of an origin already in the set (never an evidence item)",
                  "enum": [
                    "original",
                    "wire",
                    "press_release",
                    "republish",
                    "unknown"
                  ],
                  "type": "string"
                },
                "owner": {
                  "description": "Who is responsible for the origin: the wire service, the media group, or the registrable domain",
                  "type": "string"
                },
                "reason": {
                  "description": "Why this item earned its place, in words",
                  "type": "string"
                },
                "relation_basis": {
                  "enum": [
                    "passage",
                    "snippet"
                  ],
                  "type": "string"
                },
                "relation_confidence": {
                  "type": "number"
                },
                "risk_flags": {
                  "description": "instruction_like: the text addresses an AI system rather than the reader. Check before quoting.",
                  "items": {
                    "enum": [
                      "instruction_like",
                      "hidden_text",
                      "role_markers",
                      "low_trust_source"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                },
                "role_confidence": {
                  "type": "number"
                },
                "source_role": {
                  "description": "official: a government, regulator, court or university host · primary: documentation, an academic paper, code, a published document or an organisation's own release · secondary: reporting or reference about the subject · aggregator · ugc: forums, Q&A, social",
                  "enum": [
                    "official",
                    "primary",
                    "secondary",
                    "aggregator",
                    "ugc",
                    "unknown"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "hit",
                "reason",
                "source_role",
                "role_confidence",
                "origin_type",
                "origin",
                "owner",
                "independence_score",
                "risk_flags"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "next_actions": {
            "items": {
              "properties": {
                "action": {
                  "enum": [
                    "retry",
                    "widen_max_age",
                    "search",
                    "why_not",
                    "corroborate",
                    "get_document"
                  ],
                  "type": "string"
                },
                "target": {
                  "type": "string"
                },
                "why": {
                  "type": "string"
                }
              },
              "required": [
                "action",
                "why"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "objective": {
            "type": "string"
          },
          "origins_gained": {
            "items": {
              "properties": {
                "confidence": {
                  "type": "number"
                },
                "earliest_published_at": {
                  "type": "integer"
                },
                "hosts": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "id": {
                  "type": "string"
                },
                "kind": {
                  "enum": [
                    "original",
                    "wire",
                    "press_release",
                    "unknown"
                  ],
                  "type": "string"
                },
                "members": {
                  "description": "Passage ids, earliest first",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "owner": {
                  "type": "string"
                },
                "registrable_domains": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "representative": {
                  "type": "string"
                },
                "story_id": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "story_id",
                "kind",
                "owner",
                "hosts",
                "registrable_domains",
                "members",
                "representative",
                "earliest_published_at",
                "confidence"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "provenance": {
            "properties": {
              "experimental": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "generated_at": {
                "type": "integer"
              },
              "limitations": {
                "description": "What this answer structurally cannot know",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "method": {
                "description": "Always deterministic: no model is involved",
                "type": "string"
              }
            },
            "required": [
              "method",
              "generated_at"
            ],
            "type": "object"
          },
          "roles_gained": {
            "description": "Source roles present now that were missing as of since",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "since": {
            "description": "The instant diffed against, as unix seconds",
            "type": "integer"
          },
          "status": {
            "enum": [
              "changed",
              "unchanged",
              "partial"
            ],
            "type": "string"
          }
        },
        "required": [
          "status",
          "objective",
          "since",
          "new_evidence",
          "origins_gained",
          "roles_gained",
          "independent_origins",
          "coverage",
          "coverage_before",
          "budget",
          "next_actions",
          "provenance"
        ],
        "type": "object"
      }
    }
  ]
}