{
  "schema_version": "anchorfact.agent.v1",
  "generated": "2026-06-24T09:35:53.832Z",
  "name": "AnchorFact",
  "official_site": "https://anchorfact.org",
  "official_source_repository": "https://github.com/anchorfact/anchorfact",
  "purpose": "Machine-readable verified claims and source-grounded article records for AI citation and retrieval workflows.",
  "audience": [
    "llm",
    "agent",
    "crawler",
    "retrieval_system"
  ],
  "trust_contract": {
    "public_entries_are_verified": true,
    "draft_entries_are_excluded_from_ai_entrypoints": true,
    "provenance_is_signed_when_official_key_is_available": true,
    "consumers_should_cross_check_original_sources": true
  },
  "current_snapshot": {
    "public_articles": 1348,
    "draft_articles": 280,
    "public_claims": 4304,
    "topics": 11,
    "capabilities": 11,
    "content_health_public_articles": 1348,
    "content_health_draft_articles": 280,
    "examples": 7,
    "graph_nodes": 8945,
    "graph_edges": 13755,
    "evals": 56,
    "mcp_tools": 9,
    "api_readiness_status": "foundation_ready_pending_14_day_and_partner_signals",
    "api_readiness_subscription_ready": false,
    "api_readiness_core_query_ratio": 1,
    "api_readiness_context_ratio": 1,
    "api_readiness_blocker_ids": [
      "production_integrity_14_day",
      "public_audit_14_day",
      "ai_primary_discovery_ratio_7_day",
      "design_partners"
    ],
    "api_readiness_automated_blocker_ids": [
      "production_integrity_14_day",
      "public_audit_14_day",
      "ai_primary_discovery_ratio_7_day"
    ],
    "api_readiness_manual_blocker_ids": [
      "design_partners"
    ],
    "api_readiness_blocker_evidence_requirements": [
      {
        "id": "production_integrity_14_day",
        "gate_type": "automated_window",
        "status": "not_measured_in_this_report",
        "target": "14 consecutive days production:integrity passing and AI eval 100%",
        "required_days": 14,
        "runtime_input_id": "production_integrity",
        "report_field": "production_health",
        "json_flag": "--production-integrity-json",
        "command": "npm run production:integrity -- --write-json reports/production-integrity.json",
        "history_command": "npm run readiness:history -- --history-dir reports/readiness-history --api-readiness-json reports/api-readiness.json --content-health-json reports/content-health.json --save-current --write reports/readiness-window.md --write-json reports/readiness-window.json",
        "status_when_missing": "not_provided",
        "required_fields": [
          "ok",
          "checks",
          "commit_sha",
          "source_commit_sha"
        ]
      },
      {
        "id": "public_audit_14_day",
        "gate_type": "automated_window",
        "status": "not_measured_in_this_report",
        "target": "14 consecutive days with 0 move_to_draft / repair_sources public audit findings",
        "required_days": 14,
        "runtime_input_id": "content_health",
        "command": "npm run content:health -- --json --write reports/content-health.json",
        "history_command": "npm run readiness:history -- --history-dir reports/readiness-history --api-readiness-json reports/api-readiness.json --content-health-json reports/content-health.json --save-current --write reports/readiness-window.md --write-json reports/readiness-window.json"
      },
      {
        "id": "ai_primary_discovery_ratio_7_day",
        "gate_type": "automated_window",
        "status": "not_measured_in_this_report",
        "target": ">=0.2 primary/discovery ratio for 7 consecutive days",
        "required_days": 7,
        "runtime_input_id": "ai_adoption",
        "report_field": "adoption_signal",
        "json_flag": "--adoption-json",
        "command": "npm run usage:adoption -- --lookback-minutes 1430 --write-json reports/ai-adoption-scorecard.json",
        "history_command": "npm run readiness:history -- --history-dir reports/readiness-history --api-readiness-json reports/api-readiness.json --content-health-json reports/content-health.json --save-current --write reports/readiness-window.md --write-json reports/readiness-window.json",
        "status_when_missing": "not_provided",
        "preferred_measurement_scope": "interactive_ai",
        "required_fields": [
          "identified_ai_primary_to_discovery_ratio",
          "identified_ai_primary_to_discovery_target_status",
          "interactive_ai_primary_to_discovery_ratio",
          "interactive_ai_primary_to_discovery_target_status",
          "crawler_ai_primary_to_discovery_ratio"
        ]
      },
      {
        "id": "design_partners",
        "gate_type": "manual_validation",
        "status": "manual_validation_required",
        "target": ">=3 real external design partners and >=1 paid-intent signal",
        "runtime_input_id": "design_partners",
        "report_field": "design_partner_signal",
        "json_flag": "--design-partners-json",
        "command": "npm run api:readiness -- --design-partners-json reports/design-partners.json",
        "history_command": "npm run readiness:history -- --history-dir reports/readiness-history --api-readiness-json reports/api-readiness.json --content-health-json reports/content-health.json --save-current --write reports/readiness-window.md --write-json reports/readiness-window.json",
        "status_when_missing": "manual_validation_required",
        "manual_validation": true,
        "required_fields": [
          "external_design_partner_count",
          "paid_intent_signal_count"
        ]
      }
    ],
    "searchable_records": 1348,
    "unique_sources": 3282,
    "verification_report": "2026-06-24T09:29:27.317Z",
    "build_commit_sha": "e1e3fe64809d550d7607e267fdb20684e340196d"
  },
  "readiness_runtime_signals": {
    "status_endpoint": "/api-readiness.json",
    "static_artifact": true,
    "missing_runtime_status": "not_provided",
    "workflow": ".github/workflows/readiness-scorecard.yml",
    "scorecard_command": "npm run api:readiness -- --adoption-json reports/ai-adoption-scorecard.json --production-integrity-json reports/production-integrity.json --write reports/api-readiness.md --write-json reports/api-readiness.json",
    "history_command": "npm run readiness:history -- --history-dir reports/readiness-history --api-readiness-json reports/api-readiness.json --content-health-json reports/content-health.json --save-current --write reports/readiness-window.md --write-json reports/readiness-window.json",
    "published_static_artifact": "https://anchorfact.org/api-readiness.json",
    "runtime_input_ids": [
      "production_integrity",
      "ai_adoption",
      "design_partners"
    ],
    "preferred_adoption_scope": "interactive_ai",
    "manual_validation_required": [
      "design_partners"
    ]
  },
  "schemas": {
    "root_index": "anchorfact.root-index.v1",
    "api_access": "anchorfact.api-access.v1",
    "manifest": "anchorfact.manifest.v1",
    "openapi": "anchorfact.openapi.v1",
    "api_index": "anchorfact.api-index.v1",
    "api_readiness": "anchorfact.api-readiness.v1",
    "artifact_summary": "anchorfact.artifact-summary.v1",
    "artifact_shards": "anchorfact.artifact-shards.v1",
    "article_api": "anchorfact.article-api.v1",
    "cite_api": "anchorfact.cite-api.v1",
    "claim_api": "anchorfact.claim-api.v1",
    "source_api": "anchorfact.source-api.v1",
    "context_api": "anchorfact.context-api.v1",
    "resolve_api": "anchorfact.resolve-api.v1",
    "resolve_batch_api": "anchorfact.resolve-batch-api.v1",
    "evidence_api": "anchorfact.evidence-api.v1",
    "claims": "anchorfact.claims.v1",
    "topics": "anchorfact.topics.v1",
    "capabilities": "anchorfact.capabilities.v1",
    "content_health": "anchorfact.content-health.v1",
    "coverage": "anchorfact.coverage.v1",
    "examples": "anchorfact.examples.v1",
    "graph": "anchorfact.graph.v1",
    "evals": "anchorfact.evals.v1",
    "mcp": "anchorfact.mcp.v1",
    "plan_api": "anchorfact.plan-api.v1",
    "search_api": "anchorfact.search-api.v1",
    "search_index": "anchorfact.search-index.v1",
    "sources": "anchorfact.sources.v1",
    "provenance": "anchorfact.provenance.v1"
  },
  "quick_start": {
    "purpose": "Smallest stable decision contract for AI consumers that need answer-ready, citable AnchorFact context without reading the full endpoint catalog.",
    "default_answer_path": "/api/context?q={query}",
    "default_answer_mode": "answer_with_citations",
    "local_mcp_answer_tool": "anchorfact_context",
    "free_api_access_path": "/api-access/",
    "citation_path": "/api/cite?id={claim_id}",
    "primary_api_conversion": {
      "target_ratio": 0.2,
      "measured_as": "identified AI primary API requests divided by identified AI discovery requests",
      "discovery_entrypoints": [
        "/",
        "/robots.txt",
        "/llms.txt",
        "/index.json",
        "/agent.json",
        "/.well-known/anchorfact.json",
        "/api"
      ],
      "primary_entrypoints": [
        "/api/context",
        "/api/evidence",
        "/api/cite",
        "/api/resolve-batch"
      ],
      "next_call_after_discovery": "/api/context?q={query}&limit=3&format=markdown",
      "minimum_valid_primary_calls": [
        {
          "id": "context",
          "path": "/api/context?q={query}&limit=3&format=markdown",
          "required_parameter": "q"
        },
        {
          "id": "evidence",
          "path": "/api/evidence?q={query}&limit=3&format=markdown",
          "required_parameter": "q"
        },
        {
          "id": "cite",
          "path": "/api/cite?id={claim_id}&format=markdown",
          "required_parameter": "id"
        },
        {
          "id": "resolve_batch",
          "path": "/api/resolve-batch?ref={claim_id}&ref={source_id}&format=markdown",
          "required_parameter": "ref"
        }
      ],
      "parameter_error_prevention": {
        "bare_primary_paths_return_recoverable_400": true,
        "do_not_call_bare_paths": [
          "/api/context",
          "/api/evidence",
          "/api/cite",
          "/api/source",
          "/api/resolve-batch"
        ],
        "copy_minimum_valid_primary_calls_first": true,
        "recovery_field_on_400": "machine_recovery"
      },
      "guidance": "After crawler discovery, make a query-scoped primary API call before downloading large static artifacts."
    },
    "example_calls": [
      {
        "purpose": "default_prompt_context",
        "method": "GET",
        "path": "/api/context?q=gaussian%20splatting&limit=3&format=markdown",
        "use_when": "Use first for normal answer assembly when AnchorFact may cover the topic."
      },
      {
        "purpose": "raw_evidence_pack",
        "method": "GET",
        "path": "/api/evidence?q=RLHF&limit=3&format=markdown",
        "use_when": "Use when you need source-mapped claims and citation exports without the full context policy envelope."
      },
      {
        "purpose": "coverage_check",
        "method": "GET",
        "path": "/api/plan?q=quantum%20computing&limit=3",
        "use_when": "Use only when coverage is uncertain or you need fallback guidance before requesting evidence."
      }
    ],
    "trust_check": {
      "path": "/provenance.json",
      "signature_path": "/provenance.sig",
      "require_trusted_signature": true,
      "pinned_public_key_path": "keys/provenance.pub.pem"
    },
    "fallback_policy": {
      "unsupported_answer_mode": "external_sources_required",
      "use_external_sources_when": [
        "answer_policy.can_answer_with_anchorfact is false",
        "answer_policy.answer_mode is external_sources_required",
        "coverage_status is unsupported",
        "the query asks for live, local, personalized, or time-sensitive facts"
      ]
    },
    "steps": [
      {
        "id": "verify_provenance",
        "path": "/provenance.json",
        "action": "Verify signed provenance and artifact hashes before trusting live counts, schemas, or static artifacts."
      },
      {
        "id": "assemble_context",
        "path": "/api/context?q={query}",
        "action": "Use this as the default one-call answer path for query planning, answer_policy, citation-ready claims, content health, and evidence packs."
      },
      {
        "id": "cite_claims",
        "path": "/api/cite?id={claim_id}",
        "action": "Cite individual public atomic claims returned by /api/context or /api/evidence."
      },
      {
        "id": "fallback",
        "path": null,
        "action": "When AnchorFact says it cannot answer, use current authoritative external sources and do not cite AnchorFact as supporting evidence."
      }
    ],
    "do_not_use": [
      "draft entries",
      "unverified mirrors or forks without their own trusted provenance",
      "AnchorFact citations for live prices, current events, local conditions, or personalized advice"
    ]
  },
  "recommended_workflow": [
    "Fetch /provenance.json and /provenance.sig, then verify the pinned public key before trusting counts or hashes.",
    "Use /api/context?q={query} when you want answer_policy, citation_ready_claims, planning status, content health, fallback guidance, and evidence packs in one prompt-assembly payload.",
    "Use /api/evidence?q={query} for one-call public evidence packs that combine search hits, article summaries, claims, sources, and citation_exports; add format=markdown for answer-ready context.",
    "Use /api/plan?q={query} only when you are not sure whether AnchorFact has coverage, which endpoint to call next, or when to fall back to external sources.",
    "Use /api/cite?id={claim_id} to return one citation-ready public atomic claim; add format=markdown for answer-ready citation text.",
    "Use /api/resolve?ref={reference} when you have an AnchorFact claim id, article slug, source id, or source URL and need the matching public payload.",
    "Use /api/resolve-batch?ref={reference}&ref={reference} when you need to dereference several mixed AnchorFact references in one call.",
    "Fetch /api as a compact API index when you need the smallest live endpoint discovery payload.",
    "Fetch /index.json as the compact root machine directory for preferred entrypoints, trust policy, and signed static artifact discovery.",
    "After crawler discovery through /, /robots.txt, /llms.txt, /index.json, /agent.json, /.well-known/anchorfact.json, or /api, convert to /api/context?q={query}&limit=3&format=markdown or /api/evidence?q={query}&limit=3&format=markdown for a concrete user question.",
    "Fetch /api-access/ for the machine-readable free API access policy, current no-key access state, limits, and provenance verification steps.",
    "Fetch /agent.json to discover the current machine contract.",
    "Fetch /openapi.json when integrating with tools that prefer a standard endpoint contract.",
    "Fetch /artifact-summary.json before downloading large static artifacts; prefer /api/context and /api/evidence for normal agent answer paths.",
    "Fetch /artifact-shards.json before bulk reads of graph, search, claims, or llms artifacts; prefer versioned shards over repeated full downloads.",
    "Fetch /api-readiness.json to inspect readiness gates, core corpus coverage, API citation scorecards, and subscription-readiness status.",
    "Use /api/search?q={query} for lightweight public record lookup when a live HTTP call is available.",
    "Use /api/article?slug={canonical_slug} to fetch a public article evidence bundle with claims, sources, and citation_exports.",
    "Use /api/claim?id={claim_id} to dereference one public atomic claim with its article, matching source, and citation_export.",
    "Use /api/source?id={source_id} or /api/source?url={source_url} to inspect a public source and mapped claims.",
    "Fetch /topics.json to inspect topic-level public coverage before selecting a query strategy.",
    "Fetch /capabilities.json to map an AI task to the smallest trustworthy endpoint, output format, and fallback artifacts.",
    "Fetch /content-health.json to inspect signed corpus health, draft risk, public source coverage, trust boundaries, and source-ready/source acquisition repair queues.",
    "Fetch /coverage.json to inspect topic coverage, confidence distribution, source coverage, and known limits before relying on AnchorFact.",
    "Fetch /examples.json for executable usage examples that chain evidence, search, article, claim, source, and signed static artifacts.",
    "Fetch /graph.json for signed offline traversal of public topic, article, claim, and source relationships.",
    "Fetch /evals.json to run executable golden checks against the current AI integration contract.",
    "Fetch /mcp.json for local MCP stdio configuration and tool metadata when connecting MCP-capable hosts.",
    "Fetch /search-index.json to shortlist public records by title, keywords, claims, source coverage, and route templates.",
    "Fetch /manifest.json to select public articles by canonical_slug, status, confidence_level, and source coverage.",
    "Fetch /sources.json to inspect source tier, source type, article reuse, and claim reuse.",
    "Fetch /claims.json for atomic public claims with evidence links.",
    "Fetch /{canonical_slug}/index.json for JSON-LD article context before citing a claim.",
    "Do not cite draft entries or entries whose status is not public."
  ],
  "endpoints": {
    "root_alias": {
      "path": "/",
      "url": "https://anchorfact.org/",
      "media_type": "application/json",
      "description": "Root machine JSON alias serving the same RootIndex payload as /index.json."
    },
    "root_index": {
      "path": "/index.json",
      "url": "https://anchorfact.org/index.json",
      "media_type": "application/json",
      "description": "Compact root machine directory for preferred entrypoints, trust policy, and signed static artifacts."
    },
    "agent_profile": {
      "path": "/agent.json",
      "url": "https://anchorfact.org/agent.json",
      "media_type": "application/json",
      "description": "This discovery document for AI agents and crawlers."
    },
    "well_known_agent_profile": {
      "path": "/.well-known/anchorfact.json",
      "url": "https://anchorfact.org/.well-known/anchorfact.json",
      "media_type": "application/json",
      "description": "Stable well-known alias for the agent discovery document."
    },
    "openapi": {
      "path": "/openapi.json",
      "url": "https://anchorfact.org/openapi.json",
      "media_type": "application/json",
      "description": "OpenAPI 3.1 description of the static read-only machine contract."
    },
    "api_index": {
      "path": "/api",
      "url": "https://anchorfact.org/api",
      "media_type": "application/json",
      "description": "Compact live API discovery index for AI agents."
    },
    "api_access": {
      "path": "/api-access/",
      "url": "https://anchorfact.org/api-access/",
      "media_type": "application/json",
      "description": "Machine-readable free API access policy with recommended call order, limits, and provenance verification."
    },
    "artifact_summary": {
      "path": "/artifact-summary.json",
      "url": "https://anchorfact.org/artifact-summary.json",
      "media_type": "application/json",
      "description": "Lightweight size, purpose, cache posture, and default-call alternatives for major static machine artifacts."
    },
    "artifact_shards": {
      "path": "/artifact-shards.json",
      "url": "https://anchorfact.org/artifact-shards.json",
      "media_type": "application/json",
      "description": "Signed registry of versioned shards for large static artifacts."
    },
    "api_readiness": {
      "path": "/api-readiness.json",
      "url": "https://anchorfact.org/api-readiness.json",
      "media_type": "application/json",
      "description": "Machine-readable readiness gates, core corpus scorecard, API citation readiness, and subscription-readiness status."
    },
    "llms_txt": {
      "path": "/llms.txt",
      "url": "https://anchorfact.org/llms.txt",
      "media_type": "text/plain",
      "description": "Public verified article index optimized for LLM crawlers."
    },
    "manifest": {
      "path": "/manifest.json",
      "url": "https://anchorfact.org/manifest.json",
      "media_type": "application/json",
      "description": "Full article index with public/draft status, confidence, and verification metadata."
    },
    "claims": {
      "path": "/claims.json",
      "url": "https://anchorfact.org/claims.json",
      "media_type": "application/json",
      "description": "Public verified atomic claims with evidence links."
    },
    "topics": {
      "path": "/topics.json",
      "url": "https://anchorfact.org/topics.json",
      "media_type": "application/json",
      "description": "Compact public topic coverage map with article, claim, and source counts."
    },
    "capabilities": {
      "path": "/capabilities.json",
      "url": "https://anchorfact.org/capabilities.json",
      "media_type": "application/json",
      "description": "AI task-to-endpoint routing guide with trust requirements and fallback artifacts."
    },
    "content_health": {
      "path": "/content-health.json",
      "url": "https://anchorfact.org/content-health.json",
      "media_type": "application/json",
      "description": "Signed corpus health summary for AI trust decisions, source-ready/source acquisition draft triage, and source coverage inspection."
    },
    "coverage": {
      "path": "/coverage.json",
      "url": "https://anchorfact.org/coverage.json",
      "media_type": "application/json",
      "description": "AI coverage and limits guide with confidence, source verification, and topic distributions."
    },
    "examples": {
      "path": "/examples.json",
      "url": "https://anchorfact.org/examples.json",
      "media_type": "application/json",
      "description": "Executable AI usage examples for dynamic API calls and signed static fallback workflows."
    },
    "graph": {
      "path": "/graph.json",
      "url": "https://anchorfact.org/graph.json",
      "media_type": "application/json",
      "description": "Signed public graph of topic, article, claim, and source relationships."
    },
    "evals": {
      "path": "/evals.json",
      "url": "https://anchorfact.org/evals.json",
      "media_type": "application/json",
      "description": "Executable golden integration checks for AI consumers and production smoke."
    },
    "mcp": {
      "path": "/mcp.json",
      "url": "https://anchorfact.org/mcp.json",
      "media_type": "application/json",
      "description": "Signed local MCP installation manifest and tool metadata."
    },
    "plan_api": {
      "path": "/api/plan?q={query}",
      "url": "https://anchorfact.org/api/plan?q={query}",
      "media_type": "application/json",
      "description": "Read-only query planner that recommends AnchorFact calls or external-source fallback."
    },
    "evidence_api": {
      "path": "/api/evidence?q={query}",
      "url": "https://anchorfact.org/api/evidence?q={query}",
      "media_type": "application/json",
      "description": "Read-only query evidence pack backed by signed static artifacts; supports format=json or format=markdown."
    },
    "context_api": {
      "path": "/api/context?q={query}",
      "url": "https://anchorfact.org/api/context?q={query}",
      "media_type": "application/json",
      "description": "Read-only prompt context assembler that combines answer policy, citation-ready claims, planning status, content health, fallback guidance, and evidence packs; supports format=json or format=markdown."
    },
    "resolve_api": {
      "path": "/api/resolve?ref={reference}",
      "url": "https://anchorfact.org/api/resolve?ref={reference}",
      "media_type": "application/json",
      "description": "Read-only resolver for public AnchorFact claim ids, article slugs, source ids, and source URLs."
    },
    "resolve_batch_api": {
      "path": "/api/resolve-batch?ref={reference}&ref={reference}",
      "url": "https://anchorfact.org/api/resolve-batch?ref={reference}&ref={reference}",
      "media_type": "application/json",
      "description": "Read-only batch resolver for mixed public AnchorFact references; supports format=json or format=markdown."
    },
    "search_api": {
      "path": "/api/search?q={query}",
      "url": "https://anchorfact.org/api/search?q={query}",
      "media_type": "application/json",
      "description": "Read-only search API backed by the signed static search index."
    },
    "article_api": {
      "path": "/api/article?slug={canonical_slug}",
      "url": "https://anchorfact.org/api/article?slug={canonical_slug}",
      "media_type": "application/json",
      "description": "Read-only public article evidence bundle with claims, sources, and retrieval metadata."
    },
    "cite_api": {
      "path": "/api/cite?id={claim_id}",
      "url": "https://anchorfact.org/api/cite?id={claim_id}",
      "media_type": "application/json",
      "description": "Read-only citation export for one public atomic claim; supports format=json or format=markdown."
    },
    "claim_api": {
      "path": "/api/claim?id={claim_id}",
      "url": "https://anchorfact.org/api/claim?id={claim_id}",
      "media_type": "application/json",
      "description": "Read-only public atomic claim lookup with article and matching source metadata."
    },
    "source_api": {
      "path": "/api/source?id={source_id}",
      "url": "https://anchorfact.org/api/source?id={source_id}",
      "media_type": "application/json",
      "description": "Read-only public source lookup with reuse and mapped claim metadata."
    },
    "search_index": {
      "path": "/search-index.json",
      "url": "https://anchorfact.org/search-index.json",
      "media_type": "application/json",
      "description": "Compact public retrieval index with keywords, claim ids, source coverage, and article routes."
    },
    "sources": {
      "path": "/sources.json",
      "url": "https://anchorfact.org/sources.json",
      "media_type": "application/json",
      "description": "Deduplicated public source index with tier, type, article reuse, and claim reuse."
    },
    "provenance": {
      "path": "/provenance.json",
      "url": "https://anchorfact.org/provenance.json",
      "media_type": "application/json",
      "description": "Build identity, official-site metadata, content counts, and artifact checksums."
    },
    "provenance_signature": {
      "path": "/provenance.sig",
      "url": "https://anchorfact.org/provenance.sig",
      "media_type": "application/json",
      "description": "Detached Ed25519 signature for /provenance.json."
    },
    "article_jsonld_template": {
      "path_template": "/{canonical_slug}/index.json",
      "url_template": "https://anchorfact.org/{canonical_slug}/index.json",
      "media_type": "application/ld+json",
      "description": "Per-article JSON-LD with confidence and verification metadata."
    },
    "article_markdown_template": {
      "path_template": "/{canonical_slug}/index.md",
      "url_template": "https://anchorfact.org/{canonical_slug}/index.md",
      "media_type": "text/markdown",
      "description": "Original article Markdown for public and draft records."
    }
  },
  "citation_policy": {
    "cite_only_public_records": true,
    "prefer_atomic_claims": true,
    "include_source_urls_or_dois": true,
    "include_confidence_level": true,
    "include_provenance_commit_when_available": true
  }
}