conceptio-search
Resolves arXiv IDs and searches arXiv open-access preprints from the Conceptio archive.
Resolves DOI identifiers to their open-access document records in the Conceptio archive.
Searhes OWASP security standards and publications from the Conceptio archive.
Resolves PubMed IDs and searches PubMed/PMC biomedical literature from the Conceptio archive.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@conceptio-searchSearch for recent NIST publications on zero trust"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
conceptio-search
Search 1M+ open-access documents — papers, standards, textbooks, and case law — right from your terminal or your AI agent.
conceptio-search is a CLI and Model Context Protocol (MCP) server for the Conceptio Open Knowledge Archive — 1M+ open-access documents from 500+ living sources, indexed daily. Every source is open access or public domain. The CLI authenticates with an API key: sign in once, save the key, search from anywhere.
For humans — search, export citations in 11 formats (BibTeX, APA, MLA, Chicago, IEEE, Harvard, RIS, Bluebook, OSCOLA, ISO 690, ANSI Z39), and download PDFs to disk with one command.
For AI agents — a stdio MCP server with nine tools, so Claude, Cursor, Windsurf, OpenCode, or any MCP client can search, queue batch searches, resolve identifiers (RFC, DOI, arXiv, PMID, PMCID, NIST/FIPS, W3C, US case citation), walk the reference graph, save PDFs into your workspace, and hand a document to Zotero or Obsidian.
100% self-contained — talks only to the public HTTPS API. No internal infrastructure; your key lives in
~/.conceptio/config.json.
Install
pip install conceptio-searchRequires Python 3.8+. (Checked, not just claimed: the suite parses every source file at the declared floor's grammar, so the promise cannot rot silently.)
The console script is conceptio; python -m conceptio_cli is the same entry
point for a virtualenv that was never activated.
Related MCP server: styx-search
Authenticate (one time)
The CLI needs an API key before it can search:
conceptio auth ckey_live_...Get the key by signing in at conceptio.app and
creating one on your profile (Free, Dev, Pro, or Enterprise). The key is stored in
~/.conceptio/config.json and sent as X-Api-Key with every request.
conceptio quota reports your tier at any time. Every command below
assumes this step is done — without a key the CLI refuses to run and tells
you exactly this.
Quick start
# Search — supports source:/lang:/category: directives
conceptio search "attention is all you need" --limit 5
conceptio search "source:nist zero trust" --license commercial-ok
conceptio search "source:eurlex AI act" --json
conceptio search "meditations marcus aurelius" --markdown # for Obsidian/Notion
conceptio search "diffusion models" --offset 20 # paginate past the first page
# Multi-query programmatic search — two modes:
conceptio search --batch queries.json --json # queue 1–50 searches, print the job handle
conceptio search --batch queries.json --wait --json # queue, then block until done and print results
conceptio search --batch queries.json --wait --timeout 60 # …but never block longer than a minute
conceptio search --batch queries.json --sync --json # run 1–10 immediately, no queue (one request)
conceptio search-job <job-id> --json # poll once; repeat on your own cadence
conceptio search-job <job-id> --wait --json # poll until done, then print results
# Resolve a known identifier straight to its document(s)
conceptio resolve "RFC 2119"
conceptio resolve "doi:10.1109/access.2020.2986772"
conceptio resolve "2604.08499" # arXiv
conceptio resolve "PMID 41961061" # PubMed
conceptio resolve "PMC10601397" # PubMed Central
conceptio resolve "NIST FIPS 199"
conceptio resolve "347 U.S. 483" # US case citation (Supreme Court)
conceptio resolve "20-5364" # federal docket
conceptio resolve "RFC 2119" --json
# Download the original PDF
conceptio download 297465 -o paper.pdf # by document ID
conceptio download "https://arxiv.org/pdf/2604.21816v1.pdf" # by URL
# Citations — 11 formats: bibtex, apa, mla, chicago, ieee, harvard,
# ris, bluebook, oscola, iso690, ansiz39
conceptio cite 7288 --format bibtex
conceptio cite 7288 --format apa
conceptio cite 7288 --format iso690
# Document metadata
conceptio info 2844
conceptio proof 2844 # machine-readable evidence bundle
conceptio proof 2844 -q "quantum" # passage-level proof for a phrase
# License key (Pro) or API key + quota
conceptio auth CONCEPTIO-XXXX-XXXX-XXXX # Pro license (one-time, account-bound)
conceptio auth ckey_live_... # API key (agent/machine credential)
conceptio quota
conceptio quota --json # {tier, auth, credits…} for a status surface
# The flag may come before the subcommand, the way machine callers write it
conceptio --json search "zero trust"
# Version
conceptio --version
# AI agent server
conceptio mcpExample
$ conceptio search "source:nist zero trust" --limit 3
Conceptio - 3 results for "source:nist zero trust"
# Year Title Author Source PDF
1 n.d. NIST SP 1800-35: Implementing a Zero Trust Scott Rose (NIST); … NIST [x]
2 n.d. NIST SP 800-207: Zero Trust Architecture Scott Rose (NIST); … NIST [x]
3 n.d. NIST SP 800-207A: A Zero Trust Architecture Ramaswamy Chandramo… NIST [x]
Tip: conceptio download 2844 saves the PDF, conceptio cite 2844 exports a citation.Query words are highlighted in gold in the title column. The PDF column shows
[x] when a direct PDF link is available; [ ] rows still surface the source
URL via conceptio info <id>.
Search directives
The CLI understands the same directives as the Conceptio web app — they are stripped from the query and applied as real filters:
Directive | Example | Effect |
|
| Restrict to one or more sources ( |
|
| Restrict to a language (ISO code) |
|
| Restrict to a category tab |
|
| Keep only sources whose catalog metadata explicitly permits commercial use; this is a conservative filter, not a redistribution grant. |
Directives can be combined freely: conceptio search "cat:\"Computer Science & Tech\" source:nist lattice cryptography".
Resolve
conceptio resolve recognises several identifier shapes and returns a typed
response (kind: rfc | doi | arxiv | pmid | pmcid | nist | w3c | case plus
fallback null for plain text). Unrecognised identifiers degrade to a regular
search so the command never fails silently.
The kind describes the identifier, not the archive: a well-formed DOI this
archive does not hold answers with kind: "doi", total: 0 and an empty
results list, which is a correct empty answer rather than a failure. Every
example above resolves to at least one document today — the suite that drives
the shipped CLI against the live API asserts exactly that, so an example can
only rot if that check is skipped.
Model Context Protocol (MCP)
The conceptio mcp command starts a stdio JSON-RPC MCP server. It is dependency-free
(no MCP SDK required) and works with any MCP client.
The server is dual-era: it answers the current 2026-07-28 revision —
per-request _meta, server/discover, resultType, cache hints — and still
serves the older initialize handshake (2024-11-05 … 2025-11-25) for clients
that predate it. A client that speaks both eras probes with server/discover
first and finds us; a handshake client is served exactly as before.
A key is required for tool calls. The server starts without one, so a host can discover it and
read its tool list — and then answers every tools/call with an in-band error carrying the setup
steps. Hand it the key either way: run conceptio auth <key> once, or give it to the host through the
host's own environment, which is how the official registry listing declares it:
{ "mcpServers": { "conceptio": { "command": "conceptio", "args": ["mcp"],
"env": { "CONCEPTIO_API_KEY": "ckey_live_…" } } } }Tools
Tool | Description |
| Search the archive ( |
| Run multiple searches in one call — queue 1–50 as a background job and return an opaque handle ( |
| Resolve a known identifier — RFC ( |
| Download the original open-access PDF for a Conceptio document ID or a direct PDF URL to a local path. |
| Get a citation for a document ID in any of 11 formats (BibTeX, APA, MLA, Chicago, IEEE, Harvard, RIS, Bluebook, OSCOLA, ISO 690, ANSI Z39). |
| Full metadata (title, author, source, category, license, year, language, URL, direct PDF URL, description) for a document ID. |
| Walk the reference graph from a seed |
| Save one document to Zotero, or open a metadata-only Obsidian handoff. Server-side ownership, connector trial and failure semantics apply. |
| Bulk-save up to 500 document ids to Zotero. Requires Pro, institutional or licensed access — there is no free-trial path. |
Claude Desktop
Add to claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"conceptio": {
"command": "conceptio",
"args": ["mcp"]
}
}
}Cursor
Settings → Cursor Settings → MCP → Add new MCP server:
{
"mcpServers": {
"conceptio": {
"command": "conceptio",
"args": ["mcp"]
}
}
}OpenCode / Windsurf / Antigravity
The same JSON shape works in any MCP-aware client — point it at conceptio mcp
and the nine tools above are exposed automatically. An MCP host may supply the
credential by environment (CONCEPTIO_API_KEY, or CONCEPTIO_BEARER_TOKEN for a
signed-in session) instead of writing ~/.conceptio/config.json.
After adding, restart the client and you can ask, for example:
"Find the NIST post-quantum encryption standard and download the PDF into my workspace."
Manual smoke test
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | conceptio mcpWindows PowerShell quirk: pwsh pipes text to native commands as UTF-16, which the server (UTF-8 JSON-RPC) answers with a
Parse error. Real MCP hosts speak UTF-8 and are unaffected — this only bites hand-rolledecho ... | conceptio mcpprobes from pwsh. Save the request as UTF-8 first instead:'{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | Out-File -Encoding utf8 req.jsonl cmd /c "conceptio mcp < req.jsonl"
Fair use
Every source in Conceptio is open access or public domain. The CLI sends your API key with every request and is rate-limited per tier (see the rate limits); the browser keeps a separate free trial for casual searching without an account.
Add a credential once with conceptio auth <key> — it is stored in
~/.conceptio/config.json and sent with every request. conceptio auth
accepts either a self-hosted API key (ckey_live_..., the
agent/machine credential issued from your account — store it plainly, it is
hashed server-side and shown only once) or a Pro license key
(CONCEPTIO-XXXX-XXXX-XXXX, one-time / account-bound). API keys are
X-Api-Key; license keys are X-License-Key; exactly one credential is sent.
Without a saved key, every data command exits before touching the network:
Authentication required — save an API key before searching.conceptio quota reports your current tier (public / pro /
enterprise) and which auth the server honored (api_key / license /
firebase / public); conceptio quota --json returns the same report as
the structured object a status surface can render, with the human credential
hint on stderr so stdout stays parseable.
Configuration
State lives in ~/.conceptio/config.json:
{
"api_base": "https://www.conceptio.app",
"license_key": "",
"api_key": "",
"default_limit": 10,
"default_citation_format": "bibtex"
}Override the API base (for staging, self-hosted mirrors, or a local proxy) by
editing api_base. Public API origins must use HTTPS; only loopback HTTP
origins such as http://127.0.0.1:8000 are allowed for local development.
The client refuses cross-origin API redirects so credentials cannot be sent to
an unexpected host. PDF downloads reject loopback/private-network targets,
limit responses to 100 MiB, and write atomically. The MCP server additionally
keeps output_path beneath its current workspace and rejects traversal or
symlink escapes. Set default_limit to change the search page size; set
default_citation_format to any of the 11 supported format names.
Host processes (editors, CI, agent runtimes) can supply credentials without
writing to the config file — environment variables win over saved values:
CONCEPTIO_API_KEY, CONCEPTIO_LICENSE_KEY, and CONCEPTIO_API_BASE. A
signed-in human session can also be passed per-run as
CONCEPTIO_BEARER_TOKEN (the same short-lived bearer token the web app uses);
it takes precedence over a machine key, and exactly one credential is ever
sent.
Development
pip install -e ".[test]" # or: pip install -e . && pip install pytest
pytest tests/ # offline tests (mocked HTTP, no network)
python tests/live_check.py # live: the real CLI against a loopback stub
python tests/live_prod_check.py --yes # smoke: the real CLI against the real APIThe offline suite patches httpx with a MockTransport and stubs
ConceptioClient where it composes other services. No test in it makes a real
network call — which is also its ceiling: it can prove the client composes a
request and parses a response, but nothing about what the CLI decides from a
live exchange.
tests/live_check.py covers that gap. It starts the shared loopback stub
(conceptio-nvim/test/stub_api.py, dialled into done/running/expired job
modes and exhausted/pro/not_configured connector modes), points the real
binary at it with CONCEPTIO_API_BASE and an environment credential, and asserts
on exit codes, on stdout and on the stub's request log. It covers the whole
surface rather than a sample of it — search (directives, filters, markdown,
batch, jobs), resolve, cite, info, proof, download's boundary, the credential
paths, the connector failure reasons, all nine MCP tools, and the exact argv
each editor client sends (see below). It also refuses to run quietly against the
wrong binary: if conceptio --version does not match the version this tree
declares, every check would be proving an older install, so it fails and says so.
Everything stays on loopback: no account, no key, no production credit, and the
CLI is given a throwaway config directory so your real
~/.conceptio/config.json is never read or written. CONCEPTIO_CLI selects
the binary, CONCEPTIO_STUB the stub, CONCEPTIO_LIVE_VERBOSE=1 echoes each
command's output. It exits nonzero and prints every failing check with the
command's own output.
tests/live_prod_check.py is that harness's deliberate opposite, and closing
the pair is the point. Everything above is pinned against a server we control,
so none of it can see the live API moving — a renamed field in /api/me, a
refusal that changes wording, an edge rule that starts rejecting the CLI's
transport. Those ship silently, because this repo's own suite stays green while
every real user sees the drift.
It is opt-in (--yes) and safe by construction rather than by discipline: it
refuses to run unless the base is the shipped default, the credential is a
placeholder that any inherited CONCEPTIO_* variable is stripped out in favour
of, and it only runs reads the API keeps open without a credential plus commands
whose expected outcome is a refusal — no search ever executes. rm -f the
guard and it stops being able to tell production from a stub; re-point the
default base and 6 of its 9 checks go red, which is how you know they bite.
The client contract
The CLI is also a dependency of the shipped client surfaces — the Neovim plugin
and the Obsidian plugin. They exec this binary
with an argv list and read stdout; nothing couples them but that grammar. tests/client_contract.py records every
invocation they make, with the file it came from:
tests/test_cli_contract.pyparses each row againstcli.build_parser(), and while a client's checkout sits next to this repo, asserts its sources still contain the subcommand and flags the row claims.tests/live_check.pyruns the same rows against a real binary on the stub.
If you change a subcommand or a flag, one of the two will fail and name the client. Add a row when a client gains a call.
The README is a client too. tests/test_readme_contract.py extracts every
invocation from the code blocks above and parses it against the same grammar,
so a renamed flag cannot leave the documentation teaching a command that exits
with a usage error. Shell constructs (a pipe, a redirect) are skipped by an
explicit rule rather than by exception, and the test fails if it stops finding
the examples — an extractor that quietly matches nothing proves nothing.
License
MIT — see LICENSE.
Part of the Conceptio Open Knowledge Archive — 500+ living sources: arXiv, NIST, OWASP, CISA, PubMed/PMC, MIT OpenCourseWare, EUR-Lex, Project Gutenberg, and more.
Available Tools
9 toolsconceptio_connectors_sendAIdempotent
Save one document to Zotero or open a metadata-only Obsidian handoff. Server-side ownership, connector trial, and failure semantics apply.
| Name | Required | Description | Default |
|---|---|---|---|
| vault | No | Optional Obsidian vault name | |
| doc_id | Yes | Conceptio document ID to save | |
| connector | Yes | Target connector: 'zotero' saves the document, 'obsidian' opens a metadata-only handoff. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (destructiveHint=false, idempotentHint=true, openWorldHint=true), so the description only needs to add context. 'Server-side ownership, connector trial, and failure semantics apply' gestures at entitlement and failure behavior without saying what those semantics actually are, which leaves the agent guessing about error modes for an open-world side-effecting call.
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 tight sentences with the action front-loaded and no filler. Nothing is wasted, though the brevity is arguably at the cost of the missing detail noted elsewhere.
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?
There is no output schema, so the description should say what comes back from a save versus an Obsidian handoff (confirmation, URL, item key). Instead it defers to a vague 'failure semantics apply' clause, leaving the return shape of an open-world write undefined.
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 100%, so the schema already explains connector and doc_id. The description's Zotero/Obsidian split repeats what the connector enum description already states, and the optional 'vault' parameter is never mentioned. 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?
States a specific verb and resource ('Save one document to Zotero or open a metadata-only Obsidian handoff'), and the word 'one' implicitly separates it from the sibling conceptio_connectors_send_all. It never names that sibling explicitly, so the differentiation is inferred rather than stated.
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 dual-mode phrasing implies when each connector applies, but there is no explicit guidance on when to prefer this over conceptio_connectors_send_all, no prerequisites spelled out, and no exclusions. Usage must be inferred from the connector semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
conceptio_connectors_send_allA
Bulk-save selected documents to Zotero. Pro, institutional, or licensed access is required; no free trial path.
| Name | Required | Description | Default |
|---|---|---|---|
| doc_ids | Yes | Conceptio document IDs to save (1-500) | |
| connector | No | Target connector — only 'zotero' supports bulk saves. | zotero |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write/non-idempotent/open-world profile, and the description adds a genuinely new behavioral fact not in structured data: a paid-licence prerequisite with no free-trial fallback. It does not disclose duplicate-creation risk (idempotentHint=false) or partial-failure behavior on large batches, keeping it below 5.
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 short sentences, zero waste, with the core action front-loaded and the eligibility constraint immediately after. Every clause earns its place.
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 two-parameter tool with no output schema, the essentials (what it does, who can use it) are covered. But a bulk mutation accepting up to 500 IDs should say something about duplicate handling or partial-save outcomes, which is exactly the gap left by idempotentHint=false and destructiveHint=false.
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%, so doc_ids range (1-500) and the single-value 'zotero' enum are already fully documented. The description's 'Bulk-save' and 'to Zotero' merely restate what the schema declares, adding no syntax, ordering, or ID-provenance detail. Baseline 3 applies.
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?
Specific verb+resource+destination: 'Bulk-save selected documents to Zotero.' The word 'Bulk' implicitly distinguishes it from the sibling conceptio_connectors_send, but the sibling is never named, so the agent must infer the single-vs-many split.
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 gives a hard gating condition ('Pro, institutional, or licensed access is required; no free trial path'), which is useful eligibility context. However, it never says when to choose this over conceptio_connectors_send, nor what to do when access is absent — usage is only implied by the word 'Bulk'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
conceptio_download_pdfAIdempotent
Download the original open-access PDF of a paper, standard, or book to a local file path. Accepts a Conceptio document ID (from conceptio_search) or a direct PDF URL.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | Yes | Local destination file path (e.g. 'workspace/paper.pdf') | |
| doc_id_or_url | Yes | Conceptio document ID (digits) or direct PDF URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, openWorldHint=true, idempotentHint=true, destructiveHint=false; the description resolves the most confusing part of that profile by clarifying that the write is to a local file path, and adds the real constraint that only open-access originals can be fetched. It stops short of covering overwrite behavior for an existing output file or failure modes on network errors.
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 and resource, second sentence covering the accepted input forms. No filler or restated title matter.
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 output schema, the description adequately conveys the effect (a file written to the given local path) and the two accepted input forms. A brief note on what is returned (e.g., saved path or success confirmation) and overwrite behavior would close the remaining gap for a tool with openWorldHint=true.
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 100%, so both parameters (doc_id_or_url, output_path) are already documented in the schema, and the description roughly restates that an ID or URL is accepted. It adds the provenance hint that the ID comes from conceptio_search, but nothing about path semantics or ID format beyond the schema.
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?
States a specific verb (download) and resource (the original open-access PDF of a paper, standard, or book) plus the destination (a local file path). An agent can tell this apart from read-only siblings like conceptio_get_document, though the differentiation is implicit rather than stated.
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 when to use it by naming the input sources — a Conceptio document ID 'from conceptio_search' or a direct PDF URL — which hints at a search-then-download flow. It gives no explicit when-not conditions or alternatives, and doesn't say what to do if the paper is not open-access.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
conceptio_get_citationBRead-onlyIdempotent
Get an academic citation for a document in BibTeX, APA, MLA, or Chicago format.
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | Conceptio document ID | |
| format | No | Citation format to render (default: bibtex). | bibtex |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint false-destructive, so the safety profile is covered. The description adds nothing beyond that: it does not mention whether the citation is derived locally or fetched externally (relevant given openWorldHint=true), nor what happens with missing metadata.
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?
One short, front-loaded sentence with no filler. The only inefficiency is the partial format enumeration, which consumes space while understating the actual enum.
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?
A simple read-only, two-parameter tool with a fully documented schema and no output schema, so the description need not explain return values. The remaining gap is the untold story of the extra formats and of what happens when citation data is incomplete.
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% and the enum parameter is fully documented in the schema, so baseline 3 applies. The description does add the practical framing of which formats exist, but it lists only four of the eleven supported formats, which could mislead an agent into assuming those are the only options.
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?
States a specific verb ('Get') and resource ('academic citation') tied to a document, and names the output formats. It is distinguishable from siblings like conceptio_get_document or conceptio_search by the citation-rendering angle, though it never explicitly contrasts with them.
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?
There is no when-to-use or when-not-to-use guidance, and no mention of alternatives such as conceptio_get_document when metadata rather than a formatted citation is wanted. Usage is only inferable from the name and the doc_id parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
conceptio_get_documentARead-onlyIdempotent
Fetch complete metadata (title, author, source, license, description, direct PDF URL) for a document ID.
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | Conceptio document ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety is covered. The description adds value by specifying the returned field set, which helps distinguish it from the download sibling, but says nothing about behavior on an invalid/unknown ID or any limits.
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?
A single front-loaded sentence with the verb and resource first and the payload enumerated after; every word earns its place and nothing is padded.
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?
There is no output schema, but the description compensates by listing the metadata fields returned, which is the key thing an agent needs. Minor gaps remain around failure behavior for a bad ID, but nothing essential to calling it is missing.
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?
Only one parameter with 100% schema description coverage, so the schema carries the semantics. The description only restates 'document ID' and adds no hint about where the ID comes from (e.g., a prior search result), so baseline 3 is correct.
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?
States a specific verb ('Fetch') and resource ('complete metadata') and enumerates exactly what comes back (title, author, source, license, description, direct PDF URL). It does not distinguish itself from siblings like conceptio_search or conceptio_download_pdf, which is the only gap.
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?
'for a document ID' implicitly signals the tool applies when an ID is already known (as opposed to search), but there is no explicit when-to-use, when-not-to-use, or named alternative. The agent must infer the boundary against conceptio_search and conceptio_download_pdf on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
conceptio_graph_walkARead-onlyIdempotent
Walk the reference graph from one seed source_id — the compliance walk: what that document cites (direction='out'), what cites it (direction='in'), or both. Optional kind filter selects cites/updates. Returns nodes with a distance from the seed and canonical edges carrying their relation kinds; dangling targets appear as claimed nodes. Metadata-only: spends no credits. Use when an agent needs provenance — what cites this regulation two hops out — instead of a keyword search.
| Name | Required | Description | Default |
|---|---|---|---|
| hops | No | Traversal depth (1 or 2); the server caps the walk here | |
| kind | No | Relation kind(s) to traverse; pass several to intersect them | |
| seed | Yes | Archive source_id to start the walk from (e.g. 'usc_42_1396a') | |
| direction | No | out = what the seed cites, in = what cites the seed, both = either | out |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnly and idempotent behavior, and the description adds useful context beyond them: the walk is metadata-only and spends no credits, and dangling targets appear as claimed nodes. It also explains the shape of returned nodes and edges, though it does not discuss rate limits or auth.
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 front-loaded with the core action and remains dense without obvious filler. A few phrases like 'the compliance walk' add flavor but do not obstruct selection.
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?
There is no output schema, but the description sufficiently explains that results include nodes with distances and canonical edges with relation kinds. It also covers the dangling-target case, leaving only minor edge cases like pagination unspecified.
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%, so parameter meaning is already well documented. The description reinforces direction and kind filtering but mostly restates what the schema provides, making the baseline 3 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 uses a specific verb and resource: walk the reference graph from a seed source_id. It distinguishes the operation from keyword search and names the provenance use case, so an agent can select it confidently over siblings like conceptio_search.
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?
It explicitly says when to use the tool: when an agent needs provenance, such as finding what cites a regulation two hops out. It also contrasts this directly with keyword search, giving a clear alternative path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
conceptio_resolveARead-onlyIdempotent
Resolve a known identifier straight to its document(s) in the archive: an RFC number ('RFC 2119'), a DOI ('doi:10.1109/access.2020.2986772'), an arXiv ID ('2604.08499'), a PubMed ID ('PMID 41961061'), a PubMed Central ID ('PMC10601397'), a NIST/FIPS designation ('NIST FIPS 199'), a W3C spec shortname ('w3c_digital-credentials'), or a US legal citation / docket ('347 U.S. 483', '20-5364'). Unrecognized identifiers fall back to a text search. Use this when an agent has a concrete citation/reference it wants to locate precisely.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The identifier to resolve (e.g. 'RFC 2119', 'doi:10.x/y', 'PMC10601397') | |
| limit | No | Max results (1-50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, non-destructive, so safety is covered. The description adds genuinely new behavior: unrecognized identifiers silently degrade to a text search, which an agent needs to know to interpret results correctly. It does not mention rate limits, auth, or what the returned documents look like.
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 verb and resource lead, and the long enumerations are load-bearing because they define what 'recognized' means. The format list could be compressed (e.g. grouped by ID family), but nothing is redundant.
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 two-parameter read-only lookup with full schema coverage and annotations, the description covers the identifier vocabulary, the failure mode, and the precision intent. It leaves the return shape (single document vs. ranked list) and behavior when one citation matches multiple documents unspecified, and no output schema exists to fill that in.
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% so the baseline is 3, but the description earns extra credit by illustrating the accepted id syntaxes (RFC, doi:, arXiv, PMID, PMC, NIST/FIPS, W3C shortname, US legal citation/docket) far beyond the schema's two examples. It says nothing about how limit interacts with ambiguous identifiers, which is the remaining gap.
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?
States a specific verb ('Resolve') and a specific resource ('known identifier' to 'document(s) in the archive'), then enumerates the identifier families it accepts. This is clearly distinguishable from conceptio_search, whose job is free-text lookup rather than exact citation resolution.
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?
Explicitly says when to reach for it ('when an agent has a concrete citation/reference it wants to locate precisely') and notes the fallback path for unrecognized identifiers. It stops short of naming conceptio_search as the alternative for vague queries, so the routing is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
conceptio_searchARead-onlyIdempotent
Search the open-access archive — papers, technical standards (NIST, OWASP, CISA), textbooks, and legal sources (EUR-Lex, HUDOC) with license-aware access. Requires an API key: run conceptio auth once first. Query supports directives like 'source:nist zero trust'.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results (1-20) | |
| query | Yes | Search keywords or directives (e.g. 'source:nist zero trust') | |
| license | No | Optional rights filter requiring explicit commercial-use permission. | |
| category | No | Optional category filter: 'Science & Medicine', 'Economics & Finance', 'Computer Science & Tech', 'Social Sciences & Humanities', 'Arts & Culture', 'Law & Regulation' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so the safety profile is covered. The description adds two things annotations cannot convey: the auth requirement and the license-aware access model, which tells the agent results carry rights constraints rather than being freely reusable.
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?
Three sentences, front-loaded with the scope statement followed by the blocking prerequisite and the query syntax example. No filler, though the query directive example is redundant with the schema and could be dropped or used for something more informative.
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?
Scope, auth, and license semantics are covered, but with no output schema the description never hints at the shape of results (do results include citation metadata, licenses, snippets?). For a search tool the agent still has to discover the return format empirically.
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%, so all four parameters are already documented, including the enum for `license` and the category list. The description's only added value is the 'source:nist zero trust' directive hint, which the schema's own `query` description already repeats verbatim, so there is little incremental meaning.
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 opens with a specific verb and resource ('Search the open-access archive') and enumerates the content domains (papers, standards, textbooks, legal sources) plus the license-aware angle. It implicitly separates itself from get_document/download_pdf, but never distinguishes it from the equally named conceptio_search_batch sibling.
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?
It supplies a real prerequisite ('Requires an API key: run `conceptio auth` once first'), which is useful operational context, but gives no guidance on when to choose this tool over conceptio_search_batch or conceptio_graph_walk. Usage is implied by the content scope rather than stated as a selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
conceptio_search_batchA
Run multiple independent searches in one call. Default: queue 1–50 for bounded background execution and return an opaque job handle (poll it with the public API or conceptio search-job). Set sync:true to run 1–10 immediately and return all results in one response — each fresh subquery uses one search credit either way.
| Name | Required | Description | Default |
|---|---|---|---|
| sync | No | Run synchronously (1–10 queries, results in one call) instead of queueing a job | |
| queries | Yes | Search objects with q and optional sources, category, language, sort, limit, and offset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavior beyond the annotations: queued execution returns an opaque job handle, polling is done via the public API or `conceptio search-job`, and sync mode returns all results in one response. It also states that each fresh subquery consumes one search credit, which aligns with the non-read-only and non-idempotent annotations.
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 front-loaded with the purpose, then efficiently covers both modes, polling, and credit cost. Every sentence adds useful information without repetition.
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 two-parameter tool with full schema coverage and annotations, the description supplies the operational details an agent needs: mode selection, return behavior, polling path, and credit implications. No output schema exists, yet the return shape for each mode is adequately described.
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%, so the schema already documents the sync and queries parameters. The description adds useful meaning by explaining credit usage per subquery and clarifying the queue-versus-sync limits, though it does not expand on the query object fields beyond the schema.
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 states a specific verb and resource: run multiple independent searches in one call. It clearly distinguishes the batch operation from a single search and explains both execution modes.
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?
It clearly explains when to use the default queued mode versus sync:true, including the 1–50 and 1–10 limits. It does not explicitly name conceptio_search as the alternative for single searches, but the batch context is inferable.
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.
9 tool updates
v0.3.15- First observed
conceptio_connectors_send - First observed
conceptio_connectors_send_all - First observed
conceptio_download_pdf - First observed
conceptio_get_citation - First observed
conceptio_get_document - First observed
conceptio_graph_walk - First observed
conceptio_resolve - First observed
conceptio_search - First observed
conceptio_search_batch
TDQS
Scored across 9 tools
Most tools target distinct stages: search, identifier resolution, metadata retrieval, PDF download, citation formatting, graph walking, and connector export. Minor potential confusion exists between conceptio_search and conceptio_resolve because resolve falls back to text search, and between conceptio_connectors_send and conceptio_connectors_send_all, but the descriptions make the intended boundaries clear.
All tools use snake_case with a consistent conceptio_ prefix, which makes the set predictable overall. However, the suffix pattern varies between verb_noun forms like conceptio_get_document and noun_verb forms like conceptio_connectors_send or conceptio_graph_walk, so it is not a strictly uniform verb_noun convention.
Nine tools is well-scoped for a search and retrieval server covering discovery, resolution, metadata, citation, download, batch search, graph exploration, and connector export. Each tool covers a meaningful distinct capability rather than bloating the surface.
The set covers the main research workflow: search, identifier resolution, batch search, metadata retrieval, PDF download, citation export, graph traversal, and Zotero/Obsidian handoff. Minor gaps exist around authentication/status handling and broader connector or full-text extraction options, but core workflows are covered without dead ends.
Maintenance
Related MCP Connectors
Real-time Amazon, WIPO & PACER data for AI agents — 19 tools via the MCP protocol.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP — built for coding agents.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to download, index, and semantically search PDF research papers using 8 MCP tools.19 PyPI3GPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients such as Claude to search over 450,000+ open-access papers, standards, and legal documents, download PDFs, retrieve citations, and fetch full document metadata.MIT
- AlicenseAqualityBmaintenanceEnables AI agents and LLM tools to verify academic citations against real literature, detect hallucinated references, retrieve authoritative metadata and DOIs, generate BibTeX/APA/IEEE citations, and search over 200M+ scientific publications via MCP tools.317 npmMIT
- AlicenseAqualityBmaintenanceEnables LLM agents to search, fetch, and read legal open-access scientific papers with provenance tracking through a stable MCP tool contract.8MIT