Anythink-MCP
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PROFILE | No | The CLI profile to pin (e.g., 'my-project'). If not provided, the default profile is used. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| email_templates_updateA | Update a template's subject and/or content. Saves a new subject and/or body for one template type, keeping whichever you leave out; every email of that type the project sends from then on uses it. Pass the body inline in content_text. Check a draft first with |
| pay_offers_createA | Create an offer (rewards via convenience flags or raw JSON). Creates an offer of kind discount, trial_extension or referral. A redeemer reward is required, as raw JSON or a shortcut such as trial days or discount percent; referrer reward, eligibility, caps and dates are optional. Discount offers also create a Stripe coupon. Add a code users can enter with |
| pay_subscriptions_resyncA | Re-sync a subscription from the provider (project admin). Project-admin tool that fetches a Stripe subscription's live state from Stripe and overwrites the stored record, returning the result. Use it when the status shown disagrees with Stripe. Apple subscriptions aren't supported yet and return an error. It changes or deletes existing data, so check with the user before running it. |
| integrations_testA | Test a connection. Use after connecting, with an id from |
| workflows_file_handler_addA | Add a FileHandler step with named flags (no hand-written params JSON). The step attaches a file to a record's file field: fetch_and_link downloads source_url, link_existing attaches existing_file_id, and detach unlinks it; entity, record_id (usually {{ $anythink.trigger.id }}) and field are always needed. Unlike |
| dashboards_updateA | Rename a dashboard, change who can see it, or replace its widgets and layout. Changes a dashboard's name, description or sharing, or replaces its whole widget list and layout through config; widgets missing from a new list are removed. To add or remove one chart, use |
| dashboards_promote_to_defaultA | Copy a dashboard over the project default that new users start from (administrators only). Overwrites the project default dashboard with a copy of this one. The default is what new users start from and what anyone without a home dashboard lands on; the dashboard you copy from stays as it was. To change only your own landing dashboard, use |
| settings_cors_addA | Add an allowed origin (clears the CORS cache). Adds a web app origin (scheme, host and optional port, no path) or a wildcard such as https://*.example.com, so browser apps there can call the project's API straight away. A wildcard over shared hosting such as vercel.app trusts other people's sites, so check with the user first. An origin already listed is left as it is. |
| pay_subscriptions_relinkA | Move a subscription to another user (project admin). Project-admin tool that moves a subscription to another project user (numeric user id), replacing all its existing user links, to fix a purchase bound to the wrong account. The previous user loses access; billing at Stripe or Apple is unchanged. Undo by relinking it back. It changes or deletes existing data, so check with the user before running it. |
| menus_updateA | Rename a menu or change the role it is shown to. Changes the menu's name, the role it is shown to, or both; its items stay as they are. A role is shown only its first menu, so moving a menu to a role that already has one may hide it; use |
| pay_subscriptions_getA | Show one subscription by id (guid). Shows one subscription in full: status, price, customer email and name, current billing period, trial end, cancellation and scheduled auto-cancel dates, reference and any checkout URL. Read-only; for how it got into this state use |
| projects_createA | Provision a new project — a dedicated, isolated Anythink backend instance with its own database, API, auth, and storage. Requires platform login and an active billing account (set one with 'accounts_use'). Provisioning runs asynchronously: the project starts in a Provisioning state, so poll 'projects_list' until it is Active. Returns the new project's id, name, org id, and API URL. Connect to it with 'projects_use'. |
| config_removeA | Delete a saved project profile from the local CLI configuration. Removes only the locally stored credentials and settings — it does not delete the project or revoke tokens server-side (to remove the project itself, use 'projects_delete'). Run 'config_show' to see profile names. Returns confirmation, or a not-found message. |
| pay_plans_createA | Create a subscription plan (prompts for missing fields). Creates a subscription plan (a recurring price end users can buy), defaulting to gbp, monthly, type web and active, and once Stripe Connect is onboarded syncs a matching Stripe product and price. Nobody is charged until a user subscribes. Set the Apple product id to map an in-app purchase to it. |
| entities_deleteA | Delete an entity and all its data. Drops the entity's table, removing all of its fields and every record in it for good. To remove one column, use |
| fields_getA | Get the full definition of one field (including relationship config). Finds the field by name on the entity (not case-sensitive) and returns its full definition as a JSON object, including relationship settings, select options, default value and search flags. To see every field on an entity at once, use |
| config_showA | Show the local CLI configuration: all saved project profiles and platform logins, and which of each is active. For every profile it returns the name, org id, auth method (api-key or token), alias, and platform; for every platform it returns the URLs, billing account, and login status. Use this to discover profile names for 'config_use', 'config_remove', or 'logout', and to check which project the 'cli' tool currently targets. Reads local config only — makes no network calls. |
| charts_createA | Create a chart. Check it first with charts preview. Saves a chart that plots an entity's records, a platform usage metric (see |
| users_inviteA | Create a user and send an invitation email. Adds the person to this project with the role given by role_id, then emails them an invitation to confirm their account. Always pass role_id from |
| pay_subscriptions_eventsA | Show the lifecycle history of a subscription. Returns a subscription's lifecycle history, one row per event with time, event type, source, status change and summary. Read-only; check it to explain a subscription's state before using |
| menus_reorder_itemsA | Set the order of menu items that share a parent. The items must share one parent: the ones you name take the first places in that group in the order given, other siblings follow in their current order, and locked items keep their place. To move an item under a different parent, use |
| files_deleteA | Delete a file by ID. Removes the file from the project's storage by its id. Records that reference it through a file field follow that field's on-delete rule; with the default, CASCADE, they are deleted too. To see what is stored first, use |
| api_keys_revokeA | Revoke an API key by ID. Revokes the key immediately and for good, so any script, CI job or CLI profile using it starts failing to authenticate. Create a replacement with |
| fields_listA | List fields on an entity. Takes the entity name. Returns each field's id, name, label, database type, display type and its required, unique, indexed and locked flags. For one field's complete definition, including relationship target and select options, use |
| users_listA | List all users. Shows each person who can sign in to this project with their id, name, email, role and whether they have confirmed their invitation. Use it to find a user's id, or to see who holds a role before changing it with |
| charts_deleteA | Delete a chart. Dashboards that show it keep an empty widget until you remove it. Permanently removes a saved chart from the project. To take a chart off one dashboard but keep it, use |
| pay_offers_activateA | Activate a paused offer. Sets an offer's status to active so its codes can be redeemed again, still subject to its validity dates and caps. Use it to undo |
| pay_payment_optionsA | Show available payment providers for a platform/storefront. Shows which payment providers (such as Stripe or Apple in-app purchase) the project offers to an app on a platform (ios, android or web), optionally for an App Store storefront country code. Read-only; use it to see what a client app will be offered. |
| pay_statusA | Show Stripe Connect account status. Reads the project's Stripe Connect account, the account your end users' card payments are paid into: account id, whether onboarding is complete, and whether charges and payouts are enabled. Read-only. If there is no account or onboarding is unfinished, use |
| docsA | Print the full CLI reference (markdown or --json for AI/tooling consumption). Prints a hand-written reference of CLI commands, options and examples without calling the API or needing a project. It omits some groups, such as integrations, secrets, API keys and settings, so treat the tool list as the authority on what exists. Returns JSON. |
| entities_listA | List all entities. Returns each entity (table) in the active project with its database table name, field count, and whether it is public or has row-level security (RLS) on. System entities are not included. To see one entity's settings and field definitions, use |
| users_meA | Show the currently authenticated user. Shows the user you are signed in as in this project: id, name, email, role, whether confirmed and when created. Your role decides what every other tool may do, so check it when a call is refused; use |
| users_getA | Get a user by ID. Shows one user's name, email, role, whether they have confirmed their invitation and when they were created. Use it to check one person's role; use |
| search_rehydrateA | Rehydrate the search index. Omit ENTITY to rehydrate everything (admin only). Re-sends the entity's records, or every entity's, from the database to the search index, replacing existing entries; it runs in the background and can take a while on large entities. Use it when |
| integrations_oauth_configureA | Set the OAuth client ID + secret for a provider. Saves the client ID and secret of an OAuth app the user created at the provider and enables it for the project (disable saves it switched off). Each run replaces the previous settings, so social sign-in turns off unless use_social_sign_in is passed again. Afterwards users connect from the dashboard or with |
| files_uploadA | Upload a file. Uploads a file from a path on the machine running the CLI to the project's file storage and returns its new id and stored name. Files are private by default; a public file can be fetched without signing in. Use the returned id as the value of a file field with |
| menus_deleteA | Delete a menu and all of its items. Removes the menu and every item in it, including locked built-in items, and can't be undone. If it was the role's only menu, that role is left with no dashboard menu; to drop single items, use |
| integrations_getA | Show details and operations for one provider. Shows the provider's description, auth type and each operation's key, name and description. Operation keys are what |
| workflows_jobsA | View job history for a workflow. Shows the 10 most recent runs, each with its status (Completed, Failed or Running), start time and error, plus every step's status, error and log. Use it after |
| api_keys_listA | List API keys for the current user. Shows each key's id, name, number of permissions, expiry date and whether it is active, expired or revoked; key values are never returned. Use the id with |
| files_getA | Get file metadata by ID. Returns one file's original and stored names, type, size, whether it is public and when it was uploaded. It gives metadata only, not the file's contents or a download link. To browse all files, use |
| projects_useA | Connect to a project and save it as the active profile so the 'cli' tool's data, entities, users, and other commands target it. Resolves the project, then either stores the API key you pass or exchanges a transfer token for project-scoped credentials automatically. Requires an active billing account (set one with 'accounts_use'); the project must be Active (see 'projects_list'). Returns the saved profile name, org id, API URL, and auth method. |
| cliA | Run any Anythink CLI command and return its output. Prefer the dedicated tools; use this for anything they don't cover. Pass the command exactly as you would after 'anythink', e.g. 'entities list' or 'data list posts'. Destructive pay commands (delete, expire, relink, pause and similar) must be run by a person in a terminal; never add '--yes' on their behalf. 'data import' creates records (not destructive): run it with --dry-run first and only add '--yes' after the user approves the dry run. 'import directus' changes the project: run it with '--dry-run' first and only add '--yes' once the user has approved the plan. Add '--json' where supported for machine-readable output. |
| projects_deleteA | Permanently delete a project and tear down its backend instance, including its database and stored data. This is destructive and irreversible — always confirm with the user first, and prefer matching by a specific id over a short prefix to avoid removing the wrong project. Requires an active billing account (set one with 'accounts_use'). Returns the deleted project's name and id on success. |
| email_previewA | Render uncommitted subject + content + optional wrapper, print HTML. Renders a draft subject and body with sample data, inside a draft shell if given or the project's current one otherwise, and returns the HTML. Nothing is saved and no email is sent. Use it to check edits before |
| logoutA | Remove the saved credentials for a project profile from local CLI config. Use this to disconnect from a project or clear a stale token; it deletes only the stored profile locally and does not revoke the token server-side or affect the project. Omit the profile to remove the currently active one. Run 'config_show' to see profile names. |
| import_directusA | Import collections, fields, flows, and data from a Directus instance. Writes into the active project: run with --dry-run first and add --yes only once the user has approved the plan. Copies a Directus instance's collections and fields into the active project as entities and fields; flows, files, roles and records come across only with include_flows, include_files, include_roles and include_data. Call it with dry_run first and show the user the plan, because a call without dry_run applies the import straight away. Returns JSON. It changes or deletes existing data, so check with the user before running it. |
| workflows_listA | List all workflows. Each entry gives the workflow's id, name, description, enabled flag, step count and its triggers (Manual, Timed, Event or Api) with their config, but not the steps. Use |
| signupA | Register a brand-new Anythink platform account with email and password. Use this only when the user has no account yet; if they already have one, use 'login' instead. This creates the top-level user identity — it does not create a billing account or project (do that with 'accounts_create' and 'projects_create' after logging in). On success the user may need to click an email confirmation link before 'login' works; tell them to confirm, then call 'login'. |
| pay_offers_codesA | List the promo/referral codes attached to an offer. Lists every code on one offer, both shared promo codes and per-user referral codes, with slug, owner (or shared), redemption count and created date. Read-only. To find a specific user's personal referral code, use |
| workflows_seedA | Create a workflow and its steps from a JSON file. Reads a JSON file on this machine in the |
| dashboards_widget_previewA | Show the data a widget would draw, without saving it. Works for a saved chart, given its id, and for list, materialised view, markdown and other widgets, given their config. Use it to see what a saved chart shows now, or to try a widget before adding it with |
| data_createA | Create a new record. Inserts one record from a JSON object of field names to values and returns the created record with its new id. Objects or arrays given for jsonb fields are sent as JSON strings automatically. Workflows with an EntityCreated trigger on this entity will run. To load many rows from a file, use |
| pay_offers_redemptionsA | List redemptions for an offer. Lists who redeemed one offer, paged: the redeemer, the status of their reward, the referrer if any and the referrer's reward status, and when it was redeemed. Read-only; use it to check whether referral rewards were granted. |
| pay_offers_add_codeA | Add a promo/referral code to an offer. Creates a code users enter to redeem the offer: a shared promo code, or with an owner user id, a personal referral code tied to that user. Returns the new code. There is no tool to remove a single code; codes go only when the offer is deleted with |
| menus_reorderA | Set the order of menus. Menus you name come first in that order and the rest follow in their current order. Order matters when a role has more than one menu, because the role is shown only its first; to change a menu's role, use |
| charts_updateA | Change a chart. Only the settings you pass change; the rest stay as they were. Saves new settings on an existing chart; a filter replaces all of its existing filters. Dashboard widgets point at the chart rather than copying it, so every dashboard showing it draws the new version. Use |
| pay_offers_deleteA | Permanently delete an offer and all its codes + redemptions (history is lost; trial bonuses already granted are preserved). Returns how many codes and redemptions were deleted and how many trial bonuses were kept. The offer's Stripe coupon is not removed. To stop redemptions while keeping the history, use |
| fields_addA | Add a field to an entity. Adds a column to an existing entity; always pass the database type. The display type defaults from it (varchar to input, boolean to checkbox, relationships to relationship). Relationship types need the target entity's name, and on-delete defaults to CASCADE; user and file fields link to users and files automatically. Returns the new field's id. |
| workflows_enableA | Enable a workflow. An enabled workflow runs on its own from its triggers: Timed on its cron schedule, Event when the matching event happens, Api when its route is called. Use |
| pay_offers_getA | Show one offer by id (guid). Shows one offer in full: kind, description, status, primary code, redeemer and referrer rewards, eligibility rules, per-user and total caps, validity dates and linked Stripe coupon id. Read-only; its codes and redemptions come from |
| workflows_exportA | Export an existing workflow to JSON (round-trippable with seed). Gives the workflow's definition as JSON with no ids: its triggers, and its steps with their parameters, linked by step key through on_success/on_failure. Use it to back up or copy a workflow; for the ids the step tools need, use |
| accounts_listA | List the billing accounts (organizations) the logged-in user belongs to. Requires a prior platform login (use the 'login' tool first). Returns each account's id, organization name, billing email, currency, and status (Active/Suspended/Canceled), and flags which one is currently active. A billing account holds your projects and payment details — pick one with 'accounts_use' before creating or listing projects. |
| integrations_connections_listA | List your integration connections. Shows each connection's id, provider, name, scope (the whole project or one user) and whether it is enabled; stored credentials are never shown. Use the id with |
| pay_subscriptions_by_userA | List subscriptions accessible to a user. Lists the subscriptions one project user (by numeric user id) is linked to, with id, name, status, price and created date. Read-only. Use it to look up a customer's subscriptions; |
| secrets_listA | List all secret keys (metadata only, values never shown). Shows each secret's key, the users it is assigned to, and when it was created and updated; values are never returned. Use it to check a key exists before referencing it in a workflow as {{ $anythink.secrets.KEY }}, or before |
| search_similarA | Find documents similar to a given record (vector search). Takes an entity and a record id and returns the records closest in meaning to it, 10 by default, using vector embeddings in the search index. The public option searches as an anonymous visitor and returns only publicly searchable fields. To find records matching words you supply, use |
| integrations_oauth_connectA | Connect via the browser OAuth flow (starts a local listener). Opens the provider's sign-in page in a browser on this machine and waits up to five minutes for the callback on localhost (port 8745 by default), then creates the connection. A person must complete the sign-in, and the provider must first be set up with |
| pay_offers_listA | List offers. Lists the project's offers (discounts, trial extensions and referral schemes that users redeem with a code): id, name, kind, primary code, redeemer and referrer rewards, and status. Read-only. Offers are separate from subscription plans ( |
| pay_subscriptions_resumeA | Resume a cancelled subscription. Removes a scheduled cancellation from a Stripe subscription, so it renews and charges the customer again at the end of the current period. Use it to undo |
| dashboards_dataA | Get the data behind a dashboard's widgets. Runs a saved dashboard's widgets, or only the widget ids passed, and shows each one's id, title, type and current data, trimmed to rows per widget. Use it to read what a dashboard shows now; use |
| pay_offers_pauseA | Pause an offer. Sets an offer's status to paused so none of its codes can be redeemed; past redemptions and rewards already granted stay. Reversible with |
| workflows_step_addA | Add a step to a workflow. Params are the action's settings as JSON, e.g. {"script":"return {}"} for RunScript or {"entity":"orders","data":{...}} for CreateData. The new step is unlinked: set start on the workflow's first step and chain the rest with |
| data_deleteA | Delete a record. Removes one record by its numeric id. Records in other entities that point to it through a relationship field follow that field's on-delete rule; with the default, CASCADE, they are deleted too. Workflows with an EntityDeleted trigger on this entity will run. It changes or deletes existing data, so check with the user before running it. |
| data_listA | List records in an entity. Returns one page of records (rows), 20 by default. Filter by field values with JSON such as {"status":"draft","price":{"gte":10}} or pairs such as status=draft&price=GTE:10. Use |
| roles_permissions_listA | List entity permissions for a role. Shows, entity by entity, which actions (read, create, update, delete) a role grants. Use it before |
| login_directA | Store credentials directly for a project (bypasses billing login). Use this when you already have an org ID and API key or JWT token. |
| search_purgeA | Purge the search index. Omit ENTITY to purge everything (admin only). Deletes the search index entries for the entity, or for every entity, so |
| config_useA | Switch the active project profile that the 'cli' tool's commands operate against. Use this to move between already-connected projects without re-authenticating. The profile must already exist (created by 'projects_use' or 'login_direct'); run 'config_show' to see available profile names. Returns confirmation, or an error if the profile does not exist. |
| settings_cors_listA | List allowed application URLs. Shows the web app origins allowed to call this project's API from a browser. Anythink's own domains and localhost are always allowed and aren't listed. Change the list with |
| pay_plans_updateA | Update a subscription plan (any --flag overrides; unset = keep). Changes a subscription plan; omitted fields keep their current values, and active or inactive shows or hides it from the plan picker. Changing the amount, currency or interval points the plan at a new Stripe price for new sign-ups; existing subscriptions keep their old price. Prefer inactive over |
| data_updateA | Update a record. Changes only the fields named in the JSON object and returns the updated record; other fields keep their values. Objects or arrays given for jsonb fields are sent as JSON strings automatically. Workflows with an EntityUpdated trigger on this entity will run. To create a record instead, use |
| accounts_createA | Create a new billing account (organization) to hold projects and payment details. Requires a prior platform login (use the 'login' tool first). The new account is automatically set as the active account, so subsequent 'projects_create' / 'projects_list' calls target it without further setup. Returns the new account's id and name. Most users need only one account — call 'accounts_list' first to check whether a suitable one already exists. |
| pay_plans_deleteA | Delete a subscription plan. Removes a subscription plan so it can no longer be chosen. Existing subscriptions on it, and its Stripe product and price, are left in place and keep billing. To hide a plan reversibly, use |
| files_listA | List uploaded files. Returns one page of the project's uploaded files, 25 by default, with each file's id, original name, type, size, whether it is public and when it was uploaded. Use |
| workflows_getA | Get workflow details and steps. Includes each trigger with its last and next run, and every step with its id, key, action, parameters, start-step flag and on_success/on_failure step ids. Use those step ids with |
| roles_listA | List all roles. Lists the project's roles with id, name, description and whether each is active. Access works through roles: each user holds one role, and a role grants actions (read, create, update, delete) per entity. Use |
| entities_createA | Create a new entity. Creates an empty entity, which is a new database table in the active project; add its columns afterwards with |
| fields_deleteA | Delete a field from an entity. Takes the field's name, not its id, and drops that column from the entity, so the value it held is lost from every record. To remove the whole entity and its records, use |
| dashboards_deleteA | Delete a dashboard and its widgets. The charts on it are kept. Removes the dashboard for everyone who can see it. To take one chart off a dashboard, use |
| integrations_oauth_statusA | Show OAuth client setup status for a provider. Shows whether a client ID is saved for the provider, whether it is enabled and also used for end-user social sign-in, and the redirect URL its OAuth app must allow. Check it before |
| search_auditA | Compare configured public-searchable fields vs what public search actually returns. Flags any data leaks. Runs the same query (default *) through public and signed-in search for one entity, sampling 5 records by default, and reports any field public search returned that is not marked publicly searchable, plus marked fields that didn't appear. It ends with an error when a leak is found. Fix leaks with |
| settings_getA | Show all project settings. Shows the project's name, description, email confirmation and sign-up rules, default role for new users, group RLS, AI mode and model, payment redirect URLs, trial settings and allowed CORS origins. Secret-like values such as google_maps_key show only as set. Its field names are the keys |
| workflows_disableA | Disable a workflow. Stops the workflow running from its triggers but keeps its triggers, steps and job history, so |
| users_deleteA | Delete a user by ID. Removes the user from this project, so they can no longer sign in to it or use their role's access. The role and its permissions stay in place for everyone else. Make sure you have the right person with |
| pay_entitlementA | Show the current user's access / trial entitlement. Reports whether the signed-in user (the one this tool runs as) has paid or trial access in the project's app: status, trial end and days left, subscription id, provider, product and expiry. Read-only. To look up another user, use |
| login_googleA | Sign in to the Anythink platform with Google. Opens the user's browser to Google's consent screen and waits for them to approve, then stores the session token. The browser step must be completed by the user; everything before and after is tool-driven. This does NOT pick a billing account or project — after it returns, call 'accounts_list' then 'accounts_use', and 'projects_list' then 'projects_use'. Needs a local browser, so it only works over stdio (not the hosted HTTP server). |
| email_shell_showA | Show the current shell HTML (custom or platform default). Returns the HTML layout that wraps the body of every email the project sends, and says whether it is customised or the platform default. The {{Content}} placeholder marks where each template's body goes. Read it before |
| data_exportA | Export records to a CSV, JSON or JSONL file (streamed page by page). Writes every matching record to a file on the machine running the CLI, or to standard output when the file is -, fetching page by page. Uses the same filter syntax as |
| workflows_step_getA | View step details including parameters. Shows one step's key, action, enabled and start-step flags, on_success/on_failure step ids and its full parameters. Read it before |
| roles_permissions_addA | Add entity permissions to a role. Grants a role one or more actions (read, create, update, delete; default read) on one entity, and every user holding the role gains them at once. Its other permissions are kept and actions it already has are skipped. An action with no matching permission for that entity is reported and skipped. |
| dashboards_getA | Get a dashboard with its widgets and their positions. Shows a dashboard's name, description, sharing settings, owner and each widget's id, type, title, the chart it shows and its grid position. Use it to find widget ids for |
| integrations_executeA | Run an operation on a connected provider. Calls the provider live with the project's first enabled connection to it, using inputs given as key=value pairs or a JSON object, and may incur the provider's charges. The API currently runs only the claude provider (inputs prompt, system_prompt, model, max_tokens); other providers return an error, so use them in workflow steps via |
| charts_platform_metricsA | List the usage metrics a platform chart can plot. Shows each project usage metric a chart with source platform can plot: its id, label, shape, supported chart types and breakdowns. Pass a metric's id as platform_metric to |
| pay_offers_updateA | Update an offer (patch — only supplied fields change; kind is immutable). Changes an offer's name, description, rewards, eligibility, caps, dates or status; omitted fields are kept. Setting status to paused or expired stops its codes being redeemed. Changing a discount reward does not update the Stripe coupon made at creation. For status alone, |
| pay_trial_disableA | Disable the app engagement trial. Turns off the project-wide app engagement trial, so users without a subscription no longer get free app access. Changes only this project setting and leaves the others as they were; undo with |
| workflows_deleteA | Delete a workflow. Removes the workflow with its triggers and steps, so it stops running and can't be restored. To stop it for a while use |
| api_keys_createA | Create an API key. The raw key is shown once and never retrievable. Creates a project API key with the named permissions (names from |
| roles_permissions_removeA | Remove entity permissions from a role. Takes one or more actions (default read) on one entity away from a role; every user holding the role loses them at once, and its other permissions are kept. Actions the role doesn't have are ignored. Use |
| menus_add_itemA | Add a menu item for an entity. The item links to the entity's data page in the dashboard, is named after the entity in title case unless name is given, uses a Lucide icon (Database by default) and goes last at the top level or under parent. The entity must exist; to link to another path, add the item and then set href with |
| dashboards_listA | List the dashboards you can see. Shows each dashboard's id, name, owner and whether it is your home, the project default or shared. A dashboard is a grid of widgets, most of them showing a saved chart; open one with |
| menus_listA | List all menus and their items. Shows every menu with its id, name and the role id it is shown to, plus its items' ids, names, icons and links. Only top-level items and their direct children are listed; use |
| workflows_createA | Create a new workflow. Creates the workflow with one trigger and no steps: Manual needs entity, Timed needs cron, Event needs entity plus an event (EntityCreated by default) and an optional filter, and Api needs api_route. It stays disabled unless enabled is set; add steps with |
| integrations_disconnectA | Delete a connection. Removes the connection and its stored credentials from the project; workflow steps that rely on it fail until the provider is connected again with |
| pay_paymentsA | List recent payments. Lists card payments the project has taken from its end users through AnythinkPay (Stripe), with id, amount, currency, status, description and date, paged by page and limit. Read-only; there is no refund tool. For recurring billing records use |
| settings_setA | Set a single project setting. Changes one setting, named as in |
| fetchA | Make an authenticated API request to the active project. Sends a request to any project endpoint, with the path relative to /org/{project}, using the CLI's credentials, and prints the response body. Use it only where no dedicated tool exists, such as /permissions or integration field options; POST, PUT and DELETE change data. all follows every page of a GET. It changes or deletes existing data, so check with the user before running it. |
| pay_subscriptions_cancelA | Cancel a subscription. Schedules a Stripe subscription to cancel at the end of its current billing period: the customer keeps access until then and is not charged again. Reversible before the period ends with |
| menus_remove_itemA | Remove a menu item, along with its child items. Deletes the item and its direct child items from the menu. It refuses locked built-in items, and items whose children are locked or have children of their own; move those out first with |
| integrations_oauth_callback_urlA | Print the redirect URL to add to OAuth app configurations (same for every provider). Prints only the dashboard redirect URL for this project, worked out locally from the API address and project id without an API call. Give it to the user to add to their OAuth app at the provider before |
| charts_listA | List charts, newest first. Shows each saved chart's id, name, type, data source, the entity or metric it plots and when it last changed; pass entity to see only one entity's charts. A chart is saved on its own and appears on a dashboard only once added with |
| secrets_deleteA | Delete a secret. Removes the key and its encrypted value for good; workflows that reference it as {{ $anythink.secrets.KEY }} fail until it is created again. To change a value, use |
| pay_trial_enableA | Enable the app engagement trial. Turns on the project-wide app engagement trial, so users without a subscription get free app access for the longest trial length among active plans. Changes only this project setting and leaves the others as they were; undo with |
| workflows_step_linkA | Link workflow steps together (set on-success/on-failure). Sets which step runs next when this one succeeds (on_success) or fails (on_failure), by step id from |
| charts_previewA | Show the data a chart configuration would draw, without saving it. Runs a chart configuration against the project's current data and shows the points, totals or rows it would plot, trimmed to rows. Use it to settle entity, grouping, measure and filters before |
| dashboards_createA | Create a dashboard, optionally with charts already on it. Makes a new dashboard owned by you, visible only to you unless shared is set. Each chart id passed becomes a chart widget titled with the chart's name; add more later with |
| charts_getA | Get a chart's full configuration. Shows every setting of one saved chart: type, data source, entity or metric, grouping, measure and aggregation, filters, time window, target and comparison. Read it before |
| menus_update_itemA | Change a menu item's name, icon, link or parent. Changes only the fields you pass: name, Lucide icon, entity (links to that entity's page) or href (any path), and parent (0 for top level). A moved item goes last under its new parent, and locked built-in items can't be changed. To reorder items without moving them, use |
| workflows_integration_addA | Add an Integration step (Claude, OpenAI, Slack…) with named flags (no hand-written params JSON). The step runs one provider operation, such as claude generate-text, with inputs given as key=value pairs that accept {{ $anythink... }} templates; find provider and operation keys with |
| menus_getA | Show one menu with its items and their child items. Gives the menu's role id and its full item tree, with each item's id, name, icon, href, parent and whether it is a locked built-in item. Use it to find item ids for |
| menus_createA | Create a menu for a role. The new menu is empty; add items with |
| workflows_file_handler_exampleA | Print a copy-paste-ready FileHandler params JSON. The sample uses {{ $anythink... }} templates for the source URL, record id and folder, and changes nothing in the project. Adapt it as params for |
| entities_getA | Get entity details and fields. Takes the entity name. Returns its table name, its public, RLS and lock-new-records flags, and each field's id, name, database type, display type and required, unique and indexed flags. For one field's full definition, including relationship and select options, use |
| roles_createA | Create a new role. Adds a role with no entity permissions yet, so its users can't reach any data until you grant actions with |
| data_rlsA | View or set RLS (row-level security) user access on a record. Without a user id, returns the users who have row-level security (RLS) access to the record, with their names and whether access is read-only. With a user id, grants that user access to the record, full by default or read-only when asked. It cannot remove access, and only matters on entities with RLS turned on. It changes or deletes existing data, so check with the user before running it. |
| workflows_step_updateA | Update step parameters and properties. Changes a step's name, params or enabled flag and keeps its action, start flag and links; it can enable a step but not disable one. Params replace the step's parameters as a whole, so read them with |
| settings_cors_removeA | Remove an allowed origin (clears the CORS cache). Removes an origin from the allow-list and clears the CORS cache, so browser apps on it are blocked straight away. Pass the origin as |
| loginA | Log in to the Anythink platform with email and password. Returns a session token used for account and project management. For Google sign-in, use the 'login_google' tool. |
| search_queryA | Run a search query. Searches the search index across all indexed entities or the ones listed, with optional filter (status=published AND category=news), sort, facets and highlighting; use * to browse. The public option searches as an anonymous visitor. To list one entity's records by exact field values, use |
| pay_subscriptions_check_accessA | Check whether the current user has access to a subscription by name. Checks whether the signed-in user (the one this tool runs as) holds a subscription with the given name, optionally requiring a status, and returns whether they have access plus that subscription's id, name and status. Read-only. For another user use |
| oauth_google_statusA | Show Google OAuth configuration status. Reports whether Google sign-in for the project's end users is enabled and whether a client ID and secret are saved, without showing them. This covers user sign-in only; Google as an integration is handled by |
| entities_updateA | Update entity settings. Changes an entity's public, row-level security (RLS) and lock-new-records settings; any you leave out keep their current value. It cannot rename the entity or change its fields, so use |
| workflows_triggerA | Manually trigger a workflow. Starts a run now and returns without the run's result; check the outcome with |
| pay_subscriptions_deleteA | Hard-delete a subscription (project admin). Project-admin recovery tool that permanently removes a stuck or duplicate subscription record and its user links from Anythink. It does not cancel at Stripe or Apple, so the customer can still be billed; use |
| fields_updateA | Update properties of an existing field. Changes a field's label, description, display type, default value, select options and its required, searchable, public-search and indexed flags. Settings you don't pass keep their value, except the description, which is cleared unless passed again. It cannot rename a field or change its database type, and locked fields are refused. It changes or deletes existing data, so check with the user before running it. |
| pay_plans_listA | List subscription plans. Lists the project's own subscription plans, the recurring prices its end users can subscribe to: id, internal plan name, display name, price per interval, trial days, Apple product id and whether active. Read-only. Not the same as |
| email_templates_showA | Show a template's subject + content, or the rendered HTML with --rendered. By default returns the stored subject and content with their {{ placeholders }} intact, which is what to edit; with rendered it returns the full email HTML inside the project's shell, filled with sample data. Read it before |
| dashboards_set_homeA | Make a dashboard of yours your landing dashboard. Changes only your own landing dashboard, replacing your previous home; other users are unaffected. Check the result with |
| oauth_google_configureA | Set Google OAuth client ID and secret. Saves the Google Cloud OAuth client ID and secret that let the project's end users sign in with Google, and switches that sign-in on or off. It only works interactively, prompting for each value (blank keeps the current one), then prints the callback URL to add to the Google OAuth client. It changes or deletes existing data, so check with the user before running it. |
| pay_subscriptions_force_expireA | Force-expire a subscription immediately (project admin). Project-admin recovery tool that sets a subscription's status to expired and clears its current period, so the user loses access at once while the record is kept. It changes only Anythink's record, not Stripe or Apple, so it does not stop future charges; use |
| integrations_listA | List available integration providers. Start here when connecting a third-party service. Shows each provider's key, category, auth type (api_key or oauth2) and operation count; providers turned off for this project are left out. Next, read a provider with |
| roles_deleteA | Delete a role by ID. Removes a role and the permissions it grants. The API refuses while any user still holds the role, and the built-in admin role can't be deleted, so check |
| email_templates_listA | List all email templates for this project. Shows each template's type (such as confirmation, invite or recovery), subject, and whether it is locked or active. These are the account emails Anythink sends for the project; pass a type to |
| integrations_disableA | Disable a connection. Stops |
| data_importA | Create records from a CSV, JSON array or JSONL file. Always run with --dry-run first and only add --yes after the dry run is approved. Reads a file on the machine running the CLI and creates one new record per row, checking values against the entity's field types; rows with unknown columns are rejected unless told to ignore them. System columns such as id are ignored, so it never updates existing records. For a single record, use |
| workflows_updateA | Update a workflow's name or description. Only the name and description change; the triggers, steps, group and enabled state are sent back unchanged, and no tool here edits a trigger. It refuses to run while an existing trigger is incomplete (e.g. a Timed trigger with no cron), which must be fixed in the dashboard first. To change a step, use |
| accounts_useA | Set the active billing account that project commands operate on. Call this after 'login' when you belong to more than one account, before using 'projects_list', 'projects_create', or 'projects_use'. Accepts a full account UUID or a unique prefix; run 'accounts_list' to see valid ids. Returns the resolved account name and id, or an error if no account matches. |
| apiA | List all API endpoints (platform + dynamically generated entity routes). Lists full URLs for a fixed set of core routes (auth, API keys, entities, fields, workflows), the five CRUD routes of every entity in the project plus public routes for public entities, and the route of each API-triggered workflow. Use it to give app developers endpoint URLs; to call one, use |
| pay_subscriptions_listA | List subscriptions (paginated, optionally filtered by --status). Lists the project's subscriptions (end users' recurring Stripe or Apple purchases of a plan) with id, name, status, price, customer email and created date, paged, optionally filtered by status such as active, trialing or cancelled. Read-only. Non-admins see only subscriptions they are linked to. |
| pay_connectA | Set up a Stripe Connect account and start onboarding. Creates the project's Stripe Connect account and opens Stripe's hosted onboarding page in a browser, which must be finished before plans can take card payments. It prompts for business type, country and email, so it needs an interactive terminal. Check |
| secrets_updateA | Rotate (overwrite) an existing secret value. Overwrites the stored value of an existing key, for example to rotate a credential; the old value is lost and workflows referencing the key use the new one from their next run. Pass the new value in value. Use |
| pay_offers_user_codeA | Look up a user's personal referral code. Returns one user's personal referral code (by numeric user id) with its slug, offer name and redemption count. If the user has no code yet the server generates one, so this call can create a code. To list all codes on one offer, use |
| dashboards_mineA | Get your landing dashboard, or the project default if you have none. Shows the same detail as |
| data_getA | Get a single record by ID. Returns all of one record's field values by its numeric id. Use |
| integrations_connectA | Connect to a provider with an API key (prompts for the key if not given). Only for providers whose auth type is api_key (see |
| pay_plans_getA | Show one plan by id. Shows one of the project's subscription plans in full, including type, price and interval, trial, Stripe product name and description, reference, Apple product and subscription group ids, and whether it is active. Read-only; browse plans with |
| dashboards_remove_widgetA | Remove a widget from a dashboard. Everything else on the dashboard stays as it was. Takes the widget off the dashboard and out of its layout; the chart it showed is kept and can be added back with |
| pay_trial_statusA | Show whether the trial is enabled and its derived length. Reports whether the project-wide app engagement trial is on and how long it lasts. The length is not set directly: it is the longest trial among active subscription plans, and that plan is named. Read-only; change it with |
| pay_methodsA | List saved payment methods. Lists the cards and other payment methods saved by the signed-in user as a customer of this project: type, brand, last four digits and expiry. It does not list your end users' cards or the card on your Anythink billing account. Read-only. |
| projects_listA | List the projects (provisioned backend instances) in a billing account. Requires platform login and an active billing account (set one with 'accounts_use'). Returns each project's id, name, description, region, org id, status (Initializing/Provisioning/Active/Suspended/Terminated/Error), API URL, and creation date. Use this to find a project's id before connecting with 'projects_use' or removing it with 'projects_delete'. |
| email_shell_updateA | Save new shell HTML, or pass --reset to revert to the platform default. Replaces the HTML layout around every email the project sends, or with reset returns to the platform default. Keep the {{Content}} placeholder where the body goes; the server sanitises the HTML. Check a draft with |
| workflows_step_deleteA | Delete a step from a workflow (warns if other steps link to it). The API refuses to delete a step that other steps still point to through on_success or on_failure, so re-point those with |
| integrations_enableA | Enable a connection. Turns a disabled connection back on so |
| secrets_createA | Store a new secret value. Stores the value encrypted in the project under the key, for workflows to reference as {{ $anythink.secrets.KEY }}; it can never be read back. Pass it in value, as the hidden prompt can't be answered by a tool. To change an existing secret use |
| dashboards_add_chartA | Add a chart to a dashboard as a new widget. Everything else on the dashboard stays as it was. This is how a saved chart gets onto a dashboard. The widget takes the chart's name as its title unless title is given, and goes after the existing widgets unless column, row, width or height place it on the 12-column grid. Create the chart first with |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 175 tools
Descriptions are unusually thorough and cross-reference siblings explicitly ('use X instead of Y'), so most boundaries are clear. However, with 175 tools there are genuine overlaps: convenience wrappers (workflows_file_handler_add vs workflows_step_add), preview/get pairs (charts_preview vs dashboards_widget_preview vs dashboards_data), and catch-all escape hatches (cli, fetch, api) that duplicate the dedicated tools' scope. An agent must read carefully to pick correctly, so some overlap exists despite good prose.
Names overwhelmingly follow a snake_case prefix_noun_verb or prefix_verb convention (email_templates_update, menus_update_item, dashboards_add_chart, pay_subscriptions_cancel, workflows_step_add). Minor deviations exist: several unprefixed top-level tools (login, signup, logout, docs, cli, fetch, api) and shorthand pay_* names break the resource-prefix pattern. Still largely predictable.
175 tools is an extreme mismatch for a single MCP server, far past the 50+ threshold. Even granting that Anythink is a full backend platform, cramming project, entity, data, workflow, payment, email, auth, and search management into one surface is unwieldy and forces agents to select blind. This module should be decomposed into several scoped servers.
Coverage is remarkably broad: entities, fields, data, RLS, users, roles, menus, dashboards, charts, workflows, integrations, payments, email, search, secrets, files, API keys, projects and accounts all have full lifecycle tools. Only minor, explicitly acknowledged gaps exist (no refund tool, no way to remove a single offer code, no trigger-editing tool), which agents can work around.