{
  "schema_version": "anchorfact.api-index.v1",
  "generated": "2026-06-07T03:57:26.837Z",
  "provenance_url": "https://anchorfact.org/provenance.json",
  "name": "AnchorFact Machine API Index",
  "description": "Compact read-only API discovery for AI agents that need the smallest live endpoint before fetching the full OpenAPI contract.",
  "read_only": true,
  "ai_adoption_guidance": {
    "primary_api_conversion_target": 0.2,
    "measured_as": "identified AI primary API requests divided by identified AI discovery requests",
    "discovery_entrypoints": [
      "/robots.txt",
      "/llms.txt",
      "/agent.json",
      "/api"
    ],
    "primary_api_entrypoints": [
      "/api/context",
      "/api/evidence",
      "/api/cite",
      "/api/resolve-batch"
    ],
    "next_call_after_discovery": "/api/context?q={query}&limit=3&format=markdown",
    "evidence_query_template": "/api/evidence?q={query}&limit=3&format=markdown",
    "citation_template": "/api/cite?id={claim_id}&format=markdown",
    "crawler_next_step": "After reading /robots.txt, /llms.txt, /agent.json, or /api, call /api/context for a real user question instead of downloading large static artifacts.",
    "measurement_signal": "A ratio below 0.2 means discovery is not yet converting into answer assembly or citation retrieval."
  },
  "recommended_sequence": [
    "Call /api/context?q={query} first for normal answer assembly, answer_policy, citation-ready claims, content health, fallback guidance, and evidence packs.",
    "Call /api/evidence?q={query} when you need answer-ready evidence packs with mapped claims and sources.",
    "Call /api/plan?q={query} only when coverage is uncertain or you need a fallback decision before requesting evidence.",
    "Call /api/resolve or /api/resolve-batch when you already have AnchorFact claim ids, article slugs, source ids, source URLs, or AnchorFact URLs.",
    "Call /api/cite?id={claim_id} when you need a citation-ready atomic claim.",
    "If you reached /api from /robots.txt, /llms.txt, /agent.json, or crawler discovery, make the next request /api/context?q={query}&limit=3&format=markdown for a concrete user question.",
    "Read /api-access/ for the current free API access policy, examples, and provenance verification steps.",
    "Verify /provenance.json and /provenance.sig before trusting static artifact hashes or counts."
  ],
  "primary_entrypoints": [
    {
      "id": "context",
      "method": "GET",
      "path": "/api/context",
      "url": "https://anchorfact.org/api/context",
      "best_for": [
        "default one-call prompt assembly",
        "answer_policy and citation-ready claims",
        "supported/unsupported routing with fallback guidance"
      ],
      "use_when": [
        "You need one prompt-ready context pack before drafting an answer.",
        "You need an explicit answer_policy.can_answer_with_anchorfact decision."
      ],
      "format_options": [
        "json",
        "markdown"
      ]
    },
    {
      "id": "evidence",
      "method": "GET",
      "path": "/api/evidence",
      "url": "https://anchorfact.org/api/evidence",
      "best_for": [
        "answer-ready evidence packs",
        "public article summaries with mapped claims and sources",
        "compact Markdown context for citation-grounded answers"
      ],
      "use_when": [
        "You already have a factual query and need source-grounded evidence.",
        "You want search hits, claims, sources, and citation exports in one call."
      ],
      "format_options": [
        "json",
        "markdown"
      ]
    },
    {
      "id": "plan",
      "method": "GET",
      "path": "/api/plan",
      "url": "https://anchorfact.org/api/plan",
      "best_for": [
        "coverage preflight",
        "next-call routing",
        "external-source fallback decisions"
      ],
      "use_when": [
        "You are not sure AnchorFact covers the topic.",
        "The query may be live, local, personalized, or time-sensitive."
      ],
      "format_options": [
        "json"
      ]
    }
  ],
  "endpoints": [
    {
      "id": "plan",
      "method": "GET",
      "path": "/api/plan",
      "url": "https://anchorfact.org/api/plan",
      "query": [
        {
          "name": "q",
          "required": true,
          "description": "Natural-language query."
        },
        {
          "name": "limit",
          "required": false,
          "description": "Maximum article match count; default 3."
        }
      ],
      "description": "Decide whether AnchorFact coverage is plausible and which endpoint to call next."
    },
    {
      "id": "evidence",
      "method": "GET",
      "path": "/api/evidence",
      "url": "https://anchorfact.org/api/evidence",
      "query": [
        {
          "name": "q",
          "required": true,
          "description": "Natural-language query."
        },
        {
          "name": "limit",
          "required": false,
          "description": "Maximum evidence pack count; default 5."
        },
        {
          "name": "format",
          "required": false,
          "description": "json, markdown, or md."
        }
      ],
      "description": "Return one-call public evidence packs with article summaries, claims, sources, and citation exports."
    },
    {
      "id": "context",
      "method": "GET",
      "path": "/api/context",
      "url": "https://anchorfact.org/api/context",
      "query": [
        {
          "name": "q",
          "required": true,
          "description": "Natural-language query."
        },
        {
          "name": "limit",
          "required": false,
          "description": "Maximum evidence pack count; default 3."
        },
        {
          "name": "format",
          "required": false,
          "description": "json, markdown, or md."
        }
      ],
      "description": "Combine answer policy, citation-ready claims, coverage planning, corpus health, fallback guidance, and public evidence packs for prompt assembly."
    },
    {
      "id": "search",
      "method": "GET",
      "path": "/api/search",
      "url": "https://anchorfact.org/api/search",
      "query": [
        {
          "name": "q",
          "required": true,
          "description": "Natural-language query."
        },
        {
          "name": "limit",
          "required": false,
          "description": "Maximum result count; default 5."
        }
      ],
      "description": "Search compact public records by query."
    },
    {
      "id": "article",
      "method": "GET",
      "path": "/api/article",
      "url": "https://anchorfact.org/api/article",
      "query": [
        {
          "name": "slug",
          "required": true,
          "description": "Canonical public article slug."
        }
      ],
      "description": "Fetch one public article evidence bundle with claims, sources, and citation exports."
    },
    {
      "id": "claim",
      "method": "GET",
      "path": "/api/claim",
      "url": "https://anchorfact.org/api/claim",
      "query": [
        {
          "name": "id",
          "required": true,
          "description": "Public claim id or shorthand id such as f1."
        }
      ],
      "description": "Dereference one public atomic claim with article and source context."
    },
    {
      "id": "cite",
      "method": "GET",
      "path": "/api/cite",
      "url": "https://anchorfact.org/api/cite",
      "query": [
        {
          "name": "id",
          "required": true,
          "description": "Public claim id or shorthand id such as f1."
        },
        {
          "name": "format",
          "required": false,
          "description": "json, markdown, or md."
        }
      ],
      "description": "Return a citation-ready public atomic claim."
    },
    {
      "id": "source",
      "method": "GET",
      "path": "/api/source",
      "url": "https://anchorfact.org/api/source",
      "query": [
        {
          "name": "id",
          "required": false,
          "description": "Source id from /sources.json."
        },
        {
          "name": "url",
          "required": false,
          "description": "Original source URL."
        }
      ],
      "description": "Inspect a public source and mapped claims by source id or original URL."
    },
    {
      "id": "resolve",
      "method": "GET",
      "path": "/api/resolve",
      "url": "https://anchorfact.org/api/resolve",
      "query": [
        {
          "name": "ref",
          "required": true,
          "description": "Claim id, article slug, source id, AnchorFact URL, or original source URL."
        }
      ],
      "description": "Resolve one mixed public reference to its matching public payload."
    },
    {
      "id": "resolve_batch",
      "method": "GET",
      "path": "/api/resolve-batch",
      "url": "https://anchorfact.org/api/resolve-batch",
      "query": [
        {
          "name": "ref",
          "required": true,
          "description": "Repeat for each reference."
        },
        {
          "name": "format",
          "required": false,
          "description": "json, markdown, or md."
        }
      ],
      "description": "Resolve up to 20 mixed public references in one request."
    }
  ],
  "static_fallbacks": [
    {
      "path": "/agent.json",
      "url": "https://anchorfact.org/agent.json",
      "description": "Full AI agent discovery profile and recommended workflow."
    },
    {
      "path": "/api-access/",
      "url": "https://anchorfact.org/api-access/",
      "description": "Free API access guide with recommended call order, examples, limits, and provenance verification."
    },
    {
      "path": "/openapi.json",
      "url": "https://anchorfact.org/openapi.json",
      "description": "Full OpenAPI 3.1 machine contract."
    },
    {
      "path": "/artifact-summary.json",
      "url": "https://anchorfact.org/artifact-summary.json",
      "description": "Lightweight size, purpose, cache posture, and recommended alternatives for large static machine artifacts."
    },
    {
      "path": "/capabilities.json",
      "url": "https://anchorfact.org/capabilities.json",
      "description": "Task-to-endpoint routing guide."
    },
    {
      "path": "/content-health.json",
      "url": "https://anchorfact.org/content-health.json",
      "description": "Signed corpus health summary for AI trust decisions."
    },
    {
      "path": "/coverage.json",
      "url": "https://anchorfact.org/coverage.json",
      "description": "Coverage and limits guide for deciding when to fall back to external primary sources."
    },
    {
      "path": "/examples.json",
      "url": "https://anchorfact.org/examples.json",
      "description": "Executable workflow examples."
    },
    {
      "path": "/evals.json",
      "url": "https://anchorfact.org/evals.json",
      "description": "Executable golden checks for this machine contract."
    },
    {
      "path": "/mcp.json",
      "url": "https://anchorfact.org/mcp.json",
      "description": "Local MCP installation manifest."
    },
    {
      "path": "/provenance.json",
      "url": "https://anchorfact.org/provenance.json",
      "description": "Signed build identity, counts, and static artifact hashes."
    }
  ]
}