{
 "name": "mrm-library",
 "title": "MRM Library",
 "version": "1.0.0",
 "description": "Public, read-only MCP server for the MRM Library (library.mrm.org): full-text search and markdown access to public domain works and works shared with the author's permission. No authentication.",
 "instructions": "MRM Library (library.mrm.org): public domain works and works shared with the author's permission. Read-only. Start with search_library for full-text search, or list_toc to browse collections > works > parts > sections (a part is a volume, year, issue or book; periodicals are keyed by date, e.g. 'improvement-era/1910/01'). resolve_reference turns a citation such as 'Romans 5:8 JST' or 'JD 3:12' into URLs. Section paths are the site's URL paths without the host, e.g. 'jst/romans/5' (older forms such as '<collection>/<work>/<NNN-name>' and '/c/...' are accepted too); always use the paths and URLs the tools return. get_section returns a section's markdown (with YAML frontmatter: citation, source, rights); get_rights and get_work_info return provenance. Numbered verses are anchored as #v<N>. Content is also exposed as MCP resources: library://<path>.",
 "websiteUrl": "https://library.mrm.org",
 "documentationUrl": "https://github.com/aaronshaf/mrm-library/blob/main/docs/mcp.md",
 "url": "https://library.mrm.org/mcp",
 "transport": "streamable-http",
 "transports": [
  {
   "type": "streamable-http",
   "url": "https://library.mrm.org/mcp"
  }
 ],
 "remotes": [
  {
   "type": "streamable-http",
   "url": "https://library.mrm.org/mcp"
  }
 ],
 "protocolVersions": [
  "2025-11-25",
  "2025-06-18",
  "2025-03-26",
  "2024-11-05"
 ],
 "authentication": {
  "required": false,
  "schemes": []
 },
 "stateless": true,
 "readOnly": true,
 "capabilities": {
  "tools": {
   "listChanged": false
  },
  "resources": {
   "subscribe": false,
   "listChanged": false
  },
  "prompts": {
   "listChanged": false
  }
 },
 "tools": [
  {
   "name": "search_library",
   "title": "Search the library",
   "description": "Full-text search over every section of every work (all words must match; titles weigh more). Returns up to 25 hits, each with a reference (e.g. 'Romans 5:8' for a numbered verse, otherwise the section title), an excerpt, the work, the section path, and URLs (HTML with a #v<N> verse anchor where applicable, and the markdown twin). Pass a hit's path to get_section to read it.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "description": "Words to find, e.g. 'charity never faileth'. All words must appear."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25,
      "default": 10,
      "description": "Maximum results (default 10, max 25)."
     },
     "collection": {
      "type": "string",
      "description": "Optional: restrict to one collection slug (e.g. 'history') or to a work path (e.g. 'improvement-era', 'improvement-era/1910')."
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "title": "Search the library",
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
   }
  },
  {
   "name": "list_toc",
   "title": "List the table of contents",
   "description": "Browse the library. With no arguments: every collection (title, description, work and section counts, URL). With `collection` (or `path`) set to a collection slug, or a work, part (volume, year, issue, book) or section path (e.g. 'history', 'improvement-era', 'improvement-era/1910', 'improvement-era/1910/01'): its child parts and/or sections, each with title, path and URLs. Page with limit/offset.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "collection": {
      "type": "string",
      "description": "Optional: a collection slug, or any work/part path as in its URL (no host). Omit to list all collections."
     },
     "path": {
      "type": "string",
      "description": "Same as collection (alias)."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 500,
      "default": 200,
      "description": "Max entries per list (default 200)."
     },
     "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0,
      "description": "Skip this many entries (for paging)."
     }
    },
    "additionalProperties": false
   },
   "annotations": {
    "title": "List the table of contents",
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
   }
  },
  {
   "name": "get_section",
   "title": "Read a section",
   "description": "Return one section's text from its path (its URL path without the host, e.g. 'jst/romans/5'; paths returned by search_library and list_toc work as-is). format 'markdown' (default) includes the YAML frontmatter with citation, source and rights; 'text' returns the body only. Numbered verses appear as '**N** text'. Very long sections are cut at ~200 KB; continue with offset.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "path": {
      "type": "string",
      "description": "Section path, e.g. 'jst/romans/5'. A full URL, legacy /c/ or <shelf>/ forms, .md suffix, #v<N> anchor or library:// URI is also accepted."
     },
     "format": {
      "type": "string",
      "enum": [
       "markdown",
       "text"
      ],
      "default": "markdown",
      "description": "'markdown' = file with frontmatter; 'text' = body without frontmatter."
     },
     "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0,
      "description": "Character offset to continue a truncated section."
     }
    },
    "required": [
     "path"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "title": "Read a section",
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
   }
  },
  {
   "name": "get_rights",
   "title": "Get rights and provenance",
   "description": "Return the rights block for a section or work: status (e.g. public-domain, permission), basis, source, publication year, plus the citation and the original-source link. Use before quoting or redistributing.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "path": {
      "type": "string",
      "description": "Section or work path, e.g. 'jst/romans/5' or 'howe-mormonism-unvailed'."
     }
    },
    "required": [
     "path"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "title": "Get rights and provenance",
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
   }
  },
  {
   "name": "get_work_info",
   "title": "Get work or collection info",
   "description": "Metadata for a work (authors, publication date, publisher, edition, language, type, tags, rights, source, section count and section list), or for a collection, part, volume, year or issue (description, counts, children). A section path returns its parent work.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "path": {
      "type": "string",
      "description": "Work, collection or section path, e.g. 'howe-mormonism-unvailed'."
     }
    },
    "required": [
     "path"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "title": "Get work or collection info",
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
   }
  },
  {
   "name": "resolve_reference",
   "title": "Resolve a citation to URLs",
   "description": "Turn a human citation into library URLs: 'Romans 5:8 JST' (book chapter:verse in a work), 'JD 3:12' (volume:page), 'WCF 3.2' (chapter.section), '<work> p. 123' (printed page) or a path/URL. Returns matches with url (with #v<N> verse or #p<N> page anchor), path, title and how it matched. Also GET /api/resolve?ref=.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "ref": {
      "type": "string",
      "description": "The citation, e.g. 'Romans 5:8 JST' or 'JD 3:12'."
     }
    },
    "required": [
     "ref"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "title": "Resolve a citation to URLs",
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
   }
  }
 ],
 "resources": {
  "uriScheme": "library://",
  "template": "library://{path}",
  "mimeType": "text/markdown"
 },
 "prompts": [
  "research_topic"
 ],
 "related": {
  "llmsTxt": "https://library.mrm.org/llms.txt",
  "index": "https://library.mrm.org/index.json",
  "webmcp": "https://library.mrm.org/webmcp.js"
 }
}