Serveur MCP

Overlap

com.overlap-ai/overlap
Communication Réseaux sociaux Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Enables users to submit situations, discover similar people, and accept, decline, block, or manage peer matches.

check_matches
Check for matches
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['requests', 'others_in_pool', 'matches'], 'properties': {'matches': {'type': 'array', 'items': {'type': 'object', 'required': ['match_id', 'created_at', 'state', 'their_request_snippet', 'you_accepted', 'they_accepted'], 'properties': {'state': {'type': 'string'}, 'match_id': {'type': 'string'}, 'created_at': {'type': 'string'}, 'you_accepted': {'type': 'boolean'}, 'they_accepted': {'type': 'boolean'}, 'their_request_snippet': {'type': 'string', 'description': 'The first 200 characters of their request.'}}, 'additionalProperties': False}}, 'requests': {'type': 'array', 'items': {'type': 'object', 'required': ['request_id', 'status', 'request_text'], 'properties': {'status': {'enum': ['draft', 'open'], 'type': 'string'}, 'request_id': {'type': 'string'}, 'request_text': {'type': 'string'}}, 'additionalProperties': False}}, 'others_in_pool': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Other people in the pool, each counted once.'}}, 'additionalProperties': False}
confirm_match_request
Confirm the draft match request
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.
Accès externe
Schéma d’entrée
{'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}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['request_id', 'status', 'matches_found', 'pipeline_completed', 'note'], 'properties': {'note': {'type': 'string'}, 'status': {'type': 'string', 'const': 'open'}, 'request_id': {'type': 'string'}, 'matches_found': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'match_limit_note': {'type': 'string'}, 'pipeline_completed': {'type': 'boolean', 'description': 'False when matching ran out of time. It finishes in the background.'}}, 'additionalProperties': False}
create_match_request
Share what the user is going through as a match request
Submit what the user is going through, to find someone living through something similar. 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. This call creates a new independent DRAFT. It replaces nothing in the pool. The draft stays saved until the user approves it, revises it or discards it. Show the stored match request back to the user VERBATIM. Then ask the user to approve it, or to tell you what to change. Call confirm_match_request with the request_id only after the user approves that exact version. If the user asks for a change, call create_match_request again. Pass the complete new draft, and set replaces_draft_id to the earlier request_id. Then show the new stored version and ask again. If the user declines, call withdraw_match_request with that request_id to discard the draft.
Schéma d’entrée
{'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â\x80\x935 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}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['request_id', 'status', 'request_text', 'instruction'], 'properties': {'status': {'type': 'string', 'const': 'draft'}, 'request_id': {'type': 'string'}, 'instruction': {'type': 'string'}, 'request_text': {'type': 'string', 'description': 'The stored text, to show the user word for word.'}}, 'additionalProperties': False}
get_match_details
Get match details
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.
Lecture seule Idempotent
Schéma d’entrée
{'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}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['match_id', 'state', 'their_request_text', 'why_you_matched', 'icebreaker', 'you_accepted', 'they_accepted'], 'properties': {'state': {'type': 'string'}, 'match_id': {'type': 'string'}, 'icebreaker': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Something to open with.'}, 'their_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'you_accepted': {'type': 'boolean'}, 'introduced_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'they_accepted': {'type': 'boolean'}, 'why_you_matched': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'their_request_text': {'type': 'string'}}, 'additionalProperties': False}
preview_pool
See how many people are going through something similar
Count the people already in the pool whose situation is close to a description. 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. Use it to answer whether anyone is going through something similar, before the user decides whether to join.
Lecture seule Idempotent
Schéma d’entrée
{'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 â\x80\x94 it is never stored and never shown to anyone.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['count', 'capped'], 'properties': {'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'People in the pool with a similar situation, at most 10.'}, 'capped': {'type': 'boolean', 'description': 'True when the count hit the cap of 10.'}}, 'additionalProperties': False}
respond_to_match
Answer a match
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.
Destructif Accès externe
Schéma d’entrée
{'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 â\x80\x94 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}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['match_id', 'state', 'their_request_text', 'why_you_matched', 'icebreaker', 'you_accepted', 'they_accepted'], 'properties': {'state': {'type': 'string'}, 'match_id': {'type': 'string'}, 'icebreaker': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Something to open with.'}, 'their_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'you_accepted': {'type': 'boolean'}, 'introduced_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'they_accepted': {'type': 'boolean'}, 'why_you_matched': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'their_request_text': {'type': 'string'}}, 'additionalProperties': False}
withdraw_match_request
Withdraw the match request
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.
Destructif
Schéma d’entrée
{'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}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['request_id', 'status'], 'properties': {'status': {'type': 'string', 'const': 'withdrawn'}, 'request_id': {'type': 'string'}}, 'additionalProperties': False}
Modifié
withdraw_match_request
29 September 2026 03:03
Modifié
respond_to_match
29 September 2026 03:03
Modifié
get_match_details
29 September 2026 03:03
Modifié
check_matches
29 September 2026 03:03
Modifié
confirm_match_request
29 September 2026 03:03
Modifié
create_match_request
29 September 2026 03:03
Modifié
preview_pool
29 September 2026 03:03
Ajouté
respond_to_match
25 September 2026 03:03
Modifié
get_match_details
25 September 2026 03:03
Ajouté
withdraw_match_request
17 September 2026 12:36
Ajouté
get_match_details
17 September 2026 12:36
Ajouté
check_matches
17 September 2026 12:36
Ajouté
confirm_match_request
17 September 2026 12:36
Ajouté
create_match_request
17 September 2026 12:36
Ajouté
preview_pool
17 September 2026 12:36