Vasp Track

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.

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": "gemini",
      "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?"