Skip to content
plugmcp
DirectorySkillsCategoriesBlog
EN/中文
Sign inSign up
Home/Servers/Anythink All In One Backend: Data, Auth, Files, Workflows, Payments, APIs

Anythink All In One Backend: Data, Auth, Files, Workflows, Payments, APIs

by cloud.anythink

Sick of stitched-together services? Anythink is the all-in-one backend, configured with AI.

Power your agent

Add this server

The publisher's own URL. Not a PlugMCP endpoint.

Server URL
https://mcp.anythink.cloud/mcp
Provider
Add in Claude

Claude opens with the name and URL filled in. You still confirm it there.

Claude Code
claude mcp add --transport http cloud.anythink-anythink https://mcp.anythink.cloud/mcp

Run in a terminal.

Claude Desktop
{
  "mcpServers": {
    "cloud.anythink-anythink": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.anythink.cloud/mcp"
      ]
    }
  }
}

claude_desktop_config.json

Step-by-step: add this in Claude

Remote URL or a command on your machine? How the two installs differ

Run on PlugMCP

Host a copy with our keys and logs.

A new server you create. It is not this listing's official endpoint. Use the publisher install when you want their URL and their credentials.

Launch

Related MCP

View more
  • Firecrawl🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.
  • N
    NotionToken-auth Notion MCP: pages, databases, blocks, comments, files. Runs headless in CI and agents.
  • Context7Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors

Related skills

View all
  • reaReverse engineer anything with agents, from app behavior down to native binaries.
  • rea-changelog-updatePrepare or rewrite REA release changelogs and GitHub release notes from pinned Git history, with verified contributor thanks and Release Please synchronization.
  • rea-tool-designDesign or change REA investigation tools, CLI/MCP contracts, provider capabilities, and Evidence semantics.

Questions

How do I install Anythink All In One Backend: Data, Auth, Files, Workflows, Payments, APIs?
Copy the http config for Cursor, Claude Desktop, Claude Code, or VS Code on this page. It uses the publisher's install, not a PlugMCP proxy.
Does Anythink All In One Backend: Data, Auth, Files, Workflows, Payments, APIs need an API key?
No required environment variable is listed on this record.
What transport does Anythink All In One Backend: Data, Auth, Files, Workflows, Payments, APIs use?
Anythink All In One Backend: Data, Auth, Files, Workflows, Payments, APIs is reached over HTTP.
When was Anythink All In One Backend: Data, Auth, Files, Workflows, Payments, APIs last checked?
Last checked 2026-10-20. Sick of stitched-together services? Anythink is the all-in-one backend, configured with AI.

Sick of stitched-together services? Anythink is the all-in-one backend, configured with AI.

Anythink CLI

The official command-line interface for Anythink — the headless backend platform for developers and founders. Manage your projects, entities, data, workflows, users, files, and payments without leaving the terminal.

   ░███                             ░██    ░██        ░██           ░██
  ░██░██                            ░██    ░██                      ░██
 ░██  ░██  ░████████  ░██    ░██ ░████████ ░████████  ░██░████████  ░██    ░██
░█████████ ░██    ░██ ░██    ░██    ░██    ░██    ░██ ░██░██    ░██ ░██   ░██
░██    ░██ ░██    ░██ ░██    ░██    ░██    ░██    ░██ ░██░██    ░██ ░███████
░██    ░██ ░██    ░██ ░██   ░███    ░██    ░██    ░██ ░██░██    ░██ ░██   ░██
░██    ░██ ░██    ░██  ░█████░██     ░████ ░██    ░██ ░██░██    ░██ ░██    ░██
                             ░██
                       ░███████

Contents

  • Installation
  • Getting started
  • Command reference
    • signup / login / logout
    • accounts
    • projects
    • config
    • entities
    • fields
    • data
    • search
    • workflows
    • users
    • files
    • email
    • roles
    • api-keys
    • menus
    • charts
    • dashboards
    • settings
    • integrations
    • pay
    • oauth
    • api
    • docs
    • migrate
    • plans
  • MCP server
  • Contributing
  • License

Installation

Both the anythink CLI and the anythink-mcp server are distributed together. The quickest way to get both is Homebrew.

Homebrew (macOS / Linux) — recommended

brew install anythink-cloud/tap/anythink

This installs both commands onto your PATH:

  • anythink — the CLI
  • anythink-mcp — the MCP server (see MCP server)

Or tap first, then install:

brew tap anythink-cloud/tap
brew install anythink

Update to the latest release:

brew upgrade anythink

Uninstall:

brew uninstall anythink

macOS / Linux — download binary

Grab the latest release for your platform from the Releases page:

PlatformBinary
macOS (Apple Silicon)anythink-osx-arm64
macOS (Intel)anythink-osx-x64
Linux (x86_64)anythink-linux-x64
Linux (ARM64)anythink-linux-arm64
# Example — macOS Apple Silicon
curl -Lo anythink https://github.com/anythink-cloud/anythink-cli/releases/latest/download/anythink-osx-arm64
chmod +x anythink
sudo mv anythink /usr/local/bin/

The MCP server ships as a matching anythink-mcp-<platform> binary on the same release — download and install it the same way (e.g. anythink-mcp-osx-arm64).

Verify the download against checksums.txt in the release assets:

sha256sum -c checksums.txt --ignore-missing

.NET global tool

If you have the .NET 8 SDK installed:

dotnet tool install --global anythink-cli

Build from source

git clone https://github.com/anythink-cloud/anythink-cli
cd anythink-cli
dotnet build
dotnet run --project src/AnythinkCli.csproj -- --help

Getting started

# 1. Create an account (or log in if you already have one)
anythink signup

# 2. Create a billing account
anythink accounts create --name "My Company"

# 3. Create a project
anythink projects create "My App" --region lon1

# 4. Connect to the project
anythink projects use <project-id>

# 5. Start building
anythink entities list
anythink workflows list

Your credentials and project profiles are stored in ~/.anythink/config.json. You can manage multiple projects by running projects use to switch between them.


Command reference

signup / login / logout

anythink signup                        Create a new Anythink account
anythink login                         Log in to the platform
anythink logout                        Remove saved credentials for a project profile

signup and login are interactive — they prompt for email and password and walk you through connecting to a billing account and project on first run.


accounts

Manage billing accounts. A billing account is the container for one or more projects and holds your subscription and payment details.

anythink accounts list                 List your billing accounts
anythink accounts create               Create a new billing account
anythink accounts use <id>             Set the active billing account

Examples

anythink accounts create --name "Acme Ltd" --email [email protected]
anythink accounts use a1b2c3d4

projects

Create and manage Anythink projects. Each project is an isolated backend instance with its own database, auth, files, and workflows.

anythink projects list                 List projects in the active billing account
anythink projects create <name>        Create a new project
anythink projects use <id>             Connect to a project (sets it as the active profile)
anythink projects delete <id>          Delete a project

Options — projects create

FlagDescription
--region <id>Deployment region (e.g. lon1)
--plan <id>Plan ID (see anythink plans)

Examples

anythink projects create "My App" --region lon1
anythink projects use a1b2c3d4
anythink projects delete a1b2c3d4 --yes

config

View and manage saved CLI profiles.

anythink config show                   List all profiles and platform settings
anythink config use <profile>          Set the active project profile
anythink config remove <profile>       Remove a profile

Profiles are named by project alias or ID and stored in ~/.anythink/config.json.


entities

Manage entities (database tables) in the active project.

anythink entities list                 List all entities
anythink entities get <name>           Get entity details and fields
anythink entities create <name>        Create a new entity
anythink entities update <name>        Update entity settings
anythink entities delete <name>        Delete an entity and all its data

Options — entities create

FlagDescription
--rlsEnable row-level security
--publicMake the entity publicly readable
--lockLock new records (prevent direct creation)
--junctionMark as a junction (many-to-many) table

Examples

anythink entities create orders --rls
anythink entities get customers
anythink entities delete temp_data --yes

fields

Manage fields on an entity. Fields map directly to database columns.

anythink fields list <entity>          List fields on an entity
anythink fields add <entity> <name>    Add a field
anythink fields delete <entity> <id>   Delete a field

Options — fields add

FlagDescription
--type <type>Field type: varchar, text, int, float, bool, datetime, json, uuid
--requiredMark the field as required
--uniqueEnforce a unique constraint
--indexedAdd a database index
--default <value>Default value

Examples

anythink fields list customers
anythink fields add customers email --type varchar --unique --required
anythink fields add products price --type float --required
anythink fields delete customers 1234 --yes

data

CRUD operations on entity records.

anythink data list <entity>            List records
anythink data get <entity> <id>        Get a single record by ID
anythink data create <entity>          Create a new record
anythink data update <entity> <id>     Update a record
anythink data delete <entity> <id>     Delete a record
anythink data export <entity> <file>   Export records to CSV, JSON or JSONL
anythink data import <entity> <file>   Create records from CSV, JSON or JSONL

Options — data list

FlagDescription
--limit <n>Records per page (default: 20)
--page <n>Page number (default: 1)
--filter <expr>Field filters — JSON ({"status":"draft","total":{"gte":10}}) or field=value pairs (status=draft&total=GTE:10). See below.
--jsonOutput raw JSON instead of table
--allStream all pages as sequential JSON objects (requires --json, constant memory)

Filter operators (JSON form) — {"field": value} matches exactly, {"field": [a, b]} matches any, {"field": null} matches empty. For anything else use an operator object, e.g. {"price": {"gte": 10, "lt": 100}}:

OperatorMeaningfield=value form
eq / neEqual / not equalx=v / x=!v
gt gte lt lteComparisonsx=GT:v …
contains / not_containsCase-insensitive substringx=C:v / x=NC:v
starts_with / ends_withCase-insensitive prefix/suffixx=SW:v / x=EW:v
inAny of a listx=IN:a,b
null: true / null: falseEmpty / not emptyx=NULL: / x=NNULL:
exists: true / exists: falseHas / lacks related recordsx=EXISTS: / x=NOT_EXISTS:

Options — data create / data update

FlagDescription
--data <json>JSON object of field values

Examples

anythink data list blog_posts --limit 10
anythink data get blog_posts 42
anythink data create blog_posts --data '{"title":"Hello World","status":"draft"}'
anythink data update blog_posts 42 --data '{"status":"approved"}'
anythink data delete blog_posts 42 --yes

Export and import — data export streams records page by page to a file; data import creates one record per row. Always run an import with --dry-run first: it validates every row and sends nothing.

anythink data export customers customers.csv
anythink data export orders orders.jsonl --filter 'status=paid' --fields id,total
anythink data import customers customers.csv --dry-run
anythink data import customers customers.csv --errors rejected.csv --yes
Flag (export)Description
--format <fmt>csv, json or jsonl. Default: from the extension (.csv, .json, .jsonl, .ndjson). - as the file writes to stdout (needs --format)
--filter <expr>Same syntax as data list --filter
--fields a,bColumns to export, in order. CSV defaults to the entity's fields
--page-size <n>Records per request (default 200, max 1000)
--forceOverwrite an existing file. Without it an existing file is never touched. The file is written to a temporary name and renamed on success, so a failed export never leaves a partial file
--no-formula-guardCSV only: see below
Flag (import)Description
--format <fmt>csv, json (an array of objects) or jsonl. Default: from the extension, else the first character ([ or {)
--dry-runValidate and report; nothing is sent
--concurrency <n>Parallel creates (default 4, max 16)
--errors <file>Write skipped and failed rows, with an _error column or property, so they can be fixed and re-imported
--ignore-unknownDrop columns that aren't fields on the entity instead of rejecting the row
--yesSkip the confirmation prompt. Required when not running interactively (CI, scripts, agents), otherwise the import refuses before writing anything

How values are handled:

  • CSV is RFC 4180: cells containing a comma, quote or line break are quoted, quotes are doubled, and quoted cells can span lines. Objects, arrays, JSON fields and relations are written as compact JSON text.
  • Formula guard (export): CSV text starting with =, +, -, @, tab or carriage return is prefixed with ' so spreadsheets don't run it as a formula. Numbers are never changed. This includes phone numbers such as +44 20 7946 0000 and any text with a leading + or -. The guard is one-way: importing the file keeps the ' unless the file was exported with --no-formula-guard.
  • Types follow the entity's fields. Text keeps its exact characters (00123 stays 00123); integers and decimals are parsed with . as the decimal separator (1,5 is rejected, never guessed); booleans accept true/false, 1/0 and yes/no; dates must be ISO 8601 (2025-03-31, 2025-03-31T09:30:00Z; no offset means UTC); JSON fields must be valid JSON.
  • An empty CSV cell is sent as null. In JSON and JSONL input an empty string stays an empty string.
  • Bad rows are skipped, never sent. They are reported with a row number (CSV: record number, so the header is row 1; JSONL: line number; JSON: position in the array) and counted as skipped. Rows the server rejects are counted as failed. The exit code is non-zero if any row was skipped or failed.
  • Retries: 400, 409 and 422 are never retried, so a create is not repeated. See Uncertain failures below for what is retried.
  • System columns are ignored on import: id, created_at, updated_at, tenant_id and locked are never sent, and the import says which it ignored. Importing an export back into the same project therefore creates duplicates with new ids and timestamps; it does not update the originals.
  • One-to-many collections and secret fields are skipped on import (the import lists them), and one-to-many columns are left out of an export unless you name them in --fields. Many-to-many, file and user columns are copied as ids, which only mean something inside the same project; the import warns once per column.
  • Empty boolean cells are sent as null rather than false.
  • Uncertain failures: only 429/503 responses and requests that never reached the server (DNS, connection or TLS failures) are retried. If a request times out or the connection drops after sending, the row is reported as UNCERTAIN: may have been created, in the errors file too; check the project before re-importing it. Rate-limit waits pause every worker together and are retried for over a minute before giving up.
  • Ctrl+C stops reading the file, finishes the rows already queued and prints a partial summary (exit code 1). An interrupted export removes its temporary file.
  • data import and data export read and write local files, so they are not available through the hosted (HTTP) MCP server.

Not supported yet: updating or upserting existing records by key, looking up relations by a natural key (use the related record's id), and file uploads.


search

Full-text search across your entities, plus index lifecycle management.

anythink search query <text>                          Run a search
anythink search similar <entity> <id>                 Find similar documents
anythink search rehydrate [<entity>]                  Rebuild the search index (admin)
anythink search purge [<entity>]                      Wipe the search index (admin)
anythink search audit <entity>                        Compare configured public-searchable fields
                                                       with what public search actually returns

Options — search query

FlagDescription
--entities <list>Comma-separated entity names. Default: all indexed entities.
--filter <expr>Filter expression, e.g. "status=published AND category=news". Supports _geoRadius.
--sort <list>Comma-separated sort fields, e.g. "created_at:desc,id:asc".
--facet <fields>Comma-separated fields to compute facet counts on.
--highlightHighlight matched terms in results.
--page NPage number (default: 1).
--limit NResults per page (1-100, default: 20).
--publicUse the unauthenticated /search/public endpoint (only public-marked fields).
--jsonPrint the raw response JSON.

Index lifecycle

rehydrate and purge are admin operations on the search index:

  • search rehydrate — rebuilds the index from the database (no data loss; just resyncs)
  • search purge — deletes the index (run rehydrate after to repopulate)

Both confirm by default; pass -y / --yes to skip the prompt for automation.

search audit — public-search data leak check

Compares what the entity's schema says should be public-searchable (fields with publicly_searchable=true and the entity's own is_public=true) against what /search/public actually returns. Any field appearing in public results that isn't on the allowlist is reported as a leak.

Exits with code 1 if a leak is detected — useful for CI/CD.

Examples

# Browse everything
anythink search query "*"

# Filtered search with sorting
anythink search query "anythink" --filter "status=published" --sort "created_at:desc"

# Compare what public visitors see vs what's in the database
anythink search audit posts
anythink search audit users --query "alice" --sample 10

# Reindex after a schema change
anythink search rehydrate posts
anythink search rehydrate --yes        # everything (admin)

# Geo search (radius in metres)
anythink search query "*" --filter "_geoRadius(51.5074,-0.1278,5000)"

workflows

Manage automation workflows. A workflow can have several triggers: a cron schedule, an entity event, an API route, or a manual run.

anythink workflows list                List all workflows (--json for a compact summary)
anythink workflows get <id>            Get workflow details and steps (--json for the full definition)
anythink workflows create <name>       Create a new workflow
anythink workflows update <id>         Rename a workflow or change its description
anythink workflows enable <id>         Enable a workflow
anythink workflows disable <id>        Disable a workflow
anythink workflows trigger <id>        Manually trigger a workflow
anythink workflows delete <id>         Delete a workflow

Trigger types — workflows create --trigger <type> (not case-sensitive; default Manual)

TypeFiresRequired flagOther flags
ManualWhen run by hand, on an entity--entity <name>
EventWhen an event happens, such as a record being created--entity <name> for the Entity... events--event <event>, --filter <json>
TimedOn a cron schedule--cron <expr>
ApiWhen its API route is called--api-route <route>

--event (not case-sensitive) is EntityCreated (default), EntityUpdated, EntityDeleted, UserRegistered, UserInvited, SubscriptionCreated, SubscriptionActivated, SubscriptionExpired, PaymentCreated, PaymentSucceeded, PaymentFailed, PaymentMethodCaptured, PaymentMethodCaptureFailed, PaymentMethodRemoved or PushActionTaken; only the three Entity... events need --entity. A trigger missing its required flag is rejected before anything is sent, and a flag that doesn't apply to the chosen type is ignored with a warning.

Other options — workflows create

FlagDescription
--description <text>Workflow description
--enabledEnable the workflow straight away
--filter-file <path>Read the Event filter JSON from a file

Examples

anythink workflows create daily-sync --trigger Timed --cron "0 6 * * *"
anythink workflows create on-post --trigger Event --entity blog_posts --event EntityUpdated
anythink workflows create import-hook --trigger Api --api-route hooks/import
anythink workflows create review-posts --entity blog_posts
anythink workflows trigger 76
anythink workflows disable 83

users

Manage users in the active project.

anythink users list                    List all users
anythink users me                      Show the currently authenticated user
anythink users get <id>                Get a user by ID
anythink users invite <email> <first> <last>   Create a user and send an invitation email
anythink users delete <id>             Delete a user

Options — users invite

FlagDescription
--role-id <id>Assign a role to the new user

Examples

anythink users list
anythink users invite [email protected] Alice Smith --role-id 3
anythink users delete 42 --yes

files

Manage uploaded files in the active project.

anythink files list                    List uploaded files
anythink files get <id>                Get file metadata by ID
anythink files upload <path>           Upload a file
anythink files delete <id>             Delete a file

Options — files list

FlagDescription
--page <n>Page number
--limit <n>Files per page (default: 25)

Options — files upload

FlagDescription
--publicMake the file publicly accessible

Examples

anythink files list
anythink files upload logo.png --public
anythink files upload export.csv
anythink files delete 12 --yes

email

View and edit the project's transactional email templates (confirmation, invite, recovery and so on) and the HTML shell that wraps every email's body. Email commands need the project's email permissions; the API enforces them for whoever is signed in.

anythink email templates list                      List the project's email templates
anythink email templates show <type>               Show a template's subject and content
anythink email templates update <type>             Change a template's subject and/or content
anythink email preview                             Render an unsaved draft and print the HTML
anythink email shell show                          Show the shell HTML (custom or platform default)
anythink email shell update                        Save new shell HTML, or reset it

Options — email templates show

FlagDescription
--renderedPrint the rendered HTML (with sample data) instead of the source

Options — email templates update

FlagDescription
--subject <text>New subject line
--content <path>File with the new content (use - to read stdin)
--content-text <html>The new content, passed inline (use this or --content, not both)

Pass at least one of the subject or the content. Whatever you leave out keeps its current value. Empty content is refused.

Options — email preview (renders on the server and saves nothing)

FlagDescription
--subject <text>Subject to render (default: Preview)
--content <path>File with the content (use - for stdin)
--content-text <html>The content, passed inline
--wrapper <path>Optional shell HTML to render against (use - for stdin)
--wrapper-text <html>Optional shell HTML, passed inline

Options — email shell update (pass exactly one)

FlagDescription
--html <path>File with the new shell HTML (use - for stdin)
--html-text <html>The new shell HTML, passed inline
--resetGo back to the platform default shell

HTML is limited to 1,000,000 characters. The shell and template commands print raw HTML, so you can redirect it to a file. Through the MCP server the file options are not offered, so agents pass the HTML inline with content_text, wrapper_text and html_text.

Examples

anythink email templates list
anythink email templates show confirmation --rendered > confirmation.html
anythink email templates update confirmation --subject "Welcome aboard"
anythink email templates update confirmation --content ./confirmation.html
cat confirmation.html | anythink email templates update confirmation --content -
anythink email preview --subject "Hi" --content ./draft.html --wrapper ./shell.html
anythink email shell show > shell.html
anythink email shell update --html ./shell.html
anythink email shell update --reset

roles

Manage roles in the active project. Roles control what authenticated users can access.

anythink roles list                    List all roles
anythink roles create <name>           Create a new role
anythink roles delete <id>             Delete a role

Options — roles create

FlagDescription
--description <text>Human-readable description of the role

Examples

anythink roles list
anythink roles create editor --description "Can edit content"
anythink roles delete 5 --yes

api-keys

Issue and manage API keys for non-interactive access (CI pipelines, scripts, integrations). Each key is scoped to a permission set, has an expiry, and is tied to the user that created it.

The raw key is shown once on creation and never retrievable — save it immediately or use --save-as to write it directly into a CLI profile.

anythink api-keys list                              List your API keys
anythink api-keys create <name> --permissions ...   Create a new key
anythink api-keys revoke <id>                       Revoke a key

Options — api-keys create

FlagDescription
--permissions <list>Required. Comma-separated permission names, e.g. data:read,data:create
--expires-in <days>Days until expiry (default: 90, max: 365)
--no-expiry-capAllow --expires-in greater than 365 days
--save-as <profile>Save the new key directly to a CLI profile instead of printing it
--jsonPrint the response as JSON to stdout (the key is in this output — handle carefully)
-y, --yesSkip the confirmation prompt

Output behaviour

By default, the success message goes to stdout and the raw key goes to stderr on its own line. This makes it easy to capture only the key:

anythink api-keys create ci-deploy --permissions data:read --yes 2> key.txt

If the server drops any of the requested permissions because the current user does not hold them, the CLI surfaces a loud warning so you do not end up with a quietly under-scoped key.

Examples

# Create a 90-day key for CI
anythink api-keys create github-actions --permissions "data:read,data:create" --yes 2> key.txt

# Create a key and save it directly into a profile (key never echoes)
anythink api-keys create scraper --permissions data:read --save-as scraper-bot --yes
anythink --profile scraper-bot data list posts

# Revoke a key
anythink api-keys revoke 42 --yes

menus

Manage dashboard sidebar menus in the active project. Menus control what entities appear in the Anythink dashboard and how they are grouped.

anythink menus list                                        List all menus with tree structure
anythink menus get <menu_id> [--json]                      Show one menu (and its role) with its items and child items
anythink menus create <name> <role_id>                     Create a menu shown to a role
anythink menus update <menu_id> [--name <text>] [--role <id>]
                                                           Rename a menu or change its role
anythink menus delete <menu_id> [--yes]                    Delete a menu and all of its items
anythink menus add-item <menu_id> <entity>                 Add an entity to a dashboard menu
anythink menus update-item <menu_id> <item_id> [options]   Change an item's name, icon, link or parent
anythink menus remove-item <menu_id> <item_id> [--yes]     Remove an item, along with its child items
anythink menus reorder-items <menu_id> <item_ids>          Set the order of items that share a parent
anythink menus reorder <menu_ids>                          Set the order of menus

Options — menus add-item

FlagDescription
--icon <name>Lucide icon name (e.g. MessageCircle, Target)
--name <text>Display name (defaults to entity name, title-cased)
--parent <id>Parent menu item ID for nesting under a group

Options — menus update-item (only the fields you pass change)

FlagDescription
--name <text>New display name
--icon <name>New Lucide icon name
--entity <name>Point the item at an entity's page (instead of --href)
--href <path>Point the item at any path (instead of --entity)
--parent <id>Parent item ID to nest under; 0 moves it to the top level

reorder-items and reorder take comma-separated IDs in the order you want them (301,299,300). The items you name take the first places within their group; items you leave out follow in their current order, and reorder-items needs all the items to share one parent. Locked items (the built-in ones) can't be changed, removed or moved; they keep their place, and the items between them reuse their own position numbers (they are only renumbered when two of them tie).

add-item and update-item --entity look the entity up first (system entities count), and stop only if it doesn't exist; if the lookup itself fails (for example, no permission), the item is saved and a warning says the entity couldn't be checked. Moving an item to a new parent with update-item --parent puts it last among its new siblings.

Removing an item also removes its direct child items. The command says so, and refuses when those children are locked or have items of their own.

A role is shown only its first menu, so create (and update --role) warns when the role already has one. delete removes the menu's locked built-in items with it, and says when the role is left with no menu.

Examples

# List all menus and their items
anythink menus list

# Show menu 250 with the item IDs you need for the commands below
anythink menus get 250

# Add "Check-ins" under the Profiles group (parent 168) in admin menu (250)
anythink menus add-item 250 check_ins --icon MessageCircle --parent 168

# Add a top-level menu item
anythink menus add-item 250 badges --icon Award

# Rename an item and give it another icon
anythink menus update-item 250 299 --name "Achievements" --icon Trophy

# Remove an item
anythink menus remove-item 250 299 --yes

# Put items 301, 299 and 300 first, in that order
anythink menus reorder-items 250 301,299,300

charts

Build and manage the charts shown on dashboards in the active project. Every command takes --json, which prints a compact result with the ids the next step needs. In the MCP server each command is a tool of the same name (charts_create, charts_preview and so on).

anythink charts list [--entity <name>]            List charts, newest first
anythink charts get <id>                          Show a chart's configuration
anythink charts create <name> [options]           Create a chart
anythink charts update <id> [options]             Change a chart; options you leave out keep their value
anythink charts delete <id> [--yes]               Delete a chart
anythink charts preview [options]                 Show the data a configuration would draw, without saving it
anythink charts platform-metrics                  List the usage metrics a platform chart can plot

Options — charts create, charts update and charts preview

FlagDescription
--entity <name>Entity whose records the chart plots
--type <type>column (bar chart), line, pie, area, stat, gauge or funnel
--group-by <field>Field for the x axis, or the slices of a pie
--interval <size>Bucket a date --group-by: hour, day, week, month, quarter or year
--measure <field>Numeric field to aggregate (needed unless --agg is count)
--agg <how>count (default), sum, avg, min or max
--stack-by <field>Field that splits each bar or point into a second breakdown
--filter <f:op:value>Filter such as status:eq:published. Operators: eq ne gt gte lt lte contains in exists not_exists. Repeat for several fields; a chart keeps one filter per field
--timeframe <preset>all, 24h, 7d, 30d, 90d, 365d or custom (with --from and --to)
--limit <n>, --sort <asc|desc>, --cumulative <bool>Row limit, sort order and running total
--target <n>, --target-mode <goal|warning>A goal or warning level on a stat or gauge
--compare <bool>, --compare-days <n>, --compare-overlay <bool>Compare with the previous period
--source <entity|platform|quota>Where the data comes from. Platform charts use --platform-metric (see charts platform-metrics), quota charts use --quota-metric
--config <json>Anything else, as a JSON object, e.g. {"funnelStages":[{"label":"Signed up"}]} for a funnel. Typed options win over it
--rows <n>charts preview only: most rows to show (default 50)

A missing or unknown value is refused before anything is sent, with a message naming it. Check a chart with charts preview before charts create: it takes the same options and shows what the chart would draw.

Examples

# What would a pie of orders by status show?
anythink charts preview --entity orders --type pie --group-by status

# Save it, then a revenue chart with a filter
anythink charts create "Orders by status" --entity orders --type pie --group-by status
anythink charts create "UK revenue per month" --entity orders --type column --group-by created_at \
  --interval month --measure total --agg sum --filter region:eq:uk --timeframe 365d

# A usage chart from the platform metrics
anythink charts create "Workflow runs" --source platform --platform-metric workflow_runs --type line

# Change one thing
anythink charts update 12 --timeframe 30d

dashboards

Build and manage dashboards. A dashboard is a set of widgets (charts, lists, notes and so on) laid out on a 12-column grid. Every command takes --json.

anythink dashboards list                                 List the dashboards you can see
anythink dashboards get <id>                             Show a dashboard with its widgets and their positions
anythink dashboards mine                                 Show your landing dashboard, or the project default
anythink dashboards create <name> [options]              Create a dashboard
anythink dashboards update <id> [options]                Rename it, change who can see it, or replace its widgets and layout
anythink dashboards delete <id> [--yes]                  Delete a dashboard and its widgets (the charts are kept)
anythink dashboards add-chart <dashboard-id> <chart-id>  Add a chart as a new widget
anythink dashboards remove-widget <dashboard-id> <widget-id>  Remove a widget
anythink dashboards data <id> [--widget <id>]            Show the data behind the widgets
anythink dashboards widget-preview --type <type>         Show the data a widget would draw, without saving it
anythink dashboards set-home <id>                        Make it your landing dashboard
anythink dashboards promote-to-default <id> [--yes]      Copy it over the project default (administrators only)

add-chart and remove-widget read the dashboard, change only that widget, and write the rest back as it was.

Options

Command / flagDescription
create --chart <id>Put a chart on the new dashboard. Repeat for several
create --description, --shared, --allow-shared-edit, --home, --defaultDescription, who can see or edit it, and whether it is your landing or the project default dashboard
create/update --config <json>Other settings as a JSON object: widgets (each with type, title and settings) and layout. On update, widgets replaces the whole list, so include every widget to keep, with its id
update --name, --description, --shared <bool>, --allow-shared-edit <bool>The fields to change; the rest are left alone
add-chart --title <text>Widget title (defaults to the chart's name)
add-chart --column, --row, --width, --heightPosition and size on the grid (default width 4, height 3, placed below the existing widgets). Leave them all out and the dashboard places the widget itself
data --widget <id>, --rows <n>Only these widgets; most rows to show per widget (default 20)
widget-preview --type, --chart, --config, --rowsWidget type (chart, list, markdown, ...), the chart to show, or the widget's own settings as JSON

Examples

# A dashboard with two charts already on it
anythink dashboards create Sales --chart 12 --chart 14

# Add a third, half the width of the grid
anythink dashboards add-chart 3 15 --width 6

# See what is on it, then take a widget off
anythink dashboards get 3
anythink dashboards remove-widget 3 41

# The numbers behind it
anythink dashboards data 3 --json

settings

View and change project settings in the active project, including the allowed application URLs that browsers may call the API from (CORS).

anythink settings get [--json]                   Show all project settings
anythink settings set <key> <value> [--yes]     Set a single project setting
anythink settings cors list                      List allowed application URLs
anythink settings cors add <url> [--yes]         Add an allowed origin
anythink settings cors remove <url>              Remove an allowed origin

Keys — settings set

KeyValue
name, descriptionText
require_email_confirmationtrue / false
allow_registrationstrue / false
default_role_idRole ID for newly registered users
enable_group_rlstrue / false
payment_success_url, payment_cancel_urlURL
app_engagement_trial_enabledtrue / false
app_engagement_trial_daysNumber of days
ai_modeplatform or byok
ai_byok_provider, ai_default_modelText
google_maps_keyText

Origins must be http/https with a host and optional port, with no path, query or fragment; a trailing / is stripped. A wildcard such as https://*.example.com is only safe on a domain you control, so wildcards under shared hosting domains (vercel.app, github.io, …) or a bare TLD are refused unless you pass --yes.

Some changes widen who can sign up: default_role_id pointing at an administrator role is refused unless you pass --yes, and allow_registrations true and require_email_confirmation false ask for confirmation (pass --yes when running non-interactively).

cors add and cors remove clear the project's CORS cache, so the change applies straight away. Matching is case-insensitive and adding a URL that is already present does nothing. Anythink's own domains and localhost are always allowed and don't need adding.

Examples

# Allow a deployed front end to call the API
anythink settings cors add https://my-app.vercel.app

# Allow every subdomain of a domain you own
anythink settings cors add "https://*.example.com"

# Remove an origin
anythink settings cors remove https://my-app.vercel.app

# Let users sign up on their own
anythink settings set allow_registrations true

integrations

Manage integrations — both the catalog of available providers (Claude, OpenAI, Slack, Google, etc.) and the active connections that hold credentials for them.

anythink integrations list                                  List available providers
anythink integrations get <provider>                        Show details and operations for one provider
anythink integrations connections list [--provider <p>]     List your active connections

anythink integrations connect <provider>                    Create an API-key connection (Claude, OpenAI, etc.)
anythink integrations oauth status <provider>               Show OAuth client setup status
anythink integrations oauth configure <provider>            Set the OAuth client ID + secret
anythink integrations oauth connect <provider>              Connect via the browser OAuth flow

anythink integrations test <connection-id>                  Test a connection
anythink integrations enable <connection-id>                Enable a connection
anythink integrations disable <connection-id>               Disable a connection
anythink integrations disconnect <connection-id>            Delete a connection

anythink integrations execute <provider> <operation>        Run an operation on a connected provider

API-key providers — integrations connect

FlagDescription
--api-key <key>API key for the provider. If omitted, you'll be prompted (input is hidden).
--name <name>Friendly name for this connection (default: <provider> connection)
--user-connectionMake this a user-scoped connection (only the current user sees it). Default: tenant-wide.

OAuth providers — integrations oauth connect

The CLI starts a local HTTP listener on http://localhost:8745/callback, opens your browser to the provider's authorisation URL, and exchanges the returned code for a connection — no copy/paste of auth codes required.

FlagDescription
--name <name>Friendly name for this connection
--user-connectionMake this a user-scoped connection
--port <n>Local callback port (default: 8745)
--no-openDon't try to open the browser — just print the URL
--timeout <secs>How long to wait for the callback (default: 300)

OAuth credentials need to be set up once per provider before you can connect:

anythink integrations oauth configure slack          # prompts for client_id + secret (hidden)
anythink integrations oauth connect slack --name main

Running operations — integrations execute

FlagDescription
--input <k=v>Input parameter as key=value. Repeatable.
--inputs <json>All inputs as a JSON object.
--jsonPrint the full JSON response (default: just the content field if present).

Examples

# Browse what's available
anythink integrations list
anythink integrations get claude

# API-key flow (Claude, OpenAI)
anythink integrations connect claude --name "main"
anythink integrations execute claude generate-text --input "prompt=Tell me a haiku"

# OAuth flow (Slack, Google, GitHub)
anythink integrations oauth configure slack
anythink integrations oauth connect slack --name main

# Manage connections
anythink integrations connections list
anythink integrations test <connection-id>
anythink integrations disable <connection-id>
anythink integrations disconnect <connection-id> --yes

pay

Manage AnythinkPay — Stripe Connect, Apple in-app purchases, payments, subscription plans, and live subscriptions.

anythink pay status                    Show Stripe Connect account status
anythink pay connect                   Set up a Stripe Connect account and start onboarding
anythink pay setup                     Guided setup: Stripe Connect, Apple IAP, and a first plan
anythink pay payments                  List recent payments
anythink pay methods                   List saved payment methods
anythink pay entitlement               Show the current user's access / trial entitlement
anythink pay payment-options           Show available payment providers for a platform/storefront

anythink pay trial status|enable|disable          Manage the app engagement trial

anythink pay apple credentials set                Set Apple IAP credentials (.p8 from a file)
anythink pay apple credentials show               Show Apple IAP credentials (identifiers masked)
anythink pay apple credentials notification-url   Print the URL to register in App Store Connect
anythink pay apple verify                         Verify an Apple transaction (testing)

anythink pay plans list|get|create|update|delete  Manage subscription plans

anythink pay subscriptions list|get|events        Inspect subscriptions and history
anythink pay subscriptions cancel|resume          Standard lifecycle actions
anythink pay subscriptions delete|force-expire|relink|resync   Admin recovery (project admin)

anythink pay offers list|get|create|update        Manage promo and referral offers
anythink pay offers pause|activate                Change an offer's status
anythink pay offers delete                        Permanently delete an offer, its codes and redemption records
anythink pay offers codes|add-code|redemptions    Inspect and extend an offer
anythink pay offers user-code                     Look up a user's personal referral code

Commands that cancel, delete, expire, relink or pause (pay plans delete, pay subscriptions cancel|delete|force-expire|relink, pay offers pause|delete) ask for confirmation. Pass -y/--yes to skip the prompt; in a non-interactive shell they refuse to run without it.

pay plans update only changes the fields you pass: omitted flags keep the plan's current currency, interval, type and active state. Use --active or --inactive to change availability.

Options — pay payments

FlagDescription
--page <n>Page number
--limit <n>Payments per page (default: 25)

pay connect is interactive — it prompts for business type, country, and contact email, creates a Stripe Connect account, then opens the Stripe onboarding URL in your browser. pay setup chains Stripe Connect, Apple IAP credentials, and a first plan; each step is optional.

Subscription plans can carry an --apple-product-id (and optional --apple-subscription-group-id) so one plan covers both Stripe and Apple. pay apple credentials set reads the App Store Connect .p8 private key from a file and stores it encrypted — it is never printed or logged.

Required permissions

Command surfacePermission
Plan / subscription reads, entitlement, payment-optionsanythink_subscription_plans:read
Plan writesanythink_subscription_plans:create / :update / :delete
Payment reads/writesanythink_payments:read / :create
Apple credentials, admin recovery (delete/force-expire/relink/resync)project administrator

Examples

anythink pay setup
anythink pay plans create --plan-name monthly --name Monthly --amount 9.99 --currency gbp --interval month --apple-product-id example_monthly
anythink pay apple credentials set --issuer-id <uuid> --key-id <id> --bundle-id com.example.app --private-key-file ./AuthKey.p8
anythink pay apple verify --signed-transaction <JWS>
anythink pay subscriptions events <subId>
anythink pay entitlement

oauth

Configure OAuth social sign-in providers for the active project.

anythink oauth google status           Show Google OAuth configuration status
anythink oauth google configure        Set Google OAuth client ID and secret

Google OAuth lets your project's users sign in with their Google account. You'll need a Google Cloud project with the OAuth 2.0 credentials created — see the Google Cloud Console.

Set the authorised redirect URI in your Google Cloud credentials to:

https://api.my.anythink.cloud/org/<your-org-id>/auth/v1/google/callback

Examples

anythink oauth google status
anythink oauth google configure

api

List all API endpoints available for the active project — both platform routes and the dynamically generated REST routes for your entities.

anythink api                           List all endpoints
anythink api --json                    Output as JSON (useful for AI tooling)

docs

Print the full CLI reference.

anythink docs                          Print reference as markdown
anythink docs --json                   Print reference as JSON (for AI/tooling consumption)

migrate

Copy the entity schema (entities + fields) from one project profile to another. Useful for promoting a schema from staging to production.

anythink migrate --from <profile> --to <profile>

Options

FlagDescription
--from <profile>Source profile name (required)
--to <profile>Destination profile name (required)
--dry-runShow what would be migrated without making changes

Examples

anythink migrate --from my-app-staging --to my-app-prod
anythink migrate --from my-app-staging --to my-app-prod --dry-run

plans

List available Anythink plans.

anythink plans                         List plans
anythink plans --json                  Output as JSON

MCP server

The Anythink MCP server exposes the platform to AI assistants (Claude, Cursor, etc.) via the Model Context Protocol.

Install

No install needed — the recommended way is to run it on demand with npx:

npx -y @anythink-cloud/mcp

Prefer a native binary on your PATH? Any of:

# Homebrew (bundled with the CLI — see Installation above)
brew install anythink-cloud/tap/anythink

# .NET global tool (requires the .NET 8 SDK)
dotnet tool install -g anythink-mcp

# Or download the anythink-mcp-<platform> binary from the Releases page

Configure

Add to Cursor

For Claude Code, register it in one command:

claude mcp add anythink -- npx -y @anythink-cloud/mcp

Or add it to your MCP client config manually (e.g. .mcp.json):

{
  "mcpServers": {
    "anythink": {
      "command": "npx",
      "args": ["-y", "@anythink-cloud/mcp"]
    }
  }
}

To pin a profile, add it to args: ["-y", "@anythink-cloud/mcp", "--profile", "my-project"]

Works in any MCP client. Most use the same mcpServers JSON shown above — just add it to the client's config file:

ClientConfig file
Claude Codeclaude mcp add anythink -- npx -y @anythink-cloud/mcp (or .mcp.json)
Claude Desktopclaude_desktop_config.json (Settings → Developer → Edit Config)
Cursor~/.cursor/mcp.json (or the Add to Cursor button above)
VS Code.vscode/mcp.json (or the Install in VS Code button above)
Clinecline_mcp_settings.json (MCP Servers → Configure)
Windsurf~/.codeium/windsurf/mcp_config.json

A couple of clients use a different config shape:

mcpServers:
  - name: anythink
    command: npx
    args:
      - -y
      - "@anythink-cloud/mcp"
{
  "context_servers": {
    "anythink": {
      "source": "custom",
      "command": "npx",
      "args": ["-y", "@anythink-cloud/mcp"]
    }
  }
}

(Using a native binary instead of npx? Use "command": "anythink-mcp" with no args.)

Once connected, run the login tool, then accounts_use / projects_use to pick your working context.

Available tools

The MCP server provides dedicated tools for authentication, account/project management, and configuration — plus a generic cli tool that can run any CLI command:

ToolDescription
signupCreate a new Anythink account
loginLog in with email and password
login_directStore credentials directly (org ID + API key or JWT)
logoutRemove a saved profile
config_showList all profiles
config_useSwitch active profile
config_removeRemove a profile
accounts_listList billing accounts
accounts_createCreate a billing account
accounts_useSet the active billing account
projects_listList projects
projects_createCreate a project
projects_useConnect to a project
projects_deleteDelete a project
cliRun any CLI command (entities, data, workflows, roles, etc.)

The hosted MCP server (anythink-mcp --hosted) has no sign-in or profile tools. Its accounts_list, accounts_create, plans, projects_create and projects_delete tools run as the signed-in user and appear only when the user grants account access; see the MCP server docs.


Contributing

Prerequisites

  • .NET 8 SDK
  • An Anythink account (free tier works)

Setup

git clone https://github.com/anythink-cloud/anythink-cli
cd anythink-cli
dotnet build

Running locally

dotnet run --project src/AnythinkCli.csproj -- --help
dotnet run --project src/AnythinkCli.csproj -- projects list
dotnet run --project src/AnythinkCli.csproj -- entities list

Releases

Releases are automated via GitHub Actions. Push a version tag to trigger a build:

git tag v1.2.0
git push origin v1.2.0

The workflow builds self-contained binaries for macOS (arm64, x64) and Linux (x64, arm64), computes SHA256 checksums, and publishes them as a GitHub release.

Project structure

anythink-cli/
├── src/                        # CLI source
│   ├── Commands/               # Command implementations (signup, login, etc)
│   ├── Config/                 # CliConfig.cs, Profile, ConfigService
│   ├── Models/                 # ApiModels.cs, BillingModels.cs
│   ├── Client/                 # HttpApiClient.cs, AnythinkClient.cs, BillingClient.cs
│   ├── Output/                 # Renderer.cs (Spectre.Console helpers)
│   └── Program.cs              # Application entry point & .env loader
├── mcp/                        # MCP server source
│   ├── Tools/                  # MCP tool implementations
│   ├── McpClientFactory.cs     # Auth + client resolution
│   └── Program.cs              # MCP server entry point
├── tests/                      # CLI unit tests
├── mcp-tests/                  # MCP unit tests
├── AnythinkCli.sln             # Solution file
└── .gitignore

License

MIT — see LICENSE. This covers the Anythink CLI and MCP server source in this repository; it does not grant rights to the Anythink platform, APIs, or services, which are governed by separate terms at anythink.cloud.


Built with Spectre.Console · Powered by Anythink

How do I install Anythink All In One Backend: Data, Auth, Files, Workflows, Payments, APIs?
Copy the http config for Cursor, Claude Desktop, Claude Code, or VS Code on this page. It uses the publisher's install, not a PlugMCP proxy.
Does Anythink All In One Backend: Data, Auth, Files, Workflows, Payments, APIs need an API key?
No required environment variable is listed on this record.
What transport does Anythink All In One Backend: Data, Auth, Files, Workflows, Payments, APIs use?
Anythink All In One Backend: Data, Auth, Files, Workflows, Payments, APIs is reached over HTTP.
When was Anythink All In One Backend: Data, Auth, Files, Workflows, Payments, APIs last checked?
Last checked 2026-10-20. Sick of stitched-together services? Anythink is the all-in-one backend, configured with AI.

No tool list yet. Remote servers get one after the first health check.

plugmcp

Plug any tool into any agent. MCP servers for people who do not write servers. Gateway for volume, n8n for apps.

  • github.com/TODO
  • x.com/TODO
  • linkedin.com/company/TODO

PlugMCP, 2026

Product
  • Browse
  • Install
  • Host your own
  • Pricing
  • Voice mode
  • Browser
Directory
  • All MCP servers
  • MCP Apps
  • Tools
  • Agent skills
  • Categories
  • New
  • Voice
  • Submit a server
Developers
  • Docs
  • Blog
  • Club
  • Work with us
  • What is MCP
  • What is WebMCP
  • Status
Company
  • About
  • Contact
  • Terms
  • Privacy
  • DPA