# Gemmein MCP server

Source: https://glimind.com/server/mcp-registry%2Fcom.gemmein%2Fmcp
Registry id: `mcp-registry/com.gemmein/mcp`
Status: live (checked 2026-10-26T19:48:57.759Z)

## Measurements (30 days)

- Uptime: 99.87%
- Checks: 2397
- Outages (90 days): 3

## Install

```json
{
  "mcpServers": {
    "gemmein-mcp-server": {
      "type": "http",
      "url": "https://api.gemmein.com/mcp"
    }
  }
}
```

Claude Code:

```sh
claude mcp add --transport http gemmein-mcp-server https://api.gemmein.com/mcp
```

## Tools (138)

- `ai_calls_read`: Reads this environment's AI tool calls, newest first — the tool, who called it (a person's id, never for a relay or a key), the cost, the status, and (where the
- `alert_preferences`: Reads which founder alerts (by kind) are on for the signed-in founder on this account. set_alert_preferences changes them.
- `app_status`: Returns the app this connection is approved for: its name, its Development public key (pk_ — public by design, the key the app's code uses; no secret key is eve
- `approvals_list`: Lists this app's own machine and AI-connection approval requests — who asked, what for, its state (waiting, approved, denied, cancelled, revoked, expired), when
- `buy_plan`: Free to build. You pay when an app goes live — or buy ahead if you're ready. Hands your human Gemmein's own payment page for the ACCOUNT's plan, before this app
- `cancel_approval`: Cancels one of this app's own approval requests that is still waiting for the founder's browser press — a mistaken or stale ask, withdrawn before anyone approve
- `changes`: Returns what changed in each Gemmein release newer than `since` (a Gemmein version, e.g. "0.22.1"), or the last three when `since` is left out: each change as w
- `check_integration`: Runs the reaffirm boundary checks live against the caller's own app on this Gemmein; returns structured pass/fail (structuredContent: checks, notes, failedCount
- `close_circle`: The founder's moderation: closes one circle (Close circle) — every member stops seeing its posts at once (New links stop at once; a link already opened stops wo
- `connect_payments`: Connects Stripe through Gemmein's own one-purpose page — a restricted key is never typed into a chat. Answers one state: connected (which Stripe account, test o
- `create_app`: Asks the founder to make another app on this same account, in Development only — a separate sandbox with its own collections, keys and settings, sharing nothing
- `declare_collection`: Creates or updates one collection in Development from its declaration — exactly the JSON of gemmein/collections/<name>.json ({ rule, fields, unlockedBy, publish
- `dev_delete_ai_alias`: Deletes one model alias from Development — the dashboard's own delete, at once, with no approval. Refused (alias_in_use) while any AI tool still runs on it — po
- `dev_delete_ai_tool`: Deletes one AI tool from Development — the dashboard's own delete, at once, with no approval: Development's calls to it are refused from then on. Never Live: an
- `dev_delete_collection`: Deletes one collection from Development, with its records — the dashboard's own delete, at once, with no approval (Development is what this connection builds). 
- `dev_delete_email_template`: Deletes one of Development's email templates (sign-in, purchase, plan-start, notify, notify-account, notify-event, email-person, inbox-reply) — the dashboard's 
- `dev_delete_function`: Deletes one function from Development, with its secrets — the dashboard's own delete, at once, with no approval: a relay's run_function naming it fails until pu
- `dev_delete_record`: Deletes one Development record by id — the same door the dashboard's own delete button uses. Once the app is live, request_delete_record asks the founder instea
- `dev_delete_relay`: Deletes one relay from Development, with its run history — the dashboard's own delete, at once, with no approval: Development's events no longer start it. Never
- `dev_delete_view`: Deletes one view's recipe from Development — the dashboard's own delete, at once, with no approval; the collection and its records are untouched, only the view'
- `dev_errors`: Reads Development's Errors page: each refusal code with its count, first and last seen, the newest refusal's own sentence, an example Logs row id (dev_logs read
- `dev_functions`: Lists Development's functions — each one's name, version, reach in plain words and which secrets are set (names only, never a value); with name, one function wi
- `dev_logs`: Reads Development's Logs — stream auth (sign-ins), storage (record writes and refusals), manage (changes made through the dashboard, the CLI or this connection)
- `dev_people`: Reads Development's people (email, when they joined, last seen, suspended, and whether each is a test member — added with test_member_add, or made by a check ru
- `dev_records`: Reads records of one Development collection, newest first (up to 50) — the app's own test data as it stands while you build, for checking what a write saved. Cu
- `dev_view`: Reads one Development view's rows, exactly as its layout shows them (filtered, sorted, its declared columns) with its totals, and each row's own action buttons 
- `domain_check`: Returns three views of one domain already added to this app (never any other domain): what public DNS shows now — the A, AAAA, CNAME and TXT records at the doma
- `domain_connect_link`: Returns, for one domain already added to this app, the one-click link that sets it up at the founder's own DNS provider when that provider offers Gemmein's one-
- `domain_site`: Turns "Show my Gemmein site here" on (show: true) or "Stop showing my site here" (show: false) for one domain already added to this app — the same switch as the
- `explain_error`: Explains a GemmeinError code (err.code: conflict, forbidden, unknown_collection, invalid_shape, html_not_allowed, …): what the code means and the exact next ste
- `explain_relay`: Validates a relay definition — the contents of gemmein/relays/<name>.json — offline, before `gemmein sync` carries it to the cloud. A relay is the secure bounda
- `explain_rule`: Explains one of the eight collection safety rules (private, shared, admin_write, public_read, community, addressed, direct, app_only): its exact access contract
- `function_secret`: Says whether a function's secret is set (never its value) and returns where the founder sets it — a secret is never typed into a chat. env "live": Live's own va
- `guide`: Returns the Gemmein build guide (llms.txt): the packaged contract — what code calls, matching the installed SDK. Useful before building an app on Gemmein, movin
- `inbox_reply`: Asks the founder to approve one reply to a customer inside an existing Inbox conversation (threadId from live_inbox): the approval page in their browser shows t
- `keys_list`: Lists every server key this app has — name, environment (development or, once live, live too), who made it, its access (collections and powers, never a Developm
- `live_action_status`: Reads where a Live request stands (one a request_* tool, inbox_reply, site_promote, site_rebuild or replay_relay with env live, a moderation tool with env live,
- `live_emails`: Reads what happened to the Live app's transactional email over the last `days` (1–90, default 30), per template (sign-in, purchase, plan-start, notify, inbox-re
- `live_errors`: Reads the Live app's Errors page: each refusal code with its count, first and last seen, the newest refusal's own sentence, an example Logs row id, and the page
- `live_inbox`: Reads the app's support Inbox: conversations, unanswered first — who wrote, the subject, when, whether the founder owes them an answer (up to 50). With threadId
- `live_logs`: Reads the Live app's Logs — stream auth, storage, manage or server — newest first (up to 100). Customer details (names, email addresses, messages, record conten
- `live_overview`: Reads the Live app in one call: people who joined and were active this calendar month against last month, refund-aware revenue this month against last (per curr
- `live_people`: Reads the Live app's people (email, when they joined, last seen, suspended). Customer details (names, email addresses, messages, record contents) come only whil
- `live_records`: Reads records of one Live collection, newest first (up to 50). Customer details (names, email addresses, messages, record contents) come only while the owner ha
- `live_revenue`: Reads the Live app's business numbers: people (total, active in 30 days, suspended), subscribers by plan, refund-aware revenue per currency. live:read; audited;
- `live_subscriptions`: Reads the Live app's subscriptions (who, which plan, status, period end). Customer details (names, email addresses, messages, record contents) come only while t
- `live_usage`: Reads the Live app's Usage: each meter (API requests, storage writes, sign-in events, stored bytes) against its ceiling this period, the active people the plan'
- `live_view`: Reads one Live view's rows, exactly as its layout shows them (filtered, sorted, its declared columns) with its totals, and each row's own action buttons (the mo
- `live_webhooks`: The same read as relay_runs with env live, under the name earlier versions used — call relay_runs with env live in new work. Reads the Live app's relay runs, ne
- `pause_relay`: Pauses one relay in Development — its trigger fires no more events until resumed; events already queued or running finish. The same pause the dashboard's own sw
- `people_graph`: Reads one person's follows and circles, the way their page on the dashboard shows them: with person (their id, usr_…) and view — following, followers, requests 
- `prove_app`: Proves on the server what a chat can't: Gemmein signs in as two of the app's test members (the first two test_member_add made, or the two named; never a real pe
- `provider_key`: An AI provider's key, pasted by your human on Gemmein's own one-purpose page — never in a chat. Answers one state: connected (the key works, with the model it a
- `publish_record`: Publishes or unpublishes one Development record by id, on a collection with its own draft/published chip — the same door the dashboard's own chip uses. Once the
- `pull`: Returns what the app's Development holds as the gemmein/ file set (path → contents): its name, every collection's declaration, payments.json, relays, AI tools a
- `put_ai_alias`: Creates or repoints one model alias in Development (gemmein/ai/aliases.json's { name: { provider, model } }).
- `put_ai_tool`: Creates or updates one AI tool in Development from gemmein/ai/tools/<name>.json's contents (label, provider, model or alias, credits, kind, instructions, inputs
- `put_email_template`: Saves one email template in Development: name is sign-in (content = sign-in.json's JSON: logoUrl, brandColour, backgroundColour, appName, greeting), purchase, p
- `put_function`: Creates or updates one function in Development and deploys it: source is ONE bundled JavaScript module (`export default { async run(ctx, input) { … } }` — no im
- `put_record`: Creates one record in a Development collection — the same back-office write the dashboard's own Add row makes. Owned/addressed/direct collections take ownerUser
- `put_relay`: Creates or updates one relay in Development from gemmein/relays/<name>.json's contents ({ name, trigger, actions }); explain_relay validates the same definition
- `put_view`: Creates or updates one view in Development from gemmein/views/<name>.json's contents ({ collection, filter?, sort?, columns?, totals?, layout, actions? }): one 
- `reaffirm_template`: Returns reaffirm.mjs, the ready-to-edit harness that re-proves the app's boundaries against live Gemmein on every deploy (also shipped inside the @gemmein/sdk p
- `reference`: Returns the @gemmein/sdk API reference (REFERENCE.md): every method, exact signature, return shape, and the stable error-code table. Useful while writing code a
- `refund_steps`: Refunds are never made from a chat: Gemmein's Live Stripe key can't refund, by design. This reads one Live payment (its pi_… from live_revenue or the payment's 
- `relay_runs`: Reads a relay's runs in Development (env development, the default) or Live (env live — needs the live:read grant), newest first: each run's id, relay, what trig
- `remove_follow`: The founder's moderation: ends one person's follow of another — or cancels their follow request still waiting — at once (New links stop at once; a link already 
- `remove_from_circle`: The founder's moderation: takes one person out of one circle — they stop seeing its posts at once (New links stop at once; a link already opened stops working w
- `rename_app`: Names the app (it titles the customers' sign-in emails). Before go-live it is Development's and changes at once; once live, the founder approves it in the brows
- `replay_relay`: Runs one finished relay run (done, failed or dead — its id from relay_runs) again, every action of the relay as it is now; an action that already succeeded find
- `request_accept_terms`: Asks the founder to accept Gemmein's terms for this app (going live needs them accepted). They read and accept the terms on the approval page. This is a change 
- `request_add_domain`: Asks the founder to add one of their own domains to the live app. email: true also sends the app's email from mail.<domain> (on a domain already added for the w
- `request_app_lives`: Asks the founder to set whether the LIVE app lives on the web, as a mobile app, or both. Before go-live, set_app_lives changes it at once. This is a change to h
- `request_cancel_subscription`: Asks the founder to cancel one Live customer's subscription: a paid one is set to cancel in Stripe at the end of the period it paid for (Stripe charges nothing 
- `request_create_record`: Asks the founder to create a record in one of Live's collections. Before go-live, put_record creates it at once. This is a change to one customer, so it is your
- `request_delete_ai_tool`: Asks the founder to delete Live's own copy of one AI tool: Live's calls to it are refused from then on. Development's copy is deleted at once with dev_delete_ai
- `request_delete_collection`: Asks the founder to delete Live's own copy of one collection. A Live collection that holds records is refused before asking — it is deleted on the dashboard. De
- `request_delete_domain`: Asks the founder to remove one of the app's domains: the app stops answering at it and stops sending email from it. This is a change to how the business runs: y
- `request_delete_person`: Asks the founder to delete one Live customer and their data — this can't be undone: their account, records, files and sign-in are erased, and a paid subscriptio
- `request_delete_record`: Asks the founder to delete one of Live's own records — this can't be undone. Before go-live, dev_delete_record deletes it at once. This is a change to one custo
- `request_delete_relay`: Asks the founder to delete Live's own copy of one relay: Live's events no longer start it. Development's copy is deleted at once with dev_delete_relay. This is 
- `request_email_sender_look`: Asks the founder to set the local-part word each kind of email sends from on the LIVE app's own verified domain: account, support and/or news. Before go-live, s
- `request_email_switches`: Asks the founder to turn the LIVE app's outgoing emails and/or its new-sign-in notice on or off. Before go-live, set_email_switches changes it at once. This is 
- `request_go_live`: Asks the founder to take the app live: its Development becomes the public Live app their customers use, on the Gemmein plan named (or the one the account alread
- `request_grant_credits`: Asks the founder to give one Live customer credits: their balance goes up by amount, and note is the line their credit history shows. test_member_credits does t
- `request_promote`: Asks the founder to promote Development's changes to the live app: collections, plans and products (made in their Stripe account), relays and AI tools — Live's 
- `request_publish_record`: Asks the founder to publish or unpublish one of Live's own records. Before go-live, publish_record changes it at once. This is a change to one customer, so it i
- `request_rename_app`: Asks the founder to rename the live app — the name titles every sign-in email its customers get. Before go-live, rename_app changes it at once. This is a change
- `request_replace_every_key`: Asks the founder to replace every key Gemmein issued for this app — Development and Live, in one action: every secret server key, every relay's Gemmein-minted s
- `request_revoke_server_key`: Asks the founder to revoke one of the app's secret server keys by its name: a server that uses it is refused from then on. The key's value never passes through 
- `request_server_key`: Asks for a secret server key (Development or Live) with exactly the access named — access like "notes:read,orders:read-write" or "all" — and "inbox:read" / "inb
- `request_suspend_person`: Asks the founder to suspend one Live customer: they are signed out everywhere and can't sign in; their account, records and payments stay, and the founder can l
- `request_unpublish_site`: Asks the founder to take the public Live site offline: its address and the app's own domains show a plain "This site is offline" page. Every version and file is
- `request_unsuspend_person`: Asks the founder to lift one Live customer's suspension: they can sign in again, nothing else changes. test_member_unsuspend does the same for a test member in 
- `request_update_record`: Asks the founder to update one of Live's own records. Before go-live, update_record changes it at once. This is a change to one customer, so it is your human's 
- `resume_relay`: Resumes one paused relay in Development — its trigger fires again. The same resume the dashboard's own switch makes. On the founder's Logs.
- `search_docs`: Searches the Gemmein docs for one term or phrase ('keyed create', 'ifVersion', 'addressed', 'expand') without reading a whole document. Returns the docs site's 
- `sends_read`: Reads up to 50 of the emails the app has sent one person (by their id, from dev_people/live_people) — kind, subject, when, and whether it was answered (a suppor
- `set_ai_settings`: Sets Development's settings for one AI provider: rawCalls (true = the provider's own exact error text reaches the chat, for debugging — off by default), models 
- `set_alert_preferences`: Turns up to 20 founder alert kinds on or off for the signed-in founder on this account — send [{kind, enabled}, …]. Some critical kinds are locked on and refuse

Measured by Glimind (https://glimind.com): MCP handshake + tool list only, no tool is ever called. CC BY 4.0.
