Conceptio Search

io.github.0x923041-dotcom由 GitHub 帳號 0x923041-dotcom 發布v0.3.14更新於 Nov 4, 2026

Search 1M+ open-access papers, standards, and case law from an AI agent.

概覽

AI 產生的概覽

檢索 Conceptio 開放知識庫中超過百萬篇開放取用論文、標準與判例,並回傳引用資料、PDF 與引用關係圖。

可以做什麼
  • 以關鍵字檢索,並可用來源、語言、類別等指令篩選,或批次排入佇列檢索
  • 解析 RFC、DOI、arXiv、PubMed、NIST/FIPS、W3C 及美國判例等識別碼,直接找到文獻
  • 取得文獻中繼資料,並匯出 BibTeX、APA、MLA、IEEE 等 11 種格式的引用資料
  • 將開放取用的 PDF 下載到工作區
  • 從種子文獻出發,沿引用關係圖往前或往後走一到兩跳
  • 透過連接器把文獻交給 Zotero 或 Obsidian
適用情境
適合需要查找並引用學術文獻或標準、核對引用資料,或在研究與寫作過程中取得原始 PDF 的情境。對依賴開放取用資料的研究、法律與技術寫作流程特別有用。
執行需求
以本機 Python 套件形式執行(需 Python 3.8 以上),透過 uvx 或 conceptio 指令啟動。需要 Conceptio API 金鑰,可透過 CONCEPTIO_API_KEY 環境變數提供,或用命令列工具一次性儲存;也可改用 Pro 授權金鑰。需要能連線到 Conceptio 的 HTTPS API。
安裝前請注意
API 金鑰屬於憑證:會存放在本機設定檔中或經環境變數傳入,並隨每次請求送出。批次儲存到 Zotero 需要付費的 Pro、機構或授權版本,連接器另受伺服器端試用與歸屬規則限制。下載會把 PDF 寫入磁碟;授權篩選只是保守的中繼資料過濾,並不代表可再散布。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Conceptio Search,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

conceptio-search

[Glama score]

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

bash
pip install conceptio-search

Requires 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.


Authenticate (one time)

The CLI needs an API key before it can search:

bash
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

bash
# Search — supports source:/lang:/category: directivesconceptio search "attention is all you need" --limit 5conceptio search "source:nist zero trust" --license commercial-okconceptio search "source:eurlex AI act" --jsonconceptio search "meditations marcus aurelius" --markdown   # for Obsidian/Notionconceptio 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 handleconceptio search --batch queries.json --wait --json         # queue, then block until done and print resultsconceptio search --batch queries.json --wait --timeout 60   # …but never block longer than a minuteconceptio 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 cadenceconceptio 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"                              # arXivconceptio resolve "PMID 41961061"                           # PubMedconceptio resolve "PMC10601397"                             # PubMed Centralconceptio resolve "NIST FIPS 199"conceptio resolve "347 U.S. 483"                            # US case citation (Supreme Court)conceptio resolve "20-5364"                                 # federal docketconceptio resolve "RFC 2119" --json
# Download the original PDFconceptio download 297465 -o paper.pdf          # by document IDconceptio download "https://arxiv.org/pdf/2604.21816v1.pdf"   # by URL
# Citations — 11 formats: bibtex, apa, mla, chicago, ieee, harvard,# ris, bluebook, oscola, iso690, ansiz39conceptio cite 7288 --format bibtexconceptio cite 7288 --format apaconceptio cite 7288 --format iso690
# Document metadataconceptio info 2844conceptio proof 2844                # machine-readable evidence bundleconceptio proof 2844 -q "quantum"   # passage-level proof for a phrase
# License key (Pro) or API key + quotaconceptio auth CONCEPTIO-XXXX-XXXX-XXXX   # Pro license (one-time, account-bound)conceptio auth ckey_live_...              # API key (agent/machine credential)conceptio quotaconceptio quota --json                    # {tier, auth, credits…} for a status surface
# The flag may come before the subcommand, the way machine callers write itconceptio --json search "zero trust"
# Versionconceptio --version
# AI agent serverconceptio mcp

Example

text
$ 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:

DirectiveExampleEffect
source: / src:source:nistRestrict to one or more sources (source:nist source:owasp)
lang: / language:lang:itRestrict to a language (ISO code)
category: / cat:cat:"Law & Regulation"Restrict to a category tab
--license commercial-ok--license commercial-okKeep 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:

json
{ "mcpServers": { "conceptio": { "command": "conceptio", "args": ["mcp"],                                "env": { "CONCEPTIO_API_KEY": "ckey_live_…" } } } }

Tools

ToolDescription
conceptio_searchSearch the archive (query, optional limit 1–20, optional category). Returns structured results with titles, authors, years, source, snippet, and direct_pdf_url when available.
conceptio_search_batchRun multiple searches in one call — queue 1–50 as a background job and return an opaque handle (sync omitted/false), or set sync: true to run 1–10 immediately and return all results in one response.
conceptio_resolveResolve a known identifier — RFC (RFC 2119), DOI (doi:10.1109/access.2020.2986772), arXiv (2604.08499), PubMed ID (PMID 41961061), PubMed Central ID (PMC10601397), NIST/FIPS designation (NIST FIPS 199), W3C spec shortname (w3c_digital-credentials), or US legal citation / docket (347 U.S. 483, 20-5364) — straight to its document(s). Unrecognised identifiers fall back to a text search.
conceptio_download_pdfDownload the original open-access PDF for a Conceptio document ID or a direct PDF URL to a local path.
conceptio_get_citationGet a citation for a document ID in any of 11 formats (BibTeX, APA, MLA, Chicago, IEEE, Harvard, RIS, Bluebook, OSCOLA, ISO 690, ANSI Z39).
conceptio_get_documentFull metadata (title, author, source, category, license, year, language, URL, direct PDF URL, description) for a document ID.
conceptio_graph_walkWalk the reference graph from a seed source_id — what it cites (direction: 'out'), what cites it ('in'), or 'both' — one or two hops, optionally filtered to the cites / updates relation kinds. Returns nodes with their distance from the seed and canonical edges carrying their kinds. Metadata-only: it spends no credits.
conceptio_connectors_sendSave one document to Zotero, or open a metadata-only Obsidian handoff. Server-side ownership, connector trial and failure semantics apply.
conceptio_connectors_send_allBulk-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.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
json
{  "mcpServers": {    "conceptio": {      "command": "conceptio",      "args": ["mcp"]    }  }}

Cursor

Settings → Cursor Settings → MCP → Add new MCP server:

json
{  "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

bash
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | conceptio mcp

Windows 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-rolled echo ... | conceptio mcp probes from pwsh. Save the request as UTF-8 first instead:

powershell
'{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | Out-File -Encoding utf8 req.jsonlcmd /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:

text
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:

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

bash
pip install -e ".[test]"     # or: pip install -e . && pip install pytestpytest tests/                      # offline tests (mocked HTTP, no network)python tests/live_check.py         # live: the real CLI against a loopback stubpython tests/live_prod_check.py --yes   # smoke: the real CLI against the real API

The 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.py parses each row against cli.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.py runs 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.

來源:README.md,提交 ae3603c

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

4
  1. v0.3.14最新Oct 7, 2026
  2. v0.3.11Oct 3, 2026
  3. v0.3.8Sep 27, 2026
  4. v0.3.7Sep 23, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分