Vaquill
REMOTE · MCP.VAQUILL.AI · 2 COMPONENTS · SCANNED SEP 21
Search US and Indian statutes, regulations, constitutions, and court rules.
Available components
Recent critical change
Authorization (2 Sept 2026). See the changelog before you install this server.
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
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (delete_watch). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
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
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
claude mcp add --transport http vaquill-ai-vaquill-mcp 'https://mcp.vaquill.ai/s/_'
{
"mcpServers": {
"vaquill-ai-vaquill-mcp": {
"url": "https://mcp.vaquill.ai/s/_"
}
}
} {
"servers": {
"vaquill-ai-vaquill-mcp": {
"type": "http",
"url": "https://mcp.vaquill.ai/s/_"
}
}
} [mcp_servers.vaquill-ai-vaquill-mcp] url = "https://mcp.vaquill.ai/s/_"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"vaquill-ai-vaquill-mcp": {
"type": "remote",
"url": "https://mcp.vaquill.ai/s/_",
"enabled": true
}
}
} openclaw mcp add vaquill-ai-vaquill-mcp --url 'https://mcp.vaquill.ai/s/_' --transport streamable-http
mcp_servers:
vaquill-ai-vaquill-mcp:
url: "https://mcp.vaquill.ai/s/_" {
"McpServers": {
"vaquill-ai-vaquill-mcp": {
"Transport": "http",
"Url": "https://mcp.vaquill.ai/s/_"
}
}
} assistant mcp add vaquill-ai-vaquill-mcp -t streamable-http -u 'https://mcp.vaquill.ai/s/_'
{
"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.
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.
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/_ |
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 →
count_statute_sections 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.
| Name | Type | Req | Description |
|---|---|---|---|
| actStatus | – | – | Count only sections carrying this status. |
| chapter | – | – | Chapter identifier. Pair with `titleNumber` or `code`. |
| code | – | – | State code identifier, e.g. `tx_26`. Pair with `state`. |
| corpusType | – | – | Corpus to count, single or list. Omit to count every corpus. |
| excludeRepealed | boolean | – | Exclude 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,… |
| part | – | – | CFR part identifier. Pair with `titleNumber`. |
| state | – | – | Two-letter jurisdiction code or `federal`, single or list. |
| titleNumber | – | – | USC or CFR title number. |
Structured output declared, but exposes no named fields.
No examples provided.
create_watch Create Law Change 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.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | string | – | – |
| corpusType | string | yes | Board'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… |
| emailAddress | – | – | Required when channel is email or both. |
| scope | – | – | Narrow 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… |
| state | – | – | Board'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… |
| webhookAuth | – | – | Optional 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… |
| webhookSecret | – | – | Optional 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… |
| webhookUrl | – | – | Required when channel is webhook or both. |
No output schema declared.
No examples provided.
delete_watch Delete Law Change 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.
| Name | Type | Req | Description |
|---|---|---|---|
| watch_id | string | yes | – |
No output schema declared.
No examples provided.
fetch Fetch Document ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_credit_balance 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 Credit 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.
| Name | Type | Req | Description |
|---|---|---|---|
| region | – | – | Jurisdiction 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 Section Change History ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| act_id | string | yes | Section 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… |
| beforeId | – | – | Return 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. |
| changeKind | – | – | Filter to these kinds. Repeat the parameter to pass several (`?changeKind=amended&changeKind=removed`). Omit for all three. |
| limit | integer | – | Max changes to return on this page. |
| order | string | – | `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. |
| sinceId | – | – | Return 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 Sections Citing This One ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| act_id | string | yes | Section 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… |
| limit | integer | – | Maximum citing sections to return. |
Structured output declared, but exposes no named fields.
No examples provided.
get_section_cross_state Same Rule in Other States ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| act_id | string | yes | Section 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… |
| limit | integer | – | Maximum states to return, one provision each. |
Structured output declared, but exposes no named fields.
No examples provided.
get_section_definitions Defined Terms in Section ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| act_id | string | yes | Section 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 Adjacent Sections ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| act_id | string | yes | Section 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… |
| limit | integer | – | How many sections to return on EACH side. |
Structured output declared, but exposes no named fields.
No examples provided.
get_sections_batch Statute 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.
| Name | Type | Req | Description |
|---|---|---|---|
| actIds | array | yes | Section 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… |
| includeBody | boolean | – | Return 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 Statute Section Metadata ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| act_id | string | yes | Section 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| act_id | string | yes | Section 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… |
| asOf | – | – | Text 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… |
| format | string | – | Which 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,… |
| structured | boolean | – | When 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| change_id | integer | yes | – |
| watch_id | string | yes | – |
No output schema declared.
No examples provided.
list_boards Alert 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.
| Name | Type | Req | Description |
|---|---|---|---|
| corpusType | – | – | Only 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… |
| limit | integer | – | Max boards to return. The default covers the whole registry today; check `total` rather than assuming it always will. |
| offset | integer | – | Number of boards to skip, for paging. |
| state | – | – | Only 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 Browse Code Structure ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| actStatus | – | – | List 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. |
| chapter | – | – | Chapter identifier to drill into (USC and state codes). |
| code | – | – | State code identifier, e.g. `tx_pe` (browse `/us/statutes/divisions` with `corpusType=STATE&state=<code>` to list them). |
| corpusType | string | yes | Corpus to browse: USC, CFR, STATE, or REGULATION. |
| cursor | – | – | Resume 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. |
| excludeRepealed | boolean | – | Leave 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… |
| part | – | – | Part identifier to drill into (CFR). |
| state | – | – | 2-letter jurisdiction code, required for STATE and REGULATION. Case-insensitive. |
| titleNumber | – | – | USC/CFR title number to drill into. |
Structured output declared, but exposes no named fields.
No examples provided.
list_statutes_coverage Corpus 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 Changes on a Watch ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| beforeId | – | – | Return 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. |
| changeKind | – | – | Filter to these kinds. Repeat the parameter to pass several (`?changeKind=added&changeKind=amended`). Omit for all three. |
| limit | integer | – | Max changes to return. |
| order | string | – | `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. |
| since | – | – | Return 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… |
| sinceId | – | – | Return 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_id | string | yes | – |
No output schema declared.
No examples provided.
list_watch_deliveries 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max deliveries to return. |
| watch_id | string | yes | – |
No output schema declared.
No examples provided.
list_watches Law Change 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max watches to return. |
| offset | integer | – | Number of watches to skip, for paging. |
No output schema declared.
No examples provided.
resolve_statute_citation Resolve 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cite | string | yes | A Bluebook citation string, e.g. '42 U.S.C. 1983' or '16 C.F.R. 444.1'. |
| corpusType | – | – | Optional corpus to resolve WITHIN: `STATE`, `REGULATION`, `STATE_RULES`, `CONSTITUTION`, `STATE_CONSTITUTION`. Narrows a citation whose form several corpora share; like `state`, a citation belonging… |
| state | – | – | Optional 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 Resolve 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.
| Name | Type | Req | Description |
|---|---|---|---|
| citations | array | yes | Bluebook 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… |
| corpusType | – | – | Optional corpus to resolve every citation WITHIN: `STATE` (statutory text, federal or state), `REGULATION` (administrative codes), `STATE_RULES` (court rules), `CONSTITUTION` (constitutional text), `… |
| state | – | – | Optional 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 Search US Law ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
search_us_statutes 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.
| Name | Type | Req | Description |
|---|---|---|---|
| actStatus | – | – | Positively 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… |
| agency | – | – | Federal 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… |
| changedSince | – | – | Only 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… |
| chapter | – | – | One 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… |
| code | – | – | Restrict 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… |
| corpusType | – | – | Restrict 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… |
| documentType | – | – | Federal 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'… |
| excerptChars | integer | – | Characters 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. |
| excludeRepealed | boolean | – | Drop 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… |
| fields | – | – | Return 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… |
| includeBody | boolean | – | Return 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… |
| limit | integer | – | Number of results to return per page. |
| matchType | string | – | `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… |
| offset | integer | – | How 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… |
| part | – | – | One 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. |
| publishedFrom | – | – | Only 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. |
| publishedTo | – | – | Only return Federal Register documents published on or before this date. |
| query | string | yes | Search query in natural language. |
| source | – | – | The 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… |
| state | – | – | Jurisdiction. 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… |
| titleNumber | – | – | Filter 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). |
| yearFrom | – | – | Only 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… |
| yearTo | – | – | Only 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 Send Test Alert ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| watch_id | string | yes | – |
No output schema declared.
No examples provided.
update_watch Update Law Change 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.
| Name | Type | Req | Description |
|---|---|---|---|
| emailAddress | – | – | New email address. Only valid on an email/both channel watch. Cannot be cleared. |
| isActive | – | – | Pause (false) or resume (true) the watch. |
| scope | – | – | Replace 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_id | string | yes | – |
| webhookAuth | – | – | Replace 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… |
| webhookSecret | – | – | New signing secret, or empty string to stop signing deliveries. Only valid on a webhook/both channel watch. |
| webhookUrl | – | – | New 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.
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.