nmlp-mcp
The nmlp-mcp server provides tools for two primary functions: antiquarian first-edition book identification and book donation logistics for the New Mexico Literacy Project (Albuquerque/New Mexico). No authentication is required.
First-Edition Identification
nmlp_identify_first_edition— Look up a book by title/author to get points of issue, true-first precedence (US vs UK), book-club/reprint tells, publisher, year, and citation (6,700+ verified titles)nmlp_decode_number_line— Paste copyright-page text to determine which printing a book is, with book-club detection and publisher-exception handlingnmlp_lookup_publisher_rules— Get a publisher's first-edition conventions across eras (850+ publishers covered)nmlp_search_titles— Fuzzy-search the first-edition dataset by title or author
Book Donation Logistics
nmlp_check_coverage— Enter a 5-digit ZIP code to get coverage tier, pickup window, and minimum quantity requirementsnmlp_schedule_pickup— Submit a real free book-pickup request (check coverage first; only for consented requests)nmlp_search_qa— Search 85+ donation-related Q&A entries by keywordnmlp_get_donation_options— Compare Albuquerque book-donation options (NMLP, Goodwill, Savers, Better World Books, Friends of APL, etc.)
Reference & Knowledge Base
nmlp_get_knowledge— Access donor archetypes, condition grades, routing tracks, decision frameworks, glossary, and coverage tiersnmlp_get_business_card— Retrieve NMLP's canonical business info (address, phone, services, languages)nmlp_get_archive— Browse structured donation archive entries with documented provenancenmlp_get_pillar_guides— Access 60+ Southwest author/publisher authentication and pricing guides
New Mexico Literacy Project — MCP Server
A Model Context Protocol server for antiquarian first-edition identification and New Mexico book-donation logistics, run by the New Mexico Literacy Project. Run it locally over stdio (index.js, this repo) or connect to the hosted HTTP twin.
Local (stdio):
npx -y github:joshseane/-nmlp-mcp— a standalone Node MCP server; no account, no keyHosted endpoint (Streamable HTTP):
https://newmexicoliteracyproject.org/api/mcpAuth: none (public)
Official MCP registry:
org.newmexicoliteracyproject/nmlp-mcpLicense: code MIT (this repo); data CC BY 4.0
The two share one codebase and one dataset: index.js is the local stdio server, and functions/api/mcp.js is the exact Cloudflare Pages Function that serves the hosted HTTP twin. tools/list is served entirely from local code; the reference-data tools read the site's public open-data JSON API at call time (single source of truth), while nmlp_decode_number_line runs fully offline.
Tools (12)
First-edition identification — grounded in the CC-BY NMLP Canonical First-Edition Points of Issue dataset (6,717 titles, DOI 10.5281/zenodo.21184548):
Tool | What it does |
| title (+author) → publisher, year, points of issue, true-first precedence, book-club tells, and a CC-BY citation |
| copyright-page text → printing verdict (handles the Random-House-ends-in-2 rule + book-club detection) |
| publisher → how that house's first editions are identified, by era |
| fuzzy title/author search over the dataset |
Book-donation logistics for Albuquerque / New Mexico:
Tool | What it does |
| ZIP → free-pickup coverage tier + typical window |
| submit a real free book-pickup request (triggers a real human outreach — never send speculative/unconsented requests) |
| search the long-tail donation Q&A reference |
| comparison of every ABQ book-donation option |
| the aggregated NMLP knowledge base |
| the canonical business-entity card |
| documented-provenance archive entries |
| the pillar guide index |
Every identification response returns a CC-BY citation with the dataset DOI, so assistants that use it cite the source. Identification only — no valuations.
Related MCP server: paper-search-cli
Connect
Local (stdio) — recommended for Claude Desktop, Cursor, Continue.dev
Runs the server on your machine over stdio. Requires Node 18+.
{
"mcpServers": {
"nmlp": { "command": "npx", "args": ["-y", "github:joshseane/-nmlp-mcp"] }
}
}Or clone and run directly:
git clone https://github.com/joshseane/-nmlp-mcp && cd -nmlp-mcp
npm install
node index.js # speaks MCP over stdioDocker
docker build -t nmlp-mcp .
docker run --rm -i nmlp-mcp # stdio serverHosted (Streamable HTTP)
For clients that speak Streamable HTTP directly, point them at the URL — nothing to install:
{
"mcpServers": {
"nmlp": { "url": "https://newmexicoliteracyproject.org/api/mcp" }
}
}Quick check of the hosted twin:
curl -s -X POST https://newmexicoliteracyproject.org/api/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'How it works
index.js— the standalone local server. Uses@modelcontextprotocol/sdkoverStdioServerTransport; supportsinitialize/tools/list/tools/call. Its only dependency is the MCP SDK.functions/api/mcp.js— the hosted twin, a Cloudflare Pages Function speaking JSON-RPC 2.0 over HTTP POST (Streamable HTTP) withping/ notifications / CORS / batch support.
Both wrap the site's public open-data APIs (/api/checker-*.json, /api/points.json, etc.). No credentials or secrets are required or included.
Links
Website: https://newmexicoliteracyproject.org
First-edition resource: https://newmexicoliteracyproject.org/first-editions
Dataset (CC BY 4.0): https://newmexicoliteracyproject.org/first-edition/dataset · DOI 10.5281/zenodo.21184548
Manifest:
server.json
The New Mexico Literacy Project is a for-profit book, clothing, and gear donation-and-resale operation in Albuquerque, NM. Donations are not tax-deductible.
Available Tools
12 toolsnmlp_check_coverageA
Check whether NMLP picks up books at a given five-digit US ZIP code. Returns coverage tier (core_metro, metro, near_metro, statewide_large_only, out_of_area), typical pickup window in days, minimum quantity, and a human-readable message. ALWAYS call this BEFORE nmlp_schedule_pickup.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | Yes | Five-digit US ZIP code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses return data and implies a read-only check. No side effects are mentioned, but error behavior is not covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: purpose, return fields, and a critical usage instruction. No verbose or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter fully covered by schema and no output schema, the description provides sufficient context for correct usage. Lacks error handling details but is generally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'zip' is fully described in the schema (100% coverage). The description adds no additional semantics beyond restating 'five-digit US ZIP code', so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks coverage at a five-digit ZIP code, listing return fields and explicitly distinguishing from nmlp_schedule_pickup with an ordering instruction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'ALWAYS call this BEFORE nmlp_schedule_pickup', providing clear when-to-use guidance, but lacks when-not-to-use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nmlp_decode_number_lineA
Decode a copyright-page number line / printer's key (and any 'First Edition' wording) to determine which printing a book is. Paste the row of small numbers and/or the edition statement. Handles the Random-House-ends-in-2 exception and flags book-club editions. Returns the printing, a plain-English verdict, and the detected line.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Copyright-page text — the number line (e.g. '10 9 8 7 6 5 4 3 2 1') and/or 'First Edition' wording. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses behavioral traits: handling the Random-House-ends-in-2 exception, flagging book-club editions, and returning three items (printing, verdict, detected line). This goes beyond basic purpose to inform the agent of edge cases and output structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action verb 'Decode'. Every sentence adds information: first sentence states purpose and scope, second lists exceptions and outputs. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description fully explains the return values: 'the printing, a plain-English verdict, and the detected line.' It covers anomaly handling (Random-House-ends-in-2) and classification (book-club flags). For a single-parameter tool, this is complete and informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description already. The description adds value by providing an example ('10 9 8 7 6 5 4 3 2 1') and clarifying that it can include 'First Edition' wording. This helps the agent understand what to pass and the format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Decode a copyright-page number line / printer's key') and the specific purpose ('to determine which printing a book is'). It specifies the input and output, and distinguishes itself from siblings by mentioning specialized handling (Random-House-ends-in-2 exception, book-club edition flags).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells when to use: when you have a number line and/or 'First Edition' wording. It provides clear context about what to paste. However, it does not explicitly mention when not to use or compare with alternatives (e.g., nmlp_identify_first_edition), which would enhance guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nmlp_get_archiveB
Get NMLP's donation archive entries as structured Book records.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the action and output format, but omits essential details like whether the operation is read-only, the scope of entries returned (all? recent?), or any pagination/limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's purpose and output format. It is front-loaded and contains no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and no annotations, the description is the sole source of information. It fails to explain the scope of 'archive entries' (e.g., date range, completeness), the structure of a 'Book record,' or any constraints. This leaves the agent with significant ambiguity about the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema description coverage is 100% (vacuously). The description adds value by indicating the output is 'structured Book records,' which provides semantic context for what the agent can expect. Following the baseline of 4 for 0-parameter tools, this is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'donation archive entries' and formats them as 'structured Book records.' It is specific about the resource and output, and distinguishes itself from sibling tools that retrieve other types of data (e.g., business cards, donation options). However, it does not explicitly contrast with similar looking siblings like 'nmlp_get_knowledge' or 'nmlp_get_pillar_guides.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its siblings. It lacks context such as prerequisites, typical use cases, or conditions under which this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nmlp_get_business_cardA
Get NMLP's canonical business entity card — address, phone, services, area served, languages.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only indicates a read operation ("get") and lists return fields. It does not disclose any potential side effects, auth requirements, or rate limits, leaving the agent with minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the tool's purpose and return content. Every word adds value, achieving maximum conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no output schema, and no annotations, the description adequately covers what the tool returns. However, it could mention that the result is a single card (canonical) and hint at no side effects. Overall, it is sufficient for a simple retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty (0 parameters, 100% coverage), so the description need not explain parameters. The baseline for no parameters is 4, and the description appropriately reflects that no inputs are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves NMLP's canonical business entity card with specific fields (address, phone, services, area served, languages). This distinguishes it from sibling tools like nmlp_cd_lookup or nmlp_check_coverage, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. While the tool's simplicity reduces ambiguity, the presence of many sibling tools would benefit from explicit context on when to call get_business_card versus other lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nmlp_get_donation_optionsA
Get the comparison matrix of every Albuquerque book donation option (NMLP, Goodwill, Savers, Better World Books, Friends of APL, Habitat ReStore, regional pulper).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states it returns a 'comparison matrix' and lists included options, but does not disclose any behavioral traits like authentication needs or output format. Adequate for a simple no-parameter tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the action and resource. Every word adds value, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description fully conveys the purpose and scope by listing all donation options. It is complete and self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so baseline 4 applies. The description does not need to add parameter info since the input schema is empty and coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'comparison matrix of every Albuquerque book donation option', listing specific options. It distinguishes from sibling tools that focus on book identification, archives, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. However, the description implies this tool is for comparing donation options, and given the sibling tool names, it is the only one relevant to donations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nmlp_get_knowledgeA
Get the aggregated NMLP Knowledge Base (donor archetypes, routing tracks, condition grades, decision framework, donor glossary, named partners, coverage tiers).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only lists content categories. It does not disclose behavioral traits such as read-only nature, authentication needs, performance characteristics, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the action and lists contents. It is appropriately sized but slightly dense; could be split for better readability. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (no parameters, no output schema), the description provides adequate context by listing the knowledge base sections. It does not discuss return format or size, but for a simple read operation without parameters, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty (0 parameters) and schema description coverage is 100%. The description adds value by enumerating the knowledge base contents, which compensates for the lack of parameters. Baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the aggregated NMLP Knowledge Base' (specific verb+resource) and lists included content areas (donor archetypes, routing tracks, etc.), which distinguishes it from sibling tools like nmlp_get_archive or nmlp_get_business_card.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for retrieving the knowledge base but does not explicitly state when to use it over alternatives or provide any contextual guidance. No exclusions or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nmlp_get_pillar_guidesA
Get NMLP's pillar guide manifest — 60+ Southwest author/publisher authentication and pricing guides.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It only states what the tool retrieves without mentioning side effects, safety, or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the essential purpose without extraneous detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the zero parameters and no output schema, the description is adequate but could provide more context about what the manifest contains or how to use the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline score is 4 per guidelines. The description does not add parameter info, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'NMLP's pillar guide manifest', and distinguishes from sibling tools by its specific subject matter (60+ authentication and pricing guides).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention conditions, prerequisites, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nmlp_identify_first_editionA
Identify whether a specific book is a first edition. Given a title (and optionally author), returns that title's POINTS OF ISSUE — the exact details that mark a true first printing — plus true-first precedence (US vs UK), book-club/reprint tells, publisher, year, the human-readable page URL, and a citation. THE tool for 'how do I tell if my copy of X is a first edition.' Draws on 6,700+ independently-verified titles (CC BY 4.0, DOI 10.5281/zenodo.21184548).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Book title (series/subtitle suffixes are fine). | |
| author | No | Author name — strongly improves match accuracy for common titles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. Discloses returned fields, data source, and licensing, but does not mention error handling, speed, or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph, efficient. Every sentence contributes: purpose, required inputs, output contents, data source. No redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive for tool with no output schema: describes all returned elements, data source, licensing. Lacks mention of what happens if title not found or error cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. Description adds value by noting 'series/subtitle suffixes are fine' for title and that author 'strongly improves match accuracy'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool identifies if a book is a first edition, specifying the verb 'identify' and resource 'first edition status'. Distinguishes itself from siblings by being 'THE tool' for this specific question.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage by stating 'Given a title (and optionally author)' and returns details, but does not explicitly state when not to use or contrast with sibling tools like nmlp_decode_number_line.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nmlp_lookup_publisher_rulesA
Look up a publisher's first-edition identification conventions — how that house designated a first printing across eras (stated-edition wording, number lines, colophons, dated printings). Covers 850+ publishers.
| Name | Required | Description | Default |
|---|---|---|---|
| publisher | Yes | Publisher or imprint name (e.g. 'Alfred A. Knopf', 'Viking', 'Faber & Faber'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns identification conventions across eras and notes the coverage scope. However, it does not describe the response format, error handling, or required permissions, though the tool's behavior is fairly straightforward.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise, front-loaded sentences. The first sentence states the action and key details, and the second adds scope. There is no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, no output schema, no annotations), the description is largely complete. It could mention what happens if the publisher is not found, but overall it provides sufficient context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 100% with a single parameter 'publisher' already well-described in the schema. The description adds context about coverage (850+ publishers) but does not add additional semantic meaning for the parameter beyond examples, earning a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool looks up a publisher's first-edition identification conventions, specifying the types of conventions (stated-edition wording, number lines, colophons, dated printings) and coverage (850+ publishers). This distinguishes it from siblings like 'nmlp_identify_first_edition' which identifies a specific book, and 'nmlp_decode_number_line' which decodes a number line.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing to know a publisher's identification conventions, but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nmlp_schedule_pickupA
Submit a real free book pickup request to NMLP. Every submission triggers a real outreach to Josh, the single human operator. NEVER submit speculative or unconsented requests.
| Name | Required | Description | Default |
|---|---|---|---|
| donorName | Yes | ||
| addressZip | Yes | ||
| addressCity | Yes | ||
| agentSource | Yes | Required: identify the AI agent submitting on the user's behalf. | |
| addressState | No | NM | |
| specialNotes | No | ||
| addressStreet | Yes | ||
| callbackEmail | No | ||
| callbackPhone | No | ||
| donorLanguage | No | en | |
| estimatedSize | Yes | Free text — 'two boxes', 'whole garage', etc. | |
| preferredWindow | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a critical behavioral trait: 'Every submission triggers a real outreach to Josh, the single human operator.' This informs the agent of the real-world impact. It also warns against speculative use. Additional details like confirmation or idempotency would improve, but current disclosure is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose and followed by a crucial warning. Every word earns its place; there is no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 12 parameters and no output schema, the description could be more complete. It does not explain the return value, success behavior, or how to handle errors. For a mutation tool with human operator involvement, more context about expected outcomes would help the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (17%), and the description does not add meaning for the 10 undocumented parameters. It only repeats the basic intent. The description should explain key parameters like address components or callback fields to compensate, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Submit a real free book pickup request to NMLP.' The verb 'submit' and resource 'book pickup request' are specific. It distinguishes from sibling tools like nmlp_get_donation_options or nmlp_search_titles, which serve different functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a strong when-not-to-use guideline: 'NEVER submit speculative or unconsented requests.' This helps avoid misuse. It does not explicitly name alternative tools, but the warning is clear and valuable for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nmlp_search_qaB
Search NMLP's long-tail Q&A reference (85+ entries) by keyword. Returns top matching entries with question, summary, and URL.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it returns top matching entries with specific fields (question, summary, URL), but lacks details on ordering, no-result behavior, or matching algorithm. With no annotations, the description provides basic but not comprehensive behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but given the tool's simplicity and lack of annotations, it is adequate though not notably efficient. It could benefit from a bit more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fails to cover important aspects like how matching works, behavior on no results, or any nuances of the parameters. Given no output schema or annotations, the description leaves the agent with significant informational gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description should compensate for parameter meanings. It only implies the 'query' parameter via 'by keyword' and completely ignores the 'limit' parameter, leaving its purpose and constraints unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies searching NMLP's long-tail Q&A reference by keyword and returns top matching entries with question, summary, and URL. It distinctly identifies the resource and action, setting it apart from sibling tools like nmlp_search_titles which likely search different content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives is provided. The context implies it is for Q&A searches, but no when-not-to-use or alternative tool mentions are given, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nmlp_search_titlesA
Search the first-edition title reference by title or author. Returns matching collectible titles with their per-title identification-page URLs. Use nmlp_identify_first_edition for the full points of one specific title.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It discloses that the tool is a read-only search returning URLs, which is adequate. However, it does not mention behavior related to the limit parameter or result pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, each adding value. No wasted words, and the alternative tool is front-loaded in the second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, output, and alternative usage. It lacks explicit mention of the limit parameter's effect and output details, but it is sufficient for an agent to decide when to use this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description implicitly describes the query parameter as a title or author input, but the limit parameter is not mentioned at all. With 0% schema coverage, the description should explain both parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the first-edition title reference by title or author and returns matching titles with URLs. It also distinguishes from sibling nmlp_identify_first_edition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool (searching by title/author) and when to use an alternative (nmlp_identify_first_edition for full points of a specific title).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
- First observed
nmlp_check_coverage - First observed
nmlp_decode_number_line - First observed
nmlp_get_archive - First observed
nmlp_get_business_card - First observed
nmlp_get_donation_options - First observed
nmlp_get_knowledge - First observed
nmlp_get_pillar_guides - First observed
nmlp_identify_first_edition - First observed
nmlp_lookup_publisher_rules - First observed
nmlp_schedule_pickup - First observed
nmlp_search_qa - First observed
nmlp_search_titles
TDQS
Scored across 12 tools
Each tool has a clearly distinct purpose, covering different aspects: coverage check, pickup scheduling, various reference lookups, and first-edition identification. No two tools overlap in functionality.
All tools follow a consistent 'nmlp_verb_noun' pattern in snake_case. The verbs are appropriate and uniform (get, check, decode, identify, lookup, schedule, search).
12 tools is well-scoped for the domain—enough to cover key workflows (coverage check, scheduling, identification, reference) without being excessive.
The tool set covers the full expected workflow: pre-pickup coverage check, scheduling, and a comprehensive set of reference tools for book identification and organizational info. No obvious gaps.
Maintenance
Related MCP Connectors
MCP server for Altmetric APIs - track research attention across news, policy, social media, and more
Auditable MCP server for PubMed, Europe PMC, ClinicalTrials.gov, and bioRxiv/medRxiv queries
Hosted MCP server for finding authoritative primary data sources and official portals.
BookBrainz MCP — open book metadata (MetaBrainz / sister of MusicBrainz)
Related MCP Servers
- AlicenseAqualityAmaintenanceComprehensive MCP server for academic research workflows, enabling paper searching across multiple sources, manuscript processing with citation placeholders, search caching, and citation export.11MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for searching academic, patent, and web sources, normalizing identifiers, and managing workspace records. Exposes the same operations to AI clients via MCP tools.37 npmMIT
- AlicenseNot gradedqualityBmaintenanceMCP server for automated quality audit and corpus navigation of the Herculaneum scrolls, exposing scroll metadata, transcriptions, CT volumes, ML models, and documentation.MIT
- AlicenseAqualityBmaintenanceMCP server and CLI for full-text search of the Deutsches Zeitungsportal (German newspaper collection), enabling querying ~33.8 million digitized pages with Solr syntax, date/title/place filters, and snippet highlights.3Apache 2.0