Vasp Track

API Reference

Search, filter, and retrieve VASP compliance data programmatically.

You need an API key to use the API. Get your key

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.

GET/vasps

List published VASPs with cursor-based pagination and optional filters.

Parameters

NameTypeDescription
jurisdictionstringFilter by ISO 3166-1/2 code (e.g. US, AE-DU)
entity_typestringFilter by type: VASP, CASP, EXCHANGE, CUSTODIAN, OTHER
statusstringFilter by operational_status: active, inactive, suspended, unknown
afteruuidCursor for pagination — pass next_cursor from previous response
limitintegerResults 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"
}
GET/vasps/:id

Get full VASP detail including licences, subsidiaries, and identifiers.

Parameters

NameTypeDescription
idstringREQUIREDVASP 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" },

    ]
  }
}
GET/vasps/:id/licences

Get regulatory licences for a specific VASP.

Parameters

NameTypeDescription
idstringREQUIREDVASP 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://..."
    }
  ]
}
POST/submissions

Submit a new VASP or propose updates to an existing one. Requires email verification.

Parameters

NameTypeDescription
emailstringREQUIREDSubmitter email for verification
vasp_iduuidTarget VASP ID (omit for new VASP submissions)
payloadobjectREQUIREDProposed fields (e.g. { legal_name, website, jurisdiction })
notesstringOptional 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."
  }
}
GET/vasps/:id/history

Get the change history (audit trail) for a VASP. Shows every field-level change with source, actor, and timestamp.

Parameters

NameTypeDescription
idstringREQUIREDVASP slug, UUID, or LEI
fieldstringFilter to a specific field (e.g. website, jurisdiction)
limitintegerResults per page (default: 50, max: 200)
offsetintegerPagination 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"
    }
  ]
}
GET/vasps/:id/adverse-media

Get adverse media mentions for a VASP. Shows news articles about hacks, fraud, enforcement actions, lawsuits, and sanctions classified by AI.

Parameters

NameTypeDescription
idstringREQUIREDVASP slug, UUID, or LEI
limitintegerMax 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
    }
  ]
}
GET/jurisdictions

List 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" }
  ]
}
GET/jurisdictions/:code

Get jurisdiction profile including risk indicators, regulatory frameworks, VASP counts, and travel rule requirements.

Parameters

NameTypeDescription
codestringREQUIREDISO 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
      }
    }
  }
}
GET/jurisdictions/:code/vasps

List VASPs in a jurisdiction with pagination and search.

Parameters

NameTypeDescription
codestringREQUIREDISO 3166-1 alpha-2 country code (e.g. US, DE, SG)
offsetintegerPagination offset (default 0)
limitintegerResults per page (default 25, max 100)
qstringSearch 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
}
MCPMCP Server

Connect 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

ToolDescription
search_vaspsSearch VASPs by name
get_vaspFull VASP detail (slug, UUID, or LEI)
list_vaspsBrowse with filters (jurisdiction, type, status)
get_vasp_licencesRegulatory licences for a VASP
get_vasp_historyAudit trail — what changed, when, by whom
get_vasp_adverse_mediaAdverse media mentions — hacks, fraud, enforcement, sanctions
get_jurisdictionJurisdiction regulatory framework + risk data
list_jurisdictionsAll 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?"