Skip to main content
The Vaquill MCP server gives any Model Context Protocol client (Claude.ai, Claude Desktop, Claude Code, Cursor, VS Code, Windsurf) direct access to the Vaquill AI Developer API. It covers the full US corpus, listed on the MCP overview and in API coverage. Source: github.com/Vaquill-AI/vaquill-mcp.
This page covers the US mount, https://mcp.vaquill.ai/s/_. A separate mount exists for another corpus, described under India mount.

GitHub

Source code and issues

PyPI

uvx vaquill-mcp

Hosted endpoint

https://mcp.vaquill.ai

Quickstart

On Claude, the fastest path is the connector. Paste https://mcp.vaquill.ai/mcp, click Connect, and skip the key entirely. It is also the only path that works in Cowork. Everything below is the API-key setup, which Cursor, VS Code, Windsurf and other non-Claude clients need.
For a key-based setup, the fastest path is the hosted remote MCP on Claude.ai web. It needs no install, no local Python and no config files.

Install Vaquill MCP in Claude Code with one paste. Replaces a manual config edit.

1

Get an API key

Generate a vq_key_... token from your dashboard settings. See Authentication.
2

Open Claude.ai Customize > Connectors

Click Add custom connector.
3

Paste the URL

Use either the path-token form:
Or keep the key out of the URL by opening Request headers in the same dialog and adding it there:
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_....
4

Look up a statute

Try: “What does 17 CFR 240.10b-5 say about insider trading?” Claude calls search_us_statutes and pulls the section text.
Remote MCP connectors are 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 holds at most four. If you do not see it, use the path-token URL, or connect from Claude Code, Cursor, VS Code, or Windsurf, which all carry the header as written. On Team and Enterprise an owner adds the connector under Organization settings first.

Client setup

Pick your client below. The remote endpoint needs no install. The local uvx package reads the variables listed under Self-hosting.
VS Code asks for the header value on first start and remembers it, which keeps the credential out of a file you commit. ${env:VAQUILL_API_KEY} works in Windsurf if you would rather read it from the environment. Both clients need the server restarted after you save the file before the tools appear.
The uvx runner requires Python 3.10+ and uv on PATH. uvx vaquill-mcp downloads and executes the package in an isolated env on first run; subsequent runs are instant.

Tools

Tools are generated from the OpenAPI document at startup, so the catalogue follows the API, not the package version. There is one tool per API operation plus the search and fetch pair. Every tool is read-only: none creates, changes or deletes anything.
Never assemble an act_id by hand. The title and section can be derived from a citation but the chapter cannot, so a constructed id usually 404s and the failure looks like missing coverage. Take it from search_us_statutes, resolve_statute_citation or list_statute_divisions. See Section Identifiers.
Federal session laws are on the statute tools. Law change alerts are not MCP tools. Manage them in the console or over the REST API: see Law Change Alerts. Prefer the typed tools to the search and fetch aliases: they take filters these two cannot express. The aliases exist for clients whose retrieval interface is matched by name and shape, and ChatGPT and Codex explains when to use them.
  • list_statutes_coverage: call it before treating an empty result as an absence.
  • search_us_statutes filters by corpusType, state, code, source, status, year and Federal Register facets.
  • get_us_statute_section returns citation, hierarchy, breadcrumb, status and every format link.
  • get_us_statute_section_text supports format=content (operative text only, USC), structured=true for a subsection tree, and asOf for point-in-time.
  • get_sections_batch adds a diagnosis for each miss.
  • resolve_statute_citation confirms the section against the corpus.
  • extract_statute_citations takes a pasted brief, memo or model answer and resolves each citation in it. Case citations are not extracted. resolve=false lists them for free.
  • list_statute_divisions is refunded on an empty level.
  • Each section intelligence tool refunds a call it cannot answer, and returns a note explaining why. An empty result with a note is an explanation; without one it is a real answer.
  • An empty page from list_session_laws is charged, and so is an empty result from search_session_laws.
  • list_session_laws filters by session, approval date or effective date, and jurisdiction is required.
  • get_session_law returns citation, session, dates, code sections affected, official sources and textStatus. It takes a sessionLawId or a citation, and a citation adds the resolve price.
  • get_session_law_body returns the text exactly as printed. Check textReliability and notice, and amendatoryMarkup: if lost, struck language may read as law.
  • search_session_laws accepts plain words, a quoted phrase, a citation, a code section or a bill number. It ranks by keyword, so a question has to share vocabulary with the act. Only enacted text is searched.
  • get_session_laws_batch with includeBody adds each law’s first page of text.
  • get_section_enactments covers CA, DC, HI, KY, MO, MS, NE, UT and WA.

Resources and prompts

Beyond tools, the server publishes MCP resources and prompts. Clients that support them get the guidance without spending a tool call. Resources Prompts: good_law_check, fifty_state_survey, whats_changed, cite_check.

India mount

India is a separate mount with its own tools, resource and prompts. A US connection never exposes India tools, and an India connection never exposes US ones. Connect only the mount you need, because every connected server keeps its tool definitions in context for the whole conversation.
https://mcp.vaquill.ai/in/s/_ publishes the Indian legislation surface. It shares nothing with the US tools but the credential: the same vq_key_ works on both mounts, and each is built from its own OpenAPI document. The main tools:Plus the search and fetch aliases.Resource: vaquill://in/filters lists the available act filters.Prompts: old_code_citation, indian_provision_check.

Authentication

On the US endpoint https://mcp.vaquill.ai/mcp, the default is OAuth 2.1: the client opens a browser, you sign in with your Vaquill AI account and approve access, and there is no key to paste.
It is the authorization code flow with PKCE (S256), discovered from /.well-known/oauth-protected-resource/mcp, with dynamic client registration and client ID metadata documents both supported. The access token lasts about an hour and is refreshed automatically.
Clients that cannot run OAuth authenticate with your Vaquill API key instead. Three options, in priority order:
  1. Bearer header (remote): Authorization: Bearer vq_key_...
  2. Path token (remote): https://mcp.vaquill.ai/s/vq_key_.... Use this when your client cannot send custom headers.
  3. Environment variable (local): VAQUILL_API_KEY=vq_key_... for uvx / stdio launches.
Keys are scoped per workspace and revocable from the dashboard. For the full auth model, request signing, and rotation policy, see Authentication.
Treat the path-token URL as a secret, because anyone with the URL can spend credits from your account. Use the bearer-token form whenever the client supports it.

Self-hosting

The MCP server is a thin wrapper around the public Vaquill API, so most users do not need to self-host.
Run from source if you want to pin a version, add custom telemetry or change tool descriptions.
The package fetches the OpenAPI spec from https://api.vaquill.ai at startup and auto-generates MCP tools with FastMCP. New API endpoints appear as tools automatically without a package upgrade.Environment variables:
  • VAQUILL_API_KEY (required): your API key (vq_key_...) from app.vaquill.ai/settings.
  • VAQUILL_BASE_URL (optional, default https://api.vaquill.ai): API base URL. Override for staging or self-hosted API instances.
  • VAQUILL_TIMEOUT (optional, default 120): per-request timeout in seconds. Increase for large section-text fetches.

Usage examples

Type these directly to Claude, Cursor, or any connected assistant. Look up federal law
“What does 17 CFR 240.10b-5 say about insider trading?” “What are the federal penalties for wire fraud under 18 USC 1343?” “Pull the operative text of 26 USC 501(c)(3), without the amendment notes.”
Verify citations
“Check every statutory citation in this brief against the official text, and flag any that are no longer good law.” “Does Cal. Civ. Code 1950.5 resolve, and what is its current status?”
Compare across states
“How do other states word California’s security-deposit return deadline?” “Find the data-breach notification statute in New York, Texas and Illinois.”
Read law as it stood on a date
“What did 15 USC 1681c say on 2019-03-01, and how confident are we in that reconstruction?”
Find what changed
“What has changed in the CFR since last Tuesday?” “Which Texas acts take effect on September 1, 2025?”

Ready-to-run research prompt

Map a federal statute across USC and CFR. Paste into any Vaquill-connected assistant. Replace the citation.

MCP overview

All Vaquill MCP servers at a glance

Integrations

Chatbots, widgets, browser extensions, and automation

Authentication

API key setup and rotation

Search US statutes (API)

The underlying REST endpoint
Last modified on November 7, 2026