Skip to main content
FaceSign exposes a Model Context Protocol (MCP) server that lets AI assistants create, test, and export verification sessions through natural language. Instead of manually wiring nodes and writing integration code, you describe what you need — the MCP builds the verification flow, previews it locally, and exports a production-ready application.
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?

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.
Neither can answer the question that matters: Is this the right person, acting freely, right now?

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:
  1. 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.
  2. 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.
  3. 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.
API keys are server-side only. Never embed them in client code, public repos, or browser environments. For frontend integration, create sessions on your backend and pass only the single-use clientSecret.url to the user. Full reference in Authentication.
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:
The MCP calls 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:
The MCP will:
  1. Ask you clarifying questions (avatar choice, failure handling, etc.)
  2. Assemble the verification flow from your answers
  3. Validate the flow structure

Step 4: Preview locally

Once the flow is built, the MCP opens a browser preview:
This calls 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:
This calls 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:
Add FaceSign to your project config. Claude Code has full tool support with interactive prompts.
.mcp.json
Or add it globally at ~/.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 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.
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:
  1. Verify your key starts with sk_test_ (sandbox) or sk_live_ (production).
  2. Ask your assistant to call set_api_key explicitly:
  1. If the key is rejected, confirm it hasn’t been revoked or rotated. Contact developers@facesign.ai if you need a new key.
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:
  1. Check which key you configured. Run:
  1. If you are testing, use a sk_test_ key. If you are deploying, switch to sk_live_.
  2. Sandbox and production environments are completely isolated. Sessions, biometric fingerprints, and flow data do not cross between them.
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 START or END node
  • 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
Fix:
  1. Verify the flow starts with exactly one START node and ends with at least one END node.
  2. Check that every node’s outcome points forward (higher in the sequence), never backward.
  3. Remove any condition: "default" from outcome definitions.
  4. Ask your assistant to validate the flow:
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
Fix:
  1. Verify the URL is exactly https://mcp.facesign.ai/mcp (no trailing slash, no path variations).
  2. Confirm your client supports HTTP-based MCP servers. FaceSign does not use stdio transport — there is no local binary.
  3. Check that your network allows outbound HTTPS to mcp.facesign.ai.
  4. Restart your MCP client after changing the configuration. Most clients require a restart to pick up config changes.
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:
  1. Check the config file location for your client (Claude Code, Claude Desktop, or Cursor — see Supported clients above).
  2. Verify the JSON is valid (no trailing commas, matching braces).
  3. Restart the client completely — not all clients hot-reload MCP configurations.
  4. 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.
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:
  1. When the browser prompts for camera and microphone access, allow both.
  2. If you previously denied permissions, open the browser’s site settings and re-enable camera and microphone for localhost.
  3. Verify your camera is not in use by another application.
  4. Check the browser console for error messages — network errors suggest an API key or connectivity issue.
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:
  1. Confirm FACESIGN_API_KEY is set in your deployment environment (not only in .env.local).
  2. Use a sk_live_ key for production deployments.
  3. 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