Sign-in for MCP servers
Add sign-in to your MCP server for $5.99 a month or $55 a year. Your server asks CorroborateMe who the person is, and agents can also call CorroborateMe's own MCP server at /mcp.
When a tool needs to know who the user is
Hold a company API key on the server. When a tool needs a human, create a login link, return loginUrl to the person, and poll until user_id is set. The person signs in on the hosted page with an email code, password, Google, Apple, or a passkey.
Create a login link
This call needs an active Pro plan. Without one it returns 402. POST /api/login-links with the company API key (aa_). Polling and server-sent events work with no extra setup. The default lifetime is 900 seconds.
curl -s -X POST https://corroborateme.com/api/login-links \
-H "Authorization: Bearer aa_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"state":"job-42"}'The response includes sessionId and loginUrl. Show loginUrl to the person. It opens the hosted sign-in page.
Read who signed in
curl -s https://corroborateme.com/api/login-links/SESSION_ID \
-H "Authorization: Bearer aa_YOUR_KEY"Replace SESSION_ID with sessionId from the create call. status is pending, completed, consumed, or expired. user_id (a cu_ id) and email are present after the person finishes, and null while the link is still pending.
To wait instead of polling, open GET /api/login-links/{id}/events. It streams for about 25 seconds and ends with a pending or done event.
Calling CorroborateMe over MCP
CorroborateMe also publishes an MCP endpoint at https://corroborateme.com/mcp (Streamable HTTP). Send Authorization: Bearer and an aa_ key, or an OAuth access token whose audience is that MCP resource. Discovery is at /.well-known/mcp.json and /.well-known/oauth-protected-resource.
{
"mcpServers": {
"corroborate-me": {
"url": "https://corroborateme.com/mcp",
"headers": {
"Authorization": "Bearer aa_YOUR_KEY"
}
}
}
}That JSON shape matches .cursor/mcp.json.example in this product's repo, with the production URL. The tool create_login_link returns sessionId and loginUrl. The tool get_login_status takes session_id (snake case) and returns status, user_id, and email.
Longer setup: authentication for AI agents.
Questions
Does my MCP server have to be hosted by CorroborateMe?
No. Your server calls POST /api/login-links with an API key. CorroborateMe only hosts the sign-in page and the identity result.
Which MCP tools create and read a login?
create_login_link creates the session. get_login_status reads it. Pass the create call's sessionId as session_id on the status call.