PassportIQ
Agentic verification copilot · Passport Seva (simulated)
Live system · NitroStack MCP

The passport verification workflow, run by an agent, decided by an officer.

PassportIQ takes an application through ten chained verification stages, hunts for identifier reuse across every other live application, builds the fraud graph that exposes coordinated rings, scores the risk against a cited rule book — then stops, and hands a complete evidence pack to a human. The machine investigates. It never approves.

The console is the product. The /mcp endpoint exposes the same guarded tools to Claude, Cursor, ChatGPT or any MCP client — same schemas, same guards, same audit trail.

Applications
Awaiting officer
High risk
Fraud rings
Agent runs
Escalations
MCP tools live
Reading live state…
The main event · the verification pipeline

Ten stages, chained, every one of them an MCP tool

run_verification_pipeline drives the whole chain for one application. Each stage emits an event on the live stream and writes an attributed line to the audit trail, so the officer can see not only the verdict but the order in which it was reached. Nine of the ten are required before a decision is legally permitted; the guard enforces that in code, not in a comment.

  1. 01
    Validate documents required to decide
    document_validate

    Checks every submitted document for type, expiry, legibility and tampering markers.

  2. 02
    Extract fields required to decide
    ocr_extract

    Pulls name, DOB, passport number and address off each document with per-field confidence.

  3. 03
    Reconcile identity required to decide
    check_identity_consistency

    Compares extracted identity fields against the application form and flags divergence.

  4. 04
    Reconcile address required to decide
    check_address_consistency

    Normalises and compares addresses across proofs; tolerates formatting, not substance.

  5. 05
    Detect reuse required to decide
    detect_duplicate_signals

    Searches every other live application for reused phone, email, address, passport or image hash.

  6. 06
    Build link graph required to decide
    build_risk_graph

    Assembles the applicant cluster, traversing shared identifiers transitively to surface rings.

  7. 07
    Compare photographs optional
    visual_similarity_flag

    Perceptual-hash comparison of applicant photographs across the cluster.

  8. 08
    Evaluate rules required to decide
    evaluate_rules

    Runs the deterministic rule book; every fired rule carries an id, weight and citation.

  9. 09
    Score risk required to decide
    score_risk

    Aggregates fired rules into a 0–100 score and a low / medium / high band.

  10. 10
    Explain the score required to decide
    explain_risk

    Produces the officer-readable narrative, citing the exact rules and evidence that moved it.

The decision gate is not advisory — it is a guard

officer_decide is wrapped in PipelineCompleteGuard. Call it before the required stages have completed and it is refused with the exact list of what is still outstanding — whether the caller is a browser, an LLM, or the autopilot. In thousands of autonomous sweeps the agent has recorded zero decisions of its own, and the acceptance suite asserts that number stays zero.

Agentic · unattended

What happens when nobody asks it to do anything

Autopilot is the part that makes this a copilot rather than a form. It runs on a timer, chooses its own targets from the queue, drives the pipeline where stages are missing, sends the agent in on the worst cases, and leaves a queue that has already been worked before an officer sits down.

  1. 1
    Wakes on a timer

    No prompt, no click. A sweep fires on its configured interval.

  2. 2
    Picks its own targets

    Reads the queue, ranks by cluster size, reuse signals and outstanding stages.

  3. 3
    Runs what is missing

    Drives the verification pipeline for applications that have not been processed.

  4. 4
    Investigates the worst

    Sends the agent in on the highest-risk cases and records the full trace.

  5. 5
    Escalates and stops

    Raises escalations, surfaces rings, and hands the queue to an officer. It decides nothing.

The agent's reasoning loop, per turn
  1. ObserveReads the case: documents, extracted fields, existing signals, cluster shape.
  2. ThinkStates a hypothesis and what would confirm or kill it. Recorded verbatim in the trace.
  3. ActChooses and calls an MCP tool. Nobody hands it the tool — it picks.
  4. ObserveReads the tool output and updates the hypothesis. Loops until confident or exhausted.
  5. ConcludeWrites a recommendation citing the rules and evidence that produced it.
  6. StopHands to the officer. It has no authority to approve, reject or request clarification.
The officer console · six screens

Everything above, in a browser, live

One page, server-streamed over SSE. Every mutating action in it goes through the real registered MCP tool — schema validation, guards, audit logging and events included. There is no second backend and no path in the UI that can write an outcome the MCP surface could not.

Model Context Protocol

The same workflow, exposed as tools to any MCP client

The console and the MCP surface are two faces of one server. Point Claude Desktop, Cursor, ChatGPT or the raw SSE transport at the endpoint below and you get the identical tools, schemas, guards and audit trail — including the four widgets that render pipeline progress, the fraud graph, the cited risk explanation and the agent trace directly inside the client.

MCP endpoint /mcp Setup instructions & schemas

Agentic investigation

4 tools

The agent plans its own tool calls. It reasons, acts, observes, and stops at the officer.

  • agent_investigateRuns a multi-step investigation on one application, choosing tools itself.
  • agent_triage_queueSweeps the whole queue, investigates what looks worst, escalates the rest.
  • agent_recommend_decisionProduces a recommendation with cited evidence — never a decision.
  • get_agent_traceReturns the full reasoning trace of a run: every thought, action and observation.

Verification pipeline

11 tools

Ten chained stages. Each one emits an event and writes to the audit trail.

  • run_verification_pipelineOrchestrates all ten stages end to end for one application.
  • document_validateDocument type, expiry, legibility and tampering checks.
  • ocr_extractField extraction with per-field confidence.
  • check_identity_consistencyIdentity fields vs. the application form.
  • check_address_consistencyAddress proofs reconciled against each other.
  • visual_similarity_flagPerceptual photo comparison across the cluster.
  • detect_duplicate_signalsCross-application identifier reuse detection.
  • build_risk_graphTransitive applicant link graph and ring detection.
  • evaluate_rulesDeterministic rule book with citations.
  • score_riskWeighted 0–100 score and risk band.
  • explain_riskCited, officer-readable explanation of the score.

Case data

4 tools

Read models the officer and the agent share, so both see the same case.

  • list_applicationsThe application pool with status and risk.
  • get_applicationOne application: applicant, documents, progress, risk, decision.
  • list_applicant_clustersEvery detected cluster, largest first.
  • get_pipeline_progressStages completed, stages outstanding, and whether a decision is permitted.

Decision and audit

3 tools

The only tool that can change an outcome is guarded, and it is operated by a human.

  • officer_decideApprove, request clarification or reject. Blocked until the pipeline is complete.
  • get_audit_trailImmutable, attributed record of every stage, run and decision.
  • get_pipeline_eventsThe raw event log emitted during processing.

Automation and console

4 tools

Autopilot works the queue on a timer without being asked.

  • autopilot_statusSweeps run, applications investigated, escalations raised, next sweep due.
  • autopilot_controlArm, disarm, or run a single sweep now.
  • get_officer_queueThe triage queue, ordered by what deserves attention first.
  • get_console_activityRecent activity as officer-readable lines.