io.github.codespar/mcp-persona
NPM · @CODESPAR/MCP-PERSONA · SCANNED OCT 1
MCP server for Persona — developer-first identity verification + KYC (inquiries, accounts, reports)
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 92 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 100 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability74
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 2361 tokens (~118/item across 20 items; 20 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage84
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 53% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 20 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 21 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the io.github.codespar/mcp-persona server?
io.github.codespar/mcp-persona runs locally as an npm package, launched with npx -y @codespar/mcp-persona. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @codespar/mcp-persona
claude mcp add codespar-mcp-persona -- npx -y @codespar/mcp-persona
{
"mcpServers": {
"codespar-mcp-persona": {
"command": "npx",
"args": [
"-y",
"@codespar/mcp-persona"
]
}
}
} {
"servers": {
"codespar-mcp-persona": {
"command": "npx",
"args": [
"-y",
"@codespar/mcp-persona"
]
}
}
} codex mcp add codespar-mcp-persona -- npx -y @codespar/mcp-persona
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"codespar-mcp-persona": {
"type": "local",
"command": [
"npx",
"-y",
"@codespar/mcp-persona"
],
"enabled": true
}
}
} openclaw mcp add codespar-mcp-persona --command npx --arg -y --arg @codespar/mcp-persona
mcp_servers:
codespar-mcp-persona:
command: "npx"
args: ["-y", "@codespar/mcp-persona"] {
"McpServers": {
"codespar-mcp-persona": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@codespar/mcp-persona"
]
}
}
} assistant mcp add codespar-mcp-persona -t stdio -c npx -a -y @codespar/mcp-persona
{
"mcpServers": {
"codespar-mcp-persona": {
"command": "npx",
"args": [
"-y",
"@codespar/mcp-persona"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 30 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Sept 26 −3
- Stability: pass → 0.80 functional
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Sept 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 23 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 22 Sept 26 −3
- Stability: pass → 0.80 functional
- 21 Sept 26 0
- Stability: 0.97 → pass security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 1 Oct 2026 · Analysed npm/@codespar/mcp-persona@0.2.2
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 92 packages
| Packages resolved | 92 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_case_tag ~85
Add a tag to a case. Tags are operator-facing labels useful for grouping / filtering investigations (e.g. 'high-risk', 'manual-review', 'compliance-2026-q2').
| Name | Type | Req | Description |
|---|---|---|---|
| case_id | string | yes | Persona case id (case_...). |
| tag-name | string | yes | Tag name to add. Created on-the-fly if it doesn't exist. |
No output schema declared.
No examples provided.
approve_inquiry ~81
Mark an inquiry as approved. This records your final decision on the Persona inquiry — useful for dashboard reporting and Persona's feedback loop. Does NOT itself gate the user; you must still enforce the decision in your app.
| Name | Type | Req | Description |
|---|---|---|---|
| comment | string | – | Optional free-text note for the approval. |
| inquiry_id | string | yes | Persona inquiry id (inq_...). |
No output schema declared.
No examples provided.
create_account ~204
Create a persistent Persona account — a long-lived end-user record that multiple inquiries can attach to. Enables re-use of previously verified fields and longitudinal fraud signals across sessions.
| Name | Type | Req | Description |
|---|---|---|---|
| address-city | string | – | – |
| address-country-code | string | – | ISO-3166 alpha-2, e.g. US, BR, MX. |
| address-postal-code | string | – | – |
| address-street-1 | string | – | – |
| address-street-2 | string | – | – |
| address-subdivision | string | – | State / province code. |
| birthdate | string | – | YYYY-MM-DD |
| email-address | string | – | – |
| name-first | string | – | – |
| name-last | string | – | – |
| name-middle | string | – | – |
| phone-number | string | – | – |
| reference-id | string | – | Your internal user id. |
| social-security-number | string | – | Sensitive. Persona stores tokenised. |
| tags | array | – | – |
No output schema declared.
No examples provided.
create_case ~147
Open a case — a workspace for an ongoing investigation tied to one or more inquiries / accounts. Useful for manual review, periodic re-verification, or flagged users that need operator follow-up.
| Name | Type | Req | Description |
|---|---|---|---|
| assignee-id | string | – | Persona user id of the assignee. |
| case-template-id | string | yes | Case template id (ctmpl_...) from your Persona dashboard. |
| fields | object | – | Additional case fields (keys follow the template schema). |
| name | string | – | Short human-readable case name. |
| priority | string | – | Priority label (e.g. 'low', 'medium', 'high'). |
| status | string | – | Initial status (e.g. 'Open'). |
No output schema declared.
No examples provided.
create_inquiry ~260
Create a Persona inquiry — a verification session bound to an inquiry template you configured in the Persona dashboard. The template defines which verifications run (document, selfie, database, phone, etc). Returns an inquiry id and (for hosted flows) a one-time link for the end user.
| Name | Type | Req | Description |
|---|---|---|---|
| account-id | string | – | Optional existing Persona account id (act_...) to attach the inquiry to. |
| fields | object | – | Prefilled fields for the inquiry (e.g. { name-first, name-last, birthdate, address-street-1, address-city, address-subdivision, address-postal-code, address-country-code, email-address, phone-number… |
| inquiry-template-id | string | yes | Inquiry template id (itmpl_...) from your Persona dashboard. Defines what runs in the flow. |
| inquiry-template-version-id | string | – | Optional pin to a specific template version (itmplv_...). |
| note | string | – | Internal note shown in the Persona dashboard. |
| redirect-uri | string | – | URL to redirect the user to after completing the flow. |
| reference-id | string | – | Your internal user id. Echoed back on webhooks and filterable via list_inquiries. |
No output schema declared.
No examples provided.
decline_inquiry ~58
Mark an inquiry as declined. Records your final reject decision on the Persona inquiry for reporting and feedback.
| Name | Type | Req | Description |
|---|---|---|---|
| comment | string | – | Optional free-text reason for the decline. |
| inquiry_id | string | yes | Persona inquiry id (inq_...). |
No output schema declared.
No examples provided.
list_accounts ~117
List Persona accounts, filterable by reference-id (your internal user id) or email. Useful for looking up a persistent end-user record before creating duplicates.
| Name | Type | Req | Description |
|---|---|---|---|
| filter[email-address] | string | – | Filter by email. |
| filter[phone-number] | string | – | Filter by phone number (E.164). |
| filter[reference-id] | string | – | Filter by your internal user id. |
| page[after] | string | – | – |
| page[before] | string | – | – |
| page[size] | string | – | – |
No output schema declared.
No examples provided.
list_cases ~125
List investigation cases, filterable by status, assignee, or priority. Useful for operator dashboards or batch automation over the review queue.
| Name | Type | Req | Description |
|---|---|---|---|
| filter[assignee-id] | string | – | Filter by assignee Persona user id. |
| filter[priority] | string | – | Filter by priority label. |
| filter[status] | string | – | Filter by case status (e.g. 'Open', 'Waiting on Customer', 'Closed'). |
| page[after] | string | – | – |
| page[before] | string | – | – |
| page[size] | string | – | – |
No output schema declared.
No examples provided.
list_inquiries ~149
List inquiries, filterable by reference-id (your internal user id) or status. Useful for reconciling state or finding a user's inquiry history.
| Name | Type | Req | Description |
|---|---|---|---|
| filter[account-id] | string | – | Filter by Persona account id. |
| filter[reference-id] | string | – | Filter by your internal user id passed at inquiry creation. |
| filter[status] | string | – | Filter by inquiry status (e.g. 'completed', 'approved', 'declined', 'needs_review'). |
| page[after] | string | – | Cursor for pagination. |
| page[before] | string | – | Cursor for pagination. |
| page[size] | string | – | Page size (max per Persona docs). |
No output schema declared.
No examples provided.
list_reports ~115
List reports — individual verification artifacts (e.g. watchlist, adverse media, business lookup). Filterable by account and type. Each report is a standalone verification separate from inquiry-flow verifications.
| Name | Type | Req | Description |
|---|---|---|---|
| filter[account-id] | string | – | Filter by Persona account id. |
| filter[report-type] | string | – | Filter by report type (e.g. 'report/watchlist', 'report/adverse-media', 'report/business'). |
| page[after] | string | – | – |
| page[size] | string | – | – |
No output schema declared.
No examples provided.
list_templates ~74
List inquiry templates configured in your Persona dashboard — returns each template's id (itmpl_...), name, and active version. Use this to discover available templates before calling create_inquiry.
| Name | Type | Req | Description |
|---|---|---|---|
| page[after] | string | – | – |
| page[before] | string | – | – |
| page[size] | string | – | – |
No output schema declared.
No examples provided.
list_webhooks ~78
List configured webhook subscriptions (Persona calls them 'Webhook subscriptions'). Each entry shows the URL, subscribed event types, and enabled state. Use this to audit delivery endpoints for inquiry / verification / case events.
| Name | Type | Req | Description |
|---|---|---|---|
| page[after] | string | – | – |
| page[before] | string | – | – |
| page[size] | string | – | – |
No output schema declared.
No examples provided.
redact_inquiry ~61
Redact an inquiry (GDPR right-to-erasure). Scrubs PII, captured images, and verification detail for this inquiry on Persona's side. Irreversible.
| Name | Type | Req | Description |
|---|---|---|---|
| inquiry_id | string | yes | Persona inquiry id (inq_...) to redact. |
No output schema declared.
No examples provided.
resume_inquiry ~66
Resume a paused inquiry — returns a fresh one-time session token / link so the end user can continue a flow that was abandoned or needs additional steps (e.g. after a 'pending' webhook).
| Name | Type | Req | Description |
|---|---|---|---|
| inquiry_id | string | yes | Persona inquiry id (inq_...) to resume. |
No output schema declared.
No examples provided.
retrieve_account ~41
Retrieve a Persona account by id, including summary PII and linked inquiries / verifications.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Persona account id (act_...). |
No output schema declared.
No examples provided.
retrieve_case ~46
Retrieve a case by id — full detail including status, assignee, linked objects, attached fields, and tags.
| Name | Type | Req | Description |
|---|---|---|---|
| case_id | string | yes | Persona case id (case_...). |
No output schema declared.
No examples provided.
retrieve_inquiry ~80
Retrieve an inquiry by id. Response includes overall status ('created' | 'pending' | 'completed' | 'expired' | 'failed' | 'needs_review' | 'approved' | 'declined') and embedded verifications / reports. Poll this to track progress.
| Name | Type | Req | Description |
|---|---|---|---|
| inquiry_id | string | yes | Persona inquiry id (inq_...). |
No output schema declared.
No examples provided.
retrieve_report ~44
Retrieve a single report by id — returns the full verification detail (matches, scores, raw source data).
| Name | Type | Req | Description |
|---|---|---|---|
| report_id | string | yes | Persona report id (rep_...). |
No output schema declared.
No examples provided.
run_report ~289
Create and run a standalone Persona report — not tied to an inquiry flow. Use for ad-hoc watchlist screening, adverse media, business (KYB) lookups, address verification, or profile checks against a known identity. Pass the appropriate `report-type` plus the query fields the report needs.
| Name | Type | Req | Description |
|---|---|---|---|
| account-id | string | – | Optional Persona account id (act_...) to attach the report to. |
| address-city | string | – | – |
| address-postal-code | string | – | – |
| address-street-1 | string | – | – |
| address-street-2 | string | – | – |
| address-subdivision | string | – | – |
| birthdate | string | – | YYYY-MM-DD (for profile / watchlist). |
| business-name | string | – | Legal business name (for KYB / report/business). |
| country-code | string | – | ISO-3166 alpha-2 country code. |
| email-address | string | – | – |
| name-first | string | – | – |
| name-last | string | – | – |
| name-middle | string | – | – |
| phone-number | string | – | – |
| report-type | string | yes | Report type identifier, e.g. 'report/watchlist', 'report/adverse-media', 'report/business', 'report/address', 'report/profile'. |
| tax-identification-number | string | – | SSN / EIN / tax id, depending on jurisdiction. |
No output schema declared.
No examples provided.
update_account ~174
Patch attributes on an existing Persona account (e.g. update address, phone, tags). Use this to keep a persistent end-user record in sync with your system of record.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Persona account id (act_...). |
| address-city | string | – | – |
| address-country-code | string | – | – |
| address-postal-code | string | – | – |
| address-street-1 | string | – | – |
| address-street-2 | string | – | – |
| address-subdivision | string | – | – |
| birthdate | string | – | YYYY-MM-DD |
| email-address | string | – | – |
| name-first | string | – | – |
| name-last | string | – | – |
| name-middle | string | – | – |
| phone-number | string | – | – |
| tags | array | – | – |
No output schema declared.
No examples provided.
What is the io.github.codespar/mcp-persona server?
io.github.codespar/mcp-persona is listed in the public MCP registry as io.github.codespar/mcp-persona. MCP server for Persona, developer-first identity verification + KYC (inquiries, accounts, reports). This page covers its npm package (@codespar/mcp-persona).
Is the io.github.codespar/mcp-persona server safe to use?
io.github.codespar/mcp-persona scores 81 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 1 October 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.codespar/mcp-persona server expose?
io.github.codespar/mcp-persona exposes 20 tools: create_inquiry, retrieve_inquiry, list_inquiries, approve_inquiry, decline_inquiry, and 15 more. Their descriptions and schemas cost roughly 2,294 tokens of context every time the server is loaded.
Is the io.github.codespar/mcp-persona server still maintained?
io.github.codespar/mcp-persona is still listed as active in the MCP registry. We last reached this channel on 1 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.codespar/mcp-persona server under?
io.github.codespar/mcp-persona declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.