Koskamo

VICP Registry MCP

A free, read-only MCP server providing live access to the U.S. Court of Federal Claims Vaccine Injury Compensation Program database. It enables AI agents to search 13,000+ case decisions, retrieve full court document text, query compensation statistics, and investigate attorney or special master track records without 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.

VICP Registry MCP logo, by VICP RegistryVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by VICP Registry
MCP endpoint (Streamable HTTP)
https://vicp-registry.org/mcp
Vendor documentation

What its tools do

10 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

10 of 10 have a description · 0 of 10 declare behavior hints · 0 of 9 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to vicp-registry.org ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search vaccine injury cases by vaccine, condition, or outcome
  • Retrieve full text of court decisions for specific package IDs
  • Query compensation statistics grouped by vaccine or year
  • Search attorney and special master case histories

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
VICP Registry 1.28.1
MCP protocol negotiated in check
2025-11-25
Tools
10 advertised
Resources
0 advertised
Resource templates
0 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  },
  "experimental": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

VICP Registry — U.S. Vaccine Injury Compensation Program case database. This server queries the same live SQLite database that powers https://vicp-registry.org: ~13,000 curated decisions of the U.S. Court of Federal Claims Office of Special Masters (1988-present), extracted from public court documents (GovInfo / CourtListener primary sources). Conventions: - Cases are identified by `package_id` (e.g. USCOURTS-cofc-1_03-vv-00654) and referred to by `petitioner_identifier` (often initials like "M.M." for minors). - `outcome` values: compensated, dismissed, denied, entitlement_granted_pending_damages, unclear, pending. - Case summaries are AI-assisted extractions from court documents and can contain mistakes; for legal or medical precision, always check the staged source text (get_case_text) or the linked PDFs. - Award-amount caveat: a small number of award_amount_usd values suffer a known extraction bug where cents were stored as dollars (values over $10,000,000 are suspect). Cross-check the case_summary or source text before citing any award over $10M. - Statistics describe this case-record dataset, NOT vaccine-safety rates in the general population. Most vaccinations never lead to a VICP claim. Typical workflow: get_filters() to see valid filter values -> search_cases() -> get_case() / get_case_text() for detail. Cite the canonical case URL (https://vicp-registry.org/case/<package_id>) when quoting a case.

Tools

10 advertised

search_cases
Advertised by the server during the last successful anonymous check.

Search VICP cases with structured filters. - query: free text matched against petitioner identifier, condition, package id, caption name and the AI case summary. - vaccine: canonical vaccine name (use get_filters() for valid values, e.g. "Influenza (flu)", "DTaP/DPT", "MMR", "COVID-19", "Hepatitis B"). - condition_category / outcome: exact values from get_filters(). - decision_type: how the case was decided (stipulation, proffer, reasoned, reasoned_damages, procedural, unclear). - pediatric_only uses the broad pediatric cohort definition (is_minor OR is_minor_inferred OR age<18) — strict age-only filtering undercounts pediatric cases substantially. - dates are ISO strings (YYYY-MM-DD); awards are USD integers. - sort: decision_date_desc|decision_date_asc|filed_asc|filed_desc|award_desc|award_asc - Returns total match count plus one page of compact case records with canonical URLs. Use get_case(package_id) for the full record.

search_cases input schema
{
  "type": "object",
  "title": "search_casesArguments",
  "properties": {
    "sort": {
      "type": "string",
      "title": "Sort",
      "default": "decision_date_desc"
    },
    "limit": {
      "type": "integer",
      "title": "Limit",
      "default": 20
    },
    "query": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Query",
      "default": null
    },
    "offset": {
      "type": "integer",
      "title": "Offset",
      "default": 0
    },
    "outcome": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Outcome",
      "default": null
    },
    "vaccine": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Vaccine",
      "default": null
    },
    "attorney": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Attorney",
      "default": null
    },
    "filed_to": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Filed To",
      "default": null
    },
    "is_death": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Is Death",
      "default": null
    },
    "max_award": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Award",
      "default": null
    },
    "min_award": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Min Award",
      "default": null
    },
    "decided_to": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Decided To",
      "default": null
    },
    "filed_from": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Filed From",
      "default": null
    },
    "decided_from": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Decided From",
      "default": null
    },
    "decision_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Decision Type",
      "default": null
    },
    "autism_related": {
      "type": "boolean",
      "title": "Autism Related",
      "default": false
    },
    "pediatric_only": {
      "type": "boolean",
      "title": "Pediatric Only",
      "default": false
    },
    "special_master": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Special Master",
      "default": null
    },
    "condition_category": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Condition Category",
      "default": null
    }
  }
}
get_case
Advertised by the server during the last successful anonymous check.

Get the complete curated record for one case by package_id. Includes the AI-assisted case summary, all extracted fields, attorney and special master, plus links: canonical page, plain-text source bundle, and per-document PDF links where available.

get_case input schema
{
  "type": "object",
  "title": "get_caseArguments",
  "required": [
    "package_id"
  ],
  "properties": {
    "package_id": {
      "type": "string",
      "title": "Package Id"
    }
  }
}
get_case_text
Advertised by the server during the last successful anonymous check.

Get the staged plain text of a case's public court documents. Long decisions can exceed 100 pages; the text is returned in chunks. Use offset_chars from the previous response's next_offset to page through. max_chars is capped at 50,000.

get_case_text input schema
{
  "type": "object",
  "title": "get_case_textArguments",
  "required": [
    "package_id"
  ],
  "properties": {
    "max_chars": {
      "type": "integer",
      "title": "Max Chars",
      "default": 25000
    },
    "package_id": {
      "type": "string",
      "title": "Package Id"
    },
    "offset_chars": {
      "type": "integer",
      "title": "Offset Chars",
      "default": 0
    }
  }
}
get_filters
Advertised by the server during the last successful anonymous check.

List all valid filter values: canonical vaccine names (with case counts), condition categories, outcomes, special masters, and the dataset's date range. Call this before filtering so you use real values instead of guessing.

get_filters input schema
{
  "type": "object",
  "title": "get_filtersArguments",
  "properties": {}
}
get_statistics
Advertised by the server during the last successful anonymous check.

Aggregate statistics over the case corpus, optionally filtered. group_by: vaccine | condition | outcome | year | special_master Returns per-group: total cases, compensated count, compensation rate, death count, and median award among compensated cases (awards over $10M excluded from the median due to a known unit-extraction bug). IMPORTANT framing: these describe the VICP case-record dataset, not vaccine-safety rates in the general population.

get_statistics input schema
{
  "type": "object",
  "title": "get_statisticsArguments",
  "properties": {
    "vaccine": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Vaccine",
      "default": null
    },
    "group_by": {
      "type": "string",
      "title": "Group By",
      "default": "vaccine"
    },
    "is_death": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Is Death",
      "default": null
    },
    "pediatric_only": {
      "type": "boolean",
      "title": "Pediatric Only",
      "default": false
    },
    "condition_category": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Condition Category",
      "default": null
    }
  }
}
search_attorneys
Advertised by the server during the last successful anonymous check.

Search petitioner attorneys and firms by name. Returns per-attorney aggregate stats: case count, compensation rate, main vaccines, and firm. Useful for 'who has handled X cases' questions.

search_attorneys input schema
{
  "type": "object",
  "title": "search_attorneysArguments",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "title": "Limit",
      "default": 20
    },
    "query": {
      "type": "string",
      "title": "Query"
    }
  }
}
get_attorney
Advertised by the server during the last successful anonymous check.

Get one attorney's profile: bio (when available), aggregate outcomes, and their most recent cases. Name is matched case-insensitively.

get_attorney input schema
{
  "type": "object",
  "title": "get_attorneyArguments",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "title": "Name"
    },
    "limit": {
      "type": "integer",
      "title": "Limit",
      "default": 30
    }
  }
}
get_special_master
Advertised by the server during the last successful anonymous check.

Decision patterns for one special master: outcome breakdown, top vaccines/conditions in their docket, and recent cases.

get_special_master input schema
{
  "type": "object",
  "title": "get_special_masterArguments",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "title": "Name"
    },
    "limit": {
      "type": "integer",
      "title": "Limit",
      "default": 20
    }
  }
}
search
Advertised by the server during the last successful anonymous check.

Search VICP vaccine-injury cases by free text. Returns result ids for use with fetch. (Alias of search_cases for deep-research clients; prefer search_cases when structured filters are available.)

search input schema
{
  "type": "object",
  "title": "searchArguments",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "title": "Query"
    }
  }
}
fetch
Advertised by the server during the last successful anonymous check.

Fetch the full record + source text of one case by its id (package_id). (Deep-research companion to search.)

fetch input schema
{
  "type": "object",
  "title": "fetchArguments",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    }
  }
}

Prompts

0 advertised

No prompt definitions available.

Resources

0 advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-07: 2 of 2 checks answered

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
1305 ms
95th percentile latency
1305 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1305 ms · metadata changed · 10 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http vicp-registry-mcp https://vicp-registry.org/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add vicp-registry-mcp --url https://vicp-registry.org/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable vicp-registry-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "vicp-registry-mcp": {
      "url": "https://vicp-registry.org/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "vicp-registry-mcp": {
      "type": "streamableHttp",
      "url": "https://vicp-registry.org/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start vicp-registry-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "vicp-registry-mcp": {
      "type": "http",
      "url": "https://vicp-registry.org/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http vicp-registry-mcp https://vicp-registry.org/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://vicp-registry.org/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "vicp-registry-mcp": {
      "serverUrl": "https://vicp-registry.org/mcp"
    }
  }
}

Let your agent find its tools

Find servers like VICP Registry MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run VICP Registry 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.

Claim this listing