Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Vaquill

REMOTE · MCP.VAQUILL.AI · 2 COMPONENTS · SCANNED SEP 21

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

0 this week 69 Trust /100

Recent critical change

Authorization (2 Sept 2026). See the changelog before you install this server.

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security60
Transport & Reachability100
Schema Quality & AI Usability75
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 7738 tokens (~257/item across 30 items; 27 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability check failed: schema churn in the 30 days we've observed: 11 tool removals, 0 breaking changes, 0 auth/transport breaks, 23 additions. See how to fix → Fail
Tool Coverage97
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 90% of tool parameters carry a description.Partial
  • Structured output schemas are declared (63% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 28 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the Vaquill MCP server?

Vaquill is a hosted endpoint at https://mcp.vaquill.ai/s/_, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.vaquill.ai

# add to Claude Code
claude mcp add --transport http vaquill-ai-vaquill-mcp 'https://mcp.vaquill.ai/s/_'
// .cursor/mcp.json
{
  "mcpServers": {
    "vaquill-ai-vaquill-mcp": {
      "url": "https://mcp.vaquill.ai/s/_"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "vaquill-ai-vaquill-mcp": {
      "type": "http",
      "url": "https://mcp.vaquill.ai/s/_"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.vaquill-ai-vaquill-mcp]
url = "https://mcp.vaquill.ai/s/_"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "vaquill-ai-vaquill-mcp": {
      "type": "remote",
      "url": "https://mcp.vaquill.ai/s/_",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add vaquill-ai-vaquill-mcp --url 'https://mcp.vaquill.ai/s/_' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  vaquill-ai-vaquill-mcp:
    url: "https://mcp.vaquill.ai/s/_"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "vaquill-ai-vaquill-mcp": {
      "Transport": "http",
      "Url": "https://mcp.vaquill.ai/s/_"
    }
  }
}
# add to Vellum
assistant mcp add vaquill-ai-vaquill-mcp -t streamable-http -u 'https://mcp.vaquill.ai/s/_'
// mcp.json
{
  "mcpServers": {
    "vaquill-ai-vaquill-mcp": {
      "type": "http",
      "url": "https://mcp.vaquill.ai/s/_"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 0
    • Tool “count_statute_sections” rewrote its description, which is the text the model reads security
    • Schema quality: 7027 → 7738 functional
    • Server version: 4.0.3 → 4.0.5 functional
    • New tool “get_credit_balance” functional
    • “list_statute_divisions” added an optional parameter “cursor” cosmetic
    • “search_us_statutes” reworded the description of “documentType” cosmetic
    • “count_statute_sections” reworded the description of “excludeRepealed” cosmetic
    • “resolve_statute_citations_batch” reworded the description of “corpusType” cosmetic
  • 15 Sept 26 0
    • New tool “count_statute_sections” functional
    • “get_sections_batch” added an optional parameter “includeBody” cosmetic
    • “list_statute_divisions” added an optional parameter “excludeRepealed” cosmetic
    • “list_statute_divisions” added an optional parameter “actStatus” cosmetic
    • “list_watch_changes” reworded the description of “since” cosmetic
  • 9 Sept 26 0
    • “get_pricing” added an optional parameter “region” cosmetic
    • “search_us_statutes” reworded the description of “corpusType” cosmetic
    • “search_us_statutes” reworded the description of “source” cosmetic
    • “get_us_statute_section_text” reworded the description of “asOf” cosmetic
    • “get_us_statute_section_text” reworded the description of “format” cosmetic
    • “search_us_statutes” reworded the description of “includeBody” cosmetic
    • Tool “update_watch” changed its title: Update Watch → Update Law Change Watch cosmetic
    • Tool “test_watch” changed its title: Test Watch → Send Test Alert cosmetic
    • Tool “create_watch” changed its title: Create Watch → Create Law Change Watch cosmetic
    • Tool “delete_watch” changed its title: Delete Watch → Delete Law Change Watch cosmetic
    • Tool “fetch” changed its title: Fetch → Fetch Document cosmetic
    • Tool “get_pricing” changed its title: Get Pricing → Credit Pricing cosmetic
    • Tool “get_section_changes” changed its title: Get Section Changes → Section Change History cosmetic
    • Tool “get_section_cited_by” changed its title: Get Section Cited By → Sections Citing This One cosmetic
    • Tool “get_section_cross_state” changed its title: Get Section Cross State → Same Rule in Other States cosmetic
    • Tool “get_section_definitions” changed its title: Get Section Definitions → Defined Terms in Section cosmetic
    • Tool “get_section_neighbors” changed its title: Get Section Neighbors → Adjacent Sections cosmetic
    • Tool “get_sections_batch” changed its title: Get Sections Batch → Statute Sections (Batch) cosmetic
    • Tool “get_us_statute_section” changed its title: Get Us Statute Section → Statute Section Metadata cosmetic
    • Tool “get_us_statute_section_text” changed its title: Get Us Statute Section Text → Statute Section Text cosmetic
    • Tool “get_watch_change_diff” changed its title: Get Watch Change Diff → Change Diff cosmetic
    • Tool “list_boards” changed its title: List Boards → Alert Boards cosmetic
    • Tool “list_statute_divisions” changed its title: List Statute Divisions → Browse Code Structure cosmetic
    • Tool “list_statutes_coverage” changed its title: List Statutes Coverage → Corpus Coverage cosmetic
    • Tool “list_watch_changes” changed its title: List Watch Changes → Changes on a Watch cosmetic
    • Tool “list_watch_deliveries” changed its title: List Watch Deliveries → Watch Deliveries cosmetic
    • Tool “list_watches” changed its title: List Watches → Law Change Watches cosmetic
    • Tool “resolve_statute_citation” changed its title: Resolve Statute Citation → Resolve Citation cosmetic
    • Tool “resolve_statute_citations_batch” changed its title: Resolve Statute Citations Batch → Resolve Citations (Batch) cosmetic
    • Tool “search” changed its title: Search → Search US Law cosmetic
    • Tool “search_us_statutes” changed its title: Search Us Statutes → Search US Statutes cosmetic

    31 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.

  • 8 Sept 26 0
    • Tool “resolve_statute_citation” rewrote its description, which is the text the model reads security
    • Tool “resolve_statute_citations_batch” rewrote its description, which is the text the model reads security
    • Server version: 4.0.1 → 4.0.3 functional
    • “search_us_statutes” added an optional parameter “includeBody” cosmetic
    • “get_us_statute_section_text” reworded the description of “asOf” cosmetic
    • “get_us_statute_section_text” reworded the description of “format” cosmetic
  • 2 Sept 26 0

    We did not load change detail this far back for this component, so this day may have recorded more than is shown.

    • Authorization: unverified → fail critical
    • Tool “get_citation_network” was removed security
    • Tool “list_statutes_laws” was removed security
    • Tool “lookup_case” was removed security
    • Tool “quick_search” was removed security
    • Tool “resolve_citation” was removed security
    • Tool “search_legal_cases” was removed security
    • Tool “create_watch” rewrote its description, which is the text the model reads security
    • Tool “delete_watch” rewrote its description, which is the text the model reads security
    • Tool “get_section_changes” rewrote its description, which is the text the model reads security
    • Tool “get_section_cited_by” rewrote its description, which is the text the model reads security
    • Tool “get_section_cross_state” rewrote its description, which is the text the model reads security
    • Tool “get_section_definitions” rewrote its description, which is the text the model reads security
    • Tool “get_section_neighbors” rewrote its description, which is the text the model reads security
    • Tool “get_sections_batch” rewrote its description, which is the text the model reads security
    • Tool “get_us_statute_section” rewrote its description, which is the text the model reads security
    • Tool “get_us_statute_section_text” rewrote its description, which is the text the model reads security
    • Tool “get_watch_change_diff” rewrote its description, which is the text the model reads security
    • Tool “list_boards” rewrote its description, which is the text the model reads security
    • Tool “list_statute_divisions” rewrote its description, which is the text the model reads security
    • Tool “list_statutes_coverage” rewrote its description, which is the text the model reads security
    • Tool “list_watch_changes” rewrote its description, which is the text the model reads security
    • Tool “list_watch_deliveries” rewrote its description, which is the text the model reads security
    • Tool “list_watches” rewrote its description, which is the text the model reads security
    • Tool “resolve_statute_citation” rewrote its description, which is the text the model reads security
    • Tool “search_us_statutes” rewrote its description, which is the text the model reads security
    • Tool “test_watch” rewrote its description, which is the text the model reads security
    • Tool “delete_watch” is now declared destructive security
    • Tool coverage: 100% → 60% functional
    • Schema quality: pass → fail functional
    • “create_watch” added a required parameter “corpusType”, so existing callers break functional
    • “get_sections_batch” added a required parameter “actIds”, so existing callers break functional
    • “list_statute_divisions” added a required parameter “corpusType”, so existing callers break functional
    • “resolve_statute_citation” added a required parameter “cite”, so existing callers break functional
    • “create_watch” dropped the required parameter “corpus_type” functional
    • “get_sections_batch” dropped the required parameter “act_ids” functional
    • “resolve_statute_citation” dropped the required parameter “citation” functional
    • “get_watch_change_diff” changed the type of “change_id”: string → integer functional
    • Tool “create_watch” dropped its output schema functional
    • Tool “delete_watch” dropped its output schema functional
    • Tool “get_watch_change_diff” dropped its output schema functional
    • Tool “list_boards” dropped its output schema functional
    • Tool “list_statutes_coverage” dropped its output schema functional
    • Tool “list_watch_changes” dropped its output schema functional
    • Tool “list_watch_deliveries” dropped its output schema functional
    • Tool “list_watches” dropped its output schema functional
    • Tool “test_watch” dropped its output schema functional
    • Tool “update_watch” dropped its output schema functional
    • Tool coverage: 0% → 89% functional
    • First check of Schema quality: 100 functional
    • Schema quality: good → excellent functional
    • Destructive annotations: All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation. functional
    • MCP protocol: Implements a current MCP spec version (2026-07-28). functional
    • “create_watch” added an optional parameter “emailAddress” cosmetic
    • “create_watch” added an optional parameter “scope” cosmetic
    • “create_watch” added an optional parameter “webhookAuth” cosmetic
    • “create_watch” added an optional parameter “webhookSecret” cosmetic
    • “create_watch” added an optional parameter “webhookUrl” cosmetic
    • “get_section_changes” added an optional parameter “beforeId” cosmetic
    • “get_section_changes” added an optional parameter “changeKind” cosmetic
    • “get_section_changes” added an optional parameter “limit” cosmetic
    • “get_section_changes” added an optional parameter “order” cosmetic
    • “get_section_changes” added an optional parameter “sinceId” cosmetic
    • “get_us_statute_section_text” added an optional parameter “asOf” cosmetic
    • “get_us_statute_section_text” added an optional parameter “format” cosmetic
    • “get_us_statute_section_text” added an optional parameter “structured” cosmetic
    • “list_boards” added an optional parameter “corpusType” cosmetic
    • “list_statute_divisions” added an optional parameter “chapter” cosmetic
    • “list_statute_divisions” added an optional parameter “part” cosmetic
    • “list_statute_divisions” added an optional parameter “titleNumber” cosmetic
    • “list_watch_changes” added an optional parameter “beforeId” cosmetic
    • “list_watch_changes” added an optional parameter “changeKind” cosmetic
    • “list_watch_changes” added an optional parameter “order” cosmetic
    • “list_watch_changes” added an optional parameter “since” cosmetic
    • “list_watch_changes” added an optional parameter “sinceId” cosmetic
    • “resolve_statute_citation” added an optional parameter “corpusType” cosmetic
    • “resolve_statute_citation” added an optional parameter “state” cosmetic
    • “search_us_statutes” added an optional parameter “actStatus” cosmetic
    • “search_us_statutes” added an optional parameter “agency” cosmetic
    • “search_us_statutes” added an optional parameter “changedSince” cosmetic
    • “search_us_statutes” added an optional parameter “chapter” cosmetic
    • “search_us_statutes” added an optional parameter “corpusType” cosmetic
    • “search_us_statutes” added an optional parameter “documentType” cosmetic
    • “search_us_statutes” added an optional parameter “excerptChars” cosmetic
    • “search_us_statutes” added an optional parameter “excludeRepealed” cosmetic
    • “search_us_statutes” added an optional parameter “fields” cosmetic
    • “search_us_statutes” added an optional parameter “matchType” cosmetic
    • “search_us_statutes” added an optional parameter “offset” cosmetic
    • “search_us_statutes” added an optional parameter “part” cosmetic
    • “search_us_statutes” added an optional parameter “publishedFrom” cosmetic
    • “search_us_statutes” added an optional parameter “publishedTo” cosmetic
    • “search_us_statutes” added an optional parameter “source” cosmetic
    • “search_us_statutes” added an optional parameter “titleNumber” cosmetic
    • “search_us_statutes” added an optional parameter “yearFrom” cosmetic
    • “search_us_statutes” added an optional parameter “yearTo” cosmetic
    • “get_section_cited_by” reworded the description of “act_id” cosmetic
    • “create_watch” reworded the description of “state” cosmetic
    • “get_section_changes” reworded the description of “act_id” cosmetic
    • “get_section_cited_by” reworded the description of “limit” cosmetic
    • “get_section_cross_state” reworded the description of “act_id” cosmetic
    • “get_section_cross_state” reworded the description of “limit” cosmetic
    • “get_section_definitions” reworded the description of “act_id” cosmetic
    • “get_section_neighbors” reworded the description of “act_id” cosmetic
    • “get_section_neighbors” reworded the description of “limit” cosmetic
    • “get_us_statute_section” reworded the description of “act_id” cosmetic
    • “get_us_statute_section_text” reworded the description of “act_id” cosmetic
    • “list_boards” reworded the description of “limit” cosmetic
    • “list_boards” reworded the description of “offset” cosmetic
    • “list_boards” reworded the description of “state” cosmetic
    • “list_statute_divisions” reworded the description of “code” cosmetic
    • “list_statute_divisions” reworded the description of “state” cosmetic
    • “list_watch_changes” reworded the description of “limit” cosmetic
    • “list_watch_deliveries” reworded the description of “limit” cosmetic
    • “list_watches” reworded the description of “limit” cosmetic
    • “list_watches” reworded the description of “offset” cosmetic
    • “search_us_statutes” reworded the description of “code” cosmetic
    • “search_us_statutes” reworded the description of “limit” cosmetic
    • “search_us_statutes” reworded the description of “query” cosmetic
    • “search_us_statutes” reworded the description of “state” cosmetic
    • “create_watch” dropped the optional parameter “act_ids” cosmetic
    • “create_watch” dropped the optional parameter “email_address” cosmetic
    • “create_watch” dropped the optional parameter “webhook_url” cosmetic
    • “list_boards” dropped the optional parameter “corpus_type” cosmetic
    • “list_statute_divisions” dropped the optional parameter “corpus_type” cosmetic
    • “list_watch_changes” dropped the optional parameter “offset” cosmetic
    • “list_watch_deliveries” dropped the optional parameter “offset” cosmetic
    • “search_us_statutes” dropped the optional parameter “corpus_type” cosmetic
    • “search_us_statutes” dropped the optional parameter “title_number” cosmetic
    • “create_watch” made “channel” optional cosmetic
    • Tool “create_watch” changed its title: Create Watch cosmetic
    • Tool “delete_watch” changed its title: Delete Watch cosmetic
    • Tool “get_pricing” changed its title: Get Pricing cosmetic
    • Tool “get_section_changes” changed its title: Get Section Changes cosmetic
    • Tool “get_section_cited_by” changed its title: Get Section Cited By cosmetic
    • Tool “get_section_cross_state” changed its title: Get Section Cross State cosmetic
    • Tool “get_section_definitions” changed its title: Get Section Definitions cosmetic
    • Tool “get_section_neighbors” changed its title: Get Section Neighbors cosmetic
    • Tool “get_sections_batch” changed its title: Get Sections Batch cosmetic
    • Tool “get_us_statute_section” changed its title: Get Us Statute Section cosmetic
    • Tool “get_us_statute_section_text” changed its title: Get Us Statute Section Text cosmetic
    • Tool “get_watch_change_diff” changed its title: Get Watch Change Diff cosmetic
    • Tool “list_boards” changed its title: List Boards cosmetic
    • Tool “list_statute_divisions” changed its title: List Statute Divisions cosmetic
    • Tool “list_statutes_coverage” changed its title: List Statutes Coverage cosmetic
    • Tool “list_watch_changes” changed its title: List Watch Changes cosmetic
    • Tool “list_watch_deliveries” changed its title: List Watch Deliveries cosmetic
    • Tool “list_watches” changed its title: List Watches cosmetic
    • Tool “resolve_statute_citation” changed its title: Resolve Statute Citation cosmetic
    • Tool “search_us_statutes” changed its title: Search Us Statutes cosmetic
    • Tool “test_watch” changed its title: Test Watch cosmetic
  • 28 Aug 26 −7

    We did not load change detail this far back for this component, so this day may have recorded more than is shown.

  • 26 Aug 26 +2

    We did not load change detail this far back for this component, so this day may have recorded more than is shown.

  • 24 Aug 26 +1

    We did not load change detail this far back for this component, so this day may have recorded more than is shown.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Probed https://mcp.vaquill.ai/s/_

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.vaquill.ai CN=YR2,O=Let's Encrypt,C=US 6 Sept 2026 5 Dec 2026 RSA 4096 SHA256-RSA 5634e4d6de8579b4f3b01c4fe243b9e8274
SANs: mcp.vaquill.ai
CN=YR2,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA 4ebd24947e24d394802d84a52fd5b319
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f

Background: What to check on a remote MCP endpoint →

DNSSEC secure

Validation of mcp.vaquill.ai. Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
ai. present 3799 8 Verified
vaquill.ai. present 2371 13 Verified
mcp.vaquill.ai. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.vaquill.ai/s/_ Verified 200
http (plaintext) http://mcp.vaquill.ai/s/_ HTTPS enforced 301 https://mcp.vaquill.ai/s/_
MCP tools · 27 exposed · ~7,610 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
count_statute_sections ~412

How many sections sit in a jurisdiction, corpus, code, title, chapter or part. **Cost**: 1 credit. A scope that matches nothing is refunded, because an empty answer here is usually a wrong filter rather than a finding. Use it to size a job before you run it. Walking a container with `/us/statutes/divisions` and hydrating what you find is cheap per call and adds up across a whole corpus, so this is the call that tells you what you are about to spend before you spend it. **There is no `query` parameter, on purpose.** Search ranks over a bounded window, so "how many sections match this query" has no answer beyond the size of that window. This counts a SCOPE, which is exact. Pair the two: count the scope here, enumerate it with `/us/statutes/divisions`, then rank within it using `/us/statutes/search`. The figure counts SECTIONS. Long sections are stored as several passages and are counted once.

NameTypeReqDescription
actStatusCount only sections carrying this status.
chapterChapter identifier. Pair with `titleNumber` or `code`.
codeState code identifier, e.g. `tx_26`. Pair with `state`.
corpusTypeCorpus to count, single or list. Omit to count every corpus.
excludeRepealedbooleanExclude sections whose status is affirmatively dead. A section with no recorded status is KEPT, because a missing status is not evidence of repeal. The US Code is served from a stored annual edition,…
partCFR part identifier. Pair with `titleNumber`.
stateTwo-letter jurisdiction code or `federal`, single or list.
titleNumberUSC or CFR title number.

Structured output declared, but exposes no named fields.

No examples provided.

create_watch ~506

Subscribe to a board so a change to that source notifies you. Delivery is by webhook (HMAC-SHA256 signed) or email, fired when the source's existing refresh finds real changes -- nothing is crawled on your behalf and there is no real-time trigger. channel is immutable once set; to change it, delete and recreate. Free.

NameTypeReqDescription
channelstring
corpusTypestringyesBoard's corpus_type (e.g. `state`, `state_regulation`, `federal_register`, `agency_guidance`), matched case-insensitively so `USC` / `CFR` work too. Call list_boards for the authoritative list: this…
emailAddressRequired when channel is email or both.
scopeNarrow the alert to one citation instead of a whole source. Three mutually exclusive forms. Hierarchy prefix: `{"title": "21", "part": "314"}`, where every level set must match and `title` is require…
stateBoard's state, 2-letter and case-insensitive. For a federal board (USC, eCFR, the Federal Register) pass `federal` or omit entirely; the two are equivalent. Must otherwise match the `state` list_boar…
webhookAuthOptional outbound credential sent on every delivery, so your gateway can authenticate us with the header it already reads. Independent of `webhookSecret`: set neither, either, or both. Only valid on…
webhookSecretOptional signing secret, stored encrypted and never returned. Every delivery then carries `X-Vaquill-Signature: sha256=<hex>`, an HMAC-SHA256 of the raw request body bytes keyed with this secret. Ver…
webhookUrlRequired when channel is webhook or both.

No output schema declared.

No examples provided.

delete_watch ~54

Delete a watch you own. Immediate and permanent, and its delivery history goes with it. To stop notifications without losing the config or history, prefer update_watch with isActive false. Free.

NameTypeReqDescription
watch_idstringyes

No output schema declared.

No examples provided.

fetch ~110

Fetch the full text of one US law section by the `id` from a `search` result, returning `{id, title, text, url, metadata}`. Also accepts a citation URL, a bare path, or a Bluebook citation such as '42 U.S.C. 1983'. Present for clients that require the standard search/fetch pair; prefer `get_us_statute_section_text` if available. Charged as a section lookup plus a body read.

NameTypeReqDescription
idstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_credit_balance ~586

Returns the credits this API key's account can spend right now. **Free.** This endpoint is never charged, so you can poll it to drive alerting or a pre-flight check without the check itself costing you anything. It is rate limited like every other key-authenticated route. **Authentication:** any valid `vq_key_` key. No particular scope is required. ## What the number means `creditsRemaining` is derived from your live credit buckets under the same expiry rule the billing path applies, so it is what a call would actually be allowed to spend, not a cached figure that a nightly job later corrects. It is the same field name metered responses use, so you can read `creditsRemaining` the same way everywhere. ## Not all credits behave alike Read `bySource` before assuming a balance is durable. `subscription` credits are use-it-or-lose-it and are forfeited at the end of the period, while `payg` credits you purchased burn last and persist. `nextExpiry` tells you what is about to be forfeited and when, which is the one thing a balance alone cannot. ## Two separate ceilings Credits are how MUCH you may spend; `rateLimit` is how FAST you may call. They are independent, so a healthy balance does not exempt you from throttling and staying under the rate limit does not pay for a call. `rateLimit` has your plan applied and lets you size a client before issuing a request. Every response also carries `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` for the per-minute window, plus `X-RateLimit-Limit-Day` and `X-RateLimit-Remaining-Day` for the daily backstop; those report the same ceilings with your live headroom. ## Example ```bash curl https://api.vaquill.ai/api/v1/credits/balance \ -H "Authorization: Bearer $VAQUILL_API_KEY" ``` ```json { "creditsRemaining": 103039.0, "usdRemaining": 1030.39, "bySource": [ { "source": "payg", "credits": 102539.0 }, { "source": "subscription", "credits": 500.0 } ], "nextExpiry": { "at": "2026-10-01…

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

get_pricing ~117

Current API credit pricing: per-endpoint credit costs and the credit-to-currency conversion rate (1 credit = $0.01 USD). Free, and no authentication required. Use to check what a call will cost before making it.

NameTypeReqDescription
regionJurisdiction to price. `US` for the United States primary-law surface, `IN` for the India legislation surface. Defaults to the jurisdiction of the document you are reading, so a caller who does not s…

Structured output declared, but exposes no named fields.

No examples provided.

get_section_changes ~365

What our refreshes have observed changing on one section over time: when it was added, amended or removed, newest first. This is our capture history, not the publisher's -- an empty list means we recorded no change, never that the section was never amended. For the publisher's own history, read amendmentHistory on the section. Cost: 1 credit.

NameTypeReqDescription
act_idstringyesSection identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, written 42 U.S.C. 1983). Take it from a search result rather than assembling it: the title and section are derivable…
beforeIdReturn only changes with an `id` less than this: the cursor for walking BACK through history, which is what a newest-first reader needs. Pass the smallest `id` on your last page.
changeKindFilter to these kinds. Repeat the parameter to pass several (`?changeKind=amended&changeKind=removed`). Omit for all three.
limitintegerMax changes to return on this page.
orderstring`desc` (default) is newest first, the natural reading order for a history. Use `asc` to replay a section's life forward, or when catching up from a cursor.
sinceIdReturn only changes with an `id` greater than this: the cursor for polling forward into new changes. Ids are a monotonic sequence, so this is exact, immune to clock skew, and cannot drop two changes…

Structured output declared, but exposes no named fields.

No examples provided.

get_section_cited_by ~166

The USC and CFR sections whose text cross-references a given section: the inverse of the crossReferences already returned on a section lookup. Use to find where a definition or requirement is actually invoked, or to gauge how load-bearing a provision is across the code. Cost: 2 credits.

NameTypeReqDescription
act_idstringyesSection identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, written 42 U.S.C. 1983). Take it from a search result rather than assembling it: the title and section are derivable…
limitintegerMaximum citing sections to return.

Structured output declared, but exposes no named fields.

No examples provided.

get_section_cross_state ~169

Provisions in OTHER states that address the same subject as a given state statute section, ranked by similarity. State statutes only. Use for fifty-state surveys, multi-jurisdiction compliance, or to check whether a client's home-state rule is typical or an outlier. Cost: 6 credits.

NameTypeReqDescription
act_idstringyesSection identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, written 42 U.S.C. 1983). Take it from a search result rather than assembling it: the title and section are derivable…
limitintegerMaximum states to return, one provision each.

Structured output declared, but exposes no named fields.

No examples provided.

get_section_definitions ~152

The term definitions that govern a section, parsed from its chapter's definitions section. Use whenever a provision turns on a term of art ('covered entity', 'security', 'employer') and you need the statute's own definition rather than the ordinary meaning. Cost: 4 credits.

NameTypeReqDescription
act_idstringyesSection identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, written 42 U.S.C. 1983). Take it from a search result rather than assembling it: the title and section are derivable…

Structured output declared, but exposes no named fields.

No examples provided.

get_section_neighbors ~164

The sections immediately before and after a given section within its own chapter or code, in statutory order. Use to read a provision in context, to find a definitions or penalties sibling, or to check whether the operative language continues into the next section. Cost: 2 credits.

NameTypeReqDescription
act_idstringyesSection identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, written 42 U.S.C. 1983). Take it from a search result rather than assembling it: the title and section are derivable…
limitintegerHow many sections to return on EACH side.

Structured output declared, but exposes no named fields.

No examples provided.

get_sections_batch ~251

Metadata for up to 50 sections in one call, by a list of act_ids. Same fields as get_us_statute_section. Use instead of looping that tool when you already hold several act_ids, for example every result of one search. Sections that are not found are skipped and not charged. Cost: 2 credits.

NameTypeReqDescription
actIdsarrayyesSection identifiers from a prior search, up to 50 per call. Duplicates are collapsed and order is preserved. DO NOT BUILD THESE FROM A CITATION: the chapter/article segments exist only in the data, s…
includeBodybooleanReturn each section's full text inline on `body`, instead of metadata only. Adds the ordinary body price per row that returns text, so 20 ids resolving 20 bodies is 40 + 120 = 160 credits. Rows whose…

Structured output declared, but exposes no named fields.

No examples provided.

get_us_statute_section ~167

Metadata for one US statute, regulation or rule section by act_id: citation, title hierarchy, breadcrumb, amendment history, and links to HTML, PDF and XML. Does NOT include the section text -- use get_us_statute_section_text for that. Good for confirming you have the right section before paying for its full body. Cost: 2 credits.

NameTypeReqDescription
act_idstringyesSection identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, written 42 U.S.C. 1983). Take it from a search result rather than assembling it: the title and section are derivable…

Structured output declared, but exposes no named fields.

No examples provided.

get_us_statute_section_text ~362

The full text of a US statute, regulation or rule section by act_id. Returns styled HTML (with cross-references and paragraph numbering as officially published) and plain text. Use when you need the actual statutory language to quote, draft against, or analyze rather than just cite. Cost: 6 credits.

NameTypeReqDescription
act_idstringyesSection identifier, e.g. `USC_T42_C21_S1983` (Title 42, Chapter 21, Section 1983, written 42 U.S.C. 1983). Take it from a search result rather than assembling it: the title and section are derivable…
asOfText as it stood on this date (`YYYY-MM-DD`), same cost. A RECONSTRUCTION from observed changes, not an archive: read the response's `asOf.isBounded` before citing it, since false means the answer is…
formatstringWhich representations to return. The default `both` carries a long section's text twice, so `plain` or `html` roughly halves the payload at the same price. `content` returns only the operative text,…
structuredbooleanWhen true, also return `markdown` and a `subsections` tree parsed from the text for pincite addressing. Same cost.

Structured output declared, but exposes no named fields.

No examples provided.

get_watch_change_diff ~123

The full text of a changed section BEFORE and AFTER one specific change, as whole documents ready to diff. Only meaningful where hasDiff is true on the change list. A missing side is not an error: hasBefore and hasAfter say which text is present, so render 'diff unavailable' rather than treating null as a failure. Unlike the rest of the law-change tools this one returns section text, so check its cost before looping over a change list. Cost: 4 credits.

NameTypeReqDescription
change_idintegeryes
watch_idstringyes

No output schema declared.

No examples provided.

list_boards ~221

List every watchable board: a tracked corpus source such as the Federal Register, the CFR, or one state's statutes, with its refresh cadence. A board is identified by corpusType plus state (state is null for federal). Use to discover what can be subscribed to before calling create_watch. Free.

NameTypeReqDescription
corpusTypeOnly boards for this corpus type, matched case-insensitively so the uppercase spelling used by the statutes endpoints (`CFR`) finds the board (`cfr`). An unknown value is an empty page with `total: 0…
limitintegerMax boards to return. The default covers the whole registry today; check `total` rather than assuming it always will.
offsetintegerNumber of boards to skip, for paging.
stateOnly boards for this jurisdiction. Pass `federal` for the boards that have no state (USC, eCFR, the Federal Register). Omit for no jurisdiction filter -- which is NOT the same as `federal`.

No output schema declared.

No examples provided.

list_statute_divisions ~339

Walk the statutory hierarchy: list the child divisions (titles, chapters, parts, or sections) under any level, in statutory order. Use to browse a code structurally when you do not yet know the section number, or to enumerate everything under a chapter. Cost: 1 credit.

NameTypeReqDescription
actStatusList only sections carrying this status, e.g. `repealed`. The inverse of `excludeRepealed`, and useful for auditing what a container holds that is no longer operative.
chapterChapter identifier to drill into (USC and state codes).
codeState code identifier, e.g. `tx_pe` (browse `/us/statutes/divisions` with `corpusType=STATE&state=<code>` to list them).
corpusTypestringyesCorpus to browse: USC, CFR, STATE, or REGULATION.
cursorResume token from a previous response's `nextCursor`. Only meaningful at the level that lists sections. Omit it to start at the beginning of the container.
excludeRepealedbooleanLeave out sections whose status is affirmatively dead (repealed, superseded, renumbered and similar). A section carrying no recorded status is KEPT: a missing status is not evidence of repeal. Same v…
partPart identifier to drill into (CFR).
state2-letter jurisdiction code, required for STATE and REGULATION. Case-insensitive.
titleNumberUSC/CFR title number to drill into.

Structured output declared, but exposes no named fields.

No examples provided.

list_statutes_coverage ~68

Self-describing coverage matrix: every corpusType we hold and its per-jurisdiction section counts. Use before answering a jurisdiction question to check whether we actually cover that state and that body of law, so you can say so instead of searching a corpus that does not exist. Free.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_watch_changes ~385

What a watched source added, amended or removed: section identifier, citation, title and detection time, newest first. Metadata only, never section text. Covers the board's whole captured history, not just since you subscribed. Safe to poll: it writes nothing and cannot suppress or double-fire a delivery. Page with sinceId and the returned cursor. Free.

NameTypeReqDescription
beforeIdReturn only changes with an `id` below this: the cursor for walking BACK through history, where `sinceId` walks forward into new ones. Pass the smallest `id` on your last page.
changeKindFilter to these kinds. Repeat the parameter to pass several (`?changeKind=added&changeKind=amended`). Omit for all three.
limitintegerMax changes to return.
orderstring`desc` (default) is newest first, for showing a recent-activity list. Use `asc` when catching up from a cursor: walking forward means a page that hits `limit` leaves the gap at a known end.
sinceReturn only changes detected strictly after this ISO-8601 timestamp. Coarser than `sinceId` (a single refresh writes many rows at the same instant, and this drops all of them), but useful when all yo…
sinceIdReturn only changes with an `id` greater than this. The cursor to build on: ids are a monotonic sequence, so this is exact, immune to clock skew, and cannot drop two changes that share a timestamp. C…
watch_idstringyes

No output schema declared.

No examples provided.

list_watch_deliveries ~88

Per-attempt delivery log for one watch: status code, error and attempt number, retained 90 days. Webhook watches only -- an email-only watch always returns an empty list, because email sends are not logged per attempt. Use to debug a webhook that is not arriving. Free.

NameTypeReqDescription
limitintegerMax deliveries to return.
watch_idstringyes

No output schema declared.

No examples provided.

list_watches ~75

List the board watches you own, with their board, channel, destination, active state and the outcome of the last delivery attempt. Use to find a watchId for the other watch tools. Free.

NameTypeReqDescription
limitintegerMax watches to return.
offsetintegerNumber of watches to skip, for paging.

No output schema declared.

No examples provided.

resolve_statute_citation ~276

Resolve a Bluebook citation string ('42 U.S.C. 1983', '16 C.F.R. 444.1', 'Cal. Code Regs. tit. 22, 76227') to the exact section, confirmed, with an official source link and the act_id. Use this whenever the user gives you a citation rather than a question -- it is far more reliable than searching for the citation text. Cost: 2 credits.

NameTypeReqDescription
citestringyesA Bluebook citation string, e.g. '42 U.S.C. 1983' or '16 C.F.R. 444.1'.
corpusTypeOptional corpus to resolve WITHIN: `STATE`, `REGULATION`, `STATE_RULES`, `CONSTITUTION`, `STATE_CONSTITUTION`. Narrows a citation whose form several corpora share; like `state`, a citation belonging…
stateOptional 2-letter jurisdiction to resolve WITHIN, e.g. `tx`. Some citation forms are shared: `8 CCR 1206-2` is Colorado and `22 CCR 76227` is California. A constraint, not a hint: a citation naming a…

Structured output declared, but exposes no named fields.

No examples provided.

resolve_statute_citations_batch ~288

Resolve up to 50 Bluebook citations in one call, returning the same confirmed section, official source link and act_id as the single-citation tool. Use when a document or answer cites several provisions: one call is far cheaper in both credits and latency than looping the single-citation tool. Cost: 2 credits.

NameTypeReqDescription
citationsarrayyesBluebook citation strings, up to 50 per call. Duplicates are collapsed and order preserved, so `results` lines up with the de-duplicated input. Priced PER CITATION at the single-resolve rate: batchin…
corpusTypeOptional corpus to resolve every citation WITHIN: `STATE` (statutory text, federal or state), `REGULATION` (administrative codes), `STATE_RULES` (court rules), `CONSTITUTION` (constitutional text), `…
stateOptional two-letter jurisdiction to resolve every citation WITHIN. Applies to the whole batch: a batch spanning jurisdictions should omit it and let each citation name its own. Same semantics as the…

Structured output declared, but exposes no named fields.

No examples provided.

search ~88

Generic corpus search over US primary law, returning `{id, title, url}` records for citation. Present so this server works in clients that require the standard search/fetch pair. If you can call `search_us_statutes`, prefer it: it filters by jurisdiction, corpus, date and status, which this cannot. Pair with `fetch` to read a result.

NameTypeReqDescription
querystringyes

Structured output declared, but exposes no named fields.

No examples provided.

search_us_statutes ~1,659

Semantic + keyword search across US primary law: the United States Code (USC), the Code of Federal Regulations (CFR), and all 50 states' statutes, regulations, constitutions and court rules. Use for any 'what does the law say' question. Filter by corpusType and titleNumber. Returns sections with citation, hierarchy and official source links. The returned act_id (e.g. 'USC_T42_C21_S1983') feeds every other statute tool -- do not hand-build one, they usually 404. Cost: 4 credits.

NameTypeReqDescription
actStatusPositively scope to raw publisher statuses: `repealed` for dead law only, `in_force` for sections affirmatively marked current. The inverse of `excludeRepealed`, and what a compliance diff asking wha…
agencyFederal Register agency slug, e.g. `environmental-protection-agency`. Pass a list to match any of several. Applies to `FEDERAL_REGISTER` and `EXECUTIVE_ACTION`; other corpora carry no agency, so comb…
changedSinceOnly sections we OBSERVED changing on or after this date (`YYYY-MM-DD`). Observed, not effective: the date we saw it, an upper bound on when it took effect. Capture began long after the corpus did an…
chapterOne or more chapters within a title or code, e.g. `21` for USC Title 42 Chapter 21. Pass a hit's `parent.chapter` back to search its neighbors. Chapter numbers repeat across titles, so pair with `tit…
codeRestrict to specific state statutory codes, e.g. `tx_pe` for the Texas Penal Code. Values are the `actId`s from list_statute_divisions. List allowed, across states. The only way to scope below a whol…
corpusTypeRestrict to one corpus, or several as a list. Federal: `USC`, `CFR`, `CONSTITUTION`, `FEDERAL_RULES`, `FEDERAL_REGISTER`, `EXECUTIVE_ACTION`, `AGENCY_GUIDANCE`, `SENTENCING_GUIDELINES`, `US_TAX_TREAT…
documentTypeFederal Register document stage: `final` (a rule in force), `proposed` (an NPRM), or `presidential` (a Presidential Document, the `EXECUTIVE_ACTION` corpus). The same distinction appears in each row'…
excerptCharsintegerCharacters of matching text to include in each result's `excerpt`. The excerpt is a ranking preview; use `/us/statutes/section/{actId}/body` for the full text. Default 500.
excludeRepealedbooleanDrop sections whose own status says they are not operative (repealed, renumbered, transferred, expired, superseded, omitted, and the rest). Removes what we KNOW is dead; it does not promise the remai…
fieldsReturn only these result fields, e.g. `["title", "excerpt"]`. A result carries 40+ fields, most null on any given row. `actId` and `citation` are always included. Unknown names are rejected 422. Omit…
includeBodybooleanReturn each hit's full text inline on `body`, instead of one `/section/{actId}/body` call per hit. Buys latency, not a discount: the 4-credit search PLUS 6 credits for every row that returns text, so…
limitintegerNumber of results to return per page.
matchTypestring`any` (default) is hybrid semantic + keyword ranking, for natural-language questions. `all` requires every query term; `phrase` matches an exact phrase, for a defined term. To pull up one section, pa…
offsetintegerHow many results to skip, for paging. Every page of a query is cut from one ranking, so results never repeat or go missing between pages. The deepest reachable result is `offset` + `limit`; check `ha…
partOne or more parts within a title, e.g. `240` for 17 C.F.R. Part 240. The CFR counterpart to `chapter`: pass a hit's `parent.part` back. Pair with `titleNumber`; an unpaired part is rejected.
publishedFromOnly return Federal Register documents published on or after this date (`YYYY-MM-DD`). This is the PUBLICATION date, which is not the same as `yearFrom`: that filters the version year of a section.
publishedToOnly return Federal Register documents published on or before this date.
querystringyesSearch query in natural language.
sourceThe named body of law within a `corpusType` that folds several together: `FEDERAL_RULES` into `frcp`/`fre`/`sct`, `CFR` into `far`/`dfars`, `AGENCY_GUIDANCE` into ~34 agency sources, `AGENCY_ADJUDICA…
stateJurisdiction. A 2-letter code for one of the 52 supported US jurisdictions (50 states + DC + PR), or `federal` for USC / CFR / Constitution / federal rules. Pass a list to search several at once. Cas…
titleNumberFilter by USC/CFR title number (e.g., 17 for SEC, 42 for civil rights). Only meaningful for `USC`/`CFR`; ignored for state corpora whose titles are alphabetic (e.g. Texas `pe` = Penal Code).
yearFromOnly sections last amended in or after this year; pair with `yearTo` for a window. Tracks the publisher's own amendment credit, not when we rebuilt the corpus. About a fifth of sections carry no cred…
yearToOnly sections last amended in or before this year. This filters the LAST amendment, so a section amended in 2025 is excluded by `yearTo=2024` even though it existed in 2024. A currency filter, not po…

Structured output declared, but exposes no named fields.

No examples provided.

test_watch ~76

Send a synthetic notification to a watch's destination to verify signing, outbound auth and reachability before relying on it. Test deliveries are deliberately not persisted, so they never appear in list_watch_deliveries and never move the watch's last-notified timestamp. Rate limited by a short cooldown. Free.

NameTypeReqDescription
watch_idstringyes

No output schema declared.

No examples provided.

update_watch ~343

Change a watch's destination, signing secret, outbound auth, or active state. Set isActive false to pause notifications while keeping the watch's config and history. The channel itself cannot be changed. Free.

NameTypeReqDescription
emailAddressNew email address. Only valid on an email/both channel watch. Cannot be cleared.
isActivePause (false) or resume (true) the watch.
scopeReplace the alert's narrowing. Three mutually exclusive forms. Hierarchy prefix: `{"title": "21", "part": "314"}`, where every level set must match and `title` is required whenever a narrower level i…
watch_idstringyes
webhookAuthReplace the outbound credential config, sent as a WHOLE object rather than field by field: a scheme without a credential is not a partial edit, it is a broken config. `{"scheme": "none"}` removes aut…
webhookSecretNew signing secret, or empty string to stop signing deliveries. Only valid on a webhook/both channel watch.
webhookUrlNew webhook URL. Only valid on a webhook/both channel watch. Re-validated against the SSRF blocklist. Cannot be cleared.

No output schema declared.

No examples provided.

Common questions

What is the Vaquill MCP server?

Vaquill is an MCP server listed in the public MCP registry as io.github.Vaquill-AI/vaquill-mcp. Search US and Indian statutes, regulations, constitutions, and court rules. This page covers its hosted endpoint (https://mcp.vaquill.ai/s/_).

Is the Vaquill MCP server safe to use?

Vaquill scores 69 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Vaquill MCP server expose?

Vaquill exposes 27 tools: count_statute_sections, create_watch, delete_watch, fetch, get_credit_balance, and 22 more. Their descriptions and schemas cost roughly 7,610 tokens of context every time the server is loaded.

Does the Vaquill MCP server require authentication?

No. We connected to Vaquill without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the Vaquill MCP server still maintained?

Vaquill is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.