{
  "schema": "https://pdf2md.dev/.well-known/mcp.json",
  "name": "PDF to Markdown",
  "description": "Convert PDF documents to clean, LLM-ready Markdown. Tables, formulas and OCR, with a hosted MCP server and a REST API.",
  "version": "2.0.0",
  "vendor": "pdf2md.dev",
  "homepage": "https://pdf2md.dev/",
  "documentation": "https://pdf2md.dev/developers/",
  "mcp": {
    "transport": "streamable-http",
    "url": "https://pdf2md.dev/api/v2/mcp",
    "authentication": {
      "type": "bearer",
      "header": "Authorization",
      "format": "Bearer p2m_<api_key>",
      "obtain": "Create an API key in the Chrome extension, in the web app at https://pdf2md.dev/app/, or via POST https://pdf2md.dev/api/v2/api-keys",
      "note": "API-key bearer auth over TLS. Hosted OAuth (oauth-authorization-server / oauth-protected-resource metadata) is not offered yet."
    },
    "documentation": "https://pdf2md.dev/developers/#mcp"
  },
  "tools": [
    { "name": "pdf_to_markdown_create_job_from_url", "description": "Create a conversion job from a PDF URL." },
    { "name": "pdf_to_markdown_create_job_from_upload", "description": "Create a conversion job from an uploaded PDF." },
    { "name": "pdf_to_markdown_get_job", "description": "Get a job's status, pages, truncated flag, and on failure the error_code/error_message reason." },
    { "name": "pdf_to_markdown_list_jobs", "description": "List recent jobs and slot usage." },
    { "name": "pdf_to_markdown_get_markdown", "description": "Fetch the Markdown result (only when status is ready)." },
    { "name": "pdf_to_markdown_delete_job", "description": "Delete a job and free its slot." },
    { "name": "pdf_to_markdown_get_limits", "description": "Get the account's tier limits and current slot usage." }
  ],
  "prompts": [
    { "name": "convert-pdf-url-to-markdown", "description": "Ask for a URL if absent, create a job, poll until ready or error, fetch Markdown only when ready, then report size, pages and the truncated flag." },
    { "name": "convert-uploaded-pdf-to-markdown", "description": "Check upload constraints, create an upload job, poll and fetch the result." },
    { "name": "clean-conversion-slots", "description": "List jobs and delete finished ones to free slots." }
  ],
  "openapi": {
    "full": "https://pdf2md.dev/api/v2/openapi.json",
    "ai_actions": "https://pdf2md.dev/api/v2/openapi.ai.json"
  },
  "discovery": {
    "llms": "https://pdf2md.dev/llms.txt",
    "llms_full": "https://pdf2md.dev/llms-full.txt"
  },
  "pricing": "https://pdf2md.dev/pricing/",
  "support": "https://pdf2md.dev/support/"
}
