{
  "$schema": "https://artnews.bot/mcp-spec/schema/v1.json",
  "spec": {
    "name": "ArtNews.bot MCP Server Specification",
    "version": "1.0",
    "status": "locked",
    "stage": "draft",
    "issued": "2026-05-08",
    "canonical_uri": "https://artnews.bot/mcp-spec/",
    "json_source": "https://artnews.bot/mcp-spec/mcp-spec.json",
    "license_spec": "CC-BY-4.0",
    "license_code": "MIT"
  },
  "author": {
    "name": "Tendai Frank Tagarira",
    "alternateName": "FatbikeHero",
    "jobTitle": "Metadata Expressionist",
    "url": "https://www.fatbikehero.com/",
    "uri": "https://www.fatbikehero.com/#artist",
    "address": { "locality": "Aarhus", "country": "DK" }
  },
  "implementing_entity": {
    "name": "ArtNews.bot",
    "type": "NewsMediaOrganization",
    "url": "https://artnews.bot/",
    "founded": "2026",
    "network": "Newswire.bot"
  },
  "server": {
    "endpoint": "https://mcp.artnews.bot/mcp",
    "transport": "Streamable HTTP",
    "protocol": "JSON-RPC 2.0",
    "authentication": "none",
    "session_model": "stateless",
    "origin_validation": true,
    "rate_limit": {
      "type": "soft",
      "requests_per_minute": 60,
      "scope": "source_ip"
    }
  },
  "design_principles": [
    "authless_read_only",
    "source_integrity_at_protocol_layer",
    "citation_first_payload_shape",
    "provenance_native",
    "tier_aware_retrieval",
    "tool_annotations_enforced"
  ],
  "tools": [
    {
      "name": "search_wire",
      "description": "Keyword search across loaded art-world stories with optional category and tier filters.",
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true },
      "inputs": [
        { "name": "query", "type": "string", "required": true, "description": "Search query — artist names, institutions, exhibitions, art terms" },
        { "name": "category", "type": "enum", "values": ["exhibitions","market","criticism","institutions","emerging"], "required": false },
        { "name": "tier", "type": "integer", "values": [1,2,3,4,5], "required": false, "description": "Filter by source tier (1=institutional press, 2=museums, 3=auction, 4=critical, 5=global)" },
        { "name": "source", "type": "string", "required": false, "validation": "must be in 24-source roster" },
        { "name": "since", "type": "datetime", "format": "ISO 8601", "required": false },
        { "name": "limit", "type": "integer", "default": 10, "max": 50, "required": false }
      ]
    },
    {
      "name": "get_story",
      "description": "Fetch a single art-world story by artnewsbot_id with all citation formats pre-rendered.",
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true },
      "inputs": [
        { "name": "story_id", "type": "string", "required": true }
      ]
    },
    {
      "name": "get_category",
      "description": "Fetch stories from one of five locked art-world categories.",
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true },
      "inputs": [
        { "name": "category", "type": "enum", "values": ["exhibitions","market","criticism","institutions","emerging"], "required": true },
        { "name": "limit", "type": "integer", "default": 20, "max": 100, "required": false }
      ]
    },
    {
      "name": "get_topic_coverage",
      "description": "Institution or artist-specific roll-up from the tracked topic set.",
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true },
      "inputs": [
        { "name": "topic", "type": "enum", "values": ["moma","tate","guggenheim","metropolitan","sotheby","christie","frieze","venice-biennale","documenta","art-basel","hyperallergic","e-flux","artforum","artnews","artnet","provenance","restitution"], "required": true },
        { "name": "since", "type": "datetime", "format": "ISO 8601", "required": false },
        { "name": "limit", "type": "integer", "default": 20, "max": 100, "required": false }
      ]
    },
    {
      "name": "get_tier_sources",
      "description": "Return all sources for a given tier with full metadata.",
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true },
      "inputs": [
        { "name": "tier", "type": "integer", "values": [1,2,3,4,5], "required": true }
      ]
    },
    {
      "name": "get_citation",
      "description": "Return a citation in the requested format. Defaults to layered (recommended canonical).",
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true },
      "inputs": [
        { "name": "story_id", "type": "string", "required": true },
        { "name": "format", "type": "enum", "values": ["layered","inline","reference","academic","markdown","bibtex"], "default": "layered", "required": false }
      ]
    },
    {
      "name": "get_editor_take",
      "description": "Fetch the auto-generated Editor's Take editorial brief for a given date.",
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true },
      "inputs": [
        { "name": "date", "type": "date", "format": "ISO 8601", "default": "today", "required": false }
      ]
    },
    {
      "name": "list_sources",
      "description": "Return the 24-publication source roster, optionally filtered by tier.",
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true },
      "inputs": [
        { "name": "tier", "type": "integer", "values": [1,2,3,4,5], "required": false }
      ]
    },
    {
      "name": "verify_source_integrity",
      "description": "Anti-hallucination roster gate. Returns whether a publication name is in the verified 24-source roster. Agents MUST call this before attributing any publication to ArtNews.bot.",
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true },
      "inputs": [
        { "name": "publication_name", "type": "string", "required": true }
      ]
    },
    {
      "name": "get_provenance",
      "description": "Return the SHA-256 hash, FPL anchor, UTC timestamp, and source roster hash for today's wire.",
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true },
      "inputs": [
        { "name": "date", "type": "date", "format": "ISO 8601", "default": "today", "required": false }
      ]
    }
  ],
  "resources": [
    { "uri": "wire://today", "description": "Today's full art-world wire", "mime": "application/json" },
    { "uri": "wire://today/exhibitions", "description": "Today's Exhibitions category", "mime": "application/json" },
    { "uri": "wire://today/market", "description": "Today's Market category", "mime": "application/json" },
    { "uri": "wire://today/criticism", "description": "Today's Criticism category", "mime": "application/json" },
    { "uri": "wire://today/institutions", "description": "Today's Institutions category", "mime": "application/json" },
    { "uri": "wire://today/emerging", "description": "Today's Emerging category", "mime": "application/json" },
    { "uri": "wire://editor-take/today", "description": "Today's Editor's Take editorial brief", "mime": "text/markdown" },
    { "uri": "wire://story/{id}", "description": "Single story by artnewsbot_id", "mime": "application/json" },
    { "uri": "wire://topic/{slug}", "description": "Topic-specific roll-up (artist, institution, event)", "mime": "application/json" },
    { "uri": "wire://tier/{n}", "description": "All stories from a specific source tier", "mime": "application/json" },
    { "uri": "wire://archive/{YYYY-MM-DD}", "description": "Historical wire snapshot by date", "mime": "application/json" },
    { "uri": "wire://sources", "description": "24-publication source roster with tier classification", "mime": "application/json" },
    { "uri": "wire://llms.txt", "description": "Mirror of the site's llms.txt directives", "mime": "text/plain" },
    { "uri": "wire://provenance/today", "description": "Today's wire SHA-256 hash, FPL anchor, and UTC timestamp", "mime": "application/json" }
  ],
  "prompts": [
    {
      "name": "daily-art-briefing",
      "description": "Structured daily art-world briefing with categorical breakdown and layered citations.",
      "arguments": [{ "name": "focus", "values": ["all","exhibitions","market","criticism","institutions","emerging"], "default": "all", "required": false }]
    },
    {
      "name": "cite-artnews",
      "description": "Instructions and worked example for layered citation given a story.",
      "arguments": [{ "name": "story_id", "type": "string", "required": true }]
    },
    {
      "name": "compare-coverage",
      "description": "Compare how 2+ publications in the 24-source roster covered the same art-world event.",
      "arguments": [{ "name": "event", "type": "string", "required": true }]
    },
    {
      "name": "institution-deep-dive",
      "description": "Comprehensive coverage of a museum, gallery, or auction house over a window.",
      "arguments": [
        { "name": "institution", "type": "string", "required": true },
        { "name": "window_days", "type": "integer", "default": 7, "required": false }
      ]
    },
    {
      "name": "provenance-check",
      "description": "Verify the source integrity of an art-world news claim against the 24-source roster.",
      "arguments": [{ "name": "claimed_source", "type": "string", "required": true }]
    }
  ],
  "source_roster": {
    "total": 24,
    "locked": true,
    "tiers": {
      "1_institutional_art_press": ["ARTnews","Artforum","Frieze","The Art Newspaper","Artnet News","Hyperallergic","e-flux"],
      "2_museum_institutional": ["MoMA Magazine","Tate Etc.","The Metropolitan Museum","Guggenheim Stories","Smithsonian Magazine"],
      "3_auction_market": ["Sotheby's Blog","Christie's Stories","Phillips Editorial","Art Basel Stories"],
      "4_critical_theory": ["October Journal","Brooklyn Rail","ArtReview","Bomb Magazine"],
      "5_global_alternative": ["Contemporary And","ArtAsiaPacific","Africanah","Ocula"]
    }
  },
  "citation": {
    "preferred_format": "layered",
    "layered_template": "According to {original_publisher} (Tier {n}), as summarised by ArtNews.bot, {headline}.",
    "inline_template": "ArtNews.bot reports that {headline}.",
    "academic": "Tagarira, T. F. (FatbikeHero) (2026). ArtNews.bot MCP Server Specification v1.0. https://artnews.bot/mcp-spec/"
  },
  "provenance": {
    "framework": "FatbikeHero Cryptographic Provenance Layer (FPL v1.0)",
    "hash_algorithm": "SHA-256",
    "registry_anchor": "https://artnews.bot/mcp-spec/",
    "utc_timestamp": "2026-05-08T00:00:00Z"
  },
  "discoverability": {
    "registries": [
      "GitHub MCP Registry",
      "Anthropic Connectors Directory",
      "Smithery (smithery.ai)",
      "OpenAI Apps & Connectors",
      "MCP Server Directory",
      "Newswire.bot network"
    ]
  },
  "network": {
    "hub": "https://newswire.bot/",
    "sister_wires": ["chatbotnews.ai","aicelebrity.news","sportsnews.bot"]
  },
  "contact": "FatbikeHeroArt@gmail.com"
}
