Anythink-MCP
OfficialThe Anythink MCP server allows AI assistants (e.g., Claude, Cursor) to interact with the Anythink headless backend platform, managing authentication, billing accounts, projects, and running any CLI command.
Authentication
signup— Create a new account with name, email, and passwordlogin— Log in with email and passwordlogin_direct— Store credentials directly using an API key or JWT tokenlogout— Remove saved credentials for a profile
Configuration / Profile Management
config_show— List all configured profiles and the active oneconfig_use— Switch the active project profileconfig_remove— Remove a saved profile
Billing Account Management
accounts_list— List all billing accountsaccounts_create— Create a new billing accountaccounts_use— Set the active billing account
Project Management
projects_list— List all projects in the active billing accountprojects_create— Create a new projectprojects_use— Connect to a project and save it as the active profileprojects_delete— Delete a project
Generic CLI Access (cli tool)
Run any Anythink CLI command, including:
entities/fields/data— Manage database tables, their fields, and perform CRUD operations on recordssearch— Full-text search queries and index managementworkflows— Create, enable, disable, trigger, and delete automation workflowsusers/roles— Manage users, roles, and invitationsfiles— Upload and manage filesapi-keys— Issue and revoke API keys with specific permissionsmenus— Configure dashboard menus and itemsintegrations— Connect and manage third-party services (Claude, OpenAI, Slack, Google, etc.)pay— Set up and manage Stripe Connect for paymentsoauth— Configure Google OAuth social sign-inmigrate— Copy entity schemas between project profilesplans/api/docs— View available plans, API endpoints, and CLI reference
Allows logging in via Google OAuth for authentication.
Anythink CLI
The official command-line interface for Anythink — the headless backend platform for developers and founders. Manage your projects, entities, data, workflows, users, files, and payments without leaving the terminal.
░███ ░██ ░██ ░██ ░██
░██░██ ░██ ░██ ░██
░██ ░██ ░████████ ░██ ░██ ░████████ ░████████ ░██░████████ ░██ ░██
░█████████ ░██ ░██ ░██ ░██ ░██ ░██ ░██ ░██░██ ░██ ░██ ░██
░██ ░██ ░██ ░██ ░██ ░██ ░██ ░██ ░██ ░██░██ ░██ ░███████
░██ ░██ ░██ ░██ ░██ ░███ ░██ ░██ ░██ ░██░██ ░██ ░██ ░██
░██ ░██ ░██ ░██ ░█████░██ ░████ ░██ ░██ ░██░██ ░██ ░██ ░██
░██
░███████Contents
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.
Homebrew (macOS / Linux) — recommended
brew install anythink-cloud/tap/anythinkThis installs both commands onto your PATH:
anythink— the CLIanythink-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) |
|
macOS (Intel) |
|
Linux (x86_64) |
|
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-cliBuild from source
git clone https://github.com/anythink-cloud/anythink-cli
cd anythink-cli
dotnet build
dotnet run -- --helpGetting 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 listYour 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 profilesignup 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 accountExamples
anythink accounts create --name "Acme Ltd" --email billing@acme.com
anythink accounts use a1b2c3d4projects
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 projectOptions — projects create
Flag | Description |
| Deployment region (e.g. |
| Plan ID (see |
Examples
anythink projects create "My App" --region lon1
anythink projects use a1b2c3d4
anythink projects delete a1b2c3d4 --yesconfig
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 profileProfiles 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 dataOptions — entities create
Flag | Description |
| Enable row-level security |
| Make the entity publicly readable |
| Lock new records (prevent direct creation) |
| Mark as a junction (many-to-many) table |
Examples
anythink entities create orders --rls
anythink entities get customers
anythink entities delete temp_data --yesfields
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 fieldOptions — fields add
Flag | Description |
| Field type: |
| Mark the field as required |
| Enforce a unique constraint |
| Add a database index |
| 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 --yesdata
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 recordOptions — data list
Flag | Description |
| Records per page (default: 20) |
| Page number (default: 1) |
| Filter expression (JSON) |
| Output raw JSON instead of table |
| Stream all pages as sequential JSON objects (requires |
Options — data create / data update
Flag | Description |
| 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 --yessearch
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 returnsOptions — search query
Flag | Description |
| Comma-separated entity names. Default: all indexed entities. |
| Filter expression, e.g. |
| Comma-separated sort fields, e.g. |
| Comma-separated fields to compute facet counts on. |
| Highlight matched terms in results. |
| Page number (default: 1). |
| Results per page (1-100, default: 20). |
| Use the unauthenticated |
| 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 (runrehydrateafter 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 workflowOptions — workflows create
Flag | Description |
| Trigger type: |
| Cron expression (for |
| Entity name (for |
Examples
anythink workflows create daily-sync --trigger Timed --cron "0 6 * * *"
anythink workflows trigger 76
anythink workflows disable 83users
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 userOptions — users invite
Flag | Description |
| 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 --yesfiles
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 fileOptions — files list
Flag | Description |
| Page number |
| Files per page (default: 25) |
Options — files upload
Flag | Description |
| Make the file publicly accessible |
Examples
anythink files list
anythink files upload logo.png --public
anythink files upload export.csv
anythink files delete 12 --yesroles
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 roleOptions — roles create
Flag | Description |
| Human-readable description of the role |
Examples
anythink roles list
anythink roles create editor --description "Can edit content"
anythink roles delete 5 --yesapi-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 keyOptions — api-keys create
Flag | Description |
| Required. Comma-separated permission names, e.g. |
| Days until expiry (default: 90, max: 365) |
| Allow |
| Save the new key directly to a CLI profile instead of printing it |
| Print the response as JSON to stdout (the key is in this output — handle carefully) |
| 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.txtIf 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 --yesmenus
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 menuOptions — menus add-item
Flag | Description |
| Lucide icon name (e.g. |
| Display name (defaults to entity name, title-cased) |
| 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 Awardintegrations
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 providerAPI-key providers — integrations connect
Flag | Description |
| API key for the provider. If omitted, you'll be prompted (input is hidden). |
| Friendly name for this connection (default: |
| 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 |
| Friendly name for this connection |
| Make this a user-scoped connection |
| Local callback port (default: |
| Don't try to open the browser — just print the URL |
| How long to wait for the callback (default: |
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 mainRunning operations — integrations execute
Flag | Description |
| Input parameter as |
| All inputs as a JSON object. |
| Print the full JSON response (default: just the |
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> --yespay
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 methodsOptions — pay payments
Flag | Description |
| Page number |
| 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 50oauth
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 secretGoogle 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/callbackExamples
anythink oauth google status
anythink oauth google configureapi
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 |
| Source profile name (required) |
| Destination profile name (required) |
| 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-runplans
List available Anythink plans.
anythink plans List plans
anythink plans --json Output as JSONMCP 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/mcpPrefer 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 pageConfigure
For Claude Code, register it in one command:
claude mcp add anythink -- npx -y @anythink-cloud/mcpOr 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 Desktop |
|
Cursor |
|
VS Code |
|
Cline |
|
Windsurf |
|
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 |
| Create a new Anythink account |
| Log in with email and password |
| Store credentials directly (org ID + API key or JWT) |
| Remove a saved profile |
| List all profiles |
| Switch active profile |
| Remove a profile |
| List billing accounts |
| Create a billing account |
| Set the active billing account |
| List projects |
| Create a project |
| Connect to a project |
| Delete a project |
| Run any CLI command (entities, data, workflows, roles, etc.) |
Contributing
Prerequisites
An Anythink account (free tier works)
Setup
git clone https://github.com/anythink-cloud/anythink-cli
cd anythink-cli
dotnet buildRunning locally
dotnet run -- --help
dotnet run -- projects list
dotnet run -- entities listReleases
Releases are automated via GitHub Actions. Push a version tag to trigger a build:
git tag v1.2.0
git push origin v1.2.0The 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
└── .gitignoreLicense
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 toolsaccounts_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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Organization name, e.g. 'Acme Inc' — shown on invoices and in the dashboard | |
| Yes | Billing email address that receives invoices and receipts | ||
| currency | No | ISO currency for billing: 'gbp', 'usd', or 'eur'. Defaults to 'gbp'. Cannot be changed later. | gbp |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Billing account id — full UUID or a unique leading prefix. Get ids from 'accounts_list'. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | CLI 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | Yes | Name of the profile to remove from local config. See 'config_show' for valid names. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | Yes | Name of an existing profile to make active. See 'config_show' for valid names. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address | ||
| password | Yes | Password |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| orgId | Yes | Organization/tenant ID | |
| token | No | JWT access token | |
| apiKey | No | API key (ak_...) | |
| baseUrl | No | Override API base URL | |
| profile | No | Profile name to save as (defaults to org ID) |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | Name of the profile to remove. Defaults to the active profile. See 'config_show' for names. |
TDQS
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.
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.
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.
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.
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.
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable project name, e.g. 'production' or 'my-app' | |
| planId | Yes | Plan 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. | |
| region | No | Deployment region slug, e.g. 'lon1'. Defaults to 'lon1'. Choose the region closest to your users. | lon1 |
| accountId | No | Billing account id to create the project in. Defaults to the active account set via 'accounts_use'. | |
| description | No | Optional free-text description shown in the dashboard |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project to delete — its UUID, name, or a unique prefix. Use a specific id to avoid accidental matches. Find ids via 'projects_list'. | |
| accountId | No | Billing account id the project belongs to. Defaults to the active account set via 'accounts_use'. |
TDQS
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.
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.
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.
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.
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.
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No | Billing account id to list projects for. Defaults to the active account set via 'accounts_use'. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project to connect to — its name, org id, or UUID (a unique prefix is accepted). Find these via 'projects_list'. | |
| apiKey | No | Optional project API key (ak_...). If omitted, a project-scoped token is generated automatically via transfer-token exchange. | |
| accountId | No | Billing account id the project belongs to. Defaults to the active account set via 'accounts_use'. |
TDQS
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.
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.
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.
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.
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.
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address — becomes the login identifier and must be unique | ||
| lastName | Yes | User's last name | |
| password | Yes | Password for the new account; choose a strong value | |
| firstName | Yes | User's first name | |
| referralCode | No | Optional referral code, if the user was invited by another customer |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
Build, deploy, and host full-stack web apps from any MCP client. DB, auth, storage, cron included.
The agent-native cloud: database, functions, AI, storage, computers. 50 tools, one API key.
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
Agent Commerce MCP — agent-native A2A storefront. Discovery, Stripe checkout, affiliate program.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceAn MCP server that provides tools for interacting with Supabase databases, storage, and edge functions.45MIT
- -licenseNot gradedqualityNot gradedmaintenanceA Model Context Protocol server that helps users migrate subscription businesses from RevenueCat to Adapty through natural language interactions with LLMs like Claude Desktop.
- AlicenseAqualityCmaintenanceEnables 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.2033MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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