{
  "markdown": "<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"assets/anythink-logo-dark.svg\">\n  <img alt=\"Anythink\" src=\"assets/anythink-logo.svg\" height=\"40\">\n</picture>\n\n# Anythink CLI\n\nThe official command-line interface for [Anythink](https://anythink.cloud) — the headless backend platform for developers and founders. Manage your projects, entities, data, workflows, users, files, and payments without leaving the terminal.\n\n[![NuGet](https://img.shields.io/nuget/v/anythink-mcp?logo=nuget&label=anythink-mcp)](https://www.nuget.org/packages/anythink-mcp)\n[![Release](https://img.shields.io/github/v/release/anythink-cloud/anythink-cli?logo=github&label=release)](https://github.com/anythink-cloud/anythink-cli/releases/latest)\n[![Homebrew](https://img.shields.io/badge/homebrew-anythink--cloud%2Ftap-F9A825?logo=homebrew&logoColor=white)](https://github.com/anythink-cloud/homebrew-tap)\n[![MCP Registry](https://img.shields.io/badge/MCP_registry-cloud.anythink%2Fanythink-0098FF)](https://registry.modelcontextprotocol.io)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE)\n\n```\n   ░███                             ░██    ░██        ░██           ░██\n  ░██░██                            ░██    ░██                      ░██\n ░██  ░██  ░████████  ░██    ░██ ░████████ ░████████  ░██░████████  ░██    ░██\n░█████████ ░██    ░██ ░██    ░██    ░██    ░██    ░██ ░██░██    ░██ ░██   ░██\n░██    ░██ ░██    ░██ ░██    ░██    ░██    ░██    ░██ ░██░██    ░██ ░███████\n░██    ░██ ░██    ░██ ░██   ░███    ░██    ░██    ░██ ░██░██    ░██ ░██   ░██\n░██    ░██ ░██    ░██  ░█████░██     ░████ ░██    ░██ ░██░██    ░██ ░██    ░██\n                             ░██\n                       ░███████\n```\n\n---\n\n## Contents\n\n- [Installation](#installation)\n- [Getting started](#getting-started)\n- [Command reference](#command-reference)\n  - [signup / login / logout](#signup--login--logout)\n  - [accounts](#accounts)\n  - [projects](#projects)\n  - [config](#config)\n  - [entities](#entities)\n  - [fields](#fields)\n  - [data](#data)\n  - [search](#search)\n  - [workflows](#workflows)\n  - [users](#users)\n  - [files](#files)\n  - [roles](#roles)\n  - [api-keys](#api-keys)\n  - [menus](#menus)\n  - [integrations](#integrations)\n  - [pay](#pay)\n  - [oauth](#oauth)\n  - [api](#api)\n  - [docs](#docs)\n  - [migrate](#migrate)\n  - [plans](#plans)\n- [MCP server](#mcp-server)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## Installation\n\nBoth the `anythink` CLI and the `anythink-mcp` server are distributed together. The quickest way to get both is Homebrew.\n\n### Homebrew (macOS / Linux) — recommended\n\n```bash\nbrew install anythink-cloud/tap/anythink\n```\n\nThis installs **both** commands onto your `PATH`:\n\n- `anythink` — the CLI\n- `anythink-mcp` — the MCP server (see [MCP server](#mcp-server))\n\nUpgrade later with `brew upgrade anythink`.\n\n### macOS / Linux — download binary\n\nGrab the latest release for your platform from the [Releases](https://github.com/anythink-cloud/anythink-cli/releases/latest) page:\n\n| Platform              | Binary                 |\n| --------------------- | ---------------------- |\n| macOS (Apple Silicon) | `anythink-osx-arm64`   |\n| macOS (Intel)         | `anythink-osx-x64`     |\n| Linux (x86_64)        | `anythink-linux-x64`   |\n| Linux (ARM64)         | `anythink-linux-arm64` |\n\n```bash\n# Example — macOS Apple Silicon\ncurl -Lo anythink https://github.com/anythink-cloud/anythink-cli/releases/latest/download/anythink-osx-arm64\nchmod +x anythink\nsudo mv anythink /usr/local/bin/\n```\n\nThe 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`).\n\nVerify the download against `checksums.txt` in the release assets:\n\n```bash\nsha256sum -c checksums.txt --ignore-missing\n```\n\n### .NET global tool\n\nIf you have the [.NET 8 SDK](https://dotnet.microsoft.com/download) installed:\n\n```bash\ndotnet tool install --global anythink-cli\n```\n\n### Build from source\n\n```bash\ngit clone https://github.com/anythink-cloud/anythink-cli\ncd anythink-cli\ndotnet build\ndotnet run -- --help\n```\n\n---\n\n## Getting started\n\n```bash\n# 1. Create an account (or log in if you already have one)\nanythink signup\n\n# 2. Create a billing account\nanythink accounts create --name \"My Company\"\n\n# 3. Create a project\nanythink projects create \"My App\" --region lon1\n\n# 4. Connect to the project\nanythink projects use <project-id>\n\n# 5. Start building\nanythink entities list\nanythink workflows list\n```\n\nYour credentials and project profiles are stored in `~/.anythink/config.json`. You can manage multiple projects by running `projects use` to switch between them.\n\n---\n\n## Command reference\n\n### signup / login / logout\n\n```\nanythink signup                        Create a new Anythink account\nanythink login                         Log in to the platform\nanythink logout                        Remove saved credentials for a project profile\n```\n\n`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.\n\n---\n\n### accounts\n\nManage billing accounts. A billing account is the container for one or more projects and holds your subscription and payment details.\n\n```\nanythink accounts list                 List your billing accounts\nanythink accounts create               Create a new billing account\nanythink accounts use <id>             Set the active billing account\n```\n\n**Examples**\n\n```bash\nanythink accounts create --name \"Acme Ltd\" --email billing@acme.com\nanythink accounts use a1b2c3d4\n```\n\n---\n\n### projects\n\nCreate and manage Anythink projects. Each project is an isolated backend instance with its own database, auth, files, and workflows.\n\n```\nanythink projects list                 List projects in the active billing account\nanythink projects create <name>        Create a new project\nanythink projects use <id>             Connect to a project (sets it as the active profile)\nanythink projects delete <id>          Delete a project\n```\n\n**Options — `projects create`**\n\n| Flag            | Description                     |\n| --------------- | ------------------------------- |\n| `--region <id>` | Deployment region (e.g. `lon1`) |\n| `--plan <id>`   | Plan ID (see `anythink plans`)  |\n\n**Examples**\n\n```bash\nanythink projects create \"My App\" --region lon1\nanythink projects use a1b2c3d4\nanythink projects delete a1b2c3d4 --yes\n```\n\n---\n\n### config\n\nView and manage saved CLI profiles.\n\n```\nanythink config show                   List all profiles and platform settings\nanythink config use <profile>          Set the active project profile\nanythink config remove <profile>       Remove a profile\n```\n\nProfiles are named by project alias or ID and stored in `~/.anythink/config.json`.\n\n---\n\n### entities\n\nManage entities (database tables) in the active project.\n\n```\nanythink entities list                 List all entities\nanythink entities get <name>           Get entity details and fields\nanythink entities create <name>        Create a new entity\nanythink entities update <name>        Update entity settings\nanythink entities delete <name>        Delete an entity and all its data\n```\n\n**Options — `entities create`**\n\n| Flag         | Description                                |\n| ------------ | ------------------------------------------ |\n| `--rls`      | Enable row-level security                  |\n| `--public`   | Make the entity publicly readable          |\n| `--lock`     | Lock new records (prevent direct creation) |\n| `--junction` | Mark as a junction (many-to-many) table    |\n\n**Examples**\n\n```bash\nanythink entities create orders --rls\nanythink entities get customers\nanythink entities delete temp_data --yes\n```\n\n---\n\n### fields\n\nManage fields on an entity. Fields map directly to database columns.\n\n```\nanythink fields list <entity>          List fields on an entity\nanythink fields add <entity> <name>    Add a field\nanythink fields delete <entity> <id>   Delete a field\n```\n\n**Options — `fields add`**\n\n| Flag                | Description                                                                       |\n| ------------------- | --------------------------------------------------------------------------------- |\n| `--type <type>`     | Field type: `varchar`, `text`, `int`, `float`, `bool`, `datetime`, `json`, `uuid` |\n| `--required`        | Mark the field as required                                                        |\n| `--unique`          | Enforce a unique constraint                                                       |\n| `--indexed`         | Add a database index                                                              |\n| `--default <value>` | Default value                                                                     |\n\n**Examples**\n\n```bash\nanythink fields list customers\nanythink fields add customers email --type varchar --unique --required\nanythink fields add products price --type float --required\nanythink fields delete customers 1234 --yes\n```\n\n---\n\n### data\n\nCRUD operations on entity records.\n\n```\nanythink data list <entity>            List records\nanythink data get <entity> <id>        Get a single record by ID\nanythink data create <entity>          Create a new record\nanythink data update <entity> <id>     Update a record\nanythink data delete <entity> <id>     Delete a record\n```\n\n**Options — `data list`**\n\n| Flag              | Description                                                                        |\n| ----------------- | ---------------------------------------------------------------------------------- |\n| `--limit <n>`     | Records per page (default: 20)                                                     |\n| `--page <n>`      | Page number (default: 1)                                                           |\n| `--filter <json>` | Filter expression (JSON)                                                           |\n| `--json`          | Output raw JSON instead of table                                                   |\n| `--all`           | Stream all pages as sequential JSON objects (requires `--json`, constant memory)    |\n\n**Options — `data create` / `data update`**\n\n| Flag            | Description                 |\n| --------------- | --------------------------- |\n| `--data <json>` | JSON object of field values |\n\n**Examples**\n\n```bash\nanythink data list blog_posts --limit 10\nanythink data get blog_posts 42\nanythink data create blog_posts --data '{\"title\":\"Hello World\",\"status\":\"draft\"}'\nanythink data update blog_posts 42 --data '{\"status\":\"approved\"}'\nanythink data delete blog_posts 42 --yes\n```\n\n---\n\n### search\n\nFull-text search across your entities, plus index lifecycle management.\n\n```\nanythink search query <text>                          Run a search\nanythink search similar <entity> <id>                 Find similar documents\nanythink search rehydrate [<entity>]                  Rebuild the search index (admin)\nanythink search purge [<entity>]                      Wipe the search index (admin)\nanythink search audit <entity>                        Compare configured public-searchable fields\n                                                       with what public search actually returns\n```\n\n**Options — `search query`**\n\n| Flag                  | Description                                                                            |\n| --------------------- | -------------------------------------------------------------------------------------- |\n| `--entities <list>`   | Comma-separated entity names. Default: all indexed entities.                           |\n| `--filter <expr>`     | Filter expression, e.g. `\"status=published AND category=news\"`. Supports `_geoRadius`. |\n| `--sort <list>`       | Comma-separated sort fields, e.g. `\"created_at:desc,id:asc\"`.                          |\n| `--facet <fields>`    | Comma-separated fields to compute facet counts on.                                     |\n| `--highlight`         | Highlight matched terms in results.                                                    |\n| `--page N`            | Page number (default: 1).                                                              |\n| `--limit N`           | Results per page (1-100, default: 20).                                                 |\n| `--public`            | Use the unauthenticated `/search/public` endpoint (only public-marked fields).         |\n| `--json`              | Print the raw response JSON.                                                           |\n\n**Index lifecycle**\n\n`rehydrate` and `purge` are admin operations on the search index:\n\n- `search rehydrate` — rebuilds the index from the database (no data loss; just resyncs)\n- `search purge` — deletes the index (run `rehydrate` after to repopulate)\n\nBoth confirm by default; pass `-y` / `--yes` to skip the prompt for automation.\n\n**`search audit` — public-search data leak check**\n\nCompares 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.\n\nExits with code 1 if a leak is detected — useful for CI/CD.\n\n**Examples**\n\n```bash\n# Browse everything\nanythink search query \"*\"\n\n# Filtered search with sorting\nanythink search query \"anythink\" --filter \"status=published\" --sort \"created_at:desc\"\n\n# Compare what public visitors see vs what's in the database\nanythink search audit posts\nanythink search audit users --query \"alice\" --sample 10\n\n# Reindex after a schema change\nanythink search rehydrate posts\nanythink search rehydrate --yes        # everything (admin)\n\n# Geo search (radius in metres)\nanythink search query \"*\" --filter \"_geoRadius(51.5074,-0.1278,5000)\"\n```\n\n---\n\n### workflows\n\nManage automation workflows. Workflows can be triggered on a cron schedule, when entities are created or updated, or manually.\n\n```\nanythink workflows list                List all workflows\nanythink workflows get <id>            Get workflow details and steps\nanythink workflows create <name>       Create a new workflow\nanythink workflows enable <id>         Enable a workflow\nanythink workflows disable <id>        Disable a workflow\nanythink workflows trigger <id>        Manually trigger a workflow\nanythink workflows delete <id>         Delete a workflow\n```\n\n**Options — `workflows create`**\n\n| Flag               | Description                                                       |\n| ------------------ | ----------------------------------------------------------------- |\n| `--trigger <type>` | Trigger type: `Timed`, `EntityCreated`, `EntityUpdated`, `Manual` |\n| `--cron <expr>`    | Cron expression (for `Timed` trigger, e.g. `0 6 * * *`)           |\n| `--entity <name>`  | Entity name (for `EntityCreated` / `EntityUpdated` triggers)      |\n\n**Examples**\n\n```bash\nanythink workflows create daily-sync --trigger Timed --cron \"0 6 * * *\"\nanythink workflows trigger 76\nanythink workflows disable 83\n```\n\n---\n\n### users\n\nManage users in the active project.\n\n```\nanythink users list                    List all users\nanythink users me                      Show the currently authenticated user\nanythink users get <id>                Get a user by ID\nanythink users invite <email> <first> <last>   Create a user and send an invitation email\nanythink users delete <id>             Delete a user\n```\n\n**Options — `users invite`**\n\n| Flag             | Description                   |\n| ---------------- | ----------------------------- |\n| `--role-id <id>` | Assign a role to the new user |\n\n**Examples**\n\n```bash\nanythink users list\nanythink users invite alice@example.com Alice Smith --role-id 3\nanythink users delete 42 --yes\n```\n\n---\n\n### files\n\nManage uploaded files in the active project.\n\n```\nanythink files list                    List uploaded files\nanythink files get <id>                Get file metadata by ID\nanythink files upload <path>           Upload a file\nanythink files delete <id>             Delete a file\n```\n\n**Options — `files list`**\n\n| Flag          | Description                  |\n| ------------- | ---------------------------- |\n| `--page <n>`  | Page number                  |\n| `--limit <n>` | Files per page (default: 25) |\n\n**Options — `files upload`**\n\n| Flag       | Description                       |\n| ---------- | --------------------------------- |\n| `--public` | Make the file publicly accessible |\n\n**Examples**\n\n```bash\nanythink files list\nanythink files upload logo.png --public\nanythink files upload export.csv\nanythink files delete 12 --yes\n```\n\n---\n\n### roles\n\nManage roles in the active project. Roles control what authenticated users can access.\n\n```\nanythink roles list                    List all roles\nanythink roles create <name>           Create a new role\nanythink roles delete <id>             Delete a role\n```\n\n**Options — `roles create`**\n\n| Flag                   | Description                            |\n| ---------------------- | -------------------------------------- |\n| `--description <text>` | Human-readable description of the role |\n\n**Examples**\n\n```bash\nanythink roles list\nanythink roles create editor --description \"Can edit content\"\nanythink roles delete 5 --yes\n```\n\n---\n\n### api-keys\n\nIssue 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.\n\nThe 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.\n\n```\nanythink api-keys list                              List your API keys\nanythink api-keys create <name> --permissions ...   Create a new key\nanythink api-keys revoke <id>                       Revoke a key\n```\n\n**Options — `api-keys create`**\n\n| Flag                    | Description                                                                  |\n| ----------------------- | ---------------------------------------------------------------------------- |\n| `--permissions <list>`  | Required. Comma-separated permission names, e.g. `data:read,data:create`     |\n| `--expires-in <days>`   | Days until expiry (default: 90, max: 365)                                    |\n| `--no-expiry-cap`       | Allow `--expires-in` greater than 365 days                                   |\n| `--save-as <profile>`   | Save the new key directly to a CLI profile instead of printing it            |\n| `--json`                | Print the response as JSON to stdout (the key is in this output — handle carefully) |\n| `-y, --yes`             | Skip the confirmation prompt                                                 |\n\n**Output behaviour**\n\nBy 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:\n\n```bash\nanythink api-keys create ci-deploy --permissions data:read --yes 2> key.txt\n```\n\nIf 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.\n\n**Examples**\n\n```bash\n# Create a 90-day key for CI\nanythink api-keys create github-actions --permissions \"data:read,data:create\" --yes 2> key.txt\n\n# Create a key and save it directly into a profile (key never echoes)\nanythink api-keys create scraper --permissions data:read --save-as scraper-bot --yes\nanythink --profile scraper-bot data list posts\n\n# Revoke a key\nanythink api-keys revoke 42 --yes\n```\n\n---\n\n### menus\n\nManage dashboard sidebar menus in the active project. Menus control what entities appear in the Anythink dashboard and how they are grouped.\n\n```\nanythink menus list                              List all menus with tree structure\nanythink menus add-item <menu_id> <entity>       Add an entity to a dashboard menu\n```\n\n**Options — `menus add-item`**\n\n| Flag              | Description                                          |\n| ----------------- | ---------------------------------------------------- |\n| `--icon <name>`   | Lucide icon name (e.g. `MessageCircle`, `Target`)    |\n| `--name <text>`   | Display name (defaults to entity name, title-cased)  |\n| `--parent <id>`   | Parent menu item ID for nesting under a group        |\n\n**Examples**\n\n```bash\n# List all menus and their items\nanythink menus list\n\n# Add \"Check-ins\" under the Profiles group (parent 168) in admin menu (250)\nanythink menus add-item 250 check_ins --icon MessageCircle --parent 168\n\n# Add a top-level menu item\nanythink menus add-item 250 badges --icon Award\n```\n\n---\n\n### integrations\n\nManage integrations — both the catalog of available providers (Claude, OpenAI, Slack, Google, etc.) and the active connections that hold credentials for them.\n\n```\nanythink integrations list                                  List available providers\nanythink integrations get <provider>                        Show details and operations for one provider\nanythink integrations connections list [--provider <p>]     List your active connections\n\nanythink integrations connect <provider>                    Create an API-key connection (Claude, OpenAI, etc.)\nanythink integrations oauth status <provider>               Show OAuth client setup status\nanythink integrations oauth configure <provider>            Set the OAuth client ID + secret\nanythink integrations oauth connect <provider>              Connect via the browser OAuth flow\n\nanythink integrations test <connection-id>                  Test a connection\nanythink integrations enable <connection-id>                Enable a connection\nanythink integrations disable <connection-id>               Disable a connection\nanythink integrations disconnect <connection-id>            Delete a connection\n\nanythink integrations execute <provider> <operation>        Run an operation on a connected provider\n```\n\n**API-key providers — `integrations connect`**\n\n| Flag                 | Description                                                                              |\n| -------------------- | ---------------------------------------------------------------------------------------- |\n| `--api-key <key>`    | API key for the provider. If omitted, you'll be prompted (input is hidden).              |\n| `--name <name>`      | Friendly name for this connection (default: `<provider> connection`)                    |\n| `--user-connection`  | Make this a user-scoped connection (only the current user sees it). Default: tenant-wide. |\n\n**OAuth providers — `integrations oauth connect`**\n\nThe 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.\n\n| Flag                 | Description                                                              |\n| -------------------- | ------------------------------------------------------------------------ |\n| `--name <name>`      | Friendly name for this connection                                       |\n| `--user-connection`  | Make this a user-scoped connection                                       |\n| `--port <n>`         | Local callback port (default: `8745`)                                    |\n| `--no-open`          | Don't try to open the browser — just print the URL                       |\n| `--timeout <secs>`   | How long to wait for the callback (default: `300`)                       |\n\nOAuth credentials need to be set up once per provider before you can connect:\n\n```bash\nanythink integrations oauth configure slack          # prompts for client_id + secret (hidden)\nanythink integrations oauth connect slack --name main\n```\n\n**Running operations — `integrations execute`**\n\n| Flag                | Description                                                                         |\n| ------------------- | ----------------------------------------------------------------------------------- |\n| `--input <k=v>`     | Input parameter as `key=value`. Repeatable.                                         |\n| `--inputs <json>`   | All inputs as a JSON object.                                                        |\n| `--json`            | Print the full JSON response (default: just the `content` field if present).        |\n\n**Examples**\n\n```bash\n# Browse what's available\nanythink integrations list\nanythink integrations get claude\n\n# API-key flow (Claude, OpenAI)\nanythink integrations connect claude --name \"main\"\nanythink integrations execute claude generate-text --input \"prompt=Tell me a haiku\"\n\n# OAuth flow (Slack, Google, GitHub)\nanythink integrations oauth configure slack\nanythink integrations oauth connect slack --name main\n\n# Manage connections\nanythink integrations connections list\nanythink integrations test <connection-id>\nanythink integrations disable <connection-id>\nanythink integrations disconnect <connection-id> --yes\n```\n\n---\n\n### pay\n\nConfigure and manage Anythink Pay — the built-in Stripe Connect integration for accepting payments in your project.\n\n```\nanythink pay status                    Show Stripe Connect account status\nanythink pay connect                   Set up a Stripe Connect account and start onboarding\nanythink pay payments                  List recent payments\nanythink pay methods                   List saved payment methods\n```\n\n**Options — `pay payments`**\n\n| Flag          | Description                     |\n| ------------- | ------------------------------- |\n| `--page <n>`  | Page number                     |\n| `--limit <n>` | Payments per page (default: 25) |\n\n`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.\n\n**Examples**\n\n```bash\nanythink pay status\nanythink pay connect\nanythink pay payments --limit 50\n```\n\n---\n\n### oauth\n\nConfigure OAuth social sign-in providers for the active project.\n\n```\nanythink oauth google status           Show Google OAuth configuration status\nanythink oauth google configure        Set Google OAuth client ID and secret\n```\n\nGoogle 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](https://console.cloud.google.com/apis/credentials).\n\nSet the authorised redirect URI in your Google Cloud credentials to:\n\n```\nhttps://api.my.anythink.cloud/org/<your-org-id>/auth/v1/google/callback\n```\n\n**Examples**\n\n```bash\nanythink oauth google status\nanythink oauth google configure\n```\n\n---\n\n### api\n\nList all API endpoints available for the active project — both platform routes and the dynamically generated REST routes for your entities.\n\n```\nanythink api                           List all endpoints\nanythink api --json                    Output as JSON (useful for AI tooling)\n```\n\n---\n\n### docs\n\nPrint the full CLI reference.\n\n```\nanythink docs                          Print reference as markdown\nanythink docs --json                   Print reference as JSON (for AI/tooling consumption)\n```\n\n---\n\n### migrate\n\nCopy the entity schema (entities + fields) from one project profile to another. Useful for promoting a schema from staging to production.\n\n```\nanythink migrate --from <profile> --to <profile>\n```\n\n**Options**\n\n| Flag               | Description                                        |\n| ------------------ | -------------------------------------------------- |\n| `--from <profile>` | Source profile name (required)                     |\n| `--to <profile>`   | Destination profile name (required)                |\n| `--dry-run`        | Show what would be migrated without making changes |\n\n**Examples**\n\n```bash\nanythink migrate --from my-app-staging --to my-app-prod\nanythink migrate --from my-app-staging --to my-app-prod --dry-run\n```\n\n---\n\n### plans\n\nList available Anythink plans.\n\n```\nanythink plans                         List plans\nanythink plans --json                  Output as JSON\n```\n\n---\n\n## MCP server\n\nThe Anythink MCP server exposes the platform to AI assistants (Claude, Cursor, etc.) via the [Model Context Protocol](https://modelcontextprotocol.io).\n\n### Install\n\nNo install needed — the recommended way is to run it on demand with `npx`:\n\n```bash\nnpx -y @anythink-cloud/mcp\n```\n\nPrefer a native binary on your `PATH`? Any of:\n\n```bash\n# Homebrew (bundled with the CLI — see Installation above)\nbrew install anythink-cloud/tap/anythink\n\n# .NET global tool (requires the .NET 8 SDK)\ndotnet tool install -g anythink-mcp\n\n# Or download the anythink-mcp-<platform> binary from the Releases page\n```\n\n### Configure\n\n[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=anythink&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBhbnl0aGluay1jbG91ZC9tY3AiXX0%3D)\n[![Install in VS Code](https://img.shields.io/badge/Install-VS_Code-007ACC?logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=anythink&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40anythink-cloud%2Fmcp%22%5D%7D)\n\nFor **Claude Code**, register it in one command:\n\n```bash\nclaude mcp add anythink -- npx -y @anythink-cloud/mcp\n```\n\nOr add it to your MCP client config manually (e.g. `.mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"anythink\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@anythink-cloud/mcp\"]\n    }\n  }\n}\n```\n\nTo pin a profile, add it to `args`: `[\"-y\", \"@anythink-cloud/mcp\", \"--profile\", \"my-project\"]`\n\nWorks in any MCP client. Most use the same `mcpServers` JSON shown above — just add it to the client's config file:\n\n| Client | Config file |\n| --- | --- |\n| Claude Code | `claude mcp add anythink -- npx -y @anythink-cloud/mcp` (or `.mcp.json`) |\n| Claude Desktop | `claude_desktop_config.json` (Settings → Developer → Edit Config) |\n| Cursor | `~/.cursor/mcp.json` (or the **Add to Cursor** button above) |\n| VS Code | `.vscode/mcp.json` (or the **Install in VS Code** button above) |\n| Cline | `cline_mcp_settings.json` (MCP Servers → Configure) |\n| Windsurf | `~/.codeium/windsurf/mcp_config.json` |\n\nA couple of clients use a different config shape:\n\n<details>\n<summary><strong>Continue</strong> (YAML — <code>mcpServers</code> is a list)</summary>\n\n```yaml\nmcpServers:\n  - name: anythink\n    command: npx\n    args:\n      - -y\n      - \"@anythink-cloud/mcp\"\n```\n</details>\n\n<details>\n<summary><strong>Zed</strong> (uses <code>context_servers</code>, not <code>mcpServers</code>)</summary>\n\n```json\n{\n  \"context_servers\": {\n    \"anythink\": {\n      \"source\": \"custom\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@anythink-cloud/mcp\"]\n    }\n  }\n}\n```\n</details>\n\n(Using a native binary instead of `npx`? Use `\"command\": \"anythink-mcp\"` with no `args`.)\n\nOnce connected, run the `login` tool, then `accounts_use` / `projects_use` to pick your working context.\n\n### Available tools\n\nThe MCP server provides dedicated tools for authentication, account/project management, and configuration — plus a generic `cli` tool that can run any CLI command:\n\n| Tool | Description |\n| --- | --- |\n| `signup` | Create a new Anythink account |\n| `login` | Log in with email and password |\n| `login_direct` | Store credentials directly (org ID + API key or JWT) |\n| `logout` | Remove a saved profile |\n| `config_show` | List all profiles |\n| `config_use` | Switch active profile |\n| `config_remove` | Remove a profile |\n| `accounts_list` | List billing accounts |\n| `accounts_create` | Create a billing account |\n| `accounts_use` | Set the active billing account |\n| `projects_list` | List projects |\n| `projects_create` | Create a project |\n| `projects_use` | Connect to a project |\n| `projects_delete` | Delete a project |\n| `cli` | Run any CLI command (entities, data, workflows, roles, etc.) |\n\n---\n\n## Contributing\n\n### Prerequisites\n\n- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8)\n- An Anythink account (free tier works)\n\n### Setup\n\n```bash\ngit clone https://github.com/anythink-cloud/anythink-cli\ncd anythink-cli\ndotnet build\n```\n\n### Running locally\n\n```bash\ndotnet run -- --help\ndotnet run -- projects list\ndotnet run -- entities list\n```\n\n\n### Releases\n\nReleases are automated via GitHub Actions. Push a version tag to trigger a build:\n\n```bash\ngit tag v1.2.0\ngit push origin v1.2.0\n```\n\nThe workflow builds self-contained binaries for macOS (arm64, x64) and Linux (x64, arm64), computes SHA256 checksums, and publishes them as a GitHub release.\n\n### Project structure\n\n```\nanythink-cli/\n├── src/                        # CLI source\n│   ├── Commands/               # Command implementations (signup, login, etc)\n│   ├── Config/                 # CliConfig.cs, Profile, ConfigService\n│   ├── Models/                 # ApiModels.cs, BillingModels.cs\n│   ├── Client/                 # HttpApiClient.cs, AnythinkClient.cs, BillingClient.cs\n│   ├── Output/                 # Renderer.cs (Spectre.Console helpers)\n│   └── Program.cs              # Application entry point & .env loader\n├── mcp/                        # MCP server source\n│   ├── Tools/                  # MCP tool implementations\n│   ├── McpClientFactory.cs     # Auth + client resolution\n│   └── Program.cs              # MCP server entry point\n├── tests/                      # CLI unit tests\n├── mcp-tests/                  # MCP unit tests\n├── AnythinkCli.sln             # Solution file\n└── .gitignore\n```\n\n---\n\n## License\n\nMIT — see [LICENSE](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](https://anythink.cloud).\n\n---\n\nBuilt with [Spectre.Console](https://spectreconsole.net) · Powered by [Anythink](https://anythink.cloud)\n",
  "bytes": 33935,
  "sha": "e0e75342f7f979cf2264cad689310ed4741a9f50c309b68458b93fd9eada4fd8",
  "repo_slug": "anythink-cloud/anythink-cli",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_cloud_anythink_anythink_78d84fff/readme"
}