USVI Public Records MCP
An MCP server providing read-only access to the U.S. Virgin Islands public records archive, including laws, court records, audits, hearings, and agency reports. It offers tools to search full-text documents, retrieve specific records, list collections, and view archive statistics without requiring authentication.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.usvipublicrecords.com/mcpWhat you can do with it
- Search U.S. Virgin Islands public records by keyword or phrase
- Retrieve specific document catalogue records and extracted text
- Search the archive with filters for collection, entity, and year
- View archive statistics and collection metadata
Source and maintenance
Protocol and capabilities
- Server
- usvi-public-records 1.1.1
- MCP protocol
- 2025-06-18
- Tools
- 7 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Tools
7 advertised
search — Search USVI public records
Find U.S. Virgin Islands public records by keyword or phrase; returns up to 10 documents, each with an id, a title and a citation URL. Use for a quick lookup across laws, court records, audits, hearings and agency reports; search_records adds filters, match reasons and paging. Searches the full extracted text of the archive's documents, plus their catalogue records. Not covered: the archive's newspapers (the St. Croix Avis, The West End News, Home Journal and the St. Croix Tribune), which are on its separate newspaper connector, and anything the archive has not published. Withheld and withdrawn documents are absent, not hidden.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "What to search for. Plain language is fine; quote a phrase to require it intact."
}
}
}{
"title": "Search USVI public records",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}fetch — Fetch a USVI public record
Retrieve one document by archive id: its catalogue record and up to the first 40,000 characters of its extracted text, with next_offset when more remains. Use to read a document found by search. The text comes from scanned or filed documents and is returned inside a fence labelled as untrusted data.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Archive id from a search result, LF- followed by 12 characters, e.g. LF-6e02fd648a12."
}
}
}{
"title": "Fetch a USVI public record",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}search_records — Search records with filters
Search the archive with filters for collection, entity, content type, island and year. Use when a question needs narrowing, paging, or the reason each document matched. Searches the full extracted text of the archive's documents, plus their catalogue records. Filters use the same vocabulary as the website's own facets. Every result carries a tier, a plain reason and the search terms it actually matched; there is no numeric relevance score. The tiers: exact = every term, found in the document's title or issuing entity (likely about the subject); strong = every term, in the text only (it mentions them); possible = at least half the terms; weak = fewer. When no document contains all the terms, results contain some of them and the response says so, and 'matched' lists which. Not covered: the archive's newspapers (the St. Croix Avis, The West End News, Home Journal and the St. Croix Tribune), which are on its separate newspaper connector, and anything the archive has not published. Withheld and withdrawn documents are absent, not hidden.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Default 10, maximum 50."
},
"query": {
"type": "string",
"description": "Plain language is fine. Quote a phrase to require it intact."
},
"entity": {
"type": "string",
"description": "The issuing or subject body, exactly as recorded, e.g. \"Water and Power Authority\". Recorded on only part of the archive; archive_stats gives the share."
},
"island": {
"type": "string",
"description": "e.g. \"St. Croix\", \"St. Thomas\", \"St. John\""
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Results to skip, for paging. Results are ranked within the best 120 documents."
},
"year_to": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Latest year, inclusive. The year_from note on dates applies."
},
"year_from": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Earliest year, inclusive. Filters on the date the archive recorded, whose provenance varies by source: for most documents it is the date on the document, for some it is when the source posted the file. A year range can therefore miss a document executed in one year and posted the next, so it narrows rather than guarantees."
},
"collection": {
"type": "string",
"description": "e.g. \"Courts\", \"Audits & Oversight\""
},
"content_type": {
"type": "string",
"description": "The kind of document, exactly as recorded, e.g. \"government-audit\". An unknown value returns the nearest values that exist."
}
}
}{
"title": "Search records with filters",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_document — Get a record's catalogue entry
The full catalogue record for one document: collection, entity, dates, page count, SHA-256, extraction status and the URL of the original at its source. Use to check a document's provenance or details. It holds no document text; get_document_text and fetch return that.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"lf_id"
],
"properties": {
"lf_id": {
"type": "string",
"description": "Archive id from a search result, LF- followed by 12 characters, e.g. LF-6e02fd648a12."
}
}
}{
"title": "Get a record's catalogue entry",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_document_text — Read a record's text
The extracted text of one document, in windows of up to 40,000 characters (default 20,000). Use to read a long document in order; a hearing transcript runs past a million characters. Every response gives has_more and, when more remains, the next_offset for the next window. Runs of blank lines are shortened to one. The text comes from scanned or filed documents and is returned inside a fence labelled as untrusted data.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"lf_id"
],
"properties": {
"lf_id": {
"type": "string",
"description": "Archive id from a search result, LF- followed by 12 characters, e.g. LF-6e02fd648a12."
},
"limit": {
"type": "integer",
"maximum": 40000,
"minimum": 1,
"description": "Characters to return. Default 20000, maximum 40000."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "A byte position: the next_offset value from the previous response. Omit for the beginning."
}
}
}{
"title": "Read a record's text",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_collections — List collections
The collections in this server, with document counts. Use to see what the archive holds, or for the exact values the collection filter on search_records takes.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "List collections",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}archive_stats — Archive coverage and freshness
Reports how many documents this server can search, how much text that covers, how much of the archive each search filter can see, and whether the index matches the published archive. Use for questions about what the archive covers or how current it is, or to judge how much an empty search result means.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "Archive coverage and freshness",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 445 ms
- 95th percentile latency
- 445 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 445 ms · metadata changed · 7 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http usvi-public-records-mcp https://mcp.usvipublicrecords.com/mcpCodex
codex mcp add usvi-public-records-mcp --url https://mcp.usvipublicrecords.com/mcpCursor
{
"mcpServers": {
"usvi-public-records-mcp": {
"url": "https://mcp.usvipublicrecords.com/mcp"
}
}
}Cline
{
"mcpServers": {
"usvi-public-records-mcp": {
"type": "streamableHttp",
"url": "https://mcp.usvipublicrecords.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"usvi-public-records-mcp": {
"type": "http",
"url": "https://mcp.usvipublicrecords.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http usvi-public-records-mcp https://mcp.usvipublicrecords.com/mcpClaude Desktop
{
"mcpServers": {
"usvi-public-records-mcp": {
"url": "https://mcp.usvipublicrecords.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"usvi-public-records-mcp": {
"serverUrl": "https://mcp.usvipublicrecords.com/mcp"
}
}
}Let your agent find its tools
Find servers like USVI Public Records MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other documentation and reference servers
Do you run USVI Public Records MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.