Speedmap Connect · MCP server
Identity verification for AI agents.
KYC and KYB inside Claude, ChatGPT, Cursor and VS Code. Your compliance team and your agents verify NINs, BVNs, companies and bank accounts in the tools they already use, and the model only ever sees the answer.
{
"status": "verified",
"match": true,
"field_matches": { "first_name": true, "date_of_birth": true },
"subject": "*******2221",
"reference_id": "spm_3f9c1a7b2e4d…"
}The BVN matches Clarke Griffin and the date of birth agrees. No personal data was returned to this conversation; the full record stays in the Speedmap dashboard under reference spm_3f9c….
The contract
Built for a bank’s security review, not just a demo.
Speedmap receives the full record and decides what leaves the platform. On the MCP channel that decision is fixed: assertions only, purpose and consent enforced, bulk by handle.
Assertions only
38 purpose codes, as an enum
Consent before execution
Bulk returns a job handle
B2B only, your key
Audited like any other channel
Setup
Connect your client in under a minute.
Create a key in the dashboard, then add the server to your client. Remote server URL: http://localhost:4000/mcp
Claude Desktop
Add Speedmap to claude_desktop_config.json (Settings, Developer, Edit config). The @speedmap/mcp package is a thin stdio bridge to the hosted server; it needs Node.js 20 or later.
- 1Open Claude Desktop, then Settings → Developer → Edit config.
- 2Paste the configuration below and replace
sk_test_...with your test key. - 3Restart Claude Desktop. The Speedmap tools appear in the tools menu of a new chat.
{
"mcpServers": {
"speedmap": {
"command": "npx",
"args": [
"-y",
"@speedmap/mcp"
],
"env": {
"SPEEDMAP_API_KEY": "sk_test_...",
"SPEEDMAP_MCP_URL": "http://localhost:4000/mcp"
}
}
}
}{
"mcpServers": {
"speedmap": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://localhost:4000/mcp",
"--header",
"Authorization:${SPEEDMAP_AUTH}"
],
"env": {
"SPEEDMAP_AUTH": "Bearer sk_test_..."
}
}
}
}Use a sk_test_ key while you evaluate: test mode, free and deterministic. Swap in a sk_live_ key once your workspace is switched live after the compliance review.
Tools
Twelve tools. Every one returns the minimum.
Each tool mirrors a REST endpoint and runs through the same verification engine, consent gate, billing and audit trail.
| Tool | What it does | Returns to the model |
|---|---|---|
| verify_nin | Checks a National Identity Number, optionally comparing a name and date of birth. | verified or not_found, field matches, masked name, reference |
| verify_bvn | Boolean BVN check through NIBSS against the name and date of birth you supply. | match, field matches, masked BVN, reference |
| verify_business | Looks up a CAC-registered company by RC number, TIN or exact name (KYB). | Company name, registration status, type, registration date |
| verify_account | NUBAN name enquiry on a 10-digit account, with an expected holder name. | name_match, masked account name, bank name |
| face_match | Passive liveness on a selfie, optionally matched against the BVN photo. | Pass or fail and confidence scores only |
| check_signals | Scores SIM-swap recency, recent BVN changes and watchlist status. | risk_score 0–100, risk_level, factors |
| bulk_verify | Queues up to 10,000 checks of one product as a single job. | Job id and dashboard link, never rows |
| get_bulk_job | Reports progress for a bulk job. | Progress and outcome counts |
| get_verification | Fetches an earlier check by reference_id, for example to resolve a pending result. | Status and assertion |
| request_consent | Creates a consent request the person approves by link, email or USSD. | Consent id, link and USSD code to share |
| list_reasons | Lists the permitted purpose codes. | The 38 NIMC purpose codes |
| list_banks | Lists bank names and codes for verify_account. | Bank names and codes |
verify_nin
- What it does
- Checks a National Identity Number, optionally comparing a name and date of birth.
- Returns to the model
- verified or not_found, field matches, masked name, reference
verify_bvn
- What it does
- Boolean BVN check through NIBSS against the name and date of birth you supply.
- Returns to the model
- match, field matches, masked BVN, reference
verify_business
- What it does
- Looks up a CAC-registered company by RC number, TIN or exact name (KYB).
- Returns to the model
- Company name, registration status, type, registration date
verify_account
- What it does
- NUBAN name enquiry on a 10-digit account, with an expected holder name.
- Returns to the model
- name_match, masked account name, bank name
face_match
- What it does
- Passive liveness on a selfie, optionally matched against the BVN photo.
- Returns to the model
- Pass or fail and confidence scores only
check_signals
- What it does
- Scores SIM-swap recency, recent BVN changes and watchlist status.
- Returns to the model
- risk_score 0–100, risk_level, factors
bulk_verify
- What it does
- Queues up to 10,000 checks of one product as a single job.
- Returns to the model
- Job id and dashboard link, never rows
get_bulk_job
- What it does
- Reports progress for a bulk job.
- Returns to the model
- Progress and outcome counts
get_verification
- What it does
- Fetches an earlier check by reference_id, for example to resolve a pending result.
- Returns to the model
- Status and assertion
request_consent
- What it does
- Creates a consent request the person approves by link, email or USSD.
- Returns to the model
- Consent id, link and USSD code to share
list_reasons
- What it does
- Lists the permitted purpose codes.
- Returns to the model
- The 38 NIMC purpose codes
list_banks
- What it does
- Lists bank names and codes for verify_account.
- Returns to the model
- Bank names and codes
Use cases
Where Connect earns its place.
KYC reconciliation in chat
A compliance officer works through a list of flagged applications in Claude or ChatGPT: confirm each BVN matches the applicant, check the company is active on the CAC register, and note the reference for the file. No spreadsheet of identity data in the conversation.
“Check that the BVN on LA-2291 matches Clarke Griffin, born 18 April 1992, for credit background check.”
Verification wired from the editor
A developer in Cursor or VS Code asks the agent to integrate NIN verification. The agent reads the schemas, runs checks for every outcome, and writes the handling code, without leaving the editor.
“Run verify_nin against the sandbox not-found value and write the error handling for it.”
Bulk, dispatched conversationally
An operations lead asks the assistant to verify this month’s payout accounts. Connect queues a bulk job and returns the handle; the assistant reports progress and counts, and the rows stay in the dashboard.
“Verify the 2,400 vendor accounts in the October payout batch and tell me when it’s done.”
Purpose limitation
The 38 NIMC purpose codes, enforced in the schema.
These are the only values an assistant can pass as reason. The list is served by list_reasons and GET /v1/reasons, and stored with every result.
- taxationEnrollment
- taxationAssessment
- taxationEnforcement
- corporateAffairsDirector
- corporateAffairsShareholder
- corporateAffairsTrustee
- medical
- educationExam
- educationAdmission
- educationPromotion
- employmentRecruitment
- employmentEnrollment
- employmentDismissal
- creditBackgroundCheck
- financialProducts
- insurance
- clearanceForPoliticalOffice
- legalCourts
- legalEnrollment
- crimePrisonIncarceration
- passportImmigration
- pensionEnrollment
- socioCulturalEnrollment
- entertainment
- physicalAccess
- logicalVirtualAccess
- telecommunicationSimReg
- telecommunicationIotReg
- aviationTransport
- roadTransport
- maritimeTransport
- railwayTransport
- leaCheck
- defence
- nyscCheck
- efccCheck
- blacklistPolitical
- blacklistSocial
- What is Speedmap Connect?
- Speedmap Connect is a Model Context Protocol (MCP) server that lets AI assistants and agents run Speedmap identity checks: NIN, BVN, CAC business, bank account, face and fraud signals. It is the first identity MCP server designed so a NIN never enters an AI context window.
- Does the AI model ever see the NIN, BVN or identity record?
- No. Tools return assertions only: verified or not found, match results, masked identifiers and names, risk scores and a reference. Identifiers are masked in tool output and error messages, and the full record stays in the Speedmap dashboard, where reveals are role-restricted and audited.
- Who can use Speedmap Connect?
- Businesses with a Speedmap account. Connect is B2B only: every request authenticates with your organisation’s Speedmap API key, and the same entitlements, purpose codes, consent rules and audit log apply as on the REST API. There is no consumer path through MCP.
- How is purpose enforced?
- The reason argument is a fixed enum of the 38 NIMC purpose codes in the tool schema. An agent cannot invent a purpose; an invalid one is rejected before any provider is called. The reason is stored with the result.
- How does consent work inside a chat?
- Checks that touch personal data require an explicit consent confirmation argument, which the assistant should set only after the user confirms the data subject consented. Full BVN records need a NIBSS Consent Hub grant, which request_consent creates as a link, email or USSD code.
- Can I paste thousands of identities into a chat?
- Use bulk_verify for volume. It returns a job handle and a dashboard link, never rows, so results stay in Speedmap. For large lists, upload a CSV in the dashboard or call the bulk API rather than pasting identifiers into a conversation.
- What does it cost?
- There is no separate fee for the MCP server. Checks made through Connect are billed exactly like API checks, at the product price, from your prepaid wallet.
Give your team verification inside the AI tools they already use.
Create an account, copy your API key and connect Claude, ChatGPT, Cursor or VS Code in a minute. Your workspace switches live after the compliance review.