io.github.codespar/mcp-persona
NPM · @CODESPAR/MCP-PERSONA · SCANNED AUG 3
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 →
Supply Chain Security86
- No malware found by supply-chain analysis.Pass
- Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.Partial
- No install/post-install scripts declared.Pass
- Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency45
- 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 41 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability78
- AI-judged instruction clarity (excellent).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 Management27
- Stability observed for 8 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
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · @codespar/mcp-persona
claude mcp add codespar-mcp-persona -- npx -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": {
"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.
- 3 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 2 Aug 26 +10
- Install scripts: pass → unverified ▼ security
- Provenance: fail → unverified ▼ security
- Known CVEs: unverified → partial ▲ security
- Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
- License: pass → unverified ▼ functional
- Capabilities: pass → unverified ▼ functional
- Maintenance: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Stability: unverified → 0.23 ▲ functional
- Dependency health: unverified → partial ▲ functional
- Licence: MIT functional
- 1 Aug 26 +15
- Malware scan: unverified → pass ▲ security
- 31 Jul 26 +23
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 −59
- Known CVEs: partial → unverified ▼ security
- Malware scan: pass → unverified ▼ security
- Tool coverage: 100 → unverified ▼ functional
- 29 Jul 26 +53
- Provenance: unverified → fail ▼ security
- Known CVEs: unverified → partial ▲ security
- Install scripts: unverified → pass ▲ security
- Maintenance: unverified → pass ▲ functional
- License: unverified → pass ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- Schema quality: unverified → excellent ▲ functional
- Licence: MIT functional
- 28 Jul 26 −18
- Tool coverage: 100 → unverified ▼ functional
- Dependency health: unverified → partial ▲ functional
- First check of Schema quality: unverified functional
- 27 Jul 26 43
First indexed and scored.
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 3 Aug 2026 · Analysed npm/@codespar/[email protected]
Provenance none
Ecosystem: npm · Outcome: none
Dependencies 94 packages
94 packages in the resolved dependency tree · 94 deprecated · 29 stale.
The dependency tree was only partially resolved, so these counts may be incomplete.
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.
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.