Model Context Protocol · Developer reference
An MCP server for dating — because agents shouldn't scrape.
The official PsyMatch MCP server exposes your platform data to AI agents through documented tools, resources, and prompts. It is a pure client of our GraphQL API: every call carries the acting user's own Firebase token, so an agent can never see more than its user sees. There is no service-role data path.
Read tools. The eyes.
| whoami | Identity probe for the acting user |
| get_my_profile | Full profile: photos, prompts, interests, verification |
| get_daily_mix | Today's curated introductions |
| discover_candidates | Filtered discovery search |
| get_profile | One person's shared profile |
| list_matches | All matches with status + compatibility |
| get_match_rationale | Why-this-match: reasons, friction, confidence |
| suggest_conversation_starters | Profile-aware openers |
| list_conversations | Inbox summaries with unread counts |
| get_conversation | Full message thread |
| analyze_conversation | Deterministic dynamics: initiation balance, question rate, waiting-on state |
| get_my_psychometrics | Complete self-analysis: Big Five facets, EQ, styles, values, confidence |
| get_psychometrics | Another user's analysis (platform visibility rules apply) |
| get_trait_history / get_psychometric_delta | Trait trajectories over time |
| get_completion_gaps | Missing profile and assessment coverage |
| get_next_questions | Canonical next questions and answer options |
Action tools. Opt-in only.
| like_user | Register interest; mutual likes become matches |
| send_message | Send a chat message (opt-in, rate limited) |
| mark_message_read | Mark one message read |
| respond_to_match | Accept or reject a pending match |
| submit_assessment_responses | Save answers the user gave the agent |
| update_my_profile | Save user-approved profile text |
Disabled unless the session explicitly sets PSYMATCH_AGENT_ALLOW_SEND=true; sends are limited to 10 per minute.
Resources & prompts.
| psymatch://me | Acting user's profile snapshot |
| psymatch://matches | Current match list |
| psymatch://conversations | Conversation index |
| psymatch://psychometrics/self | Full self-analysis JSON |
Guided prompts included: dating-coach, psychometric-deep-dive, icebreaker.
Auth model. Boring on purpose.
Every tool call forwards your Firebase ID token. Tokens are short-lived; revoke by signing out.
The server holds no elevated credentials. Platform rules - cohort boundaries, blocks, KYC guardrails - apply identically to agents.
Impersonation for flow-testing exists for dedicated admin accounts provisioned via the Firebase Admin SDK, is rejected for other admins and banned targets, and is logged on every request.
Questions, answered plainly.
- Can an agent complete MindSync for me?
- An agent can identify unanswered areas, ask the canonical next questions, and submit answers you provide. It should not invent your answers or complete the assessment without your input.
- Can an agent change my profile?
- Only with content you have seen and approved word-for-word. The update_my_profile tool leaves omitted fields unchanged and uses the same user-scoped API path as the product.
Quickstart.
{
"mcpServers": {
"psymatch": {
"command": "npm",
"args": ["run", "--silent", "mcp:dev"],
"cwd": "/path/to/repo",
"env": {
"PSYMATCH_GRAPHQL_ENDPOINT": "https://psymatch-api-preview-622909446227.us-central1.run.app/query",
"PSYMATCH_AUTH_TOKEN": "<your firebase id token>",
"PSYMATCH_AGENT_ALLOW_SEND": "false"
}
}
}
}Transports: stdio for local clients, streamable HTTP for remote agents. Full setup lives in services/mcp/README.md inside the repository.
Build on it.
Coaching agents, safety reviewers, date-planning assistants - if it speaks MCP, it already speaks PsiMatch.