Learning materials

Reference

MCP Connector Reference

The MCP tool catalog, routing guidance, OAuth flow and JSON-RPC examples for AI clients connecting directly — the layer the REST API docs can't describe.

Last reviewed 13 August 2026

Verified against the live MCP server and its tool catalog while writing this page — endpoint names, tool names and OAuth routes are real, not illustrative.


1. What This Is, And How It Relates To The API Docs

There are two ways to integrate: plain REST under /v1, documented at api.compliance-mcp.com/docs — and the MCP connector, a single JSON-RPC endpoint that exposes the same underlying checks as a tool catalog for AI clients like ChatGPT and Claude.

The REST docs are auto-generated from the OpenAPI schema, and that schema does show that POST /mcp and GET /mcp exist — but OpenAPI has no way to describe what happens inside a JSON-RPC method dispatch. It can't enumerate the tool catalog, say which tool to call for which request, or describe the MCP-specific OAuth flow. This page is that missing layer.

Use /docs if you're integrating over plain REST. Use this page if you're building or configuring an MCP host or client — ChatGPT Connectors, Claude Connectors, or any other MCP-compatible assistant.


2. Connecting

SettingValue
Production MCP URLhttps://api.compliance-mcp.com/mcp
ProtocolMCP over JSON-RPC 2.0
Main transportPOST /mcp
Streaming transportGET /mcp with Accept: text/event-stream for SSE/resource notifications
Session cleanupDELETE /mcp, when the host supports MCP session termination
AuthAuthorization: Bearer tk_<organization-api-key>
Required key capabilitymcp_access

The connector is self-describing: call initialize, then tools/list, and use resources/list / prompts/list when the host supports them.

search and fetch are compatibility tools for ChatGPT-style connector discovery and deep-research mode — useful for finding connector capabilities and CN/TARIC reference text, but not the operational screening path. Business checks should call the domain tools below directly.


3. Tool Catalog — Discovery And Metadata

ToolUse whenKey inputs
searchChatGPT-style discovery over TARIC/CN reference data and connector capabilitiesquery
fetchRetrieve the full text payload for a result id returned by searchid
list_sanctions_sourcesInspect the official source catalog and latest refresh metadatacategory, include_disabled
get_connector_metadataInspect connector versions, resources, prompts, source catalog, changelog and notification/fallback behaviorinclude_tools, include_sources, include_prompts, include_changelog

The catalog is versioned (toolset_version, metadata_version) rather than dated in this document — call get_connector_metadata for the version and change history currently live, the same way Prompt Scenarios: Banking & Payments treats /sources as the live word on source coverage.


4. Tool Catalog — Goods, Customs And Chemicals

ToolUse whenKey inputs
get_compliance_reportFull goods compliance check plus a client-ready HTML evidence reporttaric_code, country, date, language, product_texts
check_trade_complianceSame full check as raw JSON — TARIC hierarchy, measures, duties, RU/BY goods sanctions, goods-risk export-control layerstaric_code, country, measure_type, additional_code, date, language, product_texts
check_sanctionsLightweight RU/BY goods-sanctions-only checktaric_code, country, date, language
get_overviewCompact card — description, hierarchy, duty rate, sanctions status, key measurestaric_code, country, date, language
get_dutiesDuty rates only, stripped of non-duty measurestaric_code, country, date, language
get_measuresFull TARIC measures without sanctionstaric_code, country, measure_type, additional_code, date, language
get_cn_descriptionCN/TARIC hierarchy and description onlytaric_code, language
search_cn_codesFind CN codes by product description or numeric prefixquery, language, limit
search_chemical_substancesSearch the ECICS chemical reference cache by CAS, EC, CUS, InChIKey or namequery, language, limit
search_export_control_candidatesSearch export-control candidate wording by CAS RN, CN/TARIC, control code or product text — see HS / CN / TARIC Classification §6 for why a bare code alone is weakquery, cas_rn, cn_code, limit
get_goods_screening_runRe-read a recent /goods widget run's full evidence without rerunning get_compliance_reportoptional run_id

5. Tool Catalog — Entity, Vessel And PEP Screening

ToolUse whenKey inputs
screen_entitiesScreen a person, company, vessel, bank, aircraft, alias, identifier or address for KYC/AML sanctions exposurequery, address, country, date_of_birth, registration_number, threshold, entity_type, limit, as_of_date, include_historical_closed, list_name
screen_entity_vopEPC288-23 / Reg. (EU) 2024/886 VoP close-match classification — MTCH, CMTC, NMTC, NOAP. See Why VoP and sanctions screening can disagree before treating a VoP result as a sanctions clearancequery, country, date_of_birth, registration_number, threshold, entity_type, limit, as_of_date, list_name
screen_pepScreen a person against the PEP layer — EU-27 and European Parliament office holders, Georgia's ACB data, the Latvian Saeima, the Estonian Riigikogu, the Lithuanian Seimas, and a Central Asia parliamentary layer (Kazakhstan, Kyrgyzstan, Uzbekistan). A hit is an EDD risk signal, not a sanctions blockquery, country, date_of_birth, as_of_date, threshold, limit
lookup_ofac_asset_related_partiesRead OFAC SDN enhanced owner/operator/related-party metadata for vessels and aircraft — relationship evidence only; returned parties still need screen_entitiesitem_type, query, registration_number, limit
get_entity_screening_runRe-read a recent /entity widget run's full evidence without rerunning screen_entitiesoptional run_id

6. Tool Catalog — KYB, Business Registry

Not in the original internal reference this page replaces — genuinely new capability, and worth calling out on its own, matching the depth given to it in Prompt Scenarios: Banking & Payments §8–9.

ToolUse whenKey inputs
search_business_registryFind a company in the Latvian, Estonian, Kazakhstan or Polish company registerquery, country
get_business_registry_profileFull company card plus available related-party records for an already-resolved registry companysource_ref, registry_code
screen_business_entity_with_related_partiesResolve a registry company, pull its officers and beneficial owners, and screen the company plus every named person in one call — see Clean company, unchecked director for why this mattersquery or registry_code, country, include_officers, include_beneficial_owners, include_shareholders

Registry data is reference evidence, not a sanctions clearance on its own — screen_business_entity_with_related_parties is what turns it into one.


7. Tool Catalog — ISO 20022 Payments

ToolUse whenKey inputs
validate_iso20022_paymentParse pain.001/pacs.008 XML and return structural validation status plus the payment chain — no screeningxml
screen_iso20022_paymentOne-shot screening of every participant. Omitting xml retrieves the latest active run for the current MCP sessionxml, threshold, limit, list_name, as_of_date, include_historical_closed
create_iso20022_payment_caseSame screening, persisted as an audit-ready PaymentCasexml, threshold, limit, list_name, as_of_date, include_historical_closed
get_payment_case_evidenceLoad a stored PaymentCasecase_id
get_payment_screening_runLoad transient one-shot evidence without creating a case. Safe with no arguments — returns the latest active runoptional run_id
resolve_payment_bics_agenticPrepare web-search tasks for unresolved BICs — unverified, and never changes a payment verdict on its ownxml, max_bics

8. Tool Catalog — Interactive Widgets

ToolUse whenKey inputs
open_goods_screening_form (short alias goods)Open the TARIC/CN goods screening widgetoptional taric_code, product, country, date, language, product_texts
open_entity_screening_form (short alias entity)Open the entity/person/vessel/bank/aircraft screening widgetoptional item_type, query, country, date_of_birth, entity_type, list_name, threshold
open_payment_screening_form (short alias payment)Open the ISO 20022 payment widgetoptional xml, threshold, as_of_date, include_historical_closed, persist_case

Widget submissions run the underlying tool directly and persist a transient run — read it back with get_goods_screening_run, get_entity_screening_run or get_payment_screening_run rather than resubmitting the same input.


9. Routing Guidance

  • CN/TARIC code plus country → get_compliance_report
  • Quick duty rate → get_overview or get_duties
  • RU/BY goods sanctions only → check_sanctions
  • Person, company, vessel, aircraft, bank, address or identifier screening → screen_entities
  • Vessel/aircraft owner or operator relationship → lookup_ofac_asset_related_parties, then screen_entities on the returned names
  • Payment / PSP / EPC VoP close-match decision → screen_entity_vop
  • PEP / EDD risk on a person → screen_pep, alongside screen_entities when sanctions exposure also matters
  • Company registry lookup, UBO, related parties → search_business_registryscreen_business_entity_with_related_parties
  • ISO 20022 XML parse only → validate_iso20022_payment
  • ISO 20022 one-shot preview → screen_iso20022_payment
  • ISO 20022 persisted audit case → create_iso20022_payment_case
  • Follow-up on a run already made → the matching get_*_screening_run / get_payment_case_evidence tool, not a resubmission
  • Source/freshness/audit coverage → list_sanctions_sources
  • Connector version/capabilities question → get_connector_metadata

10. JSON-RPC Examples

Initialize:

curl -X POST "https://api.compliance-mcp.com/mcp" \
  -H "Authorization: Bearer tk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-06-18",
      "clientInfo": {"name": "example-client", "version": "1.0.0"}
    }
  }'

List tools:

curl -X POST "https://api.compliance-mcp.com/mcp" \
  -H "Authorization: Bearer tk_..." \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

Call a tool — screen an entity:

curl -X POST "https://api.compliance-mcp.com/mcp" \
  -H "Authorization: Bearer tk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "tools/call",
    "params": {
      "name": "screen_entities",
      "arguments": {
        "query": "Petr Aven",
        "threshold": 60,
        "limit": 20,
        "list_name": "LV_FID_FROZEN"
      }
    }
  }'

Follow up on the latest one-shot payment run, without resubmitting XML:

curl -X POST "https://api.compliance-mcp.com/mcp" \
  -H "Authorization: Bearer tk_..." \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"get_payment_screening_run","arguments":{}}}'

11. Resources And Prompts

Resource URIMIME typePurpose
compliance://server/manifest.jsonapplication/jsonConnector manifest and version policy
compliance://sources/catalog.jsonapplication/jsonMachine-readable source catalog and freshness metadata
compliance://sources/catalog.mdtext/markdownHuman-readable source catalog for audit conversations
compliance://server/changelog.mdtext/markdownConnector changelog and customer-facing change summary
Widget resource URIMIME typePurpose
ui://widget/compliance-report.htmltext/html;profile=mcp-appInteractive HTML evidence report viewer
ui://widget/entity-screening-form.htmltext/html;profile=mcp-appEntity/person/vessel/bank/aircraft screening form
ui://widget/goods-screening-form.htmltext/html;profile=mcp-appTARIC/CN goods screening form
ui://widget/payment-screening-form.htmltext/html;profile=mcp-appISO 20022 payment screening form

Prompt templates are exposed through prompts/list and prompts/get for clients that support them — useful for hosts that render prompts as guided forms. Clients that don't should use the open_*_screening_form tools directly instead.


12. OAuth 2.1 For MCP Clients

For OpenAI Web custom connectors and other OAuth-capable MCP hosts, the endpoint advertises protected resource metadata and an Authorization Code + PKCE flow.

OAuth endpointURL
Protected resource metadatahttps://api.compliance-mcp.com/.well-known/oauth-protected-resource
Authorization server metadatahttps://api.compliance-mcp.com/.well-known/oauth-authorization-server
Dynamic client registrationhttps://api.compliance-mcp.com/oauth/register
Authorization endpointhttps://api.compliance-mcp.com/oauth/authorize
Token endpointhttps://api.compliance-mcp.com/oauth/token

Flow: the host reads the protected-resource and authorization-server metadata, registers a public OAuth client through /oauth/register, opens /oauth/authorize with PKCE S256, the user pastes an organization API key (tk_...) into the hosted consent page, and the host exchanges the code at /oauth/token. The issued access token is the organization key, so existing tenant access controls apply unchanged.

Direct bearer mode. Hosts that support direct bearer auth can skip OAuth entirely and send Authorization: Bearer tk_<organization-api-key> directly. Never place the key in public connector metadata, instructions or screenshots — only in the OAuth consent form or the host's private bearer-token setting.

The organization key needs mcp_access for MCP calls; api_access is a separate capability for REST — one does not imply the other.


13. Access And Error Model

Failure situationExpected behavior
Missing or invalid bearer token401
Key does not have mcp_access403
Tenant quota or rate limit exceeded429
Tool arguments fail schema validationMCP tool result with isError=true and a validation message
Source or database lookup failsTool-specific error result, or 5xx depending on the transport layer

Tool results are compliance evidence and review signals. They do not replace legal, customs, trade or regulatory advice.