What it does
Sends an iVALT push to an approver's phone, waits for biometric approval, and returns a signed attestation. Use it as a blocking or async step in any MCP client.
STDIO
Run locally as a child process for Claude, Cursor, Windsurf, and CLI clients.
HTTP/SSE
Remote stateless JSON-RPC endpoint for cloud agents and web clients.
Per-call mobile
Pass approver_mobile from the client, or set IVALT_DEFAULT_MOBILE server-side.
Health API
Unauthenticated probe for load balancers and orchestration.
GET /health
Try it: /health
Available MCP tools
All tool results are wrapped as MCP text content with pretty-printed JSON. See MCP Tools for full schemas.
request_approval blocking
Sends an iVALT push, waits for human approval, and returns an attestation. Supports action, reason, approver_mobile, factors, and timeout_s.
request_approval_async async
Fires the approval and returns a request_id immediately. Poll with check_status.
check_status polling
Polls a request_id from the async call. Returns pending, approved (with attestation), denied, or expired.
Get started
To connect an MCP client you need two things:
- An iVALT API key for production use, or leave
IVALT_API_KEYempty to use the public demo proxy. - The approver phone, either via
IVALT_DEFAULT_MOBILEor by passingapprover_mobileon each tool call.
See Client setup for the exact mcp.json configuration for your client.
Configuration
Set these via environment variables or an .env file. See Configuration for details.
IVALT_API_KEY— optional API key (uses demo proxy if empty)IVALT_DEFAULT_MOBILE— default approver phone (E.164)MCP_AUTH_TOKEN— bearer token for/mcp(optional)IVALT_REQUEST_FROM— label shown on approval requestsIVALT_DEFAULT_FACTORS— comma-separated factors