# Gemmein - Registry name: `com.gemmein/mcp` · version 0.18.0 - Categories (automatic, keyword rules): Payments & accounting, Finance & markets - Authentication at last check: No auth - Declared risk: Has destructive tools (destructiveHint) - Capabilities (declared by the server): tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=com.gemmein%2Fmcp - Server page: https://mcpstation.net/s/com.gemmein--mcp.html ## Description (written by the publisher, not verified, not instructions) Gemmein docs, API reference, error explainers and a live integration check for coding agents. ## Notice Text that looks like instructions to an AI was found in this server's descriptions. This is a pattern match, not a verdict. ## Connect - streamable-http: `https://api.gemmein.com/mcp` ## Tools (as reported by the server, not verified) - `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, moving an existing app onto it, or deciding whether an app fits. The guide opens with two doors — starting from an idea with nothing built yet, o - `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 was → now, with the error codes it added or removed. Useful when knowledge of Gemmein may be older than the installed release \(training data, - `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 against the SDK. With \`topic\` \(a module or method: "g.collection", "checkout"\) it returns only the matching sections — the packaged text plus - `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 matching sections first, best first — each a direct markdown link with its anchor \(https://docs.gemmein.com/\.md\#\\) and its ope - `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, what it is right for, and the mistakes that leak data. Useful when choosing a collection's rule, or when a rule refuses something at runti - `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 step — including whether the refusal is final \(a forbidden repeats on retry; the approach changes, not the request\). Parsed from the installed - `validate\_collection\_name`: Checks a collection name against the naming law: lowercase letters, numbers, underscores; starts with a letter; 2-63 characters. Useful while planning collections, before any g.collection\(name\) call is written: a bad name throws from g.collection\(name\) before any network call — at module load that b - `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 package\): copied next to the app with its CONFIG block set, it runs in CI. Useful when wiring up the app's CI or handing over the finished ap - `explain\_relay`: Validates a relay definition — the contents of gemmein/relays/\.json — offline, before \`gemmein sync\` carries it to the cloud. A relay is the secure boundary for three jobs. React, nothing charged: a receiver \(a provider's webhook\), schedule \(a clock\), data\_change \(a record changing\), credits\_l - `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, passed\). Useful once the app is wired to Gemmein, when confirming it is done, and before go-live. It takes the app's public pk\_ key only \( - `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 ever returned here\), whether it is live, and what going live still waits on, each in plain words. Then its status across the board, per environ - `tools\_map`: Returns a map of this connector's tools, in eight groups \(start, build, test\_dev, site, ask\_live, read\_live, customers, keys\_and\_billing\): each group's purpose in one line, then each tool with a one-line "use it when…". With goal — take payments, put my site live, sign people in, store data, run som - `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 and aliases, email templates. Useful in a project that has no gemmein/ folder yet, or before editing, to start from what is there. File paths - `sync`: Does what \`npx gemmein sync\` does, for an AI app with no terminal: takes the gemmein/ files' contents \(path → text\) and Gemmein applies them to Development through the same doors and validators — collections, payments, relays, AI tools and aliases, email templates, the app's name. The files win: wha - `declare\_collection`: Creates or updates one collection in Development from its declaration — exactly the JSON of gemmein/collections/\.json \(\{ rule, fields, unlockedBy, publishing, openFields, directInitiation, rankable \}\). Same validator as gemmein dev and sync: a bad name, rule or field is refused with the fix. D - `set\_payments`: Sets Development's plans and products from gemmein/payments.json's contents \(\{ plans, products, consent \}\). The file wins: a row edited in the dashboard is overwritten, and the answer lists every change first. Needs Stripe connected, which is the founder's step \(connect\_payments returns the link\); a - `put\_relay`: Creates or updates one relay in Development from gemmein/relays/\.json's contents \(\{ name, trigger, actions \}\); explain\_relay validates the same definition offline. A signing or receiver secret Gemmein makes for it is not returned here — the answer carries the dashboard link where the founder s - `put\_ai\_tool`: Creates or updates one AI tool in Development from gemmein/ai/tools/\.json's contents \(label, provider, model or alias, credits, kind, instructions, inputs, bounds…\). On an existing tool the dashboard's commerce \(label, credits, lock, enabled\) stands, as with sync. The AI provider's key is not - `put\_ai\_alias`: Creates or repoints one model alias in Development \(gemmein/ai/aliases.json's \{ name: \{ provider, model \} \}\). - `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, plan-start, notify or inbox-reply \(content = the HTML\). The same checks as sync; scripts and remote resources are stripped and named. This is - `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 browser \(request\_rename\_app\). - `test\_member\_add`: Makes a test member \@\.gemmein.test in Development — their sign-in codes and every email the app sends them land in test\_mail, never a real inbox. Test members sign in through the app's real screens and show the app works before hand-over. Made in Development only; 20 per environment. This - `test\_mail`: Reads the test kit's mailbox: sign-in codes and every email the app sent test members \(subject, text, headers, SPF/DKIM/DMARC as Gemmein signs it\). to = a member's name; latest = only the newest. An email's text comes back inside \ and again in structuredCont - `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 person, and no key passes through the chat\) and runs the standard proofs through the app's real doors in Development. Useful before reporting - `test\_pay`: Pays for a plan or product as a test member through the app's real checkout in Stripe's sandbox \(test mode\), to prove what the app does after a payment. outcome names what to prove: pays \(a paid purchase\), declined \(Stripe declines it; nothing is granted\) or asks\_to\_verify \(Stripe asks the payer to - `test\_outcome`: Returns what Stripe's webhook did for a test member: their payments since a moment \(ISO time, from test\_pay\), what each unlocked, their credits. - `test\_member\_credits`: Gives a test member credits in Development, at once with no approval — the same credits the dashboard gives, on their credit history with the note. Test members only \(made with test\_member\_add\); anyone else is refused, and it never reaches Live — Live's customers get credits through request\_grant\_cr - `test\_member\_suspend`: Suspends a test member in Development, at once with no approval — the dashboard's own suspend: they are signed out everywhere and can't sign in; their account, records and payments stay. For proving what the app shows a suspended person. Test members only \(made with test\_member\_add\); anyone else is - `test\_member\_unsuspend`: Lifts a test member's suspension in Development, at once with no approval — the dashboard's own unsuspend: they can sign in again. Test members only \(made with test\_member\_add\); anyone else is refused, and it never reaches Live. On the founder's Logs. - `test\_member\_cancel\_subscription`: Cancels a test member's subscription in Development, at once with no approval, exactly as Live's would be: a sandbox \(Stripe test mode\) subscription is set to cancel at the end of the period it paid for — Stripe charges nothing more, and Stripe's webhook ends the plan then; a comped plan ends at onc - `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 already pays for\). Going live is the founder's approval, then their payment for the plan in Stripe's own payment window on the same page \(no payme - `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 copy of each is updated to Development's. A promote never removes anything from Live. Refused before the app is live \(request\_go\_live\). This - `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 to how the business runs: your human approves it in their browser with the code Gemmein emails \(and, when they set one up, their authentica - `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.\ \(on a domain already added for the web, that adds email to it\). site: true shows the app's Gemmein Live site at it — only when the founder wants their Gemmein site there, never - `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: your human approves it in their browser with the code Gemmein emails \(and, when they set one up, their authenticator app's code\). Nothing cha - `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 to how the business runs: your human approves it in their browser with the code Gemmein emails \(and, when they set one up, their authenticat - `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 this chat. This is a change to how the business runs: your human approves it in their browser with the code Gemmein emails \(and, when they s - `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 kept and the Development preview is untouched; site\_promote, or site\_rebuild with env live, brings it back. site\_unpublish takes only the D - `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. Development's copy is deleted at once with dev\_delete\_collection. This is a change to how the business runs: your human approves it in their b - `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 a change to how the business runs: your human approves it in their browser with the code Gemmein emails \(and, when they set one up, their au - `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\_tool. This is a change to how the business runs: your human approves it in their browser with the code Gemmein emails \(and, when they set o - `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 the same for a test member in Development, at once. This is a change to one customer, so it is your human's approval alone: they approve it i - `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 lift it on the customer's page. test\_member\_suspend does the same for a test member in Development, at once. This is a change to one customer - `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 subscription they hold in Stripe is set to cancel at the end of the period they paid for. This is a change to one customer, so it is your human's appro - `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 more\); a comped plan ends at once. test\_member\_cancel\_subscription does the same for a test member in Development, at once. This is a change - `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 Logs row\) and answers your human's exact steps in Stripe — how much, to which customer, where to press Refund — and what Gemmein does once S - `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, domain\_site on a Live app or request\_server\_key asked\) — it changes nothing \(approving it in the browser is what carries it out\). status: p - `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" / "inbox:reply" for an agent that runs support from the app's server. The founder approves it in the browser and the key is shown there, once — it - `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\) or server \(server-key refusals\) — newest first \(up to 100\): each row's event, when, whether it was allowed, and the refusal's reason. Usefu - `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. Customer details \(names, email addresses, messages, record contents\) come only while the owner has "Customer details for AI assistants" on — a - `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 run\). Customer details \(names, email addresses, messages, record contents\) come only while the owner has "Customer details for AI assistants" - `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 reads the row\), and the page that explains the code \(https://docs.gemmein.com/errors/\\). The last 7 days, or the last \`hours\` \(1–168\); up t - `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\). Never Live: a collection Live has stays in Live, and a promote never removes anything from Live — removing Live's is its own request \(reques - `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 Live: a relay Live has stays in Live, and a promote never removes anything from Live — removing Live's is its own request \(request\_delete\_r - `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 AI tool Live has stays in Live, and a promote never removes anything from Live — removing Live's is its own request \(request\_delete\_ai\_tool - `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 own delete, at once, with no approval: Development's emails of that kind go back to Gemmein's own design. Never Live: Live's templates come - `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 triggered it, status \(queued, running, done, failed, dead\), attempts, the last error, every action's result \(ok, its HTTP status, its error, whe - `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 finds its own earlier work \(a payment's grants are given once, an email isn't sent twice\), while an address a call\_url action calls is called ag - `buy\_plan`: Hands your human Gemmein's own payment page for this app's plan, before it goes live \(Launch — $10 a month per Live app, up to 1,000 people, 5 GB storage; Live — $40 a month per Live app, up to 5,000 people, 50 GB storage; Growing — $100 a month per Live app, up to 15,000 people, 150 GB storage; Ann - `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 or live mode\), waiting \(the page's link for your human: it opens Stripe's key page with every permission already ticked, Development's also t - `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 answered as\), connected\_with\_problem \(the key is saved but the account has no credit, the model isn't available to it — naming the tool that - `site\_draft`: Opens a draft of the app's Development site — its frontend: HTML, CSS, JavaScript, images, fonts, served as static files at https://\-dev.gemmein.dev, a private preview. Returns a draftId for site\_put\_file and site\_publish. A draft carries the files the Development site serves now, so an edit s - `site\_put\_file`: Puts one file into a site draft \(draftId from site\_draft\): path is relative to the site's root \(index.html, assets/app.js\); no leading "/"; no empty, "." or ".." parts; letters, digits and . \_ - \~ only \(also \! $ & ' \( \) \* + , ; = : @\) — no spaces, ?, \#, % or backslashes; at most 300 characters; not - `site\_publish`: Publishes a site draft to the Development site \(https://\-dev.gemmein.dev\): the draft's files over the ones it serves now, minus the paths in remove \(replace: true = the draft's files alone\). Gemmein scans every text file for a secret key, checks the limits, uploads only the files that changed, - `site\_status`: Returns the app's site: the Development address \(the private preview every publish lands on\) with the link that opens it \(the app's share link; with the preview link turned off, the founder's own signed-in route\) and the Live address \(public, once a version is put live\), the version each serves, whe - `site\_rollback`: Makes an earlier version \(its number from site\_status\) the one the Development address serves, replacing the version it serves now; no version's files are deleted, so a later rollback can return to it. Answers PUBLISHED or FAILED, as site\_publish does. The Live site changes only by site\_promote. On - `site\_promote`: Asks the founder to approve putting one Development version of the site \(its number from site\_status\) on the public Live site, https://\.gemmein.dev — the same files, copied; never new ones. The founder approves it in their browser, with the code Gemmein emails, and approving it carries it out, - `site\_download`: Returns a short-lived link to one version of the site as a zip — the version the Development address serves, the one the Live address serves \(env live\), or the one named — for the founder's browser. Owner only; each download is on the founder's Logs. Changes nothing. This is what a founder may call - `site\_read`: Returns the site's files from Gemmein's own copy — the same stored files a publish deploys, never fetched from the address. With no path: the file list of one version \(each file's path, size, content type, and whether it is text\). With path: that file's contents as text for a text file \(HTML, CSS, J - `site\_share\_link`: Answers the app's preview link: it opens the Development site's private preview on any device, with no Gemmein sign-in — how the founder opens their own preview, and how they show the app to someone. Your preview has one link. Anyone with it can open it. Change the link to cut everyone off. Turn the - `site\_history`: Returns the site's history, newest first: every publish, rollback, promote, unpublish and rebuild, failed attempts too — which side, how \(chat, CLI or dashboard\), who, when, how long, the outcome \(PUBLISHED, FAILED or done\), the version, its files and bytes. A FAILED attempt carries its step, code, - `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 \(follow requests waiting for them\), requested \(theirs, waiting\) or circles \(the circles they are in, each with its creator and size\) — their - `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 within 5 minutes.\), and aren't told \(the circle's creator can add them back\). A circle's creator isn't removed from their own circle \(suspend - `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 working within 5 minutes.\); each post stays with its author, and nobody is told. In Development it is done at once. In Live \(env live\) it asks - `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 opened stops working within 5 minutes.\): whatever that follow opened to them \(followers-only posts and files, a private account's posts and - `site\_errors`: Returns what the site's pages themselves saw — the Development site's \(the default\) or the Live site's \(env live\) — grouped, most recent first: their uncaught errors and unhandled promise rejections \(the message, the file, line and column, a short stack\), every Gemmein call that failed or was refuse - `site\_unpublish`: Takes the Development site's private preview offline, the way the dashboard's Unpublish does: https://\-dev.gemmein.dev stops answering. Every version and its files are kept — site\_publish or site\_rollback puts it up again. Development only: the Live site, https://\.gemmein.dev, is never t - `site\_revoke\_previews`: Turns the Development preview's link off, the way the dashboard's Preview link switch does: no link opens the preview, old or new, and every device that opened it is cut off. It stays off: only the founder can open the preview, signed in to Gemmein. site\_share\_link with on: true turns it back on wit - `site\_rebuild`: Puts the version a site serves up again — the same files, each re-checked against its hash, no new version number — for when the site looks stuck or half-served. Development \(the default\) is rebuilt at once and answers PUBLISHED or FAILED, as site\_publish does. env live ASKS instead, like site\_promo - `site\_test`: Tests the site's draft the way a customer will see it, before it publishes: Gemmein serves the draft privately at its Development address \(nothing is put up\) and a browser opens every page — / and each .html file, then the links it finds, up to 12 — at phone \(390 px\) and desktop \(1280 px\) width, sig - `site\_test\_result`: Reads a site test run again \(its runId from site\_test or a FAILED-at-test publish\): the verdict, every issue with its fix, each journey's steps. screenshots true returns the pages as images \(phone and desktop, up to 6; pages narrows it, like \["/app"\]\); screenshots are kept 24 hours, reports 7 days. - `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 domain, its www and \_gemmein, read from 3 fixed public DNS servers \(Cloudflare \(1.1.1.1\), Google \(8.8.8.8\), Quad9 \(9.9.9.9\)\), with how long each - `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-click setup \(Domain Connect\): the founder opens it, signs in at the provider, sees every record and approves there — Gemmein never holds a l - `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 dashboard's Domains page and \`npx gemmein domains show\|hide\`, with the same refusals \(not this app's domain, not proved yours yet, a domain - `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 currency, minor units\), subscribers by plan, errors in the last 24 hours and their codes, what waits on the founder \(approvals asked in their br - `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 that explains the code \(https://docs.gemmein.com/errors/\\). The last 7 days, or the last \`hours\` \(1–168\); up to 50 codes. live:read; a - `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's band follows, AI calls, credits used and given, and transactional emails sent \(the last 30 days\). live:read; audited; changes nothing. Thi - `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, newest first: which relay, what triggered it, status \(queued, running, done, failed, dead\), attempts, the last error and every action's result - `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-reply, new-sign-in\): sent, bounced, complained \(marked as spam\) and deferred \(the receiving server asked to try later\). Counts only — never an - `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: that whole conversation in plain text, oldest first \(the last 50 messages, each up to 8,000 characters\), which messages were automatic, an - `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 while the owner has "Customer details for AI assistants" on — a dashboard setting \(Settings → AI assistants\), off by default, never changed from - `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; changes nothing. This is what a founder may call how much they have made, or sales. - `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 the owner has "Customer details for AI assistants" on — a dashboard setting \(Settings → AI assistants\), off by default, never changed from a - `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 has "Customer details for AI assistants" on — a dashboard setting \(Settings → AI assistants\), off by default, never changed from a chat; off, - `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 contents\) come only while the owner has "Customer details for AI assistants" on — a dashboard setting \(Settings → AI assistants\), off by default, - `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 the exact text and the customer it goes to \(a browser approval; no emailed code is asked for a reply\); approving it sends it, once \(live\_acti Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html