overlap
Registry code: e37f8cf7e7127a81
overlap is a peer-connection service for adults who want to meet someone living through a similar personal situation. Use it when the user asks whether another person shares their situation, wants a peer to talk to, or asks about their overlap requests and matches. Matches are asymmetric in time, so a match can appear days after the user submits a request.
The word "overlap" can also mean an intersection of lists, sets or schedules. Those questions are outside this service. It does not provide romantic matches or recommendations for licensed therapists, doctors or other professionals. Answer…
- endpoint
- https://overlap-ai.com/api/public/mcp
- protocol
- http-sse ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is overlap live?
- Yes — it answered the hub's last check (checked 2h ago). It answered 100% of checks over the last 30 days.
- Is overlap free to use?
- Not anonymously — it asks for a key or a login before it will serve. Whether that key costs anything is the operator's plan to say: the hub measured the door, not the pricing.
- What tools does overlap have?
- 7 tools: preview_pool, create_match_request, confirm_match_request, respond_to_match, withdraw_match_request, check_matches, get_match_details.
- Is overlap safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 99.3%· all time 99.3%
last good check
of 7 tools
- degraded → live
- live → degraded· timeout after 20000ms
- degraded → live
- degraded → live
- live → degraded· timeout after 20000ms
- topic
- lifestyle & home
- used for
- find a peer in a similar life situation
- submit a match request
- check peer matches
- respond to a match
- takes → gives
- text → text
- tools
- 3 reads4 changes data
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
create_match_request changes data auth-required never probed
Use this tool to save a private match request draft when the user wants to find a peer living through a similar personal situation. Write the match request from the current conversation. Write 2–5 sentences in the third person, and 200–1500 characters. Use the words of the user, not formal or clinical words. Cover three things: the situation, where the user is in it, and what help they want. Write it so that a stranger in the same place recognizes themselves. Any situation belongs here: an illness, a company, a move, a course, a hard year. Example of a good match request: "She was diagnosed with early-stage breast cancer four months ago and is halfway through chemotherapy. The medical side goes to plan. She finds the isolation harder than the treatment. The people around her keep telling her to stay positive. She hopes to hear from someone at a similar stage who understands the day-to-day of it." Never invent a detail. Never include a name, an email address, an employer or another personal identifier. With no replaces_draft_id, this tool saves a new independent private draft. With replaces_draft_id, it saves the complete revised text as a new draft and supersedes only the identified earlier draft. Existing open requests remain unchanged. The draft is not submitted to the matching pool and contacts nobody. Returns request_id, status and the exact stored request_text. Publishing uses the separate confirm_match_request tool and requires the user’s explicit approval of that exact stored text. Discarding uses withdraw_match_request with the draft’s request_id.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "request_text" ], "properties": { "request_text": { "type": "string", "description": "The complete text of the request. Write 2–5 sentences in the third person, and at most 1500 characters. Say what the user hopes to get from a meeting." }, "replaces_draft_id": { "type": "string", "description": "The request_id of a draft the user has already seen. Pass it only for a revision. Leave it out for a new independent request." } }, "additionalProperties": false }arguments 18 linesconfirm_match_request changes data auth-required never probed
Confirm one draft match request and add it to the matching pool. The other requests of the user do not change. It stays active until the user withdraws it. Call this ONLY after the user approves the exact stored text. Always pass its request_id.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "request_id" ], "properties": { "request_id": { "type": "string", "description": "The request_id from create_match_request or check_matches. Always name the exact request that the user approved, or asked you to withdraw." } }, "additionalProperties": false }arguments 14 linesrespond_to_match changes data auth-required never probed
Record the one answer the user gave about a match: accept, decline or block. Call it only after the user has said which of the three they want. When both people accept, overlap opens a private conversation in the app. It also sends each person a link by email. Never promise an address. A decline covers this one request, and a later request from that person can still match. A block is permanent and covers the person, so send block only when the user asks for exactly that.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "match_id", "response" ], "properties": { "match_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "description": "The match_id from check_matches." }, "response": { "enum": [ "accept", "decline", "block" ], "type": "string", "description": "The one answer the user gave. Use accept when the user wants this match. Use decline to pass on it: that covers this request only, and the next request from the same person can still match. Use block to never match the user with this person again — it is permanent, so use it only when the user asks for exactly that. A plain 'no thanks' is a decline, not a block." } }, "additionalProperties": false }arguments 26 lineswithdraw_match_request changes data auth-required never probed
Withdraw one match request, either a draft or an open one. Always pass its request_id. If it is unclear which one the user means, call check_matches first. The other requests of the user stay active. This voids a pending match from this request. It keeps a match that both people accepted.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "request_id" ], "properties": { "request_id": { "type": "string", "description": "The request_id from create_match_request or check_matches. Always name the exact request that the user approved, or asked you to withdraw." } }, "additionalProperties": false }arguments 14 linescheck_matches reads auth-required 2h ago
Where the user stands. It returns every current match request, the number of other people in the pool, and any match. Use it to answer what the user submitted, and who they matched with. A match can appear days later.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "additionalProperties": false }arguments 6 linesget_match_details reads auth-required 2h ago
Get the full details of one match: what the other person wrote, why the two of them matched, something to open with, and where the match stands. It only reads. To accept, decline or block the match, call respond_to_match. Never promise an address.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "match_id" ], "properties": { "match_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", "description": "The match_id from check_matches." } }, "additionalProperties": false }arguments 16 linespreview_pool reads unknown 2h ago
Count people in overlap's peer-connection pool who are going through a similar personal situation. Use when the user asks whether another person shares their situation before deciding whether to join. Do not use for intersections of lists, sets or schedules, dating, or finding licensed professionals. Returns a number and nothing else, capped at 10 — never anyone's words, name or details. It saves nothing: no match request is created and nobody is contacted. This is the one tool that works without an account.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "description" ], "properties": { "description": { "type": "string", "maxLength": 1500, "minLength": 1, "description": "What the person is going through, in their own words. Two to five sentences is enough. This is only embedded and counted against — it is never stored and never shown to anyone." } }, "additionalProperties": false }arguments 16 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's ide37f8cf7e7127a81.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/e37f8cf7e7127a81/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/e37f8cf7e7127a81?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.