AI tools

MCP server

Connect Claude, Cursor, VS Code or any MCP client to OKYC — create sessions, review cases, build workflows and read the docs from your AI assistant.

View as Markdown

OKYC runs a hosted Model Context Protocol server. Once connected, your AI assistant can set up an integration end to end (workflow, test session, webhook), look up and review sessions, and answer questions from these docs.

URLhttps://mcp.okyc.stream/mcp
TransportStreamable HTTP (stateless)
Sign-inOAuth 2.1 with PKCE — you sign in with your OKYC dashboard account
Client registrationClient ID Metadata Documents, or dynamic client registration
Scopesokyc:read (look things up), okyc:write (create and change)

Connect

The first time you use it, your client opens the OKYC dashboard: sign in (with 2FA if you use it) and approve access. The client then acts as you, with your role, in the organizations you belong to. Tools take optional organization_id and project_id: you only need them when you belong to several organizations or an organization has several projects — list_organizations lists both. A test key already names its project.

Claude Code

claude-code.sh
claude mcp add --transport http okyc https://mcp.okyc.stream/mcp

Claude (web and desktop): Settings → Connectors → Add custom connector, name OKYC, URL https://mcp.okyc.stream/mcp.

Cursor

cursor.mcp.jsonc
{
  "mcpServers": {
    "okyc": { "url": "https://mcp.okyc.stream/mcp" }
  }
}

VS Code

vscode.mcp.jsonc
{
  "servers": {
    "okyc": { "type": "http", "url": "https://mcp.okyc.stream/mcp" }
  }
}

Headless (CI, scripts): instead of signing in, send a test secret key. Live keys are refused — they must never sit in an AI tool's configuration.

headless.mcp.jsonc
{
  "mcpServers": {
    "okyc-sandbox": {
      "url": "https://mcp.okyc.stream/mcp",
      "headers": { "Authorization": "Bearer ${OKYC_TEST_KEY}" }
    }
  }
}

The dashboard's Developers → AI tools (MCP) page shows the same setup, and lists connected tools so you can disconnect them.

Safety

  • Test mode by default. Every tool takes mode; it is test unless you (or your assistant, because you asked) pass live. Some tools are test-only: running checks directly, trying a draft, creating API keys.
  • Your role applies. Tools go through the same API as the dashboard: a reviewer cannot publish workflows, a developer cannot decide sessions, audit events are admin-only.
  • Personal data stays out of AI context. Tool results are sent to your AI provider. In live mode, names, dates of birth, addresses, document numbers and extracted fields are masked unless an admin turns on Share personal data with AI tools (Developers → AI tools). Evidence files are never available.
  • Not available from AI tools: erasing personal data, creating live API keys, overriding a final decision, and changing settings. Use the dashboard.
  • Approval before changes. Tools are annotated read-only, write or destructive; MCP clients ask you before running write and destructive tools — keep that on.
  • Audited. Every call is recorded in the audit log as you, via the MCP client (mcp.tool_called), in addition to what the underlying action records.
  • Rate limit: 120 tool calls per minute per person or key.

Prompts and resources

  • Prompt Integrate OKYC into my app — plans and implements an integration for your stack, in test mode.
  • Prompt Review a session — explains why a session needs review and recommends a decision (without deciding).
  • Resource okyc://docs/llms.txt — the documentation index (same as https://docs.okyc.stream/llms.txt).

Tools

ToolKindModesWhat it does
list_organizationsread-only—Organizations you belong to, with your role and each organization’s projects. Pass organization_id / project_id to other tools when there is more than one.
get_usageread-onlytest, liveChecks and sessions used in the last 90 days, by check and provider.
list_audit_eventsread-onlytest, liveRecent audit log (who did what, never values). Admins and owners only.
list_api_keysread-onlytest, liveAPI keys of this mode: name, prefix, last use. Secrets are never returned.
create_test_api_keywritetest onlyCreate a sandbox secret key (sk_test_…) for a backend integration. Returned once. Live keys can only be created in the dashboard.
create_sessionwritetest, liveCreate a session for one applicant and get its url (open it in a browser or pass it to an SDK). Test mode by default.
list_sessionsread-onlytest, liveMost recent sessions, newest first. Filter by status (e.g. review, approved), type or workflow.
get_sessionread-onlytest, liveEverything about one session: steps, checks (with verified_by), decisions and rules fired, screening hits, manual checks waiting for review, timeline.
get_review_queueread-onlytest, liveSessions waiting for a reviewer, oldest first, with the reasons they need review.
get_evaluation_previewread-onlytest, liveWhat the rules would decide now with current data (after corrections or manual reviews). Records nothing.
review_manual_checkwritetest, liveFor checks verified by a reviewer (provider manual): confirm or reject against the uploaded document. Only before a final decision. Find them in get_session → manual_checks.
decide_sessiondestructivetest, liveApprove, decline or request resubmission of a session waiting in review. Final decisions cannot be overridden from an AI tool (use the dashboard).
cancel_sessiondestructivetest, liveCancel an active session; its link stops working.
list_workflow_templatesread-onlytest, liveReady-made workflow definitions (e.g. India KYC standard) to start from.
list_workflowsread-onlytest, liveWorkflows of the organization with their current version.
get_workflowread-onlytest, liveA workflow with its current definition and version history.
get_verification_setupread-onlytest, liveWhich steps are verified manually by a reviewer (no registry connected) and which integrations (DigiLocker, phone OTP) are configured for live mode.
validate_workflowread-onlytest, liveReport every issue (errors and warnings, per step) in a definition without saving it.
list_rule_fieldsread-onlytest, liveVariables rules can use for a definition (check statuses, scores, name/DOB matches…).
create_workflowwritetest, liveCreate and publish a new workflow (version 1). Validate it first with validate_workflow.
save_workflow_draftwritetest, liveSave an unpublished draft (shared with the dashboard builder). Returns its validation.
test_workflow_draftwritetest onlyCreate a sandbox session running a draft definition, without publishing it. Test mode only.
publish_workflowwritetest, livePublish a new version; new sessions use it (running sessions keep theirs).
run_checkwritetest onlyRun one check without a session, e.g. in.pan.verify with sandbox magic values. Test mode only (live checks may cost money and must come from your backend).
list_capabilitiesread-onlytest, liveWorkflow step capabilities per country and the checks they run.
list_document_typesread-onlytest, liveDocuments the documents step can request, with every extractable field fully described.
list_webhook_endpointsread-onlytest, liveWebhook endpoints of this mode and the events they receive.
create_webhook_endpointwritetest, liveRegister an HTTPS endpoint for events (e.g. session.approved). Returns its signing secret once.
delete_webhook_endpointdestructivetest, liveStop sending events to an endpoint.
list_webhook_deliveriesread-onlytest, liveRecent delivery attempts for an endpoint (status, response code, retries).
search_docsread-only—Find documentation pages (integration guides, SDKs, API, concepts) for a question.
get_doc_pageread-only—A documentation page as Markdown, e.g. /mobile/android or /backend/webhooks.

list_organizations

List organizations. Organizations you belong to, with your role and each organization’s projects. Pass organization_id / project_id to other tools when there is more than one.

No arguments.

get_usage

Get usage. Checks and sessions used in the last 90 days, by check and provider.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

No arguments.

list_audit_events

List audit events. Recent audit log (who did what, never values). Admins and owners only.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

No arguments.

list_api_keys

List API keys. API keys of this mode: name, prefix, last use. Secrets are never returned.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

No arguments.

create_test_api_key

Create a test API key. Create a sandbox secret key (sk_test_…) for a backend integration. Returned once. Live keys can only be created in the dashboard.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
namestringyesLabel, e.g. "staging backend"

create_session

Create a verification session. Create a session for one applicant and get its url (open it in a browser or pass it to an SDK). Test mode by default.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
workflow_idstringyes—
reference_idstring—
countrystring—
prefillobject—
localestring—
redirect_urlstring—
metadataobject—
expires_ininteger—

list_sessions

List sessions. Most recent sessions, newest first. Filter by status (e.g. review, approved), type or workflow.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
statusstringcreated, in_progress, processing, review, approved, declined, …
type"kyc" | "kyb"—
workflow_idstring—
qstringSearch: reference id or session id
limitinteger—

get_session

Get a session. Everything about one session: steps, checks (with verified_by), decisions and rules fired, screening hits, manual checks waiting for review, timeline.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
session_idstringyesSession id

get_review_queue

Get the review queue. Sessions waiting for a reviewer, oldest first, with the reasons they need review.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

No arguments.

get_evaluation_preview

Preview the automatic decision. What the rules would decide now with current data (after corrections or manual reviews). Records nothing.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
session_idstringyesSession id

review_manual_check

Confirm or reject a manual check. For checks verified by a reviewer (provider manual): confirm or reject against the uploaded document. Only before a final decision. Find them in get_session → manual_checks.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
session_idstringyesSession id
check_idstringyesCheck id
decision"confirmed" | "rejected"yes—
reason"document_mismatch" | "document_unreadable" | "document_invalid" | "suspected_fraud" | "other"Required when rejecting
notestring—

decide_session

Decide a session in review. Approve, decline or request resubmission of a session waiting in review. Final decisions cannot be overridden from an AI tool (use the dashboard).

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
session_idstringyesSession id
outcome"approved" | "declined" | "resubmission_requested"yes—
reason_codestringyese.g. manual_verified, fraud_suspected, blurry_document
notestring—
stepsstring[]Steps to redo (resubmission_requested only)

cancel_session

Cancel a session. Cancel an active session; its link stops working.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
session_idstringyesSession id

list_workflow_templates

List workflow templates. Ready-made workflow definitions (e.g. India KYC standard) to start from.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

No arguments.

list_workflows

List workflows. Workflows of the organization with their current version.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

No arguments.

get_workflow

Get a workflow. A workflow with its current definition and version history.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
workflow_idstringyesWorkflow id

get_verification_setup

Get verification setup. Which steps are verified manually by a reviewer (no registry connected) and which integrations (DigiLocker, phone OTP) are configured for live mode.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
countrystring—

validate_workflow

Validate a workflow definition. Report every issue (errors and warnings, per step) in a definition without saving it.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
definitionobjectyesWorkflow definition (type, country, steps, rules, default_outcome, settings) — see get_workflow

list_rule_fields

List rule fields. Variables rules can use for a definition (check statuses, scores, name/DOB matches…).

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
definitionobjectyesWorkflow definition (type, country, steps, rules, default_outcome, settings) — see get_workflow

create_workflow

Create a workflow. Create and publish a new workflow (version 1). Validate it first with validate_workflow.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
namestringyes—
definitionobjectyesWorkflow definition (type, country, steps, rules, default_outcome, settings) — see get_workflow

save_workflow_draft

Save a workflow draft. Save an unpublished draft (shared with the dashboard builder). Returns its validation.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
workflow_idstringyesWorkflow id
definitionobjectyesWorkflow definition (type, country, steps, rules, default_outcome, settings) — see get_workflow
namestring—

test_workflow_draft

Try a draft in a test session. Create a sandbox session running a draft definition, without publishing it. Test mode only.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
workflow_idstringyesWorkflow id
definitionobjectyesWorkflow definition (type, country, steps, rules, default_outcome, settings) — see get_workflow

publish_workflow

Publish a workflow version. Publish a new version; new sessions use it (running sessions keep theirs).

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
workflow_idstringyesWorkflow id
definitionobjectyesWorkflow definition (type, country, steps, rules, default_outcome, settings) — see get_workflow
namestring—

run_check

Run a check (sandbox). Run one check without a session, e.g. in.pan.verify with sandbox magic values. Test mode only (live checks may cost money and must come from your backend).

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
check_keystringyese.g. in.pan.verify, tax_id.verify
inputobjectyes—

list_capabilities

List capabilities. Workflow step capabilities per country and the checks they run.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

No arguments.

list_document_types

List document types. Documents the documents step can request, with every extractable field fully described.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
countrystring—

list_webhook_endpoints

List webhook endpoints. Webhook endpoints of this mode and the events they receive.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

No arguments.

create_webhook_endpoint

Create a webhook endpoint. Register an HTTPS endpoint for events (e.g. session.approved). Returns its signing secret once.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
urlstringyes—
eventsstring[]Event types or patterns, default [""], e.g. ["session."]

delete_webhook_endpoint

Delete a webhook endpoint. Stop sending events to an endpoint.

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
endpoint_idstringyesWebhook endpoint id

list_webhook_deliveries

List webhook deliveries. Recent delivery attempts for an endpoint (status, response code, retries).

Also takes organization_id (optional when you belong to one organization) and mode (test by default).

ArgumentTypeRequiredDescription
endpoint_idstringyesWebhook endpoint id

search_docs

Search the OKYC docs. Find documentation pages (integration guides, SDKs, API, concepts) for a question.

ArgumentTypeRequiredDescription
querystringyes—

get_doc_page

Read a docs page. A documentation page as Markdown, e.g. /mobile/android or /backend/webhooks.

ArgumentTypeRequiredDescription
pathstringyesPage path from search_docs

On this page