{
  "schema_version": "anchorfact.mcp.v1",
  "generated": "2026-06-03T02:21:45.252Z",
  "provenance_url": "https://anchorfact.org/provenance.json",
  "name": "io.github.anchorfact/anchorfact",
  "display_name": "AnchorFact",
  "description": "Manifest-backed public article and verified-claims interface for LLM citations.",
  "official_site": "https://anchorfact.org",
  "official_source_repository": "https://github.com/anchorfact/anchorfact",
  "registry_note": "This is an AnchorFact install manifest, not an official MCP Registry server.json submission.",
  "current_snapshot": {
    "public_articles": 1210,
    "draft_articles": 300,
    "public_claims": 3790,
    "searchable_records": 1210,
    "unique_sources": 2994
  },
  "data_contract": {
    "public_only": true,
    "backed_by": "/manifest.json",
    "requires_build_before_local_stdio": true,
    "draft_entries_excluded": true,
    "provenance_url": "https://anchorfact.org/provenance.json"
  },
  "installation": {
    "requirements": [
      "npm install",
      "npm run build",
      "python -m pip install -r src/requirements-mcp.txt",
      "npm run mcp:check"
    ],
    "stdio": {
      "transport": "stdio",
      "command": "python",
      "args": [
        "src/mcp_server.py"
      ],
      "config_snippet": {
        "mcpServers": {
          "anchorfact": {
            "command": "python",
            "args": [
              "src/mcp_server.py"
            ],
            "description": "AnchorFact public article and verified-claims interface for LLM citations."
          }
        }
      }
    },
    "local_http_wrapper": {
      "transport": "http",
      "command": "python",
      "args": [
        "src/mcp_http.py"
      ],
      "base_url": "http://127.0.0.1:8000",
      "endpoints": {
        "health": "http://127.0.0.1:8000/health",
        "corpus_health": "http://127.0.0.1:8000/corpus-health",
        "plan": "http://127.0.0.1:8000/plan?q={query}",
        "context": "http://127.0.0.1:8000/context?q={query}",
        "search": "http://127.0.0.1:8000/search?q={query}",
        "article": "http://127.0.0.1:8000/article?id={canonical_slug}",
        "resolve": "http://127.0.0.1:8000/resolve?ref={reference}",
        "resolve_batch": "http://127.0.0.1:8000/resolve-batch?ref={reference}&ref={reference}",
        "cite": "http://127.0.0.1:8000/cite?id={claim_id}",
        "stats": "http://127.0.0.1:8000/stats"
      }
    }
  },
  "tools": [
    {
      "name": "anchorfact_plan_query",
      "description": "Plan whether AnchorFact has plausible public coverage and which local or public calls to make next.",
      "input_schema": {
        "type": "object",
        "required": [
          "query"
        ],
        "properties": {
          "query": {
            "type": "string",
            "description": "Natural-language factual query to assess."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "default": 3,
            "description": "Maximum planned result count."
          }
        }
      }
    },
    {
      "name": "anchorfact_search",
      "description": "Search public AnchorFact articles with BM25 ranking.",
      "input_schema": {
        "type": "object",
        "required": [
          "query"
        ],
        "properties": {
          "query": {
            "type": "string",
            "description": "Natural-language search query."
          },
          "confidence_min": {
            "type": "string",
            "enum": [
              "high",
              "medium",
              "low"
            ],
            "default": "medium",
            "description": "Minimum public confidence filter."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum result count."
          }
        }
      }
    },
    {
      "name": "anchorfact_context",
      "description": "Return one local prompt context pack with coverage status, content health, fallback guidance, evidence packs, and citation guardrails.",
      "input_schema": {
        "type": "object",
        "required": [
          "query"
        ],
        "properties": {
          "query": {
            "type": "string",
            "description": "Natural-language factual query to contextualize."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "default": 3,
            "description": "Maximum evidence pack count."
          },
          "format": {
            "type": "string",
            "enum": [
              "json",
              "markdown",
              "md"
            ],
            "default": "json",
            "description": "Output format."
          }
        }
      }
    },
    {
      "name": "anchorfact_content_health",
      "description": "Return local corpus health, public source coverage, trust boundaries, and the draft repair queue.",
      "input_schema": {
        "type": "object",
        "properties": {
          "format": {
            "type": "string",
            "enum": [
              "json",
              "markdown",
              "md"
            ],
            "default": "json",
            "description": "Output format."
          }
        }
      }
    },
    {
      "name": "anchorfact_get_article",
      "description": "Retrieve one public article by canonical slug, canonical URL, or JSON-LD @id.",
      "input_schema": {
        "type": "object",
        "required": [
          "article_id"
        ],
        "properties": {
          "article_id": {
            "type": "string",
            "description": "Canonical slug, canonical URL, or JSON-LD @id."
          }
        }
      }
    },
    {
      "name": "anchorfact_resolve_reference",
      "description": "Resolve a public AnchorFact claim id, article slug or URL, source id, or source URL.",
      "input_schema": {
        "type": "object",
        "required": [
          "reference"
        ],
        "properties": {
          "reference": {
            "type": "string",
            "description": "Claim shorthand or URL, article slug or URL, source id, or source URL."
          }
        }
      }
    },
    {
      "name": "anchorfact_resolve_references",
      "description": "Resolve several mixed public AnchorFact references in one call.",
      "input_schema": {
        "type": "object",
        "required": [
          "references"
        ],
        "properties": {
          "references": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "maxItems": 20,
            "description": "Claim ids, article slugs, AnchorFact URLs, source ids, or source URLs."
          },
          "format": {
            "type": "string",
            "enum": [
              "json",
              "markdown",
              "md"
            ],
            "default": "json",
            "description": "Output format."
          }
        }
      }
    },
    {
      "name": "anchorfact_cite_claim",
      "description": "Return citation-ready JSON or Markdown for one public AnchorFact claim.",
      "input_schema": {
        "type": "object",
        "required": [
          "claim_id"
        ],
        "properties": {
          "claim_id": {
            "type": "string",
            "description": "Claim shorthand, /fact/{id}, or full https://anchorfact.org/fact/{id} URL."
          },
          "format": {
            "type": "string",
            "enum": [
              "json",
              "markdown",
              "md"
            ],
            "default": "json",
            "description": "Output format."
          }
        }
      }
    },
    {
      "name": "anchorfact_list_categories",
      "description": "List public AnchorFact categories and article counts.",
      "input_schema": {
        "type": "object",
        "properties": {}
      }
    }
  ],
  "related_public_artifacts": [
    "/agent.json",
    "/openapi.json",
    "/capabilities.json",
    "/coverage.json",
    "/examples.json",
    "/evals.json",
    "/graph.json",
    "/search-index.json",
    "/sources.json",
    "/claims.json",
    "/provenance.json"
  ]
}