Onfido MCP by usefulapi
Create and read Onfido applicants, documents, checks and reports.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"onfido": {
"url": "https://onfido.usefulapi.io/mcp"
}
}
}Remote endpoints
https://onfido.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (14)
🟢onfido_list_applicants(page, per_page, include_deleted)
List applicant (person) records in the Onfido account, paginated. Onfido API: GET /applicants.
Input Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number (1-based). Default 1.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 500). Default 20.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500
},
"include_deleted": {
"description": "Include applicants scheduled for deletion. Default false.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢onfido_get_applicant(applicant_id)
Retrieve a single applicant record by id. Onfido API: GET /applicants/{applicant_id}.
Input Schema
{
"type": "object",
"properties": {
"applicant_id": {
"type": "string",
"description": "The applicant id."
}
},
"required": [
"applicant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢onfido_list_documents(applicant_id)
List the identity documents uploaded for an applicant (metadata only). Onfido API: GET /documents?applicant_id=….
Input Schema
{
"type": "object",
"properties": {
"applicant_id": {
"type": "string",
"description": "The applicant id whose documents to list (required)."
}
},
"required": [
"applicant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢onfido_get_document(document_id)
Retrieve a single document's metadata by id. Onfido API: GET /documents/{document_id}.
Input Schema
{
"type": "object",
"properties": {
"document_id": {
"type": "string",
"description": "The document id."
}
},
"required": [
"document_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢onfido_list_checks(applicant_id)
List the verification checks run for an applicant (results/status, read-only). Onfido API: GET /checks?applicant_id=….
Input Schema
{
"type": "object",
"properties": {
"applicant_id": {
"type": "string",
"description": "The applicant id whose checks to list (required)."
}
},
"required": [
"applicant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢onfido_get_check(check_id)
Retrieve a single check (status + report ids + result) by id. Onfido API: GET /checks/{check_id}.
Input Schema
{
"type": "object",
"properties": {
"check_id": {
"type": "string",
"description": "The check id."
}
},
"required": [
"check_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢onfido_list_reports(check_id)
List the individual reports that make up a check (document, facial similarity, watchlist, …). Onfido API: GET /reports?check_id=….
Input Schema
{
"type": "object",
"properties": {
"check_id": {
"type": "string",
"description": "The check id whose reports to list (required)."
}
},
"required": [
"check_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢onfido_get_report(report_id)
Retrieve a single report (detailed breakdown + result) by id. Onfido API: GET /reports/{report_id}.
Input Schema
{
"type": "object",
"properties": {
"report_id": {
"type": "string",
"description": "The report id."
}
},
"required": [
"report_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢onfido_list_workflow_runs(page, status, applicant_id, sort, created_at_gt, ...)
List Onfido Studio workflow runs (status/output, read-only — does NOT start a run). Onfido API: GET /workflow_runs.
Input Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number (1-based). Default 1.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"status": {
"description": "Filter by status, e.g. processing | awaiting_input | approved | declined | abandoned | error.",
"type": "string"
},
"applicant_id": {
"description": "Filter to a single applicant's workflow runs.",
"type": "string"
},
"sort": {
"description": "Sort by creation time. Default desc.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"created_at_gt": {
"description": "Only runs created after this ISO-8601 timestamp.",
"type": "string"
},
"created_at_lt": {
"description": "Only runs created before this ISO-8601 timestamp.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢onfido_get_workflow_run(workflow_run_id)
Retrieve a single Studio workflow run (status, output, task history) by id. Onfido API: GET /workflow_runs/{workflow_run_id}.
Input Schema
{
"type": "object",
"properties": {
"workflow_run_id": {
"type": "string",
"description": "The workflow run id."
}
},
"required": [
"workflow_run_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢onfido_list_live_photos(applicant_id)
List the live photos captured for an applicant (metadata only). Onfido API: GET /live_photos?applicant_id=….
Input Schema
{
"type": "object",
"properties": {
"applicant_id": {
"type": "string",
"description": "The applicant id whose live photos to list (required)."
}
},
"required": [
"applicant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢onfido_list_live_videos(applicant_id)
List the live videos captured for an applicant (metadata only). Onfido API: GET /live_videos?applicant_id=….
Input Schema
{
"type": "object",
"properties": {
"applicant_id": {
"type": "string",
"description": "The applicant id whose live videos to list (required)."
}
},
"required": [
"applicant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴onfido_create_applicant(first_name, last_name, email, dob, phone_number, ...)
Creates an applicant (person) record in Onfido. Onfido API: POST /applicants. Creates a PII record only — runs NO verification check and costs nothing.
Input Schema
{
"type": "object",
"properties": {
"first_name": {
"type": "string",
"description": "Applicant's first name (required)."
},
"last_name": {
"type": "string",
"description": "Applicant's last name (required)."
},
"email": {
"description": "Applicant email address.",
"type": "string"
},
"dob": {
"description": "Date of birth, yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"phone_number": {
"description": "Phone number in E.164 or local format.",
"type": "string"
},
"address": {
"description": "Address object (building_number, street, town, postcode, country, …). Passed through as-is.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"id_numbers": {
"description": "Array of id-number objects ({ type, value, state_code? }). Passed through as-is.",
"type": "array",
"items": {}
},
"location": {
"description": "Location object (ip_address, country_of_residence, …) for consent tracking. Passed through as-is.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"first_name",
"last_name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴onfido_update_applicant(applicant_id, first_name, last_name, email, dob, ...)
Updates an applicant's details (reversible; runs no verification). Onfido API: PUT /applicants/{applicant_id}.
Input Schema
{
"type": "object",
"properties": {
"applicant_id": {
"type": "string",
"description": "The applicant id to update (required)."
},
"first_name": {
"description": "Updated first name.",
"type": "string"
},
"last_name": {
"description": "Updated last name.",
"type": "string"
},
"email": {
"description": "Applicant email address.",
"type": "string"
},
"dob": {
"description": "Date of birth, yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"phone_number": {
"description": "Phone number in E.164 or local format.",
"type": "string"
},
"address": {
"description": "Address object (building_number, street, town, postcode, country, …). Passed through as-is.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"id_numbers": {
"description": "Array of id-number objects ({ type, value, state_code? }). Passed through as-is.",
"type": "array",
"items": {}
}
},
"required": [
"applicant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence