Mingle MCP

MCP serverAI & models

Mingle helps your AI find people who match what you are looking for and what you can offer. Your AI drafts the profile cards and introduction messages, and you approve everything before it goes out. Matches are shown as overlap maps rather than scores, and nothing ranks you.

Unavailable. This server has no hosted endpoint yet, so Ahel can't serve it.

Add to setup to save this item as a reference. Ahel cannot run it, and signing in will not install it.

What your AI can do with it

  • Publish a profile card describing what you are looking for and what you can offer
  • Find relevant people on the network, even in ghost mode without publishing a card
  • Check for new matches since you last looked, shown as overlap maps instead of scores
  • Send an introduction explaining why you and someone else would be a good connection
  • Review and respond to introductions that other people's AI sent on your behalf
  • Remove your card from the network at any time while keeping your identity and connection history

Getting started

  1. Save this item in Your setup as a reference.
  2. Read the source or reference documentation for its setup requirements. Saving it here does not connect it to your AI.
  3. Check this page for availability before trying to install it through Ahel.

From the project's README

As published by aeoess/mingle-mcp in README.md.

Your AI meets other people's AIs. You meet the people.

Tell your AI who you want to meet: a hackathon team, a cofounder, collaborators, work. It drafts your card in your words, you approve every word before it publishes, and other agents help the right people find you. Introductions are double opt-in. No profiles, no feed, no scoring or ranking of people. That last one is a protocol invariant with a conformance test.

Site: https://aeoess.com/mingle · Join: https://api.aeoess.com/join

Eight tools

The surface is eight tools named for what a person is doing. There is no version in any name and no protocol machinery in any of them.

publish_intent · find_people · mingle_inbox · request_intro · respond_intro · continue_connection · manage_intent · mingle_settings

Install as a skill: the composition skill ships in skills/mingle/. Copy that folder into your agent's skills directory (or point your skills config at it) so your assistant composes cards the way the protocol intends: source scoping, no inferred traits, your voice, your approval.

Your AI networks for you. You just say yes. No app. No signup. No feed.

What it does

  1. You tell your AI who you want to meet
  2. Your agent shows you the exact card and publishes it only once you approve that exact text
  3. Semantic matching finds relevant people across the network
  4. One of you asks for an introduction, the other says whether they are interested
  5. Contact is exchanged only when both of you choose to share, separately
  6. Connected

Nothing is signed until you approve the exact content

Every change is two steps. The first returns the exact content and a digest over those exact bytes. Your agent shows you that content. The second carries the digest back, and if anything changed in between, nothing is signed and the new version comes back to show you instead.

Your key signs the content itself rather than a description of it, so a different payload cannot verify as the content you authorized.

Interest is not contact

Saying you are interested in an introduction shares nothing but that. Contact is released only when both sides have chosen to share, and a line that has been released cannot be recalled, which is why your agent shows you the exact line first.

Install

npx mingle-mcp setup

It prints the exact file path and the exact JSON it would add, then waits for a y/N before writing anything. It touches Claude Desktop and Cursor config and no other file. --yes accepts in advance for scripted installs. Any other MCP client works too, by copying the manual config below.

Restart your AI client.

{
  "mcpServers": {
    "mingle": {
      "command": "npx",
      "args": ["mingle-mcp"]
    }
  }
}

Features

  • Semantic matching: all-MiniLM-L6-v2 embeddings match what you are looking for against what other people say they offer, and the other way round.
  • Persistent identity: Ed25519 keypair stored in ~/.mingle/identity.json. Same key across sessions.
  • Browse before publishing: find_people needs no card. See who is out there before making yourself visible.
  • Exact-content approval: your AI drafts a card, shows you the exact text, and publishes only what you approved. Never auto-publishes.
  • Background checking is off until you say yes, and your AI asks once, ever.
  • Live network at api.aeoess.com. The card count is whatever the API reports, not a number written here.

Tools

ToolWhat it does
publish_intentPublish your card, renew one that is expiring, or replace one with a new version.
find_peopleSearch published cards. Works without a card of your own. Contacts nobody.
mingle_inboxWhat is waiting for you, and what you can do next on each. Changes nothing by reading.
request_introAsk one person for an introduction, with a note in your own words.
respond_introAnswer an introduction: interested, not now, or not now and block.
continue_connectionShare a contact line, or take back one that has not been released. Contact is released only when both sides have shared.
manage_intentWithdraw a request, step out of an introduction, block a pair, take a card down.
mingle_settingsWhere Mingle may email you, and whether your agent may check in the background.

The older tools, forty-seven of them, including the fit-exchange and fit-policy protocol machinery, are still in the package and register only when MINGLE_LEGACY_TOOLS is exactly 1. They exist so an existing install keeps working. New installs want the eight.

How matching works

Cards are embedded using all-MiniLM-L6-v2 (384-dim vectors). What you are looking for is matched against what other people offer, and what you offer against what they are looking for. The order results come back in reflects that overlap.

What the network never does is rate a person. No score, similarity, rank or confidence value reaches any caller, under that name or any other, and a conformance test walks every field of every search result to hold it to that. Ordering a list is not ranking people: nobody is told where they placed, and nobody is told anything about anybody else's list.

Every card is Ed25519 signed and expires automatically, 21 days by default.

Trust model

  • Every card is signed, and the signature covers the exact content you approved
  • Every connection requires both people to approve, separately
  • Saying you are interested shares nothing. Contact is released only when both of you have chosen to share, and a released line cannot be recalled
  • You can ask at any time what state anything is in: mingle_inbox shows every introduction and what you can do next, and reading it changes nothing
  • Cards expire automatically, and an expired card says expired, not withdrawn. The network never reports a lapse as a decision you made
  • Your AI handles networking, you handle decisions

Upgrading from 3.2.x

The default tool surface is now eight tools instead of forty-six, which is why this is a major version. If you scripted any of the old names, set MINGLE_LEGACY_TOOLS=1 to get them back, and note that request_intro and respond_intro keep the plain names for the new tools, so the older pair is request_intro_legacy and respond_intro_legacy.

Published 3.2.x installs keep working against the network for thirty days after this release, after which changing a connection needs this version. During the window, the server continues accepting the legacy write forms used by published 3.2.x clients. The cutoff does not disable legacy read routes. It only blocks legacy mutation routes after the window.

When the window closes your assistant is told once, in one sentence, rather than left with an error: "Update Mingle to continue this connection."

Links

License

Apache-2.0

Optional reason-to-meet assessment

find_people still searches without an OpenAI key. To ask GPT-6 Astra to assess up to three results, call it with assess: true and my_card_id pointing to your active published card. This explicitly sends selected network-visible headline, seeking, and offering text from both cards to OpenAI. Private fields, identity keys and contact details are excluded. Configure OPENAI_API_KEY in the MCP server environment. Node 22 or later is required.

The result identifies possible value in each direction, exact card evidence, uncertainty and one question to resolve. These are advisory inferences from people's statements, not verified facts or consent. No strong reciprocal reason is a valid outcome. The model does not rank people globally or request an introduction. Existing preview and approval steps still apply.

If configuration is missing, the request times out, the provider fails, or evidence validation fails, search results remain available with an explicit unavailable assessment. No alternate model is used. There is one bounded request per assessment, with no automatic retries. response_id, returned model and token usage identify successful runtime calls. OpenAI requests use store: false; this does not imply zero provider retention.

Inbox responses use introductions, direction: incoming|outgoing|unknown, initiated_by, request_note and request_note_author. A missing canonical state projection is explicit as projection_status: unavailable, with state: null and a separate legacy_status. Empty actions in that case are not evidence that no action is possible. Inbox reads do not create migration facts.

Tools it gives your AI (44)

ToolWhat it does
publish_intent_cardPublish your profile to the Mingle network — what you're looking for and what you can offer. Cards are Ed25519 signed with your persistent identity and expire after 48h.
search_matchesFind people relevant to you on the Mingle network. Works even without a published card (ghost mode): provide what you're looking for and browse anonymously.
get_digestCheck the Mingle v3 network for your published cards: new matches since you last looked (as overlap maps, never scores), how many introductions await your response, and any card expiring soon.
request_introReach out to someone you matched with on Mingle. Send a message explaining why you'd be a good connection. Nothing personal crosses until both sides say yes.
respond_to_introRespond to an introduction on Mingle. Someone's AI reached out because they think you'd be a good match. Approve to connect, decline to pass. No details shared unless both sides say yes.
remove_intent_cardRemove your card from the Mingle network. Your identity and connection history are preserved. Publish a fresh card anytime.
rate_connectionRate a connection you made through Mingle. After an intro is approved and you've interacted with the person, let the network know how it went. This helps improve matching for everyone.
compose_connection_cardStep 1 of publishing. Build the exact card the principal approves. Returns the full card content plus its sha256 approval token (card_hash) and a per-field visibility explanation.
publish_connection_cardStep 2 of publishing. Publish the connection card the principal approved in compose_connection_card.
compose_opportunity_cardStep 1 of publishing. Build the exact card the principal approves. Returns the full card content plus its sha256 approval token (card_hash) and a per-field visibility explanation.
publish_opportunity_cardStep 2 of publishing. Publish the opportunity card the principal approved in compose_opportunity_card.
search_cardsSearch Mingle v3 cards by explicit fields (card_type, intents, topics, engagement, location, event_ref) and, when a query is given, semantic similarity over published card text.
withdraw_cardWithdraw a v3 card from the network. It stops appearing in search and its status shows withdrawn on any retained copy.
supersede_claimsMark a v3 card superseded (its claims are replaced by a newer card). Status shows superseded.
revoke_agent_authorityRevoke all future agent authority tied to a v3 card. The card leaves search and its status shows authority_revoked.
delete_server_copyAsk the server to delete its stored copy of a v3 card. Content is blanked; status shows deleted. Counterparties may retain what they already received.
stop_new_matchesStop new matches against a v3 card without withdrawing it. Status shows stopped_new_matches.
request_counterparty_deletionAsk counterparties who received your card to delete their copy. Phase 2 feature; not yet active. Counterparties may retain what they already received.
get_card_statusShow the current server status of the v3 cards you have published (adapts the digest to v3 card types). Reads each tracked card_id and reports its revocation_status and expiry.
renew_cardRenew one of your Mingle v3 cards before it expires: re-sign the exact same content with a fresh expiry, which supersedes the old version.
set_notificationsTurn Mingle email notifications on or off. Your email is stored server-side for notifications only, verified by a confirmation link before anything sends, never shown to anyone or placed on any...
request_intro_v3Ask to be introduced to a Mingle v3 card found via search_cards. Two steps, like publishing a card: the first call returns a preview of exactly what will be sent (your card, the target, the purpose...
list_introsList your Mingle v3 introductions: incoming requests awaiting your response (with purpose and note), your outgoing requests, and completed introductions (with the other side's contact line, released...
respond_introRespond to an incoming Mingle v3 intro request. action=accept shares a contact line with the other side (two steps: the first call previews the exact line and shares nothing; call again with the...
complete_introComplete a Mingle v3 intro you requested, after the other side accepted. Sharing your contact line here releases both contacts to each other (theirs to you, yours to them) and to no one else.
set_disclosuresSet your Mingle disclosure ledger: a list of discrete, concrete statements you are willing to share inside a fit exchange (for example 'I can commit 20 hours a week' or 'I have cofounded once before')
get_fit_exchangeShow a Mingle fit exchange for the principal: its state, your answers so far, the other person's answers, any custom questions, and the consent sheet.
answer_fitAnswer a Mingle fit exchange. Call with no answers to get the drafting context: the platform questions and your OWN approved ledger items.
request_moreAsk for more in a Mingle fit exchange. round2 marks up to 3 existing questions as 'tell me more' for the other side.
close_fitClose a Mingle fit exchange and assemble its record. Either side can close; the exchange also closes automatically after 72 hours.
get_fit_recordShow the signed record of a closed Mingle fit exchange: per question, both sides' verbatim answers and a deterministic status.
set_fit_policySet your private Fit Policy for a card: a list of typed dimensions (weekly_commitment, start_window, time_horizon, timezone, cadence, project_stage, relationship_shape, role_spike...
prioritize_candidatesOrder a candidate pool LOCALLY by your own Fit Policy, for the principal only. The network never ranks people; this ordering happens entirely in this tool, is never sent to the server, never...
request_fit_handshakeOpen a bilateral fit handshake for an accepted intro by sending a Fit Request Manifest: the dimensions you want to check and the dimensions you will symmetrically reveal in return.
commit_fit_handshakeCommit to a fit handshake the other side requested: accept the dimensions you agree to have checked and offer matching reciprocity.
get_fit_handshakeShow a fit handshake for the principal: its state and, once both sides have committed, the overlap map (distinct facts) and the signed receipt.
reveal_dimensionRelease the exact value of one of YOUR dimensions to the other party in a fit handshake, on the principal's tap.
answer_fit_v4Answer the unresolved fit questions after a handshake. Call with no answers to get the questions (the unresolved dimensions, capped at four); draft each answer from the principal's own words and...
request_more_v4Ask the other side for more on up to 3 fit dimensions (tell-me-more). They may answer again; an unanswered request marks that dimension partially in the record.
set_fit_autonomySet a scoped standing autonomy for a card: which intents and dimensions your agent may handle without asking each time, and to what tier.
pause_fit_autonomyPause or resume all autonomous fit disclosure for a card. While paused, nothing discloses without the principal's per-match approval, whatever the standing scope says.
get_fit_activityShow the principal a legible 'while you were away' summary of automatic fit activity for a card: how many cards were evaluated, how many people an overlap was disclosed to and on which dimensions...
propose_first_stepPropose your half of a First Step: a short plan for the first real conversation, drafted from the principal's OWN words only (purpose, next_action, meeting_length, agenda, each_wants, boundaries...
approve_first_stepApprove the shared First Step plan (both halves together). Call with no confirm to fetch and show the principal the exact merged plan; call again with confirm:true to approve that exact plan.

Signals

GitHub stars
7
Forks
2
Last commit
Sep 2026
Weekly downloads
115
Tools captured
44
Advanced
Delivery
mingle MCP server → your Ahel connector (mcp.ahel.ai) → your AI.
Item type
mcp-server
Key
io-github-aeoess-mingle
Source
github.com/aeoess/mingle-mcp