Skip to main content
Glama
anythink-cloud

Anythink-MCP

Official

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


Related MCP server: stripe

Installation

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

brew install anythink-cloud/tap/anythink

This installs both commands onto your PATH:

  • anythink — the CLI

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

Upgrade later with brew upgrade anythink.

macOS / Linux — download binary

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

Platform

Binary

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 -- --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 billing@acme.com
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

Flag

Description

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

Flag

Description

--rls

Enable row-level security

--public

Make the entity publicly readable

--lock

Lock new records (prevent direct creation)

--junction

Mark 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

Flag

Description

--type <type>

Field type: varchar, text, int, float, bool, datetime, json, uuid

--required

Mark the field as required

--unique

Enforce a unique constraint

--indexed

Add 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

Options — data list

Flag

Description

--limit <n>

Records per page (default: 20)

--page <n>

Page number (default: 1)

--filter <json>

Filter expression (JSON)

--json

Output raw JSON instead of table

--all

Stream all pages as sequential JSON objects (requires --json, constant memory)

Options — data create / data update

Flag

Description

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

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

Flag

Description

--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.

--highlight

Highlight matched terms in results.

--page N

Page number (default: 1).

--limit N

Results per page (1-100, default: 20).

--public

Use the unauthenticated /search/public endpoint (only public-marked fields).

--json

Print 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. Workflows can be triggered on a cron schedule, when entities are created or updated, or manually.

anythink workflows list                List all workflows
anythink workflows get <id>            Get workflow details and steps
anythink workflows create <name>       Create a new workflow
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

Options — workflows create

Flag

Description

--trigger <type>

Trigger type: Timed, EntityCreated, EntityUpdated, Manual

--cron <expr>

Cron expression (for Timed trigger, e.g. 0 6 * * *)

--entity <name>

Entity name (for EntityCreated / EntityUpdated triggers)

Examples

anythink workflows create daily-sync --trigger Timed --cron "0 6 * * *"
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

Flag

Description

--role-id <id>

Assign a role to the new user

Examples

anythink users list
anythink users invite alice@example.com 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

Flag

Description

--page <n>

Page number

--limit <n>

Files per page (default: 25)

Options — files upload

Flag

Description

--public

Make the file publicly accessible

Examples

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

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

Flag

Description

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

Flag

Description

--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-cap

Allow --expires-in greater than 365 days

--save-as <profile>

Save the new key directly to a CLI profile instead of printing it

--json

Print the response as JSON to stdout (the key is in this output — handle carefully)

-y, --yes

Skip 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 add-item <menu_id> <entity>       Add an entity to a dashboard menu

Options — menus add-item

Flag

Description

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

Examples

# List all menus and their items
anythink menus list

# 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

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

Flag

Description

--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-connection

Make 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.

Flag

Description

--name <name>

Friendly name for this connection

--user-connection

Make this a user-scoped connection

--port <n>

Local callback port (default: 8745)

--no-open

Don'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

Flag

Description

--input <k=v>

Input parameter as key=value. Repeatable.

--inputs <json>

All inputs as a JSON object.

--json

Print 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

Configure and manage Anythink Pay — the built-in Stripe Connect integration for accepting payments in your project.

anythink pay status                    Show Stripe Connect account status
anythink pay connect                   Set up a Stripe Connect account and start onboarding
anythink pay payments                  List recent payments
anythink pay methods                   List saved payment methods

Options — pay payments

Flag

Description

--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.

Examples

anythink pay status
anythink pay connect
anythink pay payments --limit 50

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

Flag

Description

--from <profile>

Source profile name (required)

--to <profile>

Destination profile name (required)

--dry-run

Show 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 Install in VS Code

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:

Client

Config file

Claude Code

claude mcp add anythink -- npx -y @anythink-cloud/mcp (or .mcp.json)

Claude Desktop

claude_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)

Cline

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

Tool

Description

signup

Create a new Anythink account

login

Log in with email and password

login_direct

Store credentials directly (org ID + API key or JWT)

logout

Remove a saved profile

config_show

List all profiles

config_use

Switch active profile

config_remove

Remove a profile

accounts_list

List billing accounts

accounts_create

Create a billing account

accounts_use

Set the active billing account

projects_list

List projects

projects_create

Create a project

projects_use

Connect to a project

projects_delete

Delete a project

cli

Run any CLI command (entities, data, workflows, roles, etc.)


Contributing

Prerequisites

Setup

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

Running locally

dotnet run -- --help
dotnet run -- projects list
dotnet run -- 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

Available Tools

16 tools
accounts_createA

Create a new billing account (organization) to hold projects and payment details. Requires a prior platform login (use the 'login' tool first). The new account is automatically set as the active account, so subsequent 'projects_create' / 'projects_list' calls target it without further setup. Returns the new account's id and name. Most users need only one account — call 'accounts_list' first to check whether a suitable one already exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesOrganization name, e.g. 'Acme Inc' — shown on invoices and in the dashboard
emailYesBilling email address that receives invoices and receipts
currencyNoISO currency for billing: 'gbp', 'usd', or 'eur'. Defaults to 'gbp'. Cannot be changed later.gbp

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses all key behavioral traits: requires prior login, sets account as active, non-changeable currency, returns id and name. With no annotations, this description fully carries the transparency burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five sentences, each serving a purpose: core action, prerequisite, side effect, return value, practical guidance. No wasted words, front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers prerequisites, side effects, return values (no output schema), and usage advice. For a simple create tool with three parameters, this is fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds significant meaning beyond the schema: for name, it mentions being shown on invoices; for email, receiving invoices; for currency, the 'cannot be changed later' constraint. Schema coverage is 100% but description enriches all params.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a new billing account, a specific verb and resource. It distinguishes from sibling tools like accounts_list and accounts_use by focusing on creation and subsequent behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (after login, before project creation), when not to (check existing accounts first), and provides alternatives (accounts_list). The guidance about most users needing one account is valuable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

accounts_listA

List the billing accounts (organizations) the logged-in user belongs to. Requires a prior platform login (use the 'login' tool first). Returns each account's id, organization name, billing email, currency, and status (Active/Suspended/Canceled), and flags which one is currently active. A billing account holds your projects and payment details — pick one with 'accounts_use' before creating or listing projects.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description adequately conveys read-only behavior and details the return fields (id, org name, billing email, currency, status, active flag). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences efficiently cover purpose, prerequisites, output, and next steps with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is nearly complete for a parameterless list tool. It covers return fields, prerequisites, and workflow context. Lacks mention of error cases or pagination but is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, and schema description coverage is 100%. Baseline for zero parameters is 4, and the description adds value by noting the prerequisite login requirement, earning a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists billing accounts for the logged-in user, using specific verbs and resource naming, and distinguishes it from siblings like accounts_create and accounts_use by mentioning the workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states prerequisite of prior login and suggests using accounts_use after listing. Provides clear context but does not explicitly state when not to use it beyond the implicit purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

accounts_useA

Set the active billing account that project commands operate on. Call this after 'login' when you belong to more than one account, before using 'projects_list', 'projects_create', or 'projects_use'. Accepts a full account UUID or a unique prefix; run 'accounts_list' to see valid ids. Returns the resolved account name and id, or an error if no account matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBilling account id — full UUID or a unique leading prefix. Get ids from 'accounts_list'.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It explains input format ('full UUID or a unique prefix'), output ('resolved account name and id, or an error'), and intended effect ('set active billing account'). It does not explicitly state side effects or idempotency, but given the simple nature, it is nearly complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, then usage guidance, then input/output specifics. No redundant words; every sentence serves a distinct role. Excellent conciseness for a single-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one param, no output schema, no nested objects), the description covers all necessary context: what it does, when to use it, how to provide input, what to expect as output. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description essentially repeats the schema's parameter description. No additional meaning is added beyond what the schema already provides, though the usage context is helpful.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Set the active billing account that project commands operate on.' It specifies the verb 'Set' and the resource 'active billing account'. It distinguishes from siblings like accounts_list (list accounts) and accounts_create (create accounts), making its unique purpose obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'after login when you belong to more than one account, before using projects_list, projects_create, or projects_use.' It also directs to accounts_list for valid IDs. Provides both procedural context and prerequisite knowledge, leaving no ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cliA

Run any Anythink CLI command and return its output. Use this for commands not covered by dedicated tools (entities, fields, data, workflows, roles, menus, secrets, users, files, pay, oauth, migrate, fetch, api, docs, etc.). Pass the command exactly as you would after 'anythink', e.g. 'entities list' or 'data list posts'. Menu commands: 'menus list' shows dashboard menus with tree structure; 'menus add-item --icon --parent ' adds an entity to a dashboard menu. For destructive commands add '--yes' to skip confirmation prompts. Add '--json' where supported for machine-readable output.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesCLI arguments after 'anythink', e.g. 'entities list', 'users me', 'data list blog_posts --json', 'migrate --from a --to b --dry-run', 'fetch /some/path'. Do NOT include 'anythink' itself or '--profile' (profile is injected automatically).

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description carries the burden. It discloses that destructive commands need '--yes' to skip confirmation, and suggests adding '--json' for machine-readable output. It warns against including 'anythink' or '--profile'. While it doesn't detail error handling, it covers key behavioral traits for a generic CLI runner.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-organized paragraph. It starts with purpose, then usage guidance, followed by examples and important notes. Every sentence adds value; no unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity as a generic CLI runner, the description covers boundaries, examples, and important flags. With no output schema, it mentions returning output. Could mention potential errors or timeouts, but overall sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a detailed parameter description that matches the tool description. The tool description adds extra usage examples and context (destructive commands, --json flag) beyond the schema, enriching understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs any Anythink CLI command and returns output. It specifies the tool is for commands not covered by dedicated tools, listing examples like 'entities list' and 'data list posts', which distinguishes it from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use this tool: 'Use this for commands not covered by dedicated tools' and lists those tools (entities, fields, data, etc.). Provides examples and context for menu commands, making usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

config_removeA

Delete a saved project profile from the local CLI configuration. Removes only the locally stored credentials and settings — it does not delete the project or revoke tokens server-side (to remove the project itself, use 'projects_delete'). Run 'config_show' to see profile names. Returns confirmation, or a not-found message.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileYesName of the profile to remove from local config. See 'config_show' for valid names.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, description fully discloses behavior: only removes local credentials and settings, does not delete project or revoke tokens server-side. Mentions return type (confirmation or not-found).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with main action, no extraneous information. Each sentence serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Fully adequate for a simple tool with one parameter and no output schema. Covers scope, side effects, and return messages.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single 'profile' parameter is already described in schema, but description adds value by referencing 'config_show' for valid names. With 100% schema coverage, baseline is 3; extra context merits a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it deletes a saved project profile from local CLI configuration. It distinguishes from sibling 'projects_delete' by clarifying scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (remove local profile) and when not (server-side deletion), providing alternative tool 'projects_delete'. Also advises running 'config_show' to see valid profile names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

config_showA

Show the local CLI configuration: all saved project profiles and platform logins, and which of each is active. For every profile it returns the name, org id, auth method (api-key or token), alias, and platform; for every platform it returns the URLs, billing account, and login status. Use this to discover profile names for 'config_use', 'config_remove', or 'logout', and to check which project the 'cli' tool currently targets. Reads local config only — makes no network calls.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: reads local config, makes no network calls, returns specific fields for profiles (name, org id, auth method, alias, platform) and platforms (URLs, billing account, login status). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences. The first provides the core purpose and output; the second gives usage guidance and constraints. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description is complete. It covers purpose, output details, usage context, and safety (no network calls). No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, so baseline is 4. The description adds value by detailing the return structure, which compensates for the lack of an output schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Show the local CLI configuration: all saved project profiles and platform logins, and which of each is active.' It distinguishes itself from siblings like config_use and config_remove by focusing on display rather than modification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly guides when to use: 'Use this to discover profile names for config_use, config_remove, or logout, and to check which project the cli tool currently targets.' Also notes it only reads local config with no network calls, implying safe to use without side effects.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

config_useA

Switch the active project profile that the 'cli' tool's commands operate against. Use this to move between already-connected projects without re-authenticating. The profile must already exist (created by 'projects_use' or 'login_direct'); run 'config_show' to see available profile names. Returns confirmation, or an error if the profile does not exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileYesName of an existing profile to make active. See 'config_show' for valid names.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the burden. It clearly explains the effect (switches the active profile for the cli tool), the prerequisite (profile must exist), and the outcome (confirmation or error if missing). It also mentions the non-destructive nature by noting no re-authentication needed, which implies safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no wasted words. It front-loads the action and scope, then provides usage guidance and error handling. Every sentence adds distinct value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for this simple one-parameter tool. It explains what the tool does, when to use it, prerequisites (profile must exist), how to find valid profiles (config_show), and what the output is (confirmation or error). No output schema is needed because the return is simple text described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers the single parameter 'profile' with a description, achieving 100% coverage. The tool description repeats the same parameter semantics ('must already exist', 'see config_show') but does not add new meaning beyond the schema. Thus, it meets the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Switch' and the resource 'active project profile'. It distinguishes from similar tools by noting it moves between already-connected projects without re-authenticating, and explicitly references the 'cli' tool and related commands like config_show and projects_use.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use: 'to move between already-connected projects without re-authenticating'. It also states when not to use by emphasizing the profile must already exist, and directs the agent to run config_show to see available names. This provides clear usage context and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

loginA

Log in to the Anythink platform with email and password. Returns a session token used for account and project management. For Google sign-in, use the 'login_google' tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address
passwordYesPassword

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Discloses return of session token, but lacks details on side effects like session expiration, rate limiting, or invalidation of prior sessions. Adequate for a basic login tool but could be more transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no extraneous information. Efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool is simple, no output schema needed. Description covers purpose, inputs, and return type (session token). Complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, parameters are simple (email, password) and self-explanatory. Description adds minimal value beyond schema, only hinting at return value. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states tool logs in with email and password and returns a session token. Distinguishes from sibling by mentioning alternative 'login_google' for Google sign-in.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use (email/password login) and provides alternative (login_google). Offers clear context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

login_directA

Store credentials directly for a project (bypasses billing login). Use this when you already have an org ID and API key or JWT token.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgIdYesOrganization/tenant ID
tokenNoJWT access token
apiKeyNoAPI key (ak_...)
baseUrlNoOverride API base URL
profileNoProfile name to save as (defaults to org ID)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full behavioral burden. It discloses the core action (bypass billing login) but omits details like authentication requirements, side effects (e.g., persisting credentials), or error conditions. The description adds some value but is incomplete for a credential-storing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two sentences, directly stating the purpose and usage condition. No unnecessary words or repetition. Perfectly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 5 parameters, no output schema, and no annotations. The description does not explain return values, whether credentials become active immediately, or how to verify success. It covers the core purpose but leaves behavioral gaps typical for authentication tools. Adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter having a description (e.g., orgId as 'Organization/tenant ID', apiKey as 'API key (ak_...)' ). The tool description adds minimal extra meaning beyond the schema, merely restating the condition for use. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('store credentials directly for a project') and distinguishes it from the billing login process, implying a sibling tool for that purpose. The condition for use ('when you already have an org ID and API key or JWT token') is explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit context for when to use this tool (when credentials are already available) and implies an alternative (billing login), but does not name sibling tools like 'login' directly or specify when not to use. This is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

login_googleA

Sign in to the Anythink platform with Google. Opens the user's browser to Google's consent screen and waits for them to approve, then stores the session token. The browser step must be completed by the user; everything before and after is tool-driven. This does NOT pick a billing account or project — after it returns, call 'accounts_list' then 'accounts_use', and 'projects_list' then 'projects_use'. Needs a local browser, so it only works over stdio (not the hosted HTTP server).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses key behaviors: opens browser for Google consent, waits for user approval, stores session token. It also notes the stdio-only requirement. However, it omits potential error handling or timeout behavior, preventing a perfect score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences, each adding essential information: purpose, browser flow, what it does not do and next steps, and system requirement. No redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of an OAuth login tool with no output schema, the description covers authentication flow, prerequisites (browser, stdio), and required post-login actions. It could additionally mention the return value or error scenarios, but is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters and the description fills in by explaining the whole process. The baseline for 0 parameters is 4, and the description adds meaning beyond the empty schema by detailing the browser interaction and follow-up steps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Sign in to the Anythink platform with Google.' It identifies specific verb and resource, distinguishing from siblings like 'login' and 'login_direct' by specifying the Google OAuth method and clarifying that it does not handle account or project selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly guides when to use the tool: after login, call accounts_list/accounts_use and projects_list/projects_use. It also warns against use on hosted HTTP server due to browser requirement, effectively telling when not to use it and providing follow-up steps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

logoutA

Remove the saved credentials for a project profile from local CLI config. Use this to disconnect from a project or clear a stale token; it deletes only the stored profile locally and does not revoke the token server-side or affect the project. Omit the profile to remove the currently active one. Run 'config_show' to see profile names.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoName of the profile to remove. Defaults to the active profile. See 'config_show' for names.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the burden. It clearly states the tool only deletes the local stored profile and does not revoke the token or affect the project server-side. This is detailed and accurate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, using only three sentences with no filler. It front-loads the main action and provides essential details efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 optional param, no output schema), the description fully covers purpose, usage, behavior, and parameter. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter 'profile' is fully described in the schema, and the description adds value by noting it defaults to the active profile and referencing 'config_show' for names. This exceeds the baseline for 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool removes saved credentials from local CLI config, using the verb 'remove' and specifying the resource. It distinguishes itself from sibling login/logout tools by explicitly describing the scope (local profile only).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit use cases: 'disconnect from a project or clear a stale token'. It also clarifies what it does not do (no server-side revocation) and the default behavior when profile is omitted. However, it does not explicitly mention when not to use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_createA

Provision a new project — a dedicated, isolated Anythink backend instance with its own database, API, auth, and storage. Requires platform login and an active billing account (set one with 'accounts_use'). Provisioning runs asynchronously: the project starts in a Provisioning state, so poll 'projects_list' until it is Active. Returns the new project's id, name, org id, and API URL. Connect to it with 'projects_use'.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable project name, e.g. 'production' or 'my-app'
planIdYesPlan id (UUID) that sets the project's resource tier and pricing. Run the 'plans' CLI command (via the 'cli' tool) to list available plan ids.
regionNoDeployment region slug, e.g. 'lon1'. Defaults to 'lon1'. Choose the region closest to your users.lon1
accountIdNoBilling account id to create the project in. Defaults to the active account set via 'accounts_use'.
descriptionNoOptional free-text description shown in the dashboard

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses asynchronous provisioning, required billing account, and return fields (id, name, org id, API URL). It does not contradict any annotations (none present) and adequately covers behavioral traits for a creation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph that is well-structured: main action, prerequisites, behavior, output. Every sentence adds useful information. It is appropriately sized for a creation tool with moderate complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description covers purpose, prerequisites, async behavior, and return fields. It addresses how to monitor progress and connect. It could mention error handling or billing failure scenarios, but overall it is fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds meaningful context beyond the schema: e.g., name is 'human-readable', planId references the 'plans' CLI command, region defaults to 'lon1', accountId defaults to active account, description as optional. This adds value without redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Provision') and identifies the resource ('new project') with a clear definition as 'a dedicated, isolated Anythink backend instance'. It distinguishes from sibling tools like projects_list, projects_use, and projects_delete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states prerequisites ('Requires platform login and an active billing account') and provides context on asynchronous behavior with polling instructions, along with a reference to connect using 'projects_use'. It mentions alternatives implicitly (accounts_use, projects_list) but does not explicitly state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_deleteA

Permanently delete a project and tear down its backend instance, including its database and stored data. This is destructive and irreversible — always confirm with the user first, and prefer matching by a specific id over a short prefix to avoid removing the wrong project. Requires an active billing account (set one with 'accounts_use'). Returns the deleted project's name and id on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject to delete — its UUID, name, or a unique prefix. Use a specific id to avoid accidental matches. Find ids via 'projects_list'.
accountIdNoBilling account id the project belongs to. Defaults to the active account set via 'accounts_use'.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description fully discloses the destructive and irreversible nature, what gets destroyed (backend instance, database, data), prerequisites (active billing account), and return value (project name and id).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the critical action, and contains no unnecessary words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with no output schema, the description adequately covers behavior, prerequisites, and return value. Minor gap: no mention of error handling or what happens if prerequisites are not met.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds meaningful context: explains that 'id' can be UUID, name, or unique prefix, and advises to use specific IDs and where to find them. For 'accountId', it clarifies defaulting behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to permanently delete a project and its backend instance, database, and stored data. It differentiates itself from sibling tools (projects_create, projects_list, projects_use) by explicitly being the destructive deletion action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage guidance: confirm with the user first, prefer specific IDs over prefixes, and require an active billing account. However, it does not explicitly contrast with alternatives for non-destructive actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_listA

List the projects (provisioned backend instances) in a billing account. Requires platform login and an active billing account (set one with 'accounts_use'). Returns each project's id, name, description, region, org id, status (Initializing/Provisioning/Active/Suspended/Terminated/Error), API URL, and creation date. Use this to find a project's id before connecting with 'projects_use' or removing it with 'projects_delete'.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountIdNoBilling account id to list projects for. Defaults to the active account set via 'accounts_use'.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully explains behavior: it is a read-only listing operation. It lists all return fields including statuses (Initializing/Provisioning/Active/Suspended/Terminated/Error), which is beyond the input schema. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences with no wasted words. The main action is front-loaded, and the second sentence packs necessary details (return fields, prerequisites, usage flow) in a structured manner.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description comprehensively covers return values (fields and statuses) and prerequisites. It also integrates with sibling tools, providing a complete usage context for a list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the parameter's description already states it defaults to the active account. The tool description does not add new meaning about the parameter's format or constraints beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List the projects (provisioned backend instances) in a billing account,' using a specific verb and resource. It distinguishes from sibling tools by mentioning that the output is used with 'projects_use' and 'projects_delete'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states prerequisites: 'Requires platform login and an active billing account (set one with 'accounts_use').' Provides clear context on when to use: 'Use this to find a project's id before connecting with 'projects_use' or removing it with 'projects_delete'.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projects_useA

Connect to a project and save it as the active profile so the 'cli' tool's data, entities, users, and other commands target it. Resolves the project, then either stores the API key you pass or exchanges a transfer token for project-scoped credentials automatically. Requires an active billing account (set one with 'accounts_use'); the project must be Active (see 'projects_list'). Returns the saved profile name, org id, API URL, and auth method.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject to connect to — its name, org id, or UUID (a unique prefix is accepted). Find these via 'projects_list'.
apiKeyNoOptional project API key (ak_...). If omitted, a project-scoped token is generated automatically via transfer-token exchange.
accountIdNoBilling account id the project belongs to. Defaults to the active account set via 'accounts_use'.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses key behavioral traits: resolves project, stores or exchanges credentials, returns profile name/org/URL/auth method. No annotations exist, so the description carries the full burden and does so adequately, though it could mention if existing profile is overwritten.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences with no wasted words. Front-loaded with the core action, followed by process details and prerequisites. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 3 params, the description covers purpose, prerequisites, behavior, and return values. It is complete for setting an active profile but could elaborate on output structure or side effects like overwriting.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline 3. The description adds little beyond what the schema already provides for each parameter, such as the automatic token generation for apiKey. No significant extra meaning is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Connect to a project and save it as the active profile' with specific verb and resource, and distinguishes from siblings like projects_create or projects_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides prerequisites (active billing account via accounts_use, project must be Active from projects_list) and the outcome (targets cli commands). However, it does not explicitly state when not to use or provide direct alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

signupA

Register a brand-new Anythink platform account with email and password. Use this only when the user has no account yet; if they already have one, use 'login' instead. This creates the top-level user identity — it does not create a billing account or project (do that with 'accounts_create' and 'projects_create' after logging in). On success the user may need to click an email confirmation link before 'login' works; tell them to confirm, then call 'login'.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address — becomes the login identifier and must be unique
lastNameYesUser's last name
passwordYesPassword for the new account; choose a strong value
firstNameYesUser's first name
referralCodeNoOptional referral code, if the user was invited by another customer

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full burden. It discloses that account creation requires email confirmation, that login will not work until confirmed, and that it is a top-level identity creation without billing/project. This is transparent and aligns with mutation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single paragraph with purposeful sentences, no redundancy. Front-loaded with purpose, then usage, then behavioral notes. Every sentence serves a function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, no nested objects, no output schema, the description covers purpose, usage, behavioral constraints, and post-conditions completely. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The tool description adds minimal extra context (e.g., email becomes login identifier, password should be strong), but does not significantly enhance understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Register' and the resource 'brand-new Anythink platform account with email and password'. It explicitly distinguishes from sibling 'login' by specifying when to use each (only when no account yet).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use and when-not-to-use: use only if no account, else use 'login'. Also specifies what the tool does not do (create billing/project) and directs to 'accounts_create' and 'projects_create'. Includes post-registration steps (email confirmation, then login).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.4/5.0
Disambiguation4/5

Most tools have distinct purposes with clear naming. The `cli` tool overlaps conceptually with dedicated tools like `projects_create`, but its description clarifies it is a fallback for commands not covered by dedicated tools. There is minor potential confusion between `login`, `login_google`, and `login_direct`, but they are differentiated by auth method.

Naming Consistency5/5

All tool names follow a consistent `verb_noun` pattern in snake_case (e.g., `accounts_create`, `projects_list`). Verbs like `create`, `list`, `use`, `delete`, `show`, `remove`, `login`, `logout`, `signup` are used uniformly. No mixing of conventions.

Tool Count5/5

The 16 tools are well-scoped for managing the Anythink platform, covering authentication (5 tools), accounts (3), projects (4), configuration (3), and a general CLI fallback (1). The count is appropriate for the domain's complexity without being excessive.

Completeness4/5

The tool surface covers core workflows: authentication, account creation/selection, project lifecycle (create, list, select, delete), and configuration management. Missing explicit update tools for accounts or projects, but the `cli` tool can likely handle those. Overall, no critical gaps that would cause agent failures.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    The Stripe Model Context Protocol server allows you to integrate with Stripe APIs through function calling. This protocol supports various tools to interact with different Stripe services.
    17,353
    1,790
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A Model Context Protocol server that helps users migrate subscription businesses from RevenueCat to Adapty through natural language interactions with LLMs like Claude Desktop.
  • A
    license
    A
    quality
    C
    maintenance
    Enables comprehensive management of Directus instances through tools for schema manipulation, content CRUD operations, and dashboard management. It allows AI assistants to programmatically interact with collections, fields, relations, and workflow automation using the official Directus SDK.
    20
    33
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/anythink-cloud/anythink-cli'

If you have feedback or need assistance with the MCP directory API, please join our Discord server