{
  "serverInfo": {
    "name": "piszczek.pl Knowledge Interface",
    "version": "1.1.0"
  },
  "description": "Read-only access to Michał Piszczek's articles, complete site catalog, named AI concepts, evidence, canonical citations and AI economics calculators.",
  "url": "https://piszczek.pl/mcp",
  "transport": {
    "type": "streamable-http"
  },
  "protocolVersion": "2025-11-25",
  "capabilities": {
    "tools": true
  },
  "authentication": {
    "type": "none"
  },
  "documentationUrl": "https://piszczek.pl/cite#ai-use",
  "attribution": {
    "required": true,
    "author": "Michał Piszczek",
    "authorUrl": "https://piszczek.pl/michal-piszczek",
    "licenseUrl": "https://piszczek.pl/.well-known/rsl.xml"
  },
  "tools": [
    {
      "name": "search_michal_piszczek_knowledge",
      "description": "Search Michał Piszczek's articles and named concepts by question or keywords. Returns canonical URLs and attribution.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": { "type": "string", "description": "Question, phrase or keywords to search for." },
          "limit": { "type": "integer", "minimum": 1, "maximum": 20, "default": 5, "description": "Maximum number of results." }
        },
        "required": ["query"],
        "additionalProperties": false
      },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    },
    {
      "name": "get_article",
      "description": "Get one published article as clean Markdown with metadata, evidence and a canonical citation.",
      "inputSchema": {
        "type": "object",
        "properties": { "slug": { "type": "string", "description": "Article slug from its piszczek.pl/blog URL." } },
        "required": ["slug"],
        "additionalProperties": false
      },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    },
    {
      "name": "list_articles",
      "description": "List every published Michał Piszczek article with metadata, evidence and canonical URL.",
      "inputSchema": { "type": "object", "properties": {}, "additionalProperties": false },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    },
    {
      "name": "list_site_pages",
      "description": "List every canonical public page on piszczek.pl, classified as article, concept, tool, quiz, profile or index.",
      "inputSchema": { "type": "object", "properties": {}, "additionalProperties": false },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    },
    {
      "name": "get_sitemap",
      "description": "Get the canonical sitemap location and its complete structured URL catalog.",
      "inputSchema": { "type": "object", "properties": {}, "additionalProperties": false },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    },
    {
      "name": "get_concept",
      "description": "Get the canonical definition and source for PAA, Proof Debt, Joule Wars, JVT or another named concept.",
      "inputSchema": {
        "type": "object",
        "properties": { "concept": { "type": "string", "description": "Concept slug, name or alias." } },
        "required": ["concept"],
        "additionalProperties": false
      },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    },
    {
      "name": "get_citation",
      "description": "Get canonical author, URL, dates, plain-text citation and BibTeX for an article or concept.",
      "inputSchema": {
        "type": "object",
        "properties": { "target": { "type": "string", "description": "Article or concept slug." } },
        "required": ["target"],
        "additionalProperties": false
      },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    },
    {
      "name": "list_concepts",
      "description": "List Michał Piszczek's named frameworks with definitions and canonical source URLs.",
      "inputSchema": { "type": "object", "properties": {}, "additionalProperties": false },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    },
    {
      "name": "find_evidence",
      "description": "Find primary or authoritative evidence records attached to factual articles.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": { "type": "string", "description": "Claim, topic or source keywords." },
          "limit": { "type": "integer", "minimum": 1, "maximum": 20, "default": 6, "description": "Maximum number of evidence records." }
        },
        "required": ["query"],
        "additionalProperties": false
      },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    },
    {
      "name": "get_author",
      "description": "Get the canonical entity record for Michał Piszczek, including role, identity URLs and expertise.",
      "inputSchema": { "type": "object", "properties": {}, "additionalProperties": false },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    },
    {
      "name": "answer_from_michal_piszczek_knowledge",
      "description": "Build an extractive, evidence-grounded answer packet from Michał Piszczek's published articles and concepts.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "question": { "type": "string", "description": "Question to answer from the published knowledge base." },
          "limit": { "type": "integer", "minimum": 1, "maximum": 20, "default": 5, "description": "Maximum number of source matches." }
        },
        "required": ["question"],
        "additionalProperties": false
      },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    },
    {
      "name": "calculate_paa",
      "description": "Calculate Proof-Adjusted Autonomy from completion, evidence, validation and timeliness percentages.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "a": { "type": "number", "description": "Autonomous completion percentage." },
          "c": { "type": "number", "description": "Complete evidence percentage." },
          "r": { "type": "number", "description": "Independent validation percentage." },
          "t": { "type": "number", "description": "On-time verification percentage." }
        },
        "additionalProperties": false
      },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    },
    {
      "name": "calculate_jvt",
      "description": "Compare two AI models by Joules per Verified Task using token, energy and pass-rate inputs.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "tokensA": { "type": "number", "description": "Model A tokens per attempt." },
          "joulesPerTokenA": { "type": "number", "description": "Model A joules per token." },
          "passRateA": { "type": "number", "description": "Model A verified pass percentage." },
          "tokensB": { "type": "number", "description": "Model B tokens per attempt." },
          "joulesPerTokenB": { "type": "number", "description": "Model B joules per token." },
          "passRateB": { "type": "number", "description": "Model B verified pass percentage." }
        },
        "additionalProperties": false
      },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    },
    {
      "name": "calculate_joules_per_verified_task",
      "description": "Long-name alias that compares two AI models by Joules per Verified Task.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "tokensA": { "type": "number", "description": "Model A tokens per attempt." },
          "joulesPerTokenA": { "type": "number", "description": "Model A joules per token." },
          "passRateA": { "type": "number", "description": "Model A verified pass percentage." },
          "tokensB": { "type": "number", "description": "Model B tokens per attempt." },
          "joulesPerTokenB": { "type": "number", "description": "Model B joules per token." },
          "passRateB": { "type": "number", "description": "Model B verified pass percentage." }
        },
        "additionalProperties": false
      },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    },
    {
      "name": "calculate_agent_cost",
      "description": "Calculate fully loaded agent-hour cost from token usage, model price and human review time.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "tokensM": { "type": "number", "description": "Million tokens per agent-hour." },
          "pricePerM": { "type": "number", "description": "Price in USD per million tokens." },
          "reviewMinutes": { "type": "number", "description": "Human review minutes per agent-hour." },
          "humanHourlyRate": { "type": "number", "description": "Human hourly rate in USD." }
        },
        "additionalProperties": false
      },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    },
    {
      "name": "calculate_agent_hour_cost",
      "description": "Long-name alias that calculates fully loaded agent-hour cost including human verification.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "tokensM": { "type": "number", "description": "Million tokens per agent-hour." },
          "pricePerM": { "type": "number", "description": "Price in USD per million tokens." },
          "reviewMinutes": { "type": "number", "description": "Human review minutes per agent-hour." },
          "humanHourlyRate": { "type": "number", "description": "Human hourly rate in USD." }
        },
        "additionalProperties": false
      },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    },
    {
      "name": "calculate_token_cost",
      "description": "Estimate monthly token costs across indicative AI model tiers, including prompt-cache savings.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "inputMillionTokens": { "type": "number", "description": "Input million tokens per month." },
          "outputMillionTokens": { "type": "number", "description": "Output million tokens per month." },
          "cacheHitPercent": { "type": "number", "description": "Prompt-cache hit percentage." }
        },
        "additionalProperties": false
      },
      "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false }
    }
  ]
}
