Anythink all-in-one backend: data, auth, files, workflows, payments, APIs

cloud.anythink由 anythink.cloud 发布官方发布者v0.2.37更新于 Oct 24, 2026

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

已验证Streamable HTTP可网页运行数据库效率与工作流开发者工具

概览

AI 生成的概览

Anythink 一体化后端 MCP 服务器:让助手管理项目、数据库实体、记录、搜索、工作流、用户、文件、邮件模板和 API 密钥。

可以做什么
  • 管理项目、计费账户和已保存的 CLI 配置
  • 创建和修改实体、字段、角色以及仪表盘菜单
  • 读取、新建、更新、删除实体记录,并导入导出数据
  • 执行全文与相似度搜索,以及索引重建、清空和公开字段泄露审计
  • 创建、启用、停用、触发和删除自动化工作流
  • 列出、邀请和删除用户;上传、列出和删除文件
适用场景
适合在 Anythink 平台上构建或运维应用的场景:希望助手在对话中调整数据结构、搬运数据、配置工作流、管理用户与文件或修改邮件模板。它面向已使用 Anythink 平台的团队,而非通用任务。
运行要求
可使用 mcp.anythink.cloud 远程端点并通过 OAuth 登录,或通过 Homebrew、发布包下载、.NET 8 SDK 全局工具安装本地 anythink-mcp。需要 Anythink 账户、计费账户和至少一个项目;凭据与项目配置保存在本地配置文件中。
安装前请注意
许多工具会写入或销毁数据:删除项目、实体及其数据、记录、用户、文件、角色和工作流,以及清空搜索索引。创建计费账户涉及订阅和付款信息。API 密钥只显示一次且带权限范围,需谨慎保管。修改邮件模板和外壳会影响真实用户收到的邮件。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Anythink all-in-one backend: data, auth, files, workflows, payments, APIs,将其添加到工作区。
  2. 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/cloud.anythink%2Fanythink/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。

{
  "mcpServers": {
    "anythink-all-in-one-backend-data-auth-fi": {
      "type": "http",
      "url": "https://mcp.anythink.cloud/mcp"
    }
  }
}

README

[Anythink]

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.

[NuGet] [Release] [Homebrew] [MCP Registry] [License: MIT]

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

Contents


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

bash
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:

bash
brew tap anythink-cloud/tapbrew install anythink

Update to the latest release:

bash
brew upgrade anythink

Uninstall:

bash
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
bash
# Example — macOS Apple Siliconcurl -Lo anythink https://github.com/anythink-cloud/anythink-cli/releases/latest/download/anythink-osx-arm64chmod +x anythinksudo 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:

bash
sha256sum -c checksums.txt --ignore-missing

.NET global tool

If you have the .NET 8 SDK installed:

bash
dotnet tool install --global anythink-cli

Build from source

bash
git clone https://github.com/anythink-cloud/anythink-clicd anythink-clidotnet builddotnet run --project src/AnythinkCli.csproj -- --help

Getting started

bash
# 1. Create an account (or log in if you already have one)anythink signup
# 2. Create a billing accountanythink accounts create --name "My Company"
# 3. Create a projectanythink projects create "My App" --region lon1
# 4. Connect to the projectanythink projects use <project-id>
# 5. Start buildinganythink entities listanythink 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 accountanythink login                         Log in to the platformanythink 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 accountsanythink accounts create               Create a new billing accountanythink accounts use <id>             Set the active billing account

Examples

bash
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 accountanythink projects create <name>        Create a new projectanythink 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

bash
anythink projects create "My App" --region lon1anythink projects use a1b2c3d4anythink projects delete a1b2c3d4 --yes

config

View and manage saved CLI profiles.

anythink config show                   List all profiles and platform settingsanythink config use <profile>          Set the active project profileanythink 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 entitiesanythink entities get <name>           Get entity details and fieldsanythink entities create <name>        Create a new entityanythink entities update <name>        Update entity settingsanythink 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

bash
anythink entities create orders --rlsanythink entities get customersanythink 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 entityanythink fields add <entity> <name>    Add a fieldanythink 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

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

data

CRUD operations on entity records.

anythink data list <entity>            List recordsanythink data get <entity> <id>        Get a single record by IDanythink data create <entity>          Create a new recordanythink data update <entity> <id>     Update a recordanythink data delete <entity> <id>     Delete a recordanythink data export <entity> <file>   Export records to CSV, JSON or JSONLanythink 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

bash
anythink data list blog_posts --limit 10anythink data get blog_posts 42anythink 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.

bash
anythink data export customers customers.csvanythink data export orders orders.jsonl --filter 'status=paid' --fields id,totalanythink data import customers customers.csv --dry-runanythink 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 searchanythink search similar <entity> <id>                 Find similar documentsanythink 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

bash
# Browse everythinganythink search query "*"
# Filtered search with sortinganythink search query "anythink" --filter "status=published" --sort "created_at:desc"
# Compare what public visitors see vs what's in the databaseanythink search audit postsanythink search audit users --query "alice" --sample 10
# Reindex after a schema changeanythink search rehydrate postsanythink 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 workflowanythink workflows update <id>         Rename a workflow or change its descriptionanythink workflows enable <id>         Enable a workflowanythink workflows disable <id>        Disable a workflowanythink workflows trigger <id>        Manually trigger a workflowanythink 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

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

users

Manage users in the active project.

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

Options — users invite

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

Examples

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

files

Manage uploaded files in the active project.

anythink files list                    List uploaded filesanythink files get <id>                Get file metadata by IDanythink files upload <path>           Upload a fileanythink 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

bash
anythink files listanythink files upload logo.png --publicanythink files upload export.csvanythink 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 templatesanythink email templates show <type>               Show a template's subject and contentanythink email templates update <type>             Change a template's subject and/or contentanythink email preview                             Render an unsaved draft and print the HTMLanythink 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

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

roles

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

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

Options — roles create

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

Examples

bash
anythink roles listanythink 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 keysanythink api-keys create <name> --permissions ...   Create a new keyanythink 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:

bash
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

bash
# Create a 90-day key for CIanythink 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 --yesanythink --profile scraper-bot data list posts
# Revoke a keyanythink 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 structureanythink menus get <menu_id> [--json]                      Show one menu (and its role) with its items and child itemsanythink menus create <name> <role_id>                     Create a menu shown to a roleanythink menus update <menu_id> [--name <text>] [--role <id>]                                                           Rename a menu or change its roleanythink menus delete <menu_id> [--yes]                    Delete a menu and all of its itemsanythink menus add-item <menu_id> <entity>                 Add an entity to a dashboard menuanythink menus update-item <menu_id> <item_id> [options]   Change an item's name, icon, link or parentanythink menus remove-item <menu_id> <item_id> [--yes]     Remove an item, along with its child itemsanythink menus reorder-items <menu_id> <item_ids>          Set the order of items that share a parentanythink 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

bash
# List all menus and their itemsanythink menus list
# Show menu 250 with the item IDs you need for the commands belowanythink 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 itemanythink menus add-item 250 badges --icon Award
# Rename an item and give it another iconanythink menus update-item 250 299 --name "Achievements" --icon Trophy
# Remove an itemanythink menus remove-item 250 299 --yes
# Put items 301, 299 and 300 first, in that orderanythink 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 firstanythink charts get <id>                          Show a chart's configurationanythink charts create <name> [options]           Create a chartanythink charts update <id> [options]             Change a chart; options you leave out keep their valueanythink charts delete <id> [--yes]               Delete a chartanythink charts preview [options]                 Show the data a configuration would draw, without saving itanythink 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

bash
# 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 filteranythink charts create "Orders by status" --entity orders --type pie --group-by statusanythink 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 metricsanythink charts create "Workflow runs" --source platform --platform-metric workflow_runs --type line
# Change one thinganythink 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 seeanythink dashboards get <id>                             Show a dashboard with its widgets and their positionsanythink dashboards mine                                 Show your landing dashboard, or the project defaultanythink dashboards create <name> [options]              Create a dashboardanythink dashboards update <id> [options]                Rename it, change who can see it, or replace its widgets and layoutanythink 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 widgetanythink dashboards remove-widget <dashboard-id> <widget-id>  Remove a widgetanythink dashboards data <id> [--widget <id>]            Show the data behind the widgetsanythink dashboards widget-preview --type <type>         Show the data a widget would draw, without saving itanythink dashboards set-home <id>                        Make it your landing dashboardanythink 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

bash
# A dashboard with two charts already on itanythink dashboards create Sales --chart 12 --chart 14
# Add a third, half the width of the gridanythink dashboards add-chart 3 15 --width 6
# See what is on it, then take a widget offanythink dashboards get 3anythink dashboards remove-widget 3 41
# The numbers behind itanythink 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 settingsanythink settings set <key> <value> [--yes]     Set a single project settinganythink settings cors list                      List allowed application URLsanythink settings cors add <url> [--yes]         Add an allowed originanythink 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

bash
# Allow a deployed front end to call the APIanythink settings cors add https://my-app.vercel.app
# Allow every subdomain of a domain you ownanythink settings cors add "https://*.example.com"
# Remove an originanythink settings cors remove https://my-app.vercel.app
# Let users sign up on their ownanythink 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 providersanythink integrations get <provider>                        Show details and operations for one provideranythink 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 statusanythink integrations oauth configure <provider>            Set the OAuth client ID + secretanythink integrations oauth connect <provider>              Connect via the browser OAuth flow
anythink integrations test <connection-id>                  Test a connectionanythink integrations enable <connection-id>                Enable a connectionanythink integrations disable <connection-id>               Disable a connectionanythink 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:

bash
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

bash
# Browse what's availableanythink integrations listanythink 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 slackanythink integrations oauth connect slack --name main
# Manage connectionsanythink integrations connections listanythink 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 statusanythink pay connect                   Set up a Stripe Connect account and start onboardinganythink pay setup                     Guided setup: Stripe Connect, Apple IAP, and a first plananythink pay payments                  List recent paymentsanythink pay methods                   List saved payment methodsanythink pay entitlement               Show the current user's access / trial entitlementanythink 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 Connectanythink 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 historyanythink pay subscriptions cancel|resume          Standard lifecycle actionsanythink pay subscriptions delete|force-expire|relink|resync   Admin recovery (project admin)
anythink pay offers list|get|create|update        Manage promo and referral offersanythink pay offers pause|activate                Change an offer's statusanythink pay offers delete                        Permanently delete an offer, its codes and redemption recordsanythink pay offers codes|add-code|redemptions    Inspect and extend an offeranythink 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

bash
anythink pay setupanythink pay plans create --plan-name monthly --name Monthly --amount 9.99 --currency gbp --interval month --apple-product-id example_monthlyanythink pay apple credentials set --issuer-id <uuid> --key-id <id> --bundle-id com.example.app --private-key-file ./AuthKey.p8anythink 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 statusanythink 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

bash
anythink oauth google statusanythink 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 endpointsanythink api --json                    Output as JSON (useful for AI tooling)

docs

Print the full CLI reference.

anythink docs                          Print reference as markdownanythink 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

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

plans

List available Anythink plans.

anythink plans                         List plansanythink 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:

bash
npx -y @anythink-cloud/mcp

Prefer a native binary on your PATH? Any of:

bash
# 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] [Install in VS Code]

For Claude Code, register it in one command:

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

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

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:

Continue (YAML — mcpServers is a list)
yaml
mcpServers:  - name: anythink    command: npx    args:      - -y      - "@anythink-cloud/mcp"
Zed (uses context_servers, not mcpServers)
json
{  "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

bash
git clone https://github.com/anythink-cloud/anythink-clicd anythink-clidotnet build

Running locally

bash
dotnet run --project src/AnythinkCli.csproj -- --helpdotnet run --project src/AnythinkCli.csproj -- projects listdotnet run --project src/AnythinkCli.csproj -- entities list

Releases

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

bash
git tag v1.2.0git 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

来源:README.md,提交 f106427

工具

0
该服务器需要登录,因此 SourceWeft 无法在没有账号的情况下读取其工具,也未收录。已连接账号所能看到的内容可能因账号及其权限而异。

版本历史

8
  1. v0.2.37最新Oct 12, 2026
  2. v0.2.35Oct 10, 2026
  3. v0.2.34Oct 10, 2026
  4. v0.2.31Oct 10, 2026
  5. v0.2.27Oct 6, 2026
  6. v0.2.24Oct 4, 2026
  7. v0.2.22Oct 3, 2026
  8. v0.2.21Sep 16, 2026

评分

已满足适用检查项的 85%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分