MCP server for the IDnow Trust Platform sandbox (list flows, create/list/get verification sessions).
Four tools with clear verb-noun naming (list_flows, create_session, list_sessions, get_session) and comprehensive descriptions (150 - 250 chars each). All tools have Zod schemas with typed parameters and descriptions. Strengths: good discovery pattern (list_flows → create_session), clear PII warnings, locale enum. Weaknesses: no output schema documentation, no pagination for list_sessions despite potentially large result sets, no error recovery guidance, missing tool annotations (readOnlyHint/destructiveHint).
Create a new identity-verification session for a given flow. Requires the flowId (from list_flows) and a subjectId (your internal reference for the person being verified - never a real name or other PII). Returns the sessionId and a playerUrl and the initial sessionStatus, which is the link the end-user opens to complete verification. Session starts in CREATED and moves to RUNNING once the user begins.
Retrieve full detail and current status for ONE verification session by its sessionId. Use this after create_session (or after finding a sessionId via list_sessions) to check the progress or outcome of a specific session.
List the identity-verification flows available to this IDnow account. Returns each flow's id, name, and description. Call this first to discover a flowId before creating or listing sessions.
List verification sessions for a flow, newest first. If flowId is omitted, the account's first available flow is used automatically. Returns each session's sessionId, sessionStatus (CREATED/RUNNING/COMPLETED/EXPIRED/ABORTED/ERROR), outcome, and createdAt. Use this to find the sessionId of a session you just created, then pass it to get_session for full detail.
No output schema documentation. Tool descriptions state what is returned (sessionId, playerUrl, sessionStatus) but no formal schema is provided for LLM planning or validation.
list_sessions lacks pagination parameters (limit, offset, page_size). API returns potentially large result sets; no guidance on result limits or how to iterate.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLM cannot distinguish safe read-only tools from state-modifying ones without parsing descriptions.
Error handling lacks recovery guidance. api.js converts errors to clean messages but does not categorize them (retryable vs user-fixable vs fatal) or suggest next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
create_session accepts optional 'input' parameter (in api.js) but is not exposed in the tool schema. Undocumented parameters prevent LLM from using them.