Persona MCP by usefulapi
Read Persona inquiries, accounts, verifications 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": {
"persona": {
"url": "https://persona.usefulapi.io/mcp"
}
}
}Remote endpoints
https://persona.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (14)
🟢persona_list_inquiries(status, account_id, reference_id, inquiry_template_id, created_at_start, ...)
List identity-verification inquiries (an end-user's KYC verification session). Optionally filter by status, account_id, reference_id, inquiry_template_id, and a created-at date range, and paginate via the JSON:API links.next cursor (page_after) / links.prev (page_before). Returns JSON:API { data:[...], links } — objects contain PII. Persona REST: GET /inquiries.
Input Schema
{
"type": "object",
"properties": {
"status": {
"description": "Filter by inquiry status (e.g. created, pending, completed, failed, expired, approved, declined).",
"type": "string"
},
"account_id": {
"description": "Filter by the associated account id.",
"type": "string"
},
"reference_id": {
"description": "Filter by your own reference-id set on the inquiry.",
"type": "string"
},
"inquiry_template_id": {
"description": "Filter by the inquiry template id (e.g. itmpl_...).",
"type": "string"
},
"created_at_start": {
"description": "Filter: inquiries created at/after this ISO 8601 timestamp.",
"type": "string"
},
"created_at_end": {
"description": "Filter: inquiries created at/before this ISO 8601 timestamp.",
"type": "string"
},
"page_size": {
"description": "Page size — number of records per page.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"page_after": {
"description": "Pagination cursor: return the page AFTER this record id (follow the links.next cursor).",
"type": "string"
},
"page_before": {
"description": "Pagination cursor: return the page BEFORE this record id (follow the links.prev cursor).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢persona_get_inquiry(inquiry_id)
Get a single identity-verification inquiry by id, including its status, template, and relationships (verifications, account). Returns JSON:API { data } containing PII. Persona REST: GET /inquiries/{inquiry_id}.
Input Schema
{
"type": "object",
"properties": {
"inquiry_id": {
"type": "string",
"description": "The inquiry id (e.g. inq_...)."
}
},
"required": [
"inquiry_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢persona_list_accounts(reference_id, page_size, page_after, page_before)
List accounts (a persistent identity record for an end user, linking their inquiries/verifications over time). Optionally filter by reference_id and paginate via the JSON:API links.next cursor (page_after) / links.prev (page_before). Returns JSON:API { data:[...], links } — objects contain PII. Persona REST: GET /accounts.
Input Schema
{
"type": "object",
"properties": {
"reference_id": {
"description": "Filter by your own reference-id set on the account.",
"type": "string"
},
"page_size": {
"description": "Page size — number of records per page.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"page_after": {
"description": "Pagination cursor: return the page AFTER this record id (follow the links.next cursor).",
"type": "string"
},
"page_before": {
"description": "Pagination cursor: return the page BEFORE this record id (follow the links.prev cursor).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢persona_get_account(account_id)
Get a single account by id — the persistent identity record for an end user. Returns JSON:API { data } containing PII. Persona REST: GET /accounts/{account_id}.
Input Schema
{
"type": "object",
"properties": {
"account_id": {
"type": "string",
"description": "The account id (e.g. act_...)."
}
},
"required": [
"account_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢persona_get_verification(verification_id)
Get a single verification by id — one identity check within an inquiry (e.g. government-id, selfie, database, document). Returns JSON:API { data } with check results and PII. Persona REST: GET /verifications/{verification_id}.
Input Schema
{
"type": "object",
"properties": {
"verification_id": {
"type": "string",
"description": "The verification id (e.g. ver_...)."
}
},
"required": [
"verification_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢persona_list_reports(page_size, page_after, page_before)
List reports (screening/monitoring results such as watchlist, adverse-media, or business lookups). Paginate via the JSON:API links.next cursor (page_after) / links.prev (page_before). Returns JSON:API { data:[...], links } — objects may contain PII. Persona REST: GET /reports.
Input Schema
{
"type": "object",
"properties": {
"page_size": {
"description": "Page size — number of records per page.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"page_after": {
"description": "Pagination cursor: return the page AFTER this record id (follow the links.next cursor).",
"type": "string"
},
"page_before": {
"description": "Pagination cursor: return the page BEFORE this record id (follow the links.prev cursor).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢persona_get_report(report_id)
Get a single report by id — a screening/monitoring result (e.g. watchlist, adverse-media, business lookup). Returns JSON:API { data } containing PII. Persona REST: GET /reports/{report_id}.
Input Schema
{
"type": "object",
"properties": {
"report_id": {
"type": "string",
"description": "The report id (e.g. report_...)."
}
},
"required": [
"report_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢persona_list_cases(status, case_template_id, account_id, reference_id, inquiry_id, ...)
List cases (manual-review workflow items grouping inquiries/reports for an analyst to adjudicate). Optionally filter by status, case_template_id, account_id, reference_id, inquiry_id, report_id, and paginate via the JSON:API links.next cursor (page_after) / links.prev (page_before). Returns JSON:API { data:[...], links } — objects contain PII. Persona REST: GET /cases.
Input Schema
{
"type": "object",
"properties": {
"status": {
"description": "Filter by case status (e.g. open, resolved, waiting).",
"type": "string"
},
"case_template_id": {
"description": "Filter by the case template id.",
"type": "string"
},
"account_id": {
"description": "Filter by the associated account id.",
"type": "string"
},
"reference_id": {
"description": "Filter by your own reference-id set on the case.",
"type": "string"
},
"inquiry_id": {
"description": "Filter by an associated inquiry id.",
"type": "string"
},
"report_id": {
"description": "Filter by an associated report id.",
"type": "string"
},
"page_size": {
"description": "Page size — number of records per page.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"page_after": {
"description": "Pagination cursor: return the page AFTER this record id (follow the links.next cursor).",
"type": "string"
},
"page_before": {
"description": "Pagination cursor: return the page BEFORE this record id (follow the links.prev cursor).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢persona_get_case(case_id)
Get a single case by id — a manual-review workflow item. Returns JSON:API { data } containing PII. Persona REST: GET /cases/{case_id}.
Input Schema
{
"type": "object",
"properties": {
"case_id": {
"type": "string",
"description": "The case id (e.g. case_...)."
}
},
"required": [
"case_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢persona_list_transactions(reference_id, transaction_type_id, page_size, page_after, page_before)
List transactions (records submitted for transaction fraud/monitoring analysis). Optionally filter by reference_id and transaction_type_id, and paginate via the JSON:API links.next cursor (page_after) / links.prev (page_before). Returns JSON:API { data:[...], links } — objects may contain PII. Persona REST: GET /transactions.
Input Schema
{
"type": "object",
"properties": {
"reference_id": {
"description": "Filter by your own reference-id set on the transaction.",
"type": "string"
},
"transaction_type_id": {
"description": "Filter by the transaction type id.",
"type": "string"
},
"page_size": {
"description": "Page size — number of records per page.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"page_after": {
"description": "Pagination cursor: return the page AFTER this record id (follow the links.next cursor).",
"type": "string"
},
"page_before": {
"description": "Pagination cursor: return the page BEFORE this record id (follow the links.prev cursor).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢persona_get_transaction(transaction_id)
Get a single transaction by id — a record submitted for transaction fraud/monitoring analysis. Returns JSON:API { data } containing PII. Persona REST: GET /transactions/{transaction_id}.
Input Schema
{
"type": "object",
"properties": {
"transaction_id": {
"type": "string",
"description": "The transaction id (e.g. txn_...)."
}
},
"required": [
"transaction_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢persona_list_events(page_size, page_after, page_before)
List audit-trail events (an immutable log of actions across your Persona account — inquiry/account/case state changes, etc.). Paginate via the JSON:API links.next cursor (page_after) / links.prev (page_before). Returns JSON:API { data:[...], links } — payloads may reference PII. Persona REST: GET /events.
Input Schema
{
"type": "object",
"properties": {
"page_size": {
"description": "Page size — number of records per page.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"page_after": {
"description": "Pagination cursor: return the page AFTER this record id (follow the links.next cursor).",
"type": "string"
},
"page_before": {
"description": "Pagination cursor: return the page BEFORE this record id (follow the links.prev cursor).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢persona_get_event(event_id)
Get a single audit-trail event by id, including its name and payload. Returns JSON:API { data } — payloads may reference PII. Persona REST: GET /events/{event_id}.
Input Schema
{
"type": "object",
"properties": {
"event_id": {
"type": "string",
"description": "The event id (e.g. evt_...)."
}
},
"required": [
"event_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴persona_add_account_tag(account_id, tag_name)
WRITE: adds a tag to an account (mutates state). Tags label/segment accounts for review and automation. Sends JSON body { meta: { "tag-name": <tag_name> } }. Persona REST: POST /accounts/{account_id}/add-tag.
Input Schema
{
"type": "object",
"properties": {
"account_id": {
"type": "string",
"description": "The account id to tag (e.g. act_...)."
},
"tag_name": {
"type": "string",
"description": "The tag name to add to the account."
}
},
"required": [
"account_id",
"tag_name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence