Vaquill

io.github.Vaquill-AI由 GitHub 账号 Vaquill-AI 发布v0.4.2更新于 Nov 7, 2026

Search US and Indian statutes, regulations, constitutions, and court rules.

已验证Streamable HTTP可网页运行网页搜索与抓取知识与记忆

概览

AI 生成的概览

Vaquill 让助手检索美国联邦与州初级法律及印度立法,支持引注解析并返回条文全文。

可以做什么
  • 检索美国法规与规章(USC、CFR、各州法典、宪法、法院规则、联邦公报),可按州、篇、年份等筛选
  • 解析 Bluebook 引注到具体条文,读取全文、元数据与官方来源链接
  • 结合上下文阅读条文:前后条、定义条款、交叉引用、其他州类似规定及观察到的变更
  • 浏览法律层级结构,并查询各司法辖区收录了哪些语料
  • 检索与浏览印度中央及州法案、监管机构文件、修订历史,以及 IPC/CrPC 到 BNS/BNSS 的对应条文
  • 提供通用 search 与 fetch 接口、免费价格查询,以及指南与覆盖范围资源
适用场景
适合需要基于官方原文回答美国或印度法律法规问题、核对引注、做多州横向比较的场景,让助手引用初级法律原文而非凭记忆作答。
运行要求
可通过 mcp.vaquill.ai 的远程 streamable HTTP 端点使用,或本地运行 uvx 包。需要 Vaquill 账号与 API 密钥(vq_key_...),以 Authorization Bearer 头、URL 路径或本地运行的 VAQUILL_API_KEY 提供;也支持 OAuth 登录。美国与印度语料为不同端点。
安装前请注意
API 调用消耗付费额度(1 额度 = 0.01 美元),使用会产生费用。把密钥放在 URL 路径中会留在日志、代理和浏览历史里,建议改用 Authorization 头。返回的法条文本属第三方内容,应视为不可信。工具为只读,但法律变更提醒不通过 MCP 提供。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Vaquill,将其添加到工作区。
  2. 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.Vaquill-AI%2Fvaquill-mcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。

{
  "mcpServers": {
    "vaquill": {
      "type": "http",
      "url": "https://mcp.vaquill.ai/mcp"
    }
  }
}

README

vaquill-mcp

MCP server for Vaquill legal research API. Covers US federal and 50-state primary law: USC, CFR, state statutes and regulations, state and US constitutions, court rules, the Federal Register, executive orders, and agency guidance. Search primary law, resolve statutory citations, browse the hierarchy, and ground answers in official sources, all from your AI tools.

[Discord]

Quick Start

Prerequisites

Sign up at vaquill.ai to get your API key.

Claude.ai (Web)

No installation needed. Add as a remote MCP server from Customize > Connectors > Add custom connector:

Option A: Bearer token (recommended)

Open the Request headers section of the same dialog and add the credential there:

URL:            https://mcp.vaquill.ai/mcpHeader name:    AuthorizationHeader value:   Bearer vq_key_your_key_here

Claude sends the value exactly as you type it and adds no scheme of its own, so the value field holds Bearer vq_key_... and not Authorization: Bearer vq_key_....

Option B: API key in the URL (compatibility)

https://mcp.vaquill.ai/s/vq_key_your_key_here

Still live, and still the only form that works where a client cannot send a header at all. Prefer Option A everywhere else: a credential in a URL is recorded in server logs, proxies and browsing history, which is why Anthropic's connector guidance advises against it and the MCP specification prohibits it.

Available on Claude Pro, Max, Team, and Enterprise plans. The Request headers section is in beta and is enabled per account, it accepts a short allowlist of header names, and it holds at most four. On Team and Enterprise an owner adds the connector under Organization settings first.

Claude Desktop

Open the config file from Settings > Developer > Edit Config:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
json
{  "mcpServers": {    "vaquill": {      "command": "uvx",      "args": ["vaquill-mcp"],      "env": {        "VAQUILL_API_KEY": "vq_key_your_key_here"      }    }  }}

For Indian legislation, add --jurisdiction IN. One process serves one corpus, so run two entries if you want both:

json
{  "mcpServers": {    "vaquill": {      "command": "uvx",      "args": ["vaquill-mcp"],      "env": { "VAQUILL_API_KEY": "vq_key_your_key_here" }    },    "vaquill-india": {      "command": "uvx",      "args": ["vaquill-mcp", "--jurisdiction", "IN"],      "env": { "VAQUILL_API_KEY": "vq_key_your_key_here" }    }  }}

Quit Claude completely and reopen it. It does not reload the file.

Claude Code

Remote (no install):

bash
claude mcp add --transport http --scope user vaquill \  https://mcp.vaquill.ai/mcp \  --header "Authorization: Bearer vq_key_your_key_here"

Local (via uvx):

bash
claude mcp add --scope user vaquill -e VAQUILL_API_KEY=vq_key_your_key_here \  -- uvx vaquill-mcp

--scope user registers the server for every project; the default is the current directory only. -e stores the key with the registration, so it survives Claude Code being launched from an IDE, which an export in your shell profile does not. Both --header and -e are variadic, so they have to come after the server name.

Cursor

Edit ~/.cursor/mcp.json for every project, or .cursor/mcp.json for one.

Remote:

json
{  "mcpServers": {    "vaquill": {      "url": "https://mcp.vaquill.ai/mcp",      "headers": {        "Authorization": "Bearer vq_key_your_key_here"      }    }  }}

Local (via uvx):

json
{  "mcpServers": {    "vaquill": {      "command": "uvx",      "args": ["vaquill-mcp"],      "env": {        "VAQUILL_API_KEY": "vq_key_your_key_here"      }    }  }}

VS Code (Copilot)

Add to .vscode/mcp.json. For every project instead of one, run the MCP: Open User Configuration command and use the same shape there.

Remote:

json
{  "inputs": [    {      "type": "promptString",      "id": "vaquill-authorization",      "description": "Authorization header value",      "password": true    }  ],  "servers": {    "vaquill": {      "type": "http",      "url": "https://mcp.vaquill.ai/mcp",      "headers": {        "Authorization": "${input:vaquill-authorization}"      }    }  }}

The credential goes in a prompt rather than in the file, so the file is safe to commit. VS Code asks for it on first start and remembers it. Restart the server after saving, or the tools will not appear.

Local (via uvx):

json
{  "servers": {    "vaquill": {      "type": "stdio",      "command": "uvx",      "args": ["vaquill-mcp"],      "env": {        "VAQUILL_API_KEY": "vq_key_your_key_here"      }    }  }}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json.

Remote:

json
{  "mcpServers": {    "vaquill": {      "serverUrl": "https://mcp.vaquill.ai/mcp",      "headers": {        "Authorization": "Bearer vq_key_your_key_here"      }    }  }}

Windsurf uses serverUrl for a remote server, not url, and interpolates ${env:VAR} if you would rather read the credential from the environment.

Local (via uvx):

json
{  "mcpServers": {    "vaquill": {      "command": "uvx",      "args": ["vaquill-mcp"],      "env": {        "VAQUILL_API_KEY": "vq_key_your_key_here"      }    }  }}

Available Tools

Tools are generated from the live Vaquill API's OpenAPI spec at startup, so the set always matches the current API. For the authoritative, up-to-date list and per-call credit costs, run the free get_pricing tool or inspect your MCP client's tool list.

The US server publishes 26 tools and the India server 22, counting search and fetch. Every one is read-only. Law change alerts (boards and watches) are deliberately not MCP tools: the API still serves them, so create and manage alerts in the Vaquill console or over the REST API directly.

The main groups (representative tools shown):

US statutes & regulations

USC, CFR, all 50 state codes, constitutions, state court rules, the Federal Register, and agency guidance.

ToolDescription
search_us_statutesHybrid semantic + keyword search; filter by corpusType, state, titleNumber, chapter, year, and more.
get_us_statute_sectionSection metadata by actId (citation, hierarchy, official-source links).
get_us_statute_section_textFull HTML + plain text of a section.
get_sections_batchMetadata for up to 50 sections in one call.
resolve_statute_citationResolve a Bluebook citation (e.g. 42 U.S.C. § 1983) straight to its section. Optional state (a 2-letter code or federal) and corpusType are constraints, and a real citation they exclude comes back with citationOutsideFilters.
list_statute_divisionsBrowse the statutory hierarchy one level at a time.
list_statutes_coverageSelf-describing coverage matrix: which corpora exist in which jurisdiction.

Reading a section in context

ToolDescription
get_section_neighborsThe sections immediately before and after, in statutory order.
get_section_definitionsThe defined terms that govern a section, from its chapter's definitions section.
get_section_cited_byWhich USC/CFR sections cross-reference this one (the inverse of crossReferences).
get_section_cross_stateProvisions in other states addressing the same subject, ranked by similarity.
get_section_changesWhat our refreshes observed changing on this section over time.

Utility

ToolDescription
get_pricingLive API credit pricing (free, no auth).
searchGeneric one-string corpus search returning {id, title, url}.
fetchGeneric one-string retrieval returning {id, title, text, url, metadata}.

search and fetch exist because ChatGPT's deep research and company-knowledge connectors match a corpus server by those exact names and their single-string signature, and refuse to work without them. They are thin wrappers over the typed tools above, which any client that can call them should prefer: the typed ones filter by jurisdiction, corpus, date and status, and these two do not. fetch is deliberately lenient about its id, accepting an act_id, a citation URL, a bare path, or a Bluebook citation such as 42 U.S.C. 1983.

Resources and prompts

This server is not only tools. An MCP server generated from an OpenAPI document publishes one tool per endpoint and nothing else; these two primitives are where the knowledge that is not in the API lives, and neither costs anything in the per-turn tool budget.

Resources (read, don't call):

ResourceContents
vaquill://guideHow to use the corpus correctly: identifier rules, what "still good law" actually means here, what an empty change list does and does not tell you, and where the cost is. Not backed by any endpoint.
vaquill://us/coverageCoverage matrix: every corpusType and its per-jurisdiction counts. Free.
vaquill://in/filtersThe filter vocabulary the India corpus actually holds. Free.
vaquill://pricingLive credit pricing. Free.

Prompts (workflows, with the traps built in):

PromptWhat it encodes
good_law_check(citation)actStatus vs goodLawStatus vs amendmentHistory, and why unknown means unchecked rather than current.
fifty_state_survey(topic, states)Check coverage first, so "no such law" and "not in our corpus" are never conflated.
whats_changed(since, corpus, state)Change capture is observation, not effect; an empty result is not "nothing was amended".
cite_check(text)Batch-resolve rather than looping, then verify the passage's claims against each section.
old_code_citation(citation)India: map IPC/CrPC to the BNS/BNSS provision in force since 1 July 2024 before answering.
indian_provision_check(question)India: read the filter vocabulary first, and state the amendment caveat correctly.

Indian legislation

A separate endpoint on the same host. Central and State Acts plus the instruments of the principal regulators (SEBI, RBI, MCA, IRDAI, TRAI, DGFT): 22,265 enactments and 1,098,577 individually addressable sections.

https://mcp.vaquill.ai/in/mcp        with Authorization: Bearer vq_key_your_key_herehttps://mcp.vaquill.ai/in/s/vq_key_your_key_here      key in the path, as above

Same API key, same credit balance as the US endpoint.

ToolDescription
search_actsSearch Indian legislation down to the section.
list_actsBrowse and filter enactments by jurisdiction, regulator, year, status.
list_act_filtersThe filter vocabulary the corpus actually holds, with counts.
get_act_textSource links (text, PDF, HTML) for one enactment.
get_act_amendmentsAmendment history: what changed, by which Act, effective when.
search / fetchThe same generic pair described above, over Indian legislation.
get_corresponding_provisionsMap a repealed criminal code to its 2023 replacement (IPC to BNS, CrPC to BNSS).

One endpoint serves one jurisdiction, deliberately. The US and India OpenAPI documents are disjoint, and each app derives its entire tool set from one of them, so nothing under /mcp or /s/ can expose an Indian tool and nothing under /in/ can expose a US one. The mount path selects an app; it does not filter one, so there is no per-request check to get wrong. That also keeps an integrator's context window to the jurisdiction they actually work in.

Environment Variables

VariableRequiredDefaultDescription
VAQUILL_API_KEYYes-API key (vq_key_...) from vaquill.ai
VAQUILL_BASE_URLNohttps://api.vaquill.aiAPI base URL
VAQUILL_TIMEOUTNo120Request timeout in seconds
VAQUILL_JURISDICTIONNoUSstdio server only. US or IN. Selects the OpenAPI document, and therefore the whole tool set. The hosted server ignores it and serves both jurisdictions on separate paths.

Hosted server only

The variables below apply to vaquill-mcp-remote (the deployment behind mcp.vaquill.ai) and are ignored by the stdio server.

OAuth is OFF unless the whole VAQUILL_OAUTH_* group is set, and the server behaves exactly as it did before OAuth existed. A PARTIAL group raises at startup rather than serving a half-built discovery document, because Claude caches discovery globally by URL for about five minutes across all users, so a wrong one outlives the misconfiguration that produced it.

VariableRequiredDefaultDescription
HOSTNo0.0.0.0Listen address
PORTNo8000Listen port
VAQUILL_PUBLIC_URLWith OAuth-This server's public URL (https://mcp.vaquill.ai). Becomes the OAuth issuer and the resource in the protected-resource document, which Claude requires to match the URL the user typed, path included.
VAQUILL_INTERNAL_SECRETWith OAuth-Shared secret for resolving an OAuth user to their vq_key_. Must equal MCP_INTERNAL_SECRET on the API. Without it an OAuth caller authenticates and then fails at the first tool call.
VAQUILL_OAUTH_UPSTREAM_JWKS_URIWith OAuth-https://<project-ref>.supabase.co/auth/v1/.well-known/jwks.json. Empty keys means the project is still on symmetric HS256 and no token will verify.
VAQUILL_OAUTH_UPSTREAM_ISSUERWith OAuth-https://<project-ref>.supabase.co/auth/v1
VAQUILL_OAUTH_AUTHORIZE_URLWith OAuth-https://<project-ref>.supabase.co/auth/v1/oauth/authorize
VAQUILL_OAUTH_TOKEN_URLWith OAuth-https://<project-ref>.supabase.co/auth/v1/oauth/token
VAQUILL_OAUTH_CLIENT_IDWith OAuth-The STATIC client registered upstream. Dynamic client registration stays off; this server is itself the DCR/CIMD facade.
VAQUILL_OAUTH_CLIENT_SECRETWith OAuth-Secret for that client
VAQUILL_OAUTH_ALGORITHMNoES256Must match the upstream signing key. RS256 if the project was migrated to RSA.
VAQUILL_OAUTH_AUDIENCENoauthenticatedExpected aud on upstream tokens

The only redirect URI registered upstream is https://mcp.vaquill.ai/auth/callback. Do NOT also register Claude's (https://claude.ai/api/mcp/auth_callback) or Claude Code's loopback: this server proxies the flow, so the upstream never sees them, and the ephemeral-port matching RFC 8252 requires is handled here.

Example Usage

Once configured, you can ask your AI assistant things like:

  • "What does 17 CFR 240.10b-5 say about insider trading?"
  • "Resolve 42 U.S.C. § 1983 to its section and show the full text"
  • "Find California statutes on tenant repair obligations"
  • "Browse the Texas statutory codes, then drill into the Penal Code"

Development

bash
# Clone and installgit clone https://github.com/Vaquill-AI/vaquill-mcp.gitcd vaquill-mcpuv sync --all-extras
# Run locallyVAQUILL_API_KEY=vq_key_... uv run vaquill-mcp

Tests

The suite needs no API key and no network access. Every test runs against the checked-in OpenAPI fixtures in tests/fixtures/, and tests/conftest.py makes any unmocked HTTP call raise, so a clone plus uv sync is the whole setup.

bash
uv sync --extra dev --extra remoteuv run pytest                                    # 407 testsuv run pytest -W error::DeprecationWarning       # what CI runs

CI (.github/workflows/test.yml) runs two jobs, and they are deliberately not redundant. test runs the suite against the locked environment on Python 3.10-3.13. wheel builds the package, installs it into a fresh venv without the lockfile, and runs the same suite there. The second reproduces what a customer gets from uvx vaquill-mcp: a lockfile does not constrain anyone installing the published wheel, so a dependency shipping a breaking major shows up in that job and nowhere else.

bash
# Test with FastMCP inspectoruv run fastmcp dev src/vaquill_mcp/server.py

Security

Report a vulnerability to [email protected] (see SECURITY.md and https://www.vaquill.ai/security/vulnerability-disclosure).

Two things worth knowing before you connect this to an agent that holds other tools:

  • The server is read-only. Every tool carries readOnlyHint: true and destructiveHint: false, and none writes, sends or deletes anything. The hints describe what the tools can do; they are not a security control, and a client should treat annotations from any server as untrusted unless it trusts the server.
  • Returned text is third-party content. Statutes, notices, agency decisions and session laws come from government publishers (and, for some corpora, from vendor collection and OCR). We sanitise markup and restrict source links to government hosts, but we do not filter wording for instructions, and openWorldHint: false describes reach, not provenance. The server sends an instructions note saying so; clients that ignore it should still treat tool output as untrusted.

How It Works

This package is a thin MCP wrapper around the Vaquill Developer API. At startup, it fetches the OpenAPI spec from the live API and auto-generates MCP tools using FastMCP. Tool names are derived automatically from each endpoint's OpenAPI operation id, so new API endpoints show up as clean, ready-to-use tools with no package update; key descriptions are refined for optimal LLM performance. The one exception is a short exclusion list in server.py (_ROUTE_MAPS): the SSE streaming route, and the law change alert routes, which are a product decision rather than a technical limit.

Because the spec is fetched at startup (not bundled), tools automatically reflect any API changes without a package update.

Credits & Pricing

API calls consume credits. The credit costs in the tables above are current at the time of writing; the get_pricing tool and each tool's own description always reflect the live price, so treat those as authoritative if they differ.

1 credit = $0.01 USD

License

MIT

Community

Questions, ideas, or want to contribute? Join the Vaquill community on Discord.

来源:README.md,提交 127475c

工具

0
该服务器需要登录,因此 SourceWeft 无法在没有账号的情况下读取其工具,也未收录。已连接账号所能看到的内容可能因账号及其权限而异。

版本历史

3
  1. v0.4.2最新Nov 7, 2026
  2. v0.4.1Oct 2, 2026
  3. v0.4.0Sep 16, 2026

评分

已满足适用检查项的 85%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分