API Reference
Search, filter, and retrieve VASP compliance data programmatically.
Rate Limiting
All API endpoints are rate-limited to 100 requests per minute per API key. Exceeding the limit returns 429 Too Many Requests. The response includes Retry-After header.
/vasps/searchSearch VASPs by name. Combines full-text and trigram fuzzy matching.
Parameters
| Name | Type | Description | |
|---|---|---|---|
q | string | REQUIRED | Search query (min 2 characters) |
Example
curl -H "Authorization: Bearer YOUR_API_KEY" "https://www.vasptrack.org/api/v1/vasps/search?q=coinbase"
Response
{
"data": [
{
"id": "9eaaab08-c980-4737-b8aa-2ab369a558c0",
"slug": "coinbase",
"legal_name": "Coinbase",
"entity_type": "VASP",
"jurisdiction": "US",
"operational_status": "active"
}
]
}/vaspsList published VASPs with cursor-based pagination and optional filters.
Parameters
| Name | Type | Description | |
|---|---|---|---|
jurisdiction | string | Filter by ISO 3166-1/2 code (e.g. US, AE-DU) | |
entity_type | string | Filter by type: VASP, CASP, EXCHANGE, CUSTODIAN, OTHER | |
status | string | Filter by operational_status: active, inactive, suspended, unknown | |
after | uuid | Cursor for pagination — pass next_cursor from previous response | |
limit | integer | Results per page (default: 20, max: 100) |
Example
curl -H "Authorization: Bearer YOUR_API_KEY" "https://www.vasptrack.org/api/v1/vasps?jurisdiction=US&limit=5"
Response
{
"data": [
{
"id": "...",
"slug": "coinbase",
"legal_name": "Coinbase",
...
}
],
"next_cursor": "9eaaab08-c980-4737-b8aa-2ab369a558c0"
}/vasps/:idGet full VASP detail including licences, subsidiaries, and identifiers.
Parameters
| Name | Type | Description | |
|---|---|---|---|
id | string | REQUIRED | VASP slug, UUID, or LEI |
Example
curl -H "Authorization: Bearer YOUR_API_KEY" "https://www.vasptrack.org/api/v1/vasps/coinbase"
Response
{
"data": {
"id": "9eaaab08-c980-4737-b8aa-2ab369a558c0",
"slug": "coinbase",
"legal_name": "Coinbase",
"entity_type": "VASP",
"jurisdiction": "US",
"website": "https://www.coinbase.com",
"operational_status": "active",
"licences": [...],
"subsidiaries": [...],
"identifiers": [
{ "system": "LEI", "value": "549300QHD76EP6ZKTT48" },
]
}
}/vasps/:id/licencesGet regulatory licences for a specific VASP.
Parameters
| Name | Type | Description | |
|---|---|---|---|
id | string | REQUIRED | VASP slug, UUID, or LEI |
Example
curl -H "Authorization: Bearer YOUR_API_KEY" "https://www.vasptrack.org/api/v1/vasps/coinbase/licences"
Response
{
"data": [
{
"id": "...",
"jurisdiction": "US",
"regulator": "FinCEN",
"licence_number": "31000178085934",
"licence_type": "Money Services Business",
"status": "active",
"source_url": "https://..."
}
]
}/submissionsSubmit a new VASP or propose updates to an existing one. Requires email verification.
Parameters
| Name | Type | Description | |
|---|---|---|---|
email | string | REQUIRED | Submitter email for verification |
vasp_id | uuid | Target VASP ID (omit for new VASP submissions) | |
payload | object | REQUIRED | Proposed fields (e.g. { legal_name, website, jurisdiction }) |
notes | string | Optional context for reviewers |
Example
curl -X POST "https://www.vasptrack.org/api/v1/submissions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"payload": {
"legal_name": "New Exchange",
"jurisdiction": "SG",
"website": "https://newexchange.com"
}
}'Response
{
"data": {
"id": "...",
"status": "pending_verification",
"message": "Check your email to verify."
}
}/vasps/:id/historyGet the change history (audit trail) for a VASP. Shows every field-level change with source, actor, and timestamp.
Parameters
| Name | Type | Description | |
|---|---|---|---|
id | string | REQUIRED | VASP slug, UUID, or LEI |
field | string | Filter to a specific field (e.g. website, jurisdiction) | |
limit | integer | Results per page (default: 50, max: 200) | |
offset | integer | Pagination offset (default: 0) |
Example
curl -H "Authorization: Bearer YOUR_API_KEY" "https://www.vasptrack.org/api/v1/vasps/coinbase/history?limit=5"
Response
{
"vasp_id": "9eaaab08-c980-4737-b8aa-2ab369a558c0",
"total": 42,
"entries": [
{
"id": 1234,
"field_name": "website",
"old_value": "https://old.example.com",
"new_value": "https://new.example.com",
"source": "coingecko",
"changed_by": "Enricher: CoinGecko",
"change_type": "enrichment",
"changed_at": "2026-03-15T10:32:00Z"
}
]
}/vasps/:id/adverse-mediaGet adverse media mentions for a VASP. Shows news articles about hacks, fraud, enforcement actions, lawsuits, and sanctions classified by AI.
Parameters
| Name | Type | Description | |
|---|---|---|---|
id | string | REQUIRED | VASP slug, UUID, or LEI |
limit | integer | Max results (default 50, max 200) |
Example
curl -H "Authorization: Bearer YOUR_API_KEY" "https://www.vasptrack.org/api/v1/vasps/binance/adverse-media?limit=5"
Response
{
"vasp_id": "...",
"total": 5,
"entries": [
{
"id": 1,
"severity": "critical",
"category": "sanctions",
"title": "DOJ Investigates Exchange Over Sanctions Evasion",
"summary": "Department of Justice probing alleged Iran sanctions violations",
"url": "https://...",
"published_at": "2026-03-14T00:00:00Z",
"source": "gdelt",
"confidence": 0.92
}
]
}/jurisdictionsList all jurisdictions with VASP counts. Returns ISO 3166-1 alpha-2 codes sorted by number of VASPs.
Example
curl -H "Authorization: Bearer YOUR_API_KEY" "https://www.vasptrack.org/api/v1/jurisdictions"
Response
{
"data": [
{ "jurisdiction": "US", "vasp_count": "1206" },
{ "jurisdiction": "GB", "vasp_count": "312" },
{ "jurisdiction": "SG", "vasp_count": "187" }
]
}/jurisdictions/:codeGet jurisdiction profile including risk indicators, regulatory frameworks, VASP counts, and travel rule requirements.
Parameters
| Name | Type | Description | |
|---|---|---|---|
code | string | REQUIRED | ISO 3166-1 alpha-2 country code (e.g. US, DE, SG) |
Example
curl -H "Authorization: Bearer YOUR_API_KEY" "https://www.vasptrack.org/api/v1/jurisdictions/DE"
Response
{
"data": {
"code": "DE",
"fatf_status": "clear",
"basel_aml_score": 4.2,
"basel_aml_rank": 78,
"cpi_score": 79,
"cpi_rank": 9,
"regulatory_frameworks": [
{
"regulatorName": "BaFin",
"frameworkName": "KWG — Kryptoverwahrgeschäft",
"description": "...",
"regulatorUrl": "https://www.bafin.de/..."
}
],
"vasp_count": 42,
"regulated_count": 38,
"licensed_count": 35,
"travel_rule": {
"authority": "Bundesanstalt für Finanzdienstleistungsaufsicht (BaFin)",
"current_rule": {
"threshold": { "amount": 1000, "currency": "EUR", "isZeroThreshold": false },
"requiredFields": {
"originator": ["fullName", "accountNumber", "address"],
"beneficiary": ["fullName", "accountNumber"]
},
"unhostedWallets": { "verificationRequired": true, "verificationThreshold": 1000 },
"effectiveFrom": "2024-12-30",
"authorityUrl": "https://www.bafin.de/..."
},
"pending_rule": {
"threshold": { "amount": 0, "currency": "EUR", "isZeroThreshold": true },
"requiredFields": {
"originator": ["fullName", "accountNumber", "address", "dateOfBirth", "placeOfBirth", "idDocumentNumber"],
"beneficiary": ["fullName", "accountNumber"]
},
"unhostedWallets": { "verificationRequired": true, "verificationThreshold": 1000 },
"effectiveFrom": "2026-07-01",
"authorityUrl": "https://www.bafin.de/..."
},
"beneficiary_obligations": {
"mustVerifyOriginatorData": true,
"rejectIncompleteTransfers": true,
"responseTimeHours": null,
"recordKeepingYears": 5
},
"reporting": {
"str": { "required": true, "threshold": 0, "currency": "EUR", "timeframeDays": 0, "authority": "FIU Germany" },
"ctr": null
}
}
}
}/jurisdictions/:code/vaspsList VASPs in a jurisdiction with pagination and search.
Parameters
| Name | Type | Description | |
|---|---|---|---|
code | string | REQUIRED | ISO 3166-1 alpha-2 country code (e.g. US, DE, SG) |
offset | integer | Pagination offset (default 0) | |
limit | integer | Results per page (default 25, max 100) | |
q | string | Search query to filter VASPs by name |
Example
curl -H "Authorization: Bearer YOUR_API_KEY" "https://www.vasptrack.org/api/v1/jurisdictions/US/vasps?limit=3"
Response
{
"data": [
{
"slug": "coinbase",
"legal_name": "Coinbase",
"entity_type": "EXCHANGE",
"is_regulated": "yes",
"trust_score": 92,
"website": "https://www.coinbase.com"
}
],
"total": 1206
}MCP ServerConnect AI assistants (Claude, ChatGPT) to Vasp Track data via the Model Context Protocol. The MCP server wraps the REST API — your API key is used for authentication.
Setup — Claude Desktop
// claude_desktop_config.json
{
"mcpServers": {
"vasptrack": {
"command": "npx",
"args": ["-y", "@cogentic-co/vasptrack-mcp"],
"env": {
"VASPTRACK_API_KEY": "vt_your_key_here",
"VASPTRACK_BASE_URL": "https://www.vasptrack.org"
}
}
}
}Setup — Claude Code
claude mcp add vasptrack -- npx -y @cogentic-co/vasptrack-mcp # Set environment variables export VASPTRACK_API_KEY=vt_your_key_here export VASPTRACK_BASE_URL=https://www.vasptrack.org
Available Tools
| Tool | Description |
|---|---|
search_vasps | Search VASPs by name |
get_vasp | Full VASP detail (slug, UUID, or LEI) |
list_vasps | Browse with filters (jurisdiction, type, status) |
get_vasp_licences | Regulatory licences for a VASP |
get_vasp_history | Audit trail — what changed, when, by whom |
get_vasp_adverse_media | Adverse media mentions — hacks, fraud, enforcement, sanctions |
get_jurisdiction | Jurisdiction regulatory framework + risk data |
list_jurisdictions | All jurisdictions with VASP counts |
Example Prompts
- "Is Coinbase regulated in Singapore?"
- "What licences does Kraken have?"
- "List all VASPs in France"
- "Show me the change history for Binance"
- "Which jurisdictions are on the FATF grey list?"