Privacy postureVideo is processed in memory and discarded at session end. No raw biometric data is retained by default. FaceSign operates as a data processor; you are the data controller. GDPR, CCPA, BIPA aligned; SOC 2 Type II in progress. See Security for details.
What is FaceSign?
Read the overview
Read the overview
FaceSign is a step-up authentication platform for high-risk moments. When a user triggers a sensitive action — a wire transfer, account recovery, payment above a threshold — FaceSign conducts a short, AI-led conversational verification in 10-20 seconds on the happy path.
FaceSign is not KYC or onboarding identity verification. It’s post-login step-up authentication — confirming the right person is performing the right action, right now.
The problem FaceSign solves
Two tools dominate high-risk transaction verification today, and both are failing:- SMS OTP — vulnerable to SIM swap, social engineering, and account takeover. Attackers intercept codes routinely.
- Call centers — cost $4-70 per verification, take 5-15 minutes, can’t detect coercion, and don’t scale.
How FaceSign works
A FaceSign session is a short real-time conversation between the user and an AI avatar. Several models run in parallel and produce independent signals:The design philosophy is defense in depth. No single signal gates the outcome. You compose layers that match your risk tolerance, and the session reports per-layer results that you consume in your backend.The result: FaceSign verifies both the person (are they who they claim to be?) and their state of mind (are they acting freely, or under duress?). No other authentication product does both.
Session anatomy
FaceSign is a fully managed platform. The lifecycle is three steps:- Create a session. Your backend sends a flow definition to the FaceSign API (or MCP). You receive a session ID and a single-use client secret URL.
- User completes verification. Redirect the user to the hosted widget. The AI avatar runs the conversation, liveness checks, recognition, document scans, and OTPs — whatever your flow specifies.
- Receive results. FaceSign delivers results via webhook or polling. Your app never touches raw biometric data — video is processed in memory and discarded at session end. You are the data controller; FaceSign is the data processor.
When to use FaceSign
FaceSign is designed for the moments where OTP and passwords aren’t enough:- Wire transfers and high-value payments — confirm the account holder before authorizing
- Account recovery — verify identity without passwords or security questions
- Payee and beneficiary changes — prevent social engineering attacks
- Device changes and credential resets — step-up before sensitive account modifications
- Regulatory compliance (PSD3) — meet Strong Customer Authentication requirements for coached transfer liability
Why MCP for step-up authentication?
Quickstart
By the end of this section, you’ll have a working FaceSign verification session running from your AI assistant.Prerequisites
You need two things: 1. An API key.
If you don’t have a key yet, email developers@facesign.ai with your company name and intended use case. Sandbox keys are free.
2. An MCP-compatible client.
Claude Code, Claude Desktop, Cursor, or any client that supports the Model Context Protocol over Streamable HTTP.
Step 1: Add FaceSign to your MCP config
Add the FaceSign server to your client’s MCP configuration:.mcp.json
For Claude Code, add this to
.mcp.json in your project root. For Claude Desktop, add it to claude_desktop_config.json. For Cursor, add it to .cursor/mcp.json. See Supported clients below for exact paths.Step 2: Set your API key
Once connected, the MCP needs your API key to authenticate with FaceSign:set_api_key, loads the available avatars and languages, and confirms the connection.
Step 3: Describe what you want to build
Tell your AI assistant what verification flow you need. Be specific about the use case:- Ask you clarifying questions (avatar choice, failure handling, etc.)
- Assemble the verification flow from your answers
- Validate the flow structure
Step 4: Preview locally
Once the flow is built, the MCP opens a browser preview:launch_session_ui, which opens a local web page. Click Start Session to run through the verification with your camera and microphone.
Step 5: Export for production
When the flow looks right, export it as a deployable Next.js application:export_app, which generates a complete project — React frontend, API routes for session creation, .env.local template, and a README with deployment instructions. Set FACESIGN_API_KEY in your environment and deploy to any Node.js host (Vercel, Railway, Fly).
Why Next.js?Session creation goes through the
@facesignai/api package, which is server-side only — it uses your FACESIGN_API_KEY, which must never be exposed to the browser. Next.js gives us a runtime where the key stays on the server (API routes / server actions) while the verification UI runs in the client. That’s why the export target is Next.js, not a static bundle.Supported clients
FaceSign MCP works with any client that supports the Model Context Protocol. Pick yours:- Claude Code
- Claude Desktop
- Cursor
- Any HTTP client
Add FaceSign to your project config. Claude Code has full tool support with interactive prompts.Or add it globally at
.mcp.json
~/.claude.json to make it available in all projects.Tools
The FaceSign MCP server exposes five tools for building and managing verification sessions:set_api_key
Authenticates the MCP server with your FaceSign API key. Must be called before any other tool.sk_test_ keys connect to the sandbox, sk_live_ keys connect to production. On success the server loads the available avatars and languages.
launch_session_ui
Opens a local web page where you can run through a verification session interactively. A new session is created each time you click Start Session, so page refreshes work correctly.Flows must be linear with no loops or cycles. A node must never navigate back to a previous node. All paths move forward toward an END node.
export_app
Generates a standalone Next.js application from the current flow, ready for deployment. The exported project includes the frontend, API routes for session creation, an.env.local template, and a README. Set FACESIGN_API_KEY in your environment and deploy to any Node.js host.
get_session
Retrieves the full results of a verification session — transcript, AI analysis, node reports, and media references.list_sessions
Queries past verification sessions with optional filtering by status, date range, client reference, or free-text search. Returns a cursor-paginated list.Node types available in flows
FaceSign flows are assembled from these 13 node types:Recipes
Each recipe shows a natural-language prompt you give your AI assistant and what the MCP does behind the scenes. Pick one to see the full pattern.- Wire transfer
- Account recovery
- KYC onboarding
- Export & deploy
Wire transfer with coercion detection. The most common FaceSign use case: verify the account holder before a high-value transfer, and detect if they are acting under duress.Prompt:What the MCP builds:
1
START
Initializes the verification session.
2
LIVENESS_DETECTION
Interactive deepfake check. The avatar asks the user to perform randomized actions to confirm a live human.
3
CONVERSATION
The avatar asks the user to confirm the recipient, amount, and purpose. Six AI models run in parallel: coercion detection analyzes vocal stress, gaze patterns, and response timing throughout.
4
TWO_FACTOR_EMAIL
Sends a one-time passcode to the user’s email for a second authentication factor.
5
END
Session completes. Results are available via webhook or
get_session.Coercion detection runs across every node, not as a separate step. The conversational node gives it the richest signal because the user is speaking freely.
Troubleshooting
If something isn’t working with the FaceSign MCP, start here. Each section covers a specific failure mode with symptoms and fixes.API key not set or rejected
API key not set or rejected
Symptoms: Tools return “API key not set” or “Unauthorized” errors.
launch_session_ui and get_session fail immediately.Cause: The MCP requires set_api_key to be called before any other tool. The server does not read credentials from transport headers — the key lives per-session and must be supplied via the tool.Fix:- Verify your key starts with
sk_test_(sandbox) orsk_live_(production). - Ask your assistant to call
set_api_keyexplicitly:
- If the key is rejected, confirm it hasn’t been revoked or rotated. Contact developers@facesign.ai if you need a new key.
Wrong environment (sandbox vs. production)
Wrong environment (sandbox vs. production)
Symptoms: Sessions created in sandbox don’t appear in your production dashboard, or vice versa. Biometric fingerprints from test sessions aren’t found in production.Cause: Your API key determines the environment.
sk_test_ keys always connect to sandbox; sk_live_ keys always connect to production. There is no separate environment toggle.Fix:- Check which key you configured. Run:
- If you are testing, use a
sk_test_key. If you are deploying, switch tosk_live_. - Sandbox and production environments are completely isolated. Sessions, biometric fingerprints, and flow data do not cross between them.
Flow validation errors
Flow validation errors
Symptoms:
launch_session_ui or export_app rejects the flow with a validation error like “flow contains a cycle” or “missing END node.”Cause: FaceSign flows must be linear directed graphs. Common mistakes include:- Missing a
STARTorENDnode - Creating a loop (a node that navigates back to a previous node)
- Using
condition: "default"on node outcomes (causes double-speak) - Referencing a node ID that doesn’t exist in the flow
- Verify the flow starts with exactly one
STARTnode and ends with at least oneENDnode. - Check that every node’s outcome points forward (higher in the sequence), never backward.
- Remove any
condition: "default"from outcome definitions. - Ask your assistant to validate the flow:
Connection failure or timeout
Connection failure or timeout
Symptoms: Your AI client reports “MCP server unreachable,” “connection refused,” or the tool list is empty.Cause: The FaceSign MCP server uses Streamable HTTP transport at
https://mcp.facesign.ai/mcp. Connection failures are typically caused by:- Incorrect URL in the config
- Network or firewall blocking outbound HTTPS
- Client configured for stdio transport instead of HTTP
- Verify the URL is exactly
https://mcp.facesign.ai/mcp(no trailing slash, no path variations). - Confirm your client supports HTTP-based MCP servers. FaceSign does not use stdio transport — there is no local binary.
- Check that your network allows outbound HTTPS to
mcp.facesign.ai. - Restart your MCP client after changing the configuration. Most clients require a restart to pick up config changes.
Client does not show FaceSign tools
Client does not show FaceSign tools
Symptoms: After configuring the MCP, your assistant does not list FaceSign tools and does not respond to FaceSign-related prompts.Cause: The client either failed to load the MCP config or does not support Streamable HTTP transport.Fix:
- Check the config file location for your client (Claude Code, Claude Desktop, or Cursor — see Supported clients above).
- Verify the JSON is valid (no trailing commas, matching braces).
- Restart the client completely — not all clients hot-reload MCP configurations.
- Ask your assistant to list available tools. If FaceSign appears but tools are missing, the connection succeeded but authentication may have failed. See the “API key not set” section above.
launch_session_ui opens but session doesn't start
launch_session_ui opens but session doesn't start
Symptoms: The browser preview opens, but clicking Start Session shows an error or spinner that never resolves.Cause: The local preview needs camera and microphone access to run a verification session. The browser may be blocking these permissions.Fix:
- When the browser prompts for camera and microphone access, allow both.
- If you previously denied permissions, open the browser’s site settings and re-enable camera and microphone for
localhost. - Verify your camera is not in use by another application.
- Check the browser console for error messages — network errors suggest an API key or connectivity issue.
Exported app fails to create sessions
Exported app fails to create sessions
Symptoms: The exported Next.js app builds and runs, but creating a verification session returns a 401 or 500 error.Cause: The exported app reads
FACESIGN_API_KEY from environment variables. If the variable is missing or set to a sandbox key in production, session creation fails.Fix:- Confirm
FACESIGN_API_KEYis set in your deployment environment (not only in.env.local). - Use a
sk_live_key for production deployments. - Check your hosting provider’s environment variable configuration — Vercel, Railway, and similar platforms have their own environment variable UI.
Still stuck?
Contact developers@facesign.ai with your client name and version, the error message or unexpected behavior, and your MCP config (with the API key redacted).When to use MCP vs. the API
Both paths produce the same result — a verification session powered by the same API. MCP is faster for getting started; the REST API gives you full control.
What’s next?
Get production access
You’ve got sandbox working. Email us to move to
sk_live_ keys with your contract terms, rate limits, and data residency zone.Share with your security team
Tokenization, retention model, and compliance posture. Self-contained pages you can forward to InfoSec.
Adapt to your use case
Battle-tested flow patterns for wire transfers, account recovery, anomaly step-up, and payment authentication.
Last updated: 2026-04-17 · MCP server: 2.8.0 · Changelog