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)

Or tap first, then install:

brew tap anythink-cloud/tap
brew install anythink

Update to the latest release:

brew upgrade anythink

Uninstall:

brew uninstall anythink

macOS / Linux — download binary

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

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 --project src/AnythinkCli.csproj -- --help

Getting started

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

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

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

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

# 5. Start building
anythink entities list
anythink workflows list

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


Command reference

signup / login / logout

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

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


accounts

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

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

Examples

anythink accounts create --name "Acme Ltd" --email 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
anythink data export <entity> <file>   Export records to CSV, JSON or JSONL
anythink data import <entity> <file>   Create records from CSV, JSON or JSONL

Options — data list

Flag

Description

--limit <n>

Records per page (default: 20)

--page <n>

Page number (default: 1)

--filter <expr>

Field filters — JSON ({"status":"draft","total":{"gte":10}}) or field=value pairs (status=draft&total=GTE:10). See below.

--json

Output raw JSON instead of table

--all

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

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

Operator

Meaning

field=value form

eq / ne

Equal / not equal

x=v / x=!v

gt gte lt lte

Comparisons

x=GT:v …

contains / not_contains

Case-insensitive substring

x=C:v / x=NC:v

starts_with / ends_with

Case-insensitive prefix/suffix

x=SW:v / x=EW:v

in

Any of a list

x=IN:a,b

null: true / null: false

Empty / not empty

x=NULL: / x=NNULL:

exists: true / exists: false

Has / lacks related records

x=EXISTS: / x=NOT_EXISTS:

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

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

anythink data export customers customers.csv
anythink data export orders orders.jsonl --filter 'status=paid' --fields id,total
anythink data import customers customers.csv --dry-run
anythink data import customers customers.csv --errors rejected.csv --yes

Flag (export)

Description

--format <fmt>

csv, json or jsonl. Default: from the extension (.csv, .json, .jsonl, .ndjson). - as the file writes to stdout (needs --format)

--filter <expr>

Same syntax as data list --filter

--fields a,b

Columns to export, in order. CSV defaults to the entity's fields

--page-size <n>

Records per request (default 200, max 1000)

--force

Overwrite an existing file. Without it an existing file is never touched. The file is written to a temporary name and renamed on success, so a failed export never leaves a partial file

--no-formula-guard

CSV only: see below

Flag (import)

Description

--format <fmt>

csv, json (an array of objects) or jsonl. Default: from the extension, else the first character ([ or {)

--dry-run

Validate and report; nothing is sent

--concurrency <n>

Parallel creates (default 4, max 16)

--errors <file>

Write skipped and failed rows, with an _error column or property, so they can be fixed and re-imported

--ignore-unknown

Drop columns that aren't fields on the entity instead of rejecting the row

--yes

Skip the confirmation prompt. Required when not running interactively (CI, scripts, agents), otherwise the import refuses before writing anything

How values are handled:

  • CSV is RFC 4180: cells containing a comma, quote or line break are quoted, quotes are doubled, and quoted cells can span lines. Objects, arrays, JSON fields and relations are written as compact JSON text.

  • Formula guard (export): CSV text starting with =, +, -, @, tab or carriage return is prefixed with ' so spreadsheets don't run it as a formula. Numbers are never changed. This includes phone numbers such as +44 20 7946 0000 and any text with a leading + or -. The guard is one-way: importing the file keeps the ' unless the file was exported with --no-formula-guard.

  • Types follow the entity's fields. Text keeps its exact characters (00123 stays 00123); integers and decimals are parsed with . as the decimal separator (1,5 is rejected, never guessed); booleans accept true/false, 1/0 and yes/no; dates must be ISO 8601 (2025-03-31, 2025-03-31T09:30:00Z; no offset means UTC); JSON fields must be valid JSON.

  • An empty CSV cell is sent as null. In JSON and JSONL input an empty string stays an empty string.

  • Bad rows are skipped, never sent. They are reported with a row number (CSV: record number, so the header is row 1; JSONL: line number; JSON: position in the array) and counted as skipped. Rows the server rejects are counted as failed. The exit code is non-zero if any row was skipped or failed.

  • Retries: 400, 409 and 422 are never retried, so a create is not repeated. See Uncertain failures below for what is retried.

  • System columns are ignored on import: id, created_at, updated_at, tenant_id and locked are never sent, and the import says which it ignored. Importing an export back into the same project therefore creates duplicates with new ids and timestamps; it does not update the originals.

  • One-to-many collections and secret fields are skipped on import (the import lists them), and one-to-many columns are left out of an export unless you name them in --fields. Many-to-many, file and user columns are copied as ids, which only mean something inside the same project; the import warns once per column.

  • Empty boolean cells are sent as null rather than false.

  • Uncertain failures: only 429/503 responses and requests that never reached the server (DNS, connection or TLS failures) are retried. If a request times out or the connection drops after sending, the row is reported as UNCERTAIN: may have been created, in the errors file too; check the project before re-importing it. Rate-limit waits pause every worker together and are retried for over a minute before giving up.

  • Ctrl+C stops reading the file, finishes the rows already queued and prints a partial summary (exit code 1). An interrupted export removes its temporary file.

  • data import and data export read and write local files, so they are not available through the hosted (HTTP) MCP server.

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


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. A workflow can have several triggers: a cron schedule, an entity event, an API route, or a manual run.

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

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

Type

Fires

Required flag

Other flags

Manual

When run by hand, on an entity

--entity <name>

Event

When an event happens, such as a record being created

--entity <name> for the Entity... events

--event <event>, --filter <json>

Timed

On a cron schedule

--cron <expr>

Api

When its API route is called

--api-route <route>

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

Other options — workflows create

Flag

Description

--description <text>

Workflow description

--enabled

Enable the workflow straight away

--filter-file <path>

Read the Event filter JSON from a file

Examples

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

users

Manage users in the active project.

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

Options — users invite

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

email

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

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

Options — email templates show

Flag

Description

--rendered

Print the rendered HTML (with sample data) instead of the source

Options — email templates update

Flag

Description

--subject <text>

New subject line

--content <path>

File with the new content (use - to read stdin)

--content-text <html>

The new content, passed inline (use this or --content, not both)

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

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

Flag

Description

--subject <text>

Subject to render (default: Preview)

--content <path>

File with the content (use - for stdin)

--content-text <html>

The content, passed inline

--wrapper <path>

Optional shell HTML to render against (use - for stdin)

--wrapper-text <html>

Optional shell HTML, passed inline

Options — email shell update (pass exactly one)

Flag

Description

--html <path>

File with the new shell HTML (use - for stdin)

--html-text <html>

The new shell HTML, passed inline

--reset

Go back to the platform default shell

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

Examples

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

roles

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

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

Options — roles create

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

Options — menus add-item

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

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

Flag

Description

--name <text>

New display name

--icon <name>

New Lucide icon name

--entity <name>

Point the item at an entity's page (instead of --href)

--href <path>

Point the item at any path (instead of --entity)

--parent <id>

Parent item ID to nest under; 0 moves it to the top level

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

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

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

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

Examples

# List all menus and their items
anythink menus list

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

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

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

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

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

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

charts

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

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

Options — charts create, charts update and charts preview

Flag

Description

--entity <name>

Entity whose records the chart plots

--type <type>

column (bar chart), line, pie, area, stat, gauge or funnel

--group-by <field>

Field for the x axis, or the slices of a pie

--interval <size>

Bucket a date --group-by: hour, day, week, month, quarter or year

--measure <field>

Numeric field to aggregate (needed unless --agg is count)

--agg <how>

count (default), sum, avg, min or max

--stack-by <field>

Field that splits each bar or point into a second breakdown

--filter <f:op:value>

Filter such as status:eq:published. Operators: eq ne gt gte lt lte contains in exists not_exists. Repeat for several fields; a chart keeps one filter per field

--timeframe <preset>

all, 24h, 7d, 30d, 90d, 365d or custom (with --from and --to)

--limit <n>, --sort <asc|desc>, --cumulative <bool>

Row limit, sort order and running total

--target <n>, --target-mode <goal|warning>

A goal or warning level on a stat or gauge

--compare <bool>, --compare-days <n>, --compare-overlay <bool>

Compare with the previous period

--source <entity|platform|quota>

Where the data comes from. Platform charts use --platform-metric (see charts platform-metrics), quota charts use --quota-metric

--config <json>

Anything else, as a JSON object, e.g. {"funnelStages":[{"label":"Signed up"}]} for a funnel. Typed options win over it

--rows <n>

charts preview only: most rows to show (default 50)

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

Examples

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

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

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

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

dashboards

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

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

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

Options

Command / flag

Description

create --chart <id>

Put a chart on the new dashboard. Repeat for several

create --description, --shared, --allow-shared-edit, --home, --default

Description, who can see or edit it, and whether it is your landing or the project default dashboard

create/update --config <json>

Other settings as a JSON object: widgets (each with type, title and settings) and layout. On update, widgets replaces the whole list, so include every widget to keep, with its id

update --name, --description, --shared <bool>, --allow-shared-edit <bool>

The fields to change; the rest are left alone

add-chart --title <text>

Widget title (defaults to the chart's name)

add-chart --column, --row, --width, --height

Position and size on the grid (default width 4, height 3, placed below the existing widgets). Leave them all out and the dashboard places the widget itself

data --widget <id>, --rows <n>

Only these widgets; most rows to show per widget (default 20)

widget-preview --type, --chart, --config, --rows

Widget type (chart, list, markdown, ...), the chart to show, or the widget's own settings as JSON

Examples

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

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

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

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

settings

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

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

Keys — settings set

Key

Value

name, description

Text

require_email_confirmation

true / false

allow_registrations

true / false

default_role_id

Role ID for newly registered users

enable_group_rls

true / false

payment_success_url, payment_cancel_url

URL

app_engagement_trial_enabled

true / false

app_engagement_trial_days

Number of days

ai_mode

platform or byok

ai_byok_provider, ai_default_model

Text

google_maps_key

Text

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

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

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

Examples

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

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

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

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

integrations

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

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

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

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

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

API-key providers — integrations connect

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

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

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

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

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

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

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

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

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

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

Options — pay payments

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. pay setup chains Stripe Connect, Apple IAP credentials, and a first plan; each step is optional.

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

Required permissions

Command surface

Permission

Plan / subscription reads, entitlement, payment-options

anythink_subscription_plans:read

Plan writes

anythink_subscription_plans:create / :update / :delete

Payment reads/writes

anythink_payments:read / :create

Apple credentials, admin recovery (delete/force-expire/relink/resync)

project administrator

Examples

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

oauth

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

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

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

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

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

Examples

anythink oauth google status
anythink oauth google configure

api

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

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

docs

Print the full CLI reference.

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

migrate

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

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

Options

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

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


Contributing

Prerequisites

Setup

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

Running locally

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

Releases

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

git tag v1.2.0
git push origin v1.2.0

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

Project structure

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

License

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


Built with Spectre.Console · Powered by Anythink

Available Tools

102 tools
accounts_createAInspect

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

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 the full burden and largely meets it: it discloses the auth prerequisite, the side effect that the new account becomes active, the downstream impact on projects_create/projects_list, and the return shape (id and name). It stops short of error/failure behavior (duplicate name or email, permission errors), which is the remaining gap for a mutating 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?

Five short sentences, each carrying unique information: purpose, auth prerequisite, side effect, return value, and alternative. The most decision-relevant constraints (login, already-have-an-account) are front-loaded rather than buried.

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?

For a 3-parameter create tool with no annotations and no output schema, the description covers purpose, auth, side effects, return values, and the alternative tool. An agent has everything needed to decide whether and how to call it.

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 name, email, and currency are already fully documented including the non-changeable currency constraint. The description adds no parameter-level meaning beyond the schema, making the baseline 3 correct.

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?

States a specific verb and resource ('Create a new billing account (organization)') plus what the resource holds ('projects and payment details'). This clearly separates it from siblings like accounts_list and accounts_use without requiring the schema to be opened.

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 names prerequisites ('Requires a prior platform login (use the login tool first)') and an alternative workflow ('Most users need only one account — call accounts_list first to check whether a suitable one already exists'). Both the when-to-use and the anti-pattern are given.

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

accounts_listAInspect

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.7/5.0
Behavior4/5

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

With no annotations, the description must carry the behavioral burden, and it discloses the auth requirement, the returned field set including status enum values (Active/Suspended/Canceled), and which account is flagged active. It omits pagination, ordering, and error behavior, keeping it below a 5.

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 dense sentences that are front-loaded with the primary action, then prerequisites, then return/next-step guidance. 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?

For a no-parameter list tool with no output schema and no annotations, the description covers purpose, auth prerequisite, return values, and the follow-up tool, which is everything an agent needs to invoke it correctly.

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?

Zero parameters, so the baseline is 4 per the rubric. The empty schema leaves nothing for the description to clarify about inputs, and it correctly focuses on the (absent) output shape instead.

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?

States a specific verb (List) and resource (billing accounts / organizations) plus the scope restriction ('the logged-in user belongs to'). It is clearly distinct from siblings like accounts_create and accounts_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?

Explicitly gives a prerequisite ('Requires a prior platform login — use the login tool first') and a downstream action ('pick one with accounts_use before creating or listing projects'). Names both the alternative tool and the condition that selects it.

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

accounts_useAInspect

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 the full burden and does well: it discloses a state mutation, the prerequisite, accepted input forms, and the failure mode ('error if no account matches'). It does not state whether the selection persists across sessions or how it interacts with a previously set account, leaving a minor gap.

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 the core action, then prerequisites/dependents, then input and return behavior. No filler.

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?

There is no output schema, so the description supplies the return contract (resolved account name and id, or an error). Combined with the single documented parameter and explicit prerequisites, nothing needed to call it correctly is missing.

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% and the schema description already explains the UUID-or-prefix format and points to 'accounts_list'. The description repeats this rather than adding new semantics, so the baseline 3 applies.

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?

States a specific verb and resource ('Set the active billing account that project commands operate on'), and the scope clause distinguishes it from the accounts_* and projects_* siblings. An agent can tell it selects context rather than creating/listing accounts.

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?

Gives an explicit prerequisite ('after login'), a conditional ('when you belong to more than one account'), and downstream tools that depend on it ('projects_list', 'projects_create', 'projects_use'). It also names the alternative for discovering valid ids ('accounts_list').

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

apiApiB
Read-only
Inspect

List all API endpoints (platform + dynamically generated entity routes)

ParametersJSON Schema
NameRequiredDescriptionDefault
base_urlNoOverride base URL for this command

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds useful scope context (that the listing includes both platform routes and dynamically generated entity routes), which is not derivable from the annotations, but says nothing about pagination, output shape, or auth needs.

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?

A single front-loaded sentence with an efficient parenthetical; no filler. Slightly cryptic on its own but appropriately sized for a simple list command.

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?

For a read-only discovery tool with one optional param and no output schema, the description covers what is listed but not the form of the results or any scoping behavior (e.g. whether entity routes require prior entity definitions). Adequate but with a clear gap.

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?

With only one optional parameter at 100% schema coverage, the schema already documents base_url fully. The description adds no extra meaning about when or why to override the base URL, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (List) and resource (API endpoints), and the parenthetical 'platform + dynamically generated entity routes' gives real scope. The generic tool name 'api' is rescued by the description, though it does not explicitly distinguish itself from near-neighbors like docs, cli, or fetch.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives such as docs or cli for discovering the API surface. The agent must infer usage from the verb alone.

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

api_keys_createApi keys: createAInspect

Create an API key. The raw key is shown once and never retrievable.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the API key (e.g. "github-actions", "backup-script")
save_asNoSave the new key directly into a CLI profile instead of printing it
expires_inNoDays until the key expires (default: 90, max: 365 unless --no-expiry-cap)
permissionsNoComma-separated permission names, e.g. "data:read,data:create"
no_expiry_capNoAllow --expires-in greater than 365 days (use sparingly)

TDQS

A3.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so safety is covered. The description then adds the one genuinely non-obvious behavioral fact: the raw key is returned once and can never be retrieved again, which tells the agent the response value must be captured immediately rather than re-fetched.

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 short sentences, front-loaded with the action and followed by the highest-value warning. No filler, no restatement of the title.

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?

With 100% schema coverage for all five parameters and no output schema, the description is nearly self-sufficient for invocation; the one-time-secret note covers the biggest return-value risk. It could go slightly further by noting that save_as suppresses the printed key, tying the parameter to that behavior.

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 all five parameters (name, save_as, expires_in, permissions, no_expiry_cap) are already fully documented in the schema. The description adds no extra semantics about defaults, formats, or interactions, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (Create) and resource (an API key), which unambiguously separates it from api_keys_list and api_keys_revoke. It stops short of naming those siblings, so an agent still infers the boundary from the tool name rather than the prose.

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

Usage Guidelines2/5

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

The description offers no when-to-use guidance, no prerequisites (e.g. required role or scope), and no mention of alternatives such as reusing an existing key via api_keys_list. It is a bare imperative with no routing information.

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

api_keys_listApi keys: listA
Read-only
Inspect

List API keys for the current user

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds the 'current user' scoping constraint, but says nothing about pagination, ordering, or whether key secrets are redacted, which are the behaviors an agent would actually wonder about here.

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 seven-word sentence with the scope constraint front-loaded and no filler. Every word earns its place.

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 zero-parameter read-only list tool with no output schema, the description is nearly sufficient. The one open question it leaves is what a listed key object contains (notably whether the secret value is included), which for API-key tooling is material but not essential to invocation.

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 tool takes zero parameters, so the baseline of 4 applies; there is no parameter syntax the description needs to compensate for. Nothing in the description is required to clarify inputs.

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

Purpose4/5

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

States a specific verb (list) and resource (API keys) plus the scope qualifier 'for the current user', so the agent knows exactly what is returned. It distinguishes itself from siblings like api_keys_create and api_keys_revoke by verb alone, but never names them or explicitly rules out listing other users' keys.

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

Usage Guidelines3/5

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

Usage is only implied by the verb and scope; there is no statement of when to call this versus api_keys_create or api_keys_revoke, nor any prerequisite or exclusion. The self-evident read operation keeps it from scoring lower, but no explicit routing guidance is provided.

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

api_keys_revokeApi keys: revokeC
Destructive
Inspect

Revoke an API key by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAPI key ID to revoke

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known without the description. However, the description itself adds no behavioral context such as whether revocation is permanent, whether it takes effect immediately, or what happens to in-flight requests using the key.

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?

A single short sentence that is front-loaded with the action and resource. There is no filler, though it is close to the minimum viable length rather than a tightly optimized definition.

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?

For a one-parameter destructive tool with annotations covering the safety profile, the description is functionally adequate. It still omits any note about irreversibility, idempotency, or error behavior, which would matter for a destructive 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?

Only one parameter exists and schema description coverage is 100% ('API key ID to revoke'), so the schema fully documents it. The phrase 'by ID' in the description adds nothing beyond that baseline, warranting the standard 3.

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

Purpose4/5

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

The description gives a specific verb (revoke) and resource (an API key) with the identifying dimension (by ID), so it is unmistakable against siblings like api_keys_list or api_keys_create. It does not explicitly name or contrast those siblings, keeping it short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus api_keys_list or api_keys_create, no prerequisites, and no note about irreversibility or preconditions such as key state. The agent must infer all context from the name alone.

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

cliAInspect

Run any Anythink CLI command and return its output. Prefer the dedicated tools; use this for anything they don't cover. Pass the command exactly as you would after 'anythink', e.g. 'entities list' or 'data list posts'. 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 the description carries the full burden. It discloses that output is returned, that destructive commands may prompt unless '--yes' is added, and that '--json' is available for machine-readable output. It does not cover authentication, error handling, or general side effects, but does more than the minimum.

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 compact sentences with zero waste. It front-loads the core purpose and fallback role, then adds examples and flag guidance in a logical order.

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 one-parameter generic CLI wrapper with no output schema and no annotations, this covers the main selection and invocation concerns. It could be slightly more complete about error behavior or permission requirements, but the essential information is present.

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 single command parameter is fully described in the schema, so baseline is 3. The description adds useful flag semantics beyond the schema, especially '--yes' for skipping confirmation prompts and '--json' for machine-readable output, plus concrete examples of command formatting.

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?

States a specific verb and resource ('Run any Anythink CLI command') and explicitly routes the agent away from dedicated tools toward this fallback. The scope and intended use are unambiguous even against a large sibling set.

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?

Gives explicit when-to-use guidance ('Prefer the dedicated tools; use this for anything they don't cover') and operational instructions like adding '--yes' for destructive commands and '--json' where supported. No inference is needed to select this tool correctly.

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

config_removeAInspect

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.7/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden, and it does so well: it discloses the exact scope of destruction (local credentials and settings only), clarifies what is NOT affected (server-side project, tokens), and specifies the return behavior ('confirmation, or a not-found message'). This is materially more than the schema conveys.

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 tightly packed sentences, front-loaded with the action and scope, then the boundary condition, then the discovery hint and return behavior. No filler; every clause earns its place.

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?

For a single-parameter local mutation with no annotations and no output schema, the description covers everything an agent needs: scope of deletion, exclusion of server-side effects, the sibling alternative, the prerequisite for valid names, and the return outcome. Nothing is missing.

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 the single 'profile' parameter is already fully documented, including the config_show pointer. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb and resource ('Delete a saved project profile from the local CLI configuration') with the scoping qualifier 'local' front-loaded. The agent can immediately distinguish this from server-side siblings like projects_delete. No ambiguity about what is being removed.

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 delineates when-not-to-use ('does not delete the project or revoke tokens server-side') and names the alternative tool ('to remove the project itself, use projects_delete'). It also provides the prerequisite discovery step ('Run config_show to see profile names'). Fully self-routing.

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

config_showAInspect

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.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden — and it discloses 'Reads local config only — makes no network calls', which tells the agent this is a side-effect-free local read with no auth/network prerequisites. It also enumerates the returned fields. It stops short of stating whether anything is cached or mutated locally, so it is strong but not exhaustive.

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 the core purpose, then return contents, then usage routing, then a behavioral caveat. Every sentence adds information an agent needs; nothing is repeated from structured fields.

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?

There is no output schema, so the description compensates by enumerating the response shape for both profiles (name, org id, auth method, alias, platform) and platforms (URLs, billing account, login status). Combined with the usage routing and the no-network disclosure, an agent has everything required to call it correctly.

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?

Zero parameters, so the baseline is 4; there is nothing for the description to clarify beyond what an empty schema already communicates.

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?

States a specific verb+resource ('Show the local CLI configuration') and precisely delineates scope: all saved project profiles and platform logins plus which is active. An agent can distinguish it from config_use, config_remove, and logout without opening the schema.

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 names what to use it for: discovering profile names for 'config_use', 'config_remove', or 'logout', and checking which project the 'cli' tool targets. That is concrete when-to-use routing plus named alternatives.

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

config_useAInspect

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.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden; it discloses that this mutates global state (which profile cli operates against), that no re-authentication is needed, and the error behavior when the profile is absent. It does not describe whether the switch is persistent across sessions or reversible, which is a minor gap.

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?

Front-loads the core action, then prerequisites, then return behavior in four tight sentences with no filler. Slightly overlaps with the schema's parameter note but nothing is wasted.

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?

For a one-parameter state-switching tool with no annotations and no output schema, the description supplies prerequisite, discovery path, no-reauth behavior, and return semantics. Everything an agent needs to call it correctly is present.

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% and the single parameter's schema description already tells the agent to consult 'config_show' for valid names. The description largely repeats that guidance rather than adding format or constraint detail, so the baseline 3 applies.

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?

States a specific verb (Switch) and resource (active project profile), and scopes the effect to the 'cli' tool's commands. An agent can distinguish it from config_show (read), config_remove (delete), and projects_use without opening schemas.

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 to use it 'to move between already-connected projects without re-authenticating', states the prerequisite that the profile must already exist (created by 'projects_use' or 'login_direct'), and routes to 'config_show' for discovery of valid names. Both the when and the alternative are named.

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

data_createData: createCInspect

Create a new record

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoJSON object with field values, e.g. '{"name":"Alice","age":30}'
entityYesEntity name

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the write/safe profile is covered. The description adds nothing beyond that: no conflict/duplicate behavior, no validation expectations, no note that partial or malformed JSON data will fail.

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

Conciseness2/5

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

Four words with no waste, but this is under-specification rather than conciseness — the single sentence conveys no information an agent could not get from the tool name and annotations.

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

Completeness2/5

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

For a write tool taking an entity name plus a free-form JSON payload, the description should say something about entity semantics, required field values, or the shape of a successful result. None of that is present, and there is no output schema to fill the gap.

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%, with both `entity` and `data` documented (including a JSON example), so the schema carries the parameter burden. The description contributes zero additional meaning, which is the baseline expectation when coverage is complete.

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

Purpose2/5

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

"Create a new record" essentially restates the tool name (data_create) with no differentiating detail. Among siblings like entities_create, accounts_create, projects_create, and data_update, an agent cannot tell what "record" means here or which collection this writes to.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternative creation tools such as entities_create or accounts_create. The agent must infer everything from the name alone.

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

data_deleteData: deleteC
Destructive
Inspect

Delete a record

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRecord ID
entityYesEntity name

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is disclosed structurally. The description adds nothing on top: it does not say whether the delete is hard or soft, whether it cascades to related records, whether it is reversible, or what permissions are needed. With annotations carrying the safety burden the bar is lower, but the description contributes zero extra behavior.

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

Conciseness2/5

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

The three-word fragment is not concise so much as under-specified; it is front-loaded but contains no informational payload. As with a bare single-word description, brevity here reflects omission rather than efficiency.

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

Completeness2/5

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

For a destructive mutation tool with no output schema, the definition omits effect scope, recoverability, and permission requirements. The annotations cover the destructive flag, but an agent still lacks the context needed to call this safely, and the low parameter count does not excuse the gap.

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 both parameters (id, entity) are documented in the schema itself. The description adds no syntax, format, or scoping detail beyond that, which lands squarely on the baseline of 3 for a fully covered schema.

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

Purpose2/5

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

The description "Delete a record" essentially restates the tool name (data_delete) and title (Data: delete) with a generic resource noun. It gives no way to distinguish this from the many sibling delete tools (entities_delete, fields_delete, files_delete, secrets_delete, users_delete) or from data_get/data_create/data_update. This is tautological rather than differentiating.

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

Usage Guidelines1/5

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

There is no when-to-use guidance, no prerequisites, no exclusions, and no mention of any alternative tool. An agent cannot infer from the text when data_delete is the right choice versus entities_delete or files_delete.

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

data_getData: getB
Read-only
Inspect

Get a single record by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRecord ID
entityYesEntity name

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds no further behavioral details—such as permissions, error behavior when the ID is absent, or pagination—so it remains minimum viable without contradicting annotations.

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?

It is a single front-loaded sentence with no filler, which is appropriately brief for a simple lookup. It wastes nothing, though it is so terse that structure adds little beyond brevity.

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?

For a two-parameter read tool with a fully documented schema, the description is serviceable but leaves the required entity argument entirely to the schema and gives no routing hints among sibling data_* tools. It is minimally complete, not comprehensive.

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 both 'entity' and 'id' are documented in the schema. The description only alludes to the ID parameter and does not add meaning beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('single record') plus scoping ('by ID'), which is clear. It doesn't explicitly name the required 'entity' parameter or distinguish itself from data_list/search_query, so sibling differentiation is only implied.

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

Usage Guidelines2/5

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

There is no guidance on when to use this instead of data_list, data_create, or data_update, nor any prerequisites. The 'by ID' clause implies a known ID is needed, but that is the extent of usage context.

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

data_listData: listC
Read-only
Inspect

List records in an entity

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoStream all pages to stdout as sequential JSON objects (requires --json). Each object contains one page of results.
pageNoPage number (default: 1)
limitNoRecords per page (default: 20)
entityYesEntity name
filterNoField filters: JSON like {"status":"draft","price":{"gte":10}} or field=value pairs like 'status=draft&price=GTE:10'

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds nothing further – no mention of pagination defaults, the streaming 'all' behavior, or filter semantics, despite these being non-obvious traits of the tool.

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

Conciseness3/5

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

The single phrase is front-loaded and wastes no words, but for a tool with filtering, pagination, and streaming options it is under-specified rather than genuinely concise. It reads as a title restated rather than a deliberate one-line summary.

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?

With 100% schema coverage and readOnly annotations, the structured fields carry most of the burden and no output schema is needed. The gap is routing: nothing tells the agent how this list operation relates to data_get, search_query, or entities_list, which the description should ideally address.

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 all five parameters (including filter syntax and pagination) are documented in the schema itself. The description only echoes the 'entity' parameter ('in an entity') and adds no syntax or format detail beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

The description states a specific verb ('List') and resource ('records in an entity'), so the operation is immediately understandable. However, it offers no differentiation from sibling read tools like data_get, search_query, or entities_list, leaving the agent to infer scope from the name alone.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives such as data_get (single record) or search_query (filtered queries), nor any stated prerequisites. Usage is only implied by the word 'List'.

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

data_rlsData: rlsC
Destructive
Inspect

View or set RLS (row-level security) user access on a record

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRecord ID
userNoUser ID to grant access to
entityYesEntity name
readonlyNoGrant read-only access (default: full access)

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is partly covered. The description adds only the vague 'view or set' dual-mode and says nothing about what 'set' destroys (existing access grants), whether it replaces or appends, or what the response looks like — a meaningful gap for a tool flagged destructive.

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 short sentence with the resource front-loaded and no filler. Nothing to trim.

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

Completeness2/5

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

For a destructive, dual-mode tool with no output schema and four parameters, the description is too thin: it never explains how view vs set is triggered (presumably the presence of `user`), nor the effect of `readonly`, nor what happens to existing access. An agent would have to guess before invoking a destructive call.

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%, with each of the four parameters (id, user, entity, readonly) fully documented in the schema itself. The description adds no format, default, or interaction detail beyond the schema, so the baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb pair (view/set) and resource (RLS user access) scoped to a record, so it is distinguishable from data_get/data_update siblings. However, the dual-mode 'view or set' is never resolved — the description doesn't say which input selects which mode, leaving the actual operation ambiguous.

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

Usage Guidelines2/5

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

No when-to-use guidance, no conditions, and no reference to alternatives such as data_update or roles_permissions_add. An agent cannot tell from the description whether this is the right tool for granting a user access versus some other permission mechanism.

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

data_updateData: updateC
Destructive
Inspect

Update a record

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRecord ID
dataNoJSON object with fields to update
entityYesEntity name

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=false, so the safety profile is partially covered. The description adds nothing on top: it does not say whether unspecified fields are preserved or cleared, whether the entity must already exist, or what happens on an unknown id — all critical for a destructive mutation.

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

Conciseness2/5

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

Three words with zero waste, but this is under-specification rather than conciseness. Nothing is front-loaded because there is nothing to front-load; the description fails to earn its place by omitting anything actionable.

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

Completeness2/5

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

For a destructive, non-classified mutation tool with no output schema, the description should at least state the replace-vs-merge behavior and failure modes. The annotations cover only the destructive flag, leaving the description materially incomplete for an agent deciding how to build the update payload.

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% (id, entity, data are all documented inline), so the baseline is 3. The description adds no meaning beyond the schema — it does not explain the entity namespace or the JSON field semantics of "data" — but the schema itself carries the parameter documentation adequately.

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

Purpose2/5

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

"Update a record" essentially restates the tool name and title (data_update / "Data: update") without adding scope, entity type, or any distinction from siblings like data_create, data_get, data_delete, or data_list. It is a verb+resource, but so generic that an agent cannot tell what a "record" is here or how this differs from entities_update or fields_update.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no named alternative (e.g., entities_update vs data_update vs fields_update). The only implied usage is the generic CRUD inference that "update" means modify an existing record, which the name already conveyed.

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

docsDocsA
Read-only
Inspect

Print the full CLI reference (markdown or --json for AI/tooling consumption)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that output is a CLI reference in markdown or JSON form, which is useful context, but it discloses little beyond the annotation-covered safety trait.

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 front-loaded sentence with zero filler; the verb and resource come first and the output-format detail follows compactly.

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 simple read-only documentation tool with annotation coverage and no output schema, the description is essentially complete. The only loose end is what the '--json' invocation means for a zero-parameter MCP tool, which is left unexplained.

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 tool takes 0 parameters, so the baseline is 4 and the schema cannot be enriched further. The description mentions a '--json' option that the empty schema does not expose, which is a slight mismatch but does not mislead about any actual parameter.

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

Purpose4/5

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

States a specific verb and resource ('Print the full CLI reference'), so an agent immediately knows the outcome. However, it does not differentiate itself from the sibling 'cli' tool (or 'api'), leaving ambiguity about which reference-listing tool to pick.

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

Usage Guidelines3/5

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

The parenthetical 'markdown or --json for AI/tooling consumption' hints at intended consumption modes, but there is no explicit when-to-use, when-not-to-use, or alternative-tool guidance relative to siblings like 'cli' and 'api'.

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

entities_createEntities: createCInspect

Create a new entity

ParametersJSON Schema
NameRequiredDescriptionDefault
rlsNoEnable row-level security
nameYesEntity name (e.g. 'customers', 'orders')
publicNoMake entity publicly queryable (no auth required)
junctionNoMark as a many-to-many junction table
lock_recordsNoPrevent creation of new records via API

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description adds no behavioral context beyond restating the operation, such as authorization requirements, uniqueness constraints, or side effects of creating an entity.

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 front-loaded sentence with no filler or redundancy. It is appropriately concise for the purpose statement, though its brevity leaves other useful information absent.

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

Completeness2/5

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

For a five-parameter creation tool with no output schema, the description does not explain what an entity is, when to create one, or how it relates to sibling creation tools. Annotations and schema cover safety and parameters, but the description is too thin to ensure correct selection among the many create-like siblings.

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 every parameter is already documented in the input schema. The description adds no parameter-level meaning, which is acceptable at the baseline of 3 when the schema fully does that job.

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

Purpose4/5

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

The description states a clear verb and resource: 'Create a new entity'. This distinguishes it from non-create entity siblings like entities_get or entities_delete, but it does not differentiate it from other create-style tools such as data_create or accounts_create. It is clear but lacks sibling-specific context.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no mention of any related tools. The agent is left to infer usage entirely from the name and schema.

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

entities_deleteEntities: deleteB
Destructive
Inspect

Delete an entity and all its data

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesEntity name to delete

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description usefully adds that all entity data is removed, but it says nothing about irreversibility, required permissions, or confirmation needs. It adds one meaningful detail beyond the annotations, not rich behavioral context.

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 front-loaded sentence with zero filler. For a one-parameter destructive tool, this is appropriately sized and easy to parse.

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 one required parameter, full schema coverage, and annotations carrying the destructive safety signal, the description is largely complete: it states the action and the cascade scope. A brief note on permanence or permissions would make it fully self-sufficient.

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 single parameter has 100% schema description coverage ('Entity name to delete'), so the schema already does the heavy lifting. The description adds no naming format, ID-vs-name distinction, or other parameter nuance beyond the schema.

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

Purpose4/5

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

The description states a specific verb ('Delete') and resource ('an entity') and adds the important scope 'all its data', which separates it from entities_get, entities_update, and entities_create. It does not explicitly route the agent away from siblings like data_delete or fields_delete, so it falls short of a 5.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no exclusions, and no named alternatives. The agent must infer that this tool is for deleting an entity rather than updating, creating, or deleting related resources; the description offers no selection help.

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

entities_getEntities: getC
Read-only
Inspect

Get entity details and fields

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesEntity name

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds only 'details and fields', which hints at the payload but discloses nothing about lookup failure behavior, name matching semantics, or permissions beyond what the annotations already imply.

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?

Six words, front-loaded with the verb and resource, with no filler. It is efficient, though the terseness edges toward under-specification rather than optimal information density.

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?

For a one-parameter read tool with annotations covering safety, this is minimally adequate; there is no output schema, so the description could reasonably note whether the returned fields include related field definitions, but the omission is not fatal.

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?

There is a single required parameter with 100% schema description coverage ('Entity name'), so the schema does the work. The description adds no extra meaning such as accepted name formats or case sensitivity, so the baseline 3 applies.

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

Purpose3/5

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

States a specific verb (get) and resource (entity) plus what is returned (details and fields), which is enough to know it is a single-record read. However, it does not differentiate from close siblings such as entities_list, entities_update, or fields_get, so an agent must inspect the schemas to route correctly.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no named alternative. The description never says to prefer this over entities_list when fetching one known entity, nor what happens when the name does not resolve.

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

entities_listEntities: listB
Read-only
Inspect

List all entities

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The word 'all' adds a small amount of scope information (no filtering applied), but the description says nothing about pagination limits, result size, or ordering, which matters for a list operation.

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?

Three words with zero waste and the scope constraint front-loaded. It is arguably terse for a list tool, but nothing in the sentence is filler or redundant.

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?

For a zero-parameter read tool the definition is nearly complete, but there is no output schema, so the description could reasonably state what is returned (entity identifiers, pagination behavior). That gap keeps it at a minimum-viable level.

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 tool takes zero parameters, so the baseline of 4 applies. There are no parameter semantics for the description to clarify or omit.

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

Purpose4/5

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

The description states a specific verb (list) and resource (entities), and the scope word 'all' distinguishes it from entities_get, which retrieves a single entity. It is clear but offers no further differentiation from siblings such as entities_create/update/delete beyond the verb itself.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus entities_get, entities_list-style searches, or other list siblings, and no mention of prerequisites. The agent must infer usage from the name alone.

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

entities_updateEntities: updateC
Destructive
Inspect

Update entity settings

ParametersJSON Schema
NameRequiredDescriptionDefault
rlsNoEnable/disable row-level security (true/false)
nameYesEntity name to update
publicNoSet public access (true/false)
lock_recordsNoEnable/disable record locking (true/false)

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the agent knows this is a destructive write operation. The description adds no behavioral context beyond that—it does not explain what gets modified, whether changes are reversible, required permissions, or side effects. With annotations covering the safety profile, it still fails to add useful behavioral detail.

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

Conciseness3/5

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

The description is extremely concise, which would normally be positive, but for a destructive 4-parameter update tool the brevity leaves important specification gaps. It is front-loaded but under-specified rather than efficiently scoped.

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

Completeness2/5

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

For a destructive update tool with no output schema, the description should provide more context about what settings are updated, how the required name parameter is used, and any safety or permission implications. Annotations and schema help, but the description itself is too thin to be 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 description coverage is 100%, and the schema itself documents each parameter clearly (rls, name, public, lock_records). The description adds no meaning beyond the schema, so the baseline of 3 is appropriate.

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

Purpose3/5

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

The verb 'update' and resource 'entity' are clear, but 'settings' is vague and does not distinguish this tool from siblings like entities_create, entities_get, or entities_delete. An agent knows it updates entities, but not which settings or how it differs operationally from other entity tools.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as entities_create or entities_delete, nor any prerequisites or exclusions. It states only what the tool does, leaving usage context to inference.

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

fetchFetchC
Destructive
Inspect

Make an authenticated API request to the active project

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoRequest body (JSON string)
pathYesAPI path (e.g. /integrations/definitions/slack)
methodNoHTTP method (default: GET)

TDQS

C2.2/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false and destructiveHint=true, but the description neither confirms nor contradicts this, and it omits crucial context: which HTTP methods are permitted, whether arbitrary paths are allowed, what authentication scopes apply, whether side effects can occur, and whether the tool is rate-limited. For a tool that can mutate the active project, this is a large gap.

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 short sentence, front-loaded and without waste. It is efficient, though its brevity comes at the cost of completeness rather than being optimally informative.

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

Completeness2/5

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

For a destructive, open-ended API request tool with a rich parameter set and no output schema, the description is severely lacking. It should explain the permissible scope (which APIs), method restrictions, authentication behavior, and any safety warnings. With no output schema, the description also fails to indicate the structure of the response.

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 all three parameters (body, path, method) are documented in the schema with examples. The description adds no additional semantics beyond what the schema already provides, so the baseline of 3 is appropriate.

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

Purpose2/5

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

The description states a generic verb-resource pair ("Make an authenticated API request to the active project") but is essentially a raw HTTP escape hatch that could be confused with many siblings like api, cli, or integrations_execute. It does not specify what resources are reachable, what the response looks like, or how it differs from a direct API tool. It restates the tool's nature rather than carving out a distinct purpose.

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

Usage Guidelines1/5

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

There is no when-to-use, when-not-to-use, or alternative guidance. With ~90 siblings including api, cli, and many resource-specific tools, an agent has no way to know whether to call fetch or a dedicated tool. This is a serious omission.

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

fields_addFields: addCInspect

Add a field to an entity

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesField name (snake_case)
typeNoDatabase type: varchar, varchar array, text, integer, integer array, bigint, bigint array, decimal, decimal array, boolean, date, timestamp, jsonb, geo, file, user, one-to-one, one-to-many, many-to-one, many-to-many, dynamic-reference
labelNoHuman-readable label
entityYesEntity name
publicNoMark field as public
targetNoTarget entity name for relationship fields (many-to-one, one-to-many, many-to-many)
uniqueNoEnforce unique constraint
defaultNoDefault value
displayNoDisplay type: input, textarea, rich-text, select, entity-select, radio, country-select, checkbox, short-date, long-date, timestamp, relationship, file, secret, user, jsonb, geo, dynamic-reference
indexedNoAdd database index
optionsNoComma-separated option list for select display, e.g. "Running,Cycling,Rugby". Use label=value to split, e.g. "Running=running,Cycling=cycling"
multipleNoAllow multiple values on a select field
requiredNoMark field as required
on_deleteNoDeletion behavior: CASCADE, SET NULL, SET DEFAULT, RESTRICT (default: CASCADE). Underscores are accepted (SET_NULL, SET_DEFAULT) and normalised.
name_fieldNoSet as name field
searchableNoEnable full-text search on this field
descriptionNoField description

TDQS

C2.6/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the mutation/safety profile is minimally covered. The description adds nothing beyond that: it does not state required permissions, whether field names must be unique, side effects on existing data, or which parameter combinations are valid for relationship fields.

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?

A single short sentence with the verb front-loaded and no filler. It earns its brevity, though the size is arguably too small for a 17-parameter mutation tool rather than an issue of wasted words.

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

Completeness2/5

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

For a tool with 17 parameters, no output schema, and only minimal annotations, the description leaves critical structure unexplained – notably that the chosen type determines which other parameters (target, options, display, on_delete) become relevant. An agent calling this correctly needs far more context than one sentence provides.

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% across all 17 parameters, so the schema already documents types, defaults, and enum-like value lists. The description contributes no additional parameter meaning, which matches the baseline 3 when the schema does the heavy lifting.

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

Purpose3/5

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

"Add a field to an entity" gives a verb (add) and a resource (field), but it is essentially a restatement of the tool name/title "Fields: add" with no clarifying detail. It does not identify what kind of field, what an entity is in this domain, or how it differs from siblings like fields_update, fields_delete, or fields_get beyond the bare verb.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives such as fields_update for modifying an existing field or entities_create for creating the entity first. The agent must infer everything from the verb alone.

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

fields_deleteFields: deleteC
Destructive
Inspect

Delete a field from an entity

ParametersJSON Schema
NameRequiredDescriptionDefault
entityYesEntity name
field_nameYesField name

TDQS

C2.9/5.0
Behavior2/5

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

The annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds only the 'from an entity' scoping and says nothing about permanence, whether stored field values are destroyed, or what permissions are required for a destructive schema change.

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?

A single front-loaded sentence with zero filler, correctly sized for a two-parameter tool. It is arguably over-terse for a destructive operation, but nothing is wasted or buried.

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

Completeness2/5

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

For a destructive schema mutation with no output schema, an agent still lacks the consequences of deletion (data loss, reversibility), any required preconditions, and confirmation of what happens to existing records. The annotations signal destructiveness but the description does not contextualize it.

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% with both required parameters documented ('Entity name', 'Field name'), so the baseline is 3. The description reinforces that field_name is scoped to entity but adds no format, naming-convention, or validation detail beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ('Delete a field') and scopes it with 'from an entity', which implicitly separates it from entities_delete and data_delete. It does not, however, name or differentiate against the close siblings fields_add, fields_update, fields_get, and fields_list, so the agent must infer the routing from the noun alone.

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

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or alternative guidance. An agent is not told when to remove a field versus updating it, nor whether prerequisites (empty field, admin role, schema not in use) apply before deletion.

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

fields_getFields: getB
Read-only
Inspect

Get the full definition of one field (including relationship config)

ParametersJSON Schema
NameRequiredDescriptionDefault
entityYesEntity name
field_nameYesField name

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds one useful content-scope fact, that relationship configuration is included in the returned definition, but says nothing about failure cases (unknown entity/field) or any auth requirements.

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 sentence with zero filler, and the scope-defining phrase ('one field') plus the differentiating detail ('including relationship config') are both front-loaded.

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 simple two-parameter read tool whose schema and annotations are fully populated, the description is adequate; the extra note about relationship config is the main value-add. It would be complete if it hinted at what happens when the field or entity does not exist.

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 two documented string parameters, so the baseline is 3. The description adds no syntax, naming-convention, or format detail for entity or field_name beyond what the schema already states.

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

Purpose4/5

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

States a concrete verb+resource ('Get the full definition of one field') and scopes it to a single field, which implicitly separates it from fields_list. It also flags that the payload includes relationship config, so the agent knows this is the deep-detail read rather than a summary. It stops short of naming siblings explicitly.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as fields_list or entities_get. The agent must infer that 'one field' means use this instead of the list tool.

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

fields_listFields: listC
Read-only
Inspect

List fields on an entity

ParametersJSON Schema
NameRequiredDescriptionDefault
entityYesEntity name

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, covering the safety profile. The description adds nothing beyond that: no return format, pagination behavior, or permission context is provided, so it does not enrich behavioral understanding.

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, front-loaded sentence fragment with zero waste. It is appropriately compact for a trivial read tool, though its extreme brevity leaves no room for any supplementary context.

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?

For a low-complexity, single-parameter list operation with annotations covering safety, the description is minimally adequate. However, with no output schema and no mention of return shape (list of field objects) or pagination, an agent lacks some context it might reasonably need.

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 the single 'entity' parameter is fully documented in the schema. The description adds no syntax, format, or constraint details beyond what the schema already provides; baseline 3 is appropriate.

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

Purpose4/5

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

The description states a clear verb ('List') and resource ('fields') plus scope ('on an entity'), so the core operation is unambiguous. It does not, however, explicitly distinguish itself from close siblings like fields_get or fields_update; the distinction is left to the tool name alone.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as fields_get for a single field or fields_add/update/delete. The only implied usage is the tautological 'list fields when you want to list fields,' which is not actionable routing guidance.

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

fields_updateFields: updateC
Destructive
Inspect

Update properties of an existing field

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoHuman-readable label
entityYesEntity name
publicNoMark field as publicly searchable
defaultNoDefault value
displayNoDisplay type: input, textarea, rich-text, select, entity-select, radio, country-select, checkbox, short-date, long-date, timestamp, relationship, file, secret, user, jsonb, geo, dynamic-reference
indexedNoAdd database index
optionsNoComma-separated option list for select display, e.g. "Running,Cycling,Rugby". Use label=value to split, e.g. "Running=running,Cycling=cycling"
multipleNoAllow multiple values on a select field
requiredNoMark field as required
no_publicNoRemove public searchable flag
field_nameYesField name to update
no_indexedNoRemove database index
searchableNoEnable full-text search on this field
descriptionNoField description
no_multipleNoRestrict to a single value on a select field
no_requiredNoRemove required constraint
no_searchableNoDisable full-text search on this field

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=false. The description adds only that an existing field is updated, with no disclosure of partial-update semantics, side effects, authentication needs, or how conflicting paired flags (public/no_public, indexed/no_indexed) are handled.

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, front-loaded sentence with no wasted words. It is appropriately concise, though its extreme brevity leaves no room for structure around the operation's complexity.

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?

Annotations cover the safety profile and the schema fully documents all parameters, so the description need not repeat those. However, for a 17-parameter destructive mutation, it omits update semantics such as partial updates and how the paired 'no_' flags interact, leaving a clear gap.

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 all 17 parameters are thoroughly documented in the schema. The description adds no additional parameter meaning, making the baseline of 3 appropriate when the schema carries the full burden.

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

Purpose4/5

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

States a specific verb 'Update' and resource 'properties of an existing field'. It distinguishes from sibling operations like fields_add and fields_delete by scoping the action to an existing field, though it does not explicitly name those alternatives.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as fields_add, fields_delete, or fields_get. There are no prerequisites, exclusions, or conditions for use.

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

files_deleteFiles: deleteC
Destructive
Inspect

Delete a file by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFile ID to delete

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the dangerous nature is conveyed structurally. The description adds nothing beyond that — no statement about irreversibility, whether deletion is soft or hard, or what happens to referencing entities.

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?

One short, front-loaded sentence with zero padding or redundancy. It is appropriately terse for a single-parameter tool, though the brevity borders on under-specification for a destructive operation.

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

Completeness2/5

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

For a destructive, irreversible operation with no output schema, the description omits anything an agent would want before calling it: confirmation requirements, whether deletion cascades, or how the ID is discovered. The annotations cover the safety flag but not the operational consequences.

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 a single parameter that is fully documented ('File ID to delete'), so the schema carries the semantics. The description's 'by ID' adds no format or source detail beyond what the schema states, matching the baseline of 3.

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

Purpose4/5

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

States a specific verb and resource ('Delete a file') plus the keying mechanism ('by ID'), which is unambiguous. It does not distinguish itself from siblings like files_get, files_list, or files_upload, but the operation itself is unmistakable.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus alternatives, no prerequisite conditions, and no mention of how to obtain the ID (e.g., via files_list or files_get). The agent must infer the full workflow from sibling names.

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

files_getFiles: getB
Read-only
Inspect

Get file metadata by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFile ID

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that the operation returns metadata (rather than file content), which is useful context beyond annotations, but it does not describe error handling, authentication requirements, or return format details.

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 six-word sentence, front-loaded with the verb and resource. Every word earns its place; there is no redundancy or filler.

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 is simple and the input schema is fully documented, but there is no output schema. The description does not explain what metadata fields are returned or how errors are handled, leaving the agent to guess the response shape. Adequate but with a clear gap.

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 single parameter 'id' is documented as 'File ID'. The description's 'by ID' adds no syntax or format detail beyond what the schema provides. Baseline 3 is correct when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('file metadata') with a scoping qualifier ('by ID'), making it distinct from sibling operations like files_list, files_upload, and files_delete. However, it does not explicitly name any sibling or state what the tool is not, so it falls short of a 5.

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

Usage Guidelines2/5

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

No when-to-use guidance, alternatives, or prerequisites are provided. The description only states the action, leaving the agent to infer that it should be used when a file ID is known, with no explicit routing to or away from sibling tools.

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

files_listFiles: listB
Read-only
Inspect

List uploaded files

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
limitNoItems per page (default: 25)

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond that — no mention of pagination behavior, ordering, or what fields appear in the returned file records.

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 three-word phrase with zero wasted words and the verb front-loaded. Nothing to trim; fully efficient for what it attempts to convey.

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?

For a simple paginated list tool with fully documented params and safety annotations, the description is barely sufficient. It omits pagination awareness and any distinction from the other files_* siblings, leaving gaps an agent would have to resolve from the schema alone.

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% with two optional pagination parameters (page, limit) already documented with defaults, so the schema carries the parameter burden. The description adds no format, range, or semantics beyond what the schema provides, matching the baseline 3.

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

Purpose4/5

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

States a clear verb (list) and resource (uploaded files), so the agent knows the operation. However, it does not differentiate from siblings like files_get or files_delete, nor does it describe scope (all files? paginated set?), which keeps it below a 5.

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

Usage Guidelines2/5

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

No indication of when to use this versus files_get, files_delete, or files_upload. There is no conditional guidance, no prerequisites, and no alternatives named, which is the minimum bar for a 3.

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

files_uploadFiles: uploadCInspect

Upload a file

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file to upload
publicNoMake the file publicly accessible (default: false)

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is partially covered. The description adds nothing beyond that: it does not disclose overwrite behavior, auth requirements, size limits, or what the 'public' flag implies at runtime.

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

Conciseness3/5

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

The single sentence is front-loaded and waste-free, which is good, but it is so terse that it functions more as under-specification than true conciseness.

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?

For a low-complexity two-parameter upload tool with full schema coverage and annotations covering safety, the description is minimally adequate. It omits any note on overwrite semantics, return value, or the public-accessibility side effect, which would be useful even without an output schema.

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 only two documented parameters, so the schema carries full parameter meaning. The description adds nothing about the 'path' format or the effect of setting 'public', so the baseline 3 applies.

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

Purpose3/5

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

The description states a clear verb+resource ('Upload a file'), so an agent understands the action. However, it essentially restates the tool name/title and offers no differentiation from siblings like files_get, files_list, or files_delete.

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

Usage Guidelines2/5

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

There is no guidance on when to use upload versus other files_* tools, nor any prerequisite or context. The operation is relatively unambiguous, but the description provides zero when-to-use direction or alternatives.

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

integrations_connectIntegrations: connectAInspect

Connect to a provider with an API key (prompts for the key if not given)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFriendly name for this connection (default: "<provider> connection")
api_keyNoAPI key for the provider. If omitted, you'll be prompted (input is hidden).
providerYesProvider key (e.g. claude, openai)
user_connectionNoMake this a user-scoped connection (only the current user sees it). Default: tenant-wide.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the agent knows this is a non-destructive creation call. The description adds genuinely useful behavior — that omission of api_key triggers a hidden-input prompt — but says nothing about the resulting connection's lifecycle, whether it is validated (integrations_test exists for that), or tenant-vs-user visibility beyond what the schema states.

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 front-loaded sentence with zero filler; the credential mechanism leads and the fallback behavior is parenthetically subordinate. Nothing is wasted and nothing important is buried.

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?

For a 4-parameter write tool with no output schema, the annotations plus schema carry most of the burden, and the description covers the interactive prompt edge case. It is still thin on post-call expectations — whether the connection is immediately usable or needs integrations_test/enable — which an agent staging a multi-step integration setup would want.

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 all four parameters (provider, api_key, name, user_connection) are already fully documented in the schema. The description restates the API-key parameter and its prompt fallback but adds no syntax, format, or default detail beyond what the schema provides. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb (connect) and resource (provider) plus the credential mechanism (API key), which an agent can act on immediately. It does not, however, name the sibling it differs from — integrations_oauth_connect and integrations_oauth_callback_url sit right next to it in the list, and the phrase 'with an API key' only implicitly separates the two flows.

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

Usage Guidelines3/5

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

The parenthetical hints at the interaction model when no key is supplied, which is useful context, but there is no explicit when/when-not guidance and no routing to the OAuth-based connect tools. Usage is only inferable from the word 'API key'.

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

integrations_connections_listIntegrations: connections listC
Read-only
Inspect

List your integration connections

ParametersJSON Schema
NameRequiredDescriptionDefault
providerNoFilter to a specific provider

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond that: no note on scoping (own account vs. workspace), result volume, or pagination for a list operation.

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?

A single short sentence, front-loaded with the verb. It is efficient, though it is terse to the point of omitting information an agent would want.

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?

For a simple parameterless-required list tool with annotations covering safety and a fully documented schema, the description is minimally adequate. It still leaves return shape and filter behavior unaddressed, which matters since there is no output schema.

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 single parameter's meaning ("Filter to a specific provider") is already documented in the schema. The description adds no syntax, format, or behavioral detail about the filter, so baseline 3 applies.

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

Purpose4/5

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

States a clear verb and resource ("List your integration connections"), so the agent knows this is a read of connection records. However, it does not distinguish itself from the many integration siblings (integrations_list, integrations_get, integrations_connect), nor explain what a "connection" is versus an integration.

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

Usage Guidelines2/5

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

No when-to-use guidance, no conditions for choosing this over integrations_get or integrations_list, and no mention of the provider filter's role in selecting this tool. Usage must be entirely inferred from the name.

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

integrations_disableIntegrations: disableCInspect

Disable a connection

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_idYesConnection ID

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is covered by structured data. The description adds nothing on top of that: it does not say whether disabling is reversible, whether in-flight workflows or credentials are affected, or what permissions are required. With the lower bar set by annotations, a description that contributes zero extra behavioral context earns a low score.

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

Conciseness3/5

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

Three words are perfectly front-loaded and free of filler, but for a state-mutating tool this brevity crosses from concise into under-specified. The structure is clean; the size is arguably too small to carry the tool's weight.

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

Completeness2/5

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

This is a mutation tool with no output schema and no annotation coverage of effects, so the description carries the burden of explaining consequences. It omits what disabling actually does, whether it can be undone, and how it differs from disconnect, leaving the agent with an incomplete picture for a non-read 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?

There is a single parameter, connection_id, and schema description coverage is 100%, so the schema fully documents the input. The description adds no format, sourcing, or lookup guidance beyond that, which matches the baseline 3 when the schema does the heavy lifting.

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

Purpose4/5

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

The description names a specific verb ('disable') and resource ('a connection'), so the action is unambiguous at a glance. It does not, however, differentiate itself from close siblings such as integrations_enable, integrations_disconnect, or integrations_connect, and it uses 'connection' where the tool name uses 'integrations'.

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

Usage Guidelines2/5

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

There is no guidance on when to disable versus when to use integrations_disconnect or integrations_enable, both of which sit in the same sibling set. The agent is left to infer the distinction with no exclusions or prerequisites stated.

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

integrations_disconnectIntegrations: disconnectC
Destructive
Inspect

Delete a connection

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_idYesConnection ID to delete

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive profile is covered. The description adds nothing beyond that structured data: no statement of reversibility, no indication of what is torn down (credentials, tokens, history), and no auth requirements.

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

Conciseness3/5

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

It is short and front-loaded with the action, which is good. But at three words it reads as under-specification rather than earned conciseness; there was room for a clause identifying the target and any caveats without bloat.

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

Completeness2/5

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

For a destructive, no-undo tool with no output schema, the description leaves out anything an agent needs beyond the bare action: irreversibility, side effects, prerequisites, or error conditions. Annotations carry the safety hint, but the description is too thin to be 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?

There is exactly one parameter (connection_id) with 100% schema description coverage, which already documents its meaning. The description adds no additional semantic detail, so the baseline of 3 for high-coverage schemas applies.

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

Purpose3/5

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

The description states a verb (delete) and resource (connection), so the core action is legible. However, it is only three words, and the operation is named 'disconnect' in both the tool name and title while the description says 'delete', leaving mild ambiguity about whether the connection is permanently removed or merely unlinked. It also does not distinguish itself from siblings like integrations_disable.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no naming of alternatives. Given a dense sibling set (integrations_connect, integrations_disable, integrations_connections_list), the description should indicate when disconnecting/deleting a connection is the right call versus disabling it. Nothing is offered.

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

integrations_enableIntegrations: enableCInspect

Enable a connection

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_idYesConnection ID

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare this is a non-read-only, non-destructive, closed-world operation, so the safety profile is covered. The description adds nothing on top: it does not say whether enabling is idempotent, what state change occurs, or what happens to a previously disabled connection.

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

Conciseness3/5

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

The two-word phrasing is maximally concise and front-loaded, but at this length it is under-specified rather than efficient — it omits context an agent needs for a mutation call.

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

Completeness2/5

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

For a state-changing tool with no output schema, the description should at least say what enabling affects and how it relates to disable/connect. None of that is present, leaving the definition inadequate for correct invocation beyond the bare schema.

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?

With a single parameter at 100% schema description coverage, the schema already documents connection_id, so the baseline is 3. The description contributes no additional meaning, such as where the connection_id comes from (e.g., integrations_connections_list) or its format.

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

Purpose3/5

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

"Enable a connection" gives a clear verb and an object, so the basic action is identifiable. However, it never clarifies that "connection" means an integration connection, nor does it distinguish itself from siblings like integrations_connect, integrations_disconnect, or integrations_disable.

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

Usage Guidelines2/5

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

No when-to-use guidance is given. The obvious routing question — when to enable versus connect or disconnect a connection — is left entirely to inference, and the natural counterpart tool integrations_disable is never mentioned.

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

integrations_executeIntegrations: executeCInspect

Run an operation on a connected provider

ParametersJSON Schema
NameRequiredDescriptionDefault
inputNoInput parameter as key=value. Repeatable.
inputsNoInputs as a JSON object, e.g. '{"prompt":"hello"}'
providerYesProvider key
operationYesOperation key (see 'integrations get <provider>')

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that: it does not say the call may perform arbitrary provider-side actions, that results depend entirely on the provider/operation keys, or how failures surface.

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

Conciseness3/5

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

The single sentence is front-loaded and waste-free, but its brevity reflects under-specification rather than disciplined conciseness given the tool's open-world, operation-driven nature.

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

Completeness2/5

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

For an open-world execution tool with no output schema and 4 parameters, the description omits return shape, error behavior, and how to discover valid providers/operations. An agent cannot confidently call this without consulting sibling tools for context.

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 all four parameters are already documented in the schema, including the note that operation keys come from 'integrations get <provider>'. The description supplies no additional meaning, which is the baseline-3 case when the schema does the heavy lifting.

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

Purpose3/5

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

The description states a verb ('Run') and an object ('an operation on a connected provider'), so the general purpose is inferable. However, it gives no sibling differentiation against integrations_test, integrations_get, integrations_connect, or integrations_disable, all of which sound equally plausible for a similar request.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no routing to alternatives such as integrations_test or integrations_get. The only procedural hint ('see integrations get <provider>') lives in the schema, not the description.

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

integrations_getIntegrations: getB
Read-only
Inspect

Show details and operations for one provider

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYesIntegration provider key (e.g. claude, slack, hubspot)

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered structurally. The description adds the useful detail that the response includes supported operations, not just metadata, but says nothing about what those operations are or how the result is shaped.

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?

One tight sentence with no filler, and the resource scope is front-loaded. It is arguably too terse to carry much value, but nothing is wasted.

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?

For a single-parameter read tool with full schema coverage and read-only annotations, the description is minimally sufficient. It still leaves the agent guessing how this differs from integrations_list and what 'operations' contains, which matters in a sibling set this crowded.

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 schema documents the sole 'provider' parameter at 100% coverage with examples (claude, slack, hubspot). The description's 'one provider' phrasing reinforces the single-provider intent but adds no format or lookup semantics beyond the schema.

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

Purpose4/5

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

States a specific verb+resource: 'Show details and operations for one provider', which clearly frames this as a single-provider fetch. It does not explicitly distinguish itself from near siblings like integrations_list or integrations_execute, but the 'one provider' scope is unambiguous.

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

Usage Guidelines2/5

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

No guidance on when to use this versus integrations_list, integrations_connections_list, integrations_execute, or the various integrations_oauth_* tools in the sibling set. The agent must infer that this is the detail-fetch for a single provider with no stated prerequisites.

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

integrations_listIntegrations: listA
Read-only
Inspect

List available integration providers

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds the 'providers' scope but says nothing about return shape or ordering, so it adds only modest value beyond the structured fields.

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 four-word sentence with no waste, and the resource is front-loaded. Nothing redundant is included.

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?

For a trivial zero-param list tool this is minimally adequate, but with no output schema the description could clarify what a 'provider' entry contains or distinguish its result set from connection listings. It leaves that to inference.

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 tool takes zero parameters, so per the rubric the baseline is 4; there is no parameter meaning for the description to supply or omit.

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

Purpose4/5

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

States a specific verb (List) and resource (integration providers), and the qualifier 'available' usefully separates this catalog-style tool from connection-oriented siblings like integrations_connections_list. However, it does not explicitly name or contrast with those siblings, so an agent must infer the distinction.

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

Usage Guidelines3/5

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

Usage is only implied by the word 'available' (providers vs. configured connections). There is no explicit when-to-use or when-not guidance relative to the many integration siblings (integrations_connections_list, integrations_get, integrations_connect).

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

integrations_oauth_callback_urlIntegrations: oauth callback urlA
Read-only
Inspect

Print the redirect URL to add to OAuth app configurations (same for every provider)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds a genuinely useful behavioral fact beyond the annotations: the returned URL is identical across all providers, which prevents redundant per-provider calls.

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 well-formed sentence with the action front-loaded and no wasted words. Ideal size for a trivial zero-arg utility.

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 zero-parameter, read-only utility with no output schema, the description tells the agent what is produced (a redirect URL) and that it is provider-independent. Lacking only an explicit pointer to where this fits in the OAuth setup flow.

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 tool takes zero parameters and the schema is empty with additionalProperties=false, so there is nothing for the description to document. Per the zero-parameter baseline, this is adequate as-is.

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

Purpose4/5

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

States a specific verb and resource ('Print the redirect URL') with a clear purpose (add to OAuth app configurations). The parenthetical '(same for every provider)' distinguishes it from the provider-specific siblings like oauth_google_configure, though it doesn't name the adjacent integrations_oauth_* tools directly.

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

Usage Guidelines3/5

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

The description implies usage ('to add to OAuth app configurations') but gives no explicit when-to-use guidance or routing against the many sibling tools (integrations_oauth_configure, integrations_oauth_connect, integrations_oauth_status). An agent must infer the context.

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

integrations_oauth_configureIntegrations: oauth configureC
Destructive
Inspect

Set the OAuth client ID + secret for a provider

ParametersJSON Schema
NameRequiredDescriptionDefault
disableNoSave the credentials but mark the provider disabled
providerYesProvider key (e.g. slack, google, github)
client_idNoOAuth client ID for this tenant. Prompted if omitted.
client_secretNoOAuth client secret. Prompted (hidden) if omitted.
use_social_sign_inNoAlso expose this provider as a social sign-in option for end users

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, telling the agent this writes/mutates state. The description adds nothing about what gets overwritten (existing credentials for that provider), secret handling, or permission requirements, so it contributes no behavioral context beyond the annotations.

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?

A single short, front-loaded sentence with zero padding. It is efficient, though terse enough that it borders on under-specification rather than ideal conciseness.

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

Completeness2/5

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

This is a destructive 5-parameter mutation with no output schema. The description omits how disable interacts with stored credentials, what happens on reconfiguration of an already-configured provider, and when social sign-in should be enabled — gaps the schema does not close.

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 all five parameters (disable, client_id, client_secret, use_social_sign_in, provider) are documented in the schema. The description only restates client_id/client_secret and adds no syntax, format, or interaction detail, so baseline 3 applies.

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

Purpose4/5

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

Clear specific verb (set) plus resource (OAuth client ID + secret) scoped to a provider. An agent can tell it apart from connect/status/callback_url siblings by the credential-writing action, though the description never names those siblings.

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

Usage Guidelines2/5

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

No when-to-use, prerequisites, or alternatives are stated. The reader must infer from the name alone that this is a setup step preceding integrations_oauth_connect; the description text adds no routing guidance.

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

integrations_oauth_connectIntegrations: oauth connectBInspect

Connect via the browser OAuth flow (starts a local listener)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFriendly name for this connection (default: "<provider> connection")
portNoLocal port for the OAuth callback (default: 8745)
no_openNoDon't try to open the browser automatically — just print the URL
timeoutNoSeconds to wait for the OAuth callback before giving up (default: 300)
providerYesProvider key (e.g. slack, google, github)
user_connectionNoMake this a user-scoped connection (only the current user sees it). Default: tenant-wide.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false), so the lower bar applies. The description usefully adds that the flow is browser-based and starts a local listener — behavior not derivable from the annotations — but omits that the call blocks until the callback or timeout, that the user must complete the login in the browser, and that it persists a new connection. Note that the browser-based external flow sits uneasily with openWorldHint=false, though the description is the accurate party here.

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?

A single front-loaded sentence with the parenthetical carrying the one non-obvious mechanic; nothing is repeated from the title or annotations. It is arguably too thin for a 6-parameter interactive tool, but nothing in it is wasted.

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?

With no output schema, the description is the only place to explain the interactive, blocking nature of the call and its prerequisites, and it doesn't. Annotations cover safety, and the schema covers parameters, so an agent can call it, but it cannot predict that the call waits for user interaction or what state change results.

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 every parameter (port, no_open, timeout, provider, user_connection, name) is documented in the schema itself. The description adds no parameter-level detail beyond implicitly motivating port (local listener) and no_open (browser opening), so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Connect) plus the mechanism and scope (browser OAuth flow, local listener), so the agent knows this initiates an OAuth handshake rather than configuring or checking one. It does not differentiate from close siblings such as integrations_connect or integrations_oauth_configure, which likely connect by other means or set up credentials.

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

Usage Guidelines2/5

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

No when-to-use guidance: nothing says when to prefer this over integrations_connect, integrations_oauth_configure, or integrations_oauth_callback_url, and no prerequisites are stated (e.g. that the OAuth app must be configured first). The only usage hint is implicit in the parameter documentation of the schema, not the description.

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

integrations_oauth_statusIntegrations: oauth statusB
Read-only
Inspect

Show OAuth client setup status for a provider

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYesProvider key (e.g. slack, google, github)

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, covering the safety profile. The description adds no behavioral context beyond repeating that this is a status/show operation, such as authentication requirements, rate limits, or what specifically gets checked or returned.

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, front-loaded sentence with no wasted words. It communicates the core action and scope immediately.

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 simple, single-parameter status tool with full schema coverage and annotations that declare it as a read-only, closed-world operation, the description is mostly sufficient. It could be more complete by clarifying what 'setup status' returns or when to prefer it over related OAuth tools, but no critical call-time information is missing.

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 provider parameter already has an inline description with examples. The phrase 'for a provider' in the tool description adds no meaning beyond what the schema provides, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb (Show) and resource (OAuth client setup status) scoped to a provider, which distinguishes it from configuration/connection siblings like integrations_oauth_configure and integrations_oauth_connect. It does not explicitly name or contrast with alternatives such as oauth_google_status, so sibling differentiation is implicit rather than explicit.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. It omits any mention of when-not to use it, prerequisites, or which sibling tool handles related actions, leaving the agent to infer usage entirely from the name.

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

integrations_testIntegrations: testCInspect

Test a connection

ParametersJSON Schema
NameRequiredDescriptionDefault
connection_idYesConnection ID

TDQS

C2.5/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, but the description adds nothing beyond them. It does not say whether testing performs a live external call, whether it mutates connection state or health status, or whether failures are reported as errors or as a status value.

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

Conciseness3/5

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

The two-word phrase is not padded, but it is under-specified rather than concise: it front-loads nothing useful and leaves no structure for an agent to act on beyond the literal words.

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

Completeness2/5

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

No output schema exists, so the description should explain what the test returns (success/failure, diagnostics, latency); it says nothing. For a tool whose only value is the result of a check, this is a meaningful omission.

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% for the single connection_id parameter, so the schema carries the parameter documentation. The description adds no format, source, or constraint detail (e.g., where to obtain the connection ID), so the baseline of 3 applies.

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

Purpose3/5

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

The description gives a verb and a resource ("Test a connection"), so the general purpose is inferable, but it is vague about what "test" means — credential validation, reachability, latency? It also does not distinguish this tool from siblings such as integrations_connect, integrations_get, or integrations_connections_list.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus alternatives like integrations_get or integrations_connections_list, and no statement of prerequisites (e.g., that the connection must already exist via integrations_connect). The agent is left to infer usage entirely.

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

loginAInspect

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

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses a key trait beyond schema/annotations – that a session token is returned and what it authorizes (account and project management) – which is genuinely useful for chaining calls. It says nothing about token lifetime, failure modes, or rate limiting, leaving meaningful gaps for an auth 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?

Three short sentences, front-loaded with what the tool does, followed by the return value and the sibling route. No padding or restatement.

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?

There is no output schema, so the description correctly steps in to describe the return (a session token and its scope). Combined with the sibling routing it is nearly complete, missing only token lifecycle or error-handling context that an auth entry point would ideally surface.

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?

Both parameters are required and schema description coverage is 100%, so the schema already documents email and password. The description names the same two credentials without adding format, validation, or sourcing detail, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Log in') and resource ('the Anythink platform') plus the credential mechanism (email and password), and explicitly names the login_google alternative. It does not, however, differentiate itself from the near-duplicate siblings login_direct or signup, so an agent must still infer which login variant applies.

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?

Gives an explicit routing rule: 'For Google sign-in, use the login_google tool.' That is a clear when-to-use-the-alternative condition. It stops short of covering the other auth siblings (login_direct, signup, logout) or stating prerequisites such as when this call should be made.

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

login_directAInspect

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.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the key trait that it bypasses billing login and requires pre-existing credentials, but omits where credentials are persisted, whether they overwrite an existing profile, and any security/expiry considerations.

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 tight sentences, front-loaded with what the tool does followed by when to use it. No filler or redundancy.

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?

For a 5-parameter authentication tool with no annotations and no output schema, the description is adequate but incomplete: it never explains what the call returns (e.g., a session token or stored profile confirmation) or the role of the profile/baseUrl parameters.

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 the schema already documents all five parameters with descriptions. The description only gestures at orgId, token, and apiKey and adds no format or override semantics, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Store credentials directly for a project') and clarifies the mechanism ('bypasses billing login'), which helps separate it from the 'login' and 'login_google' siblings. It does not explicitly name those siblings, so a 5 is not warranted.

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?

Provides an explicit when-to-use condition: 'when you already have an org ID and API key or JWT token.' This gives clear context for selecting the tool, though it stops short of naming the alternative (e.g., 'otherwise use login') or stating exclusions.

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

login_googleAInspect

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.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the interactive browser step, that the user must complete it, that a session token is stored afterward, and the stdio-only environment constraint. It stops short of token lifetime, failure/retry behavior, or what happens if the user denies consent, which are meaningful gaps for an auth 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?

Four tight sentences, front-loaded with the core action, then the mechanism, then the scope boundary, then the environment constraint. No sentence is filler.

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?

No parameters and no output schema, so the description must carry everything — and it does: mechanism, user responsibility, post-call sequencing, and transport limitation. An agent has what it needs to call it correctly.

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 tool takes zero parameters, so there is nothing to disambiguate and the baseline is 4. The description adds no parameter detail because none is needed.

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?

States a specific verb and resource ('Sign in to the Anythink platform with Google') and immediately differentiates itself from the sibling login variants by describing the browser consent flow specifically. An agent can tell this apart from login_direct or oauth_google_configure without opening another schema.

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?

Gives explicit when-to-use context (interactive Google sign-in), explicit exclusions ('does NOT pick a billing account or project'), and the exact follow-on call sequence ('accounts_list' then 'accounts_use', 'projects_list' then 'projects_use'). It also states an environment precondition: works only over stdio, not the hosted HTTP server.

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

logoutAInspect

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.1/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well, disclosing exactly what is destroyed (the locally stored profile) and explicitly what is NOT affected (server-side token not revoked, project unaffected). This is precisely the mutation context an agent needs before invoking.

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?

Three sentences, front-loaded with purpose, then usage, then the practical note on finding profile names. Every sentence earns its place with no padding.

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?

For a one-parameter tool with no annotations and no output schema, the description is complete: it covers purpose, effect, non-effects, and how to discover profile names. Nothing an agent needs to call it correctly is missing.

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% and the single parameter's description already documents the default-to-active behavior and the config_show reference. The description's 'omit the profile to remove the currently active one' essentially restates the schema default, adding no new syntax or meaning.

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

Purpose4/5

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

States a specific verb and resource ('Remove the saved credentials for a project profile from local CLI config'), so the agent knows exactly what it does. It is distinguishable from login, but the sibling config_remove is never referenced, leaving potential overlap unexplained.

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?

Gives clear when-to-use context ('disconnect from a project or clear a stale token') and a when-not caveat (does not revoke server-side). It also points to config_show for profile names, though it never contrasts with the closely related config_remove sibling.

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

oauth_google_configureOauth: google configureC
Destructive
Inspect

Set Google OAuth client ID and secret

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, which is consistent with 'Set.' The description adds nothing beyond that: it does not warn that existing credentials are overwritten, nor mention where the client ID/secret come from or whether admin rights are needed.

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?

A single short sentence with the action and object front-loaded and no filler. Brevity here is efficient, though it verges on under-specification rather than over-trimming.

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

Completeness2/5

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

For a destructive mutation (per annotations) with no parameters and no output schema, the description should explain how credentials are provided and what state is replaced. As written, an agent cannot reliably call it correctly.

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 schema declares zero properties, so the baseline would be 4, but the description implies two required inputs (client ID and secret) that appear nowhere in the schema, leaving the agent unclear whether they are supplied by env vars, prior config, or a prompt.

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

Purpose4/5

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

States a specific verb and resource ('Set Google OAuth client ID and secret'), so an agent knows this configures Google OAuth credentials. However, it does not distinguish itself from close siblings such as integrations_oauth_configure or oauth_google_status, which an agent must choose between.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisite (e.g. an existing Google Cloud OAuth app), and no pointer to the status sibling for verification. The agent must infer everything from the name.

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

oauth_google_statusOauth: google statusB
Read-only
Inspect

Show Google OAuth configuration status

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, and 'Show' merely restates that read-only profile. The description adds nothing about what the status contains, whether authentication is required, or what a missing configuration returns.

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?

A single front-loaded sentence with no waste. It is minimal but not padded, though the brevity contributes to the missing usage and behavioral context.

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?

For a zero-param read tool with annotations covering safety and no output schema, the definition is barely adequate. It never tells the agent what the status response indicates (configured vs. not, scopes, expiry), which is the primary reason to call it.

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 tool takes zero parameters, so there is no parameter semantics for the description to carry; baseline 4 applies.

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

Purpose4/5

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

States a specific verb ('Show') and resource ('Google OAuth configuration status'), so the agent knows this is a read of OAuth setup state. It does not, however, distinguish itself from close siblings like oauth_google_configure or integrations_oauth_status, leaving the agent to infer the boundary.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus oauth_google_configure (to set it up) or integrations_oauth_status (integration-level status). Usage is only implied by the word 'status'.

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

pay_connectPay: connectAInspect

Set up a Stripe Connect account and start onboarding

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, non-destructive mutation that is not open-world, so the safety profile is partly covered. The description adds that this creates an external Stripe Connect account and kicks off an onboarding flow, but omits whether it returns a redirect/onboarding URL, whether it is idempotent, or what auth is required.

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?

A single nine-word sentence with the core action front-loaded and no filler. It is efficient, though it is lean enough that a little more specificity could have been added without bloating it.

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?

With no output schema and minimal annotations, the agent is left guessing what the call returns (e.g., an onboarding URL) and what user action follows. For a side-effecting setup tool that begins a multi-step flow, the description stops at the minimum viable level.

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 tool takes zero parameters, and the description correctly implies that setup requires no caller-supplied input. Per the rubric, a 0-parameter tool takes the baseline of 4.

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

Purpose4/5

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

States a specific verb+resource+action: setting up a Stripe Connect account and starting onboarding. An agent can tell this is the account-provisioning entry point, though it does not explicitly contrast itself with the pay_status / pay_payments / pay_methods siblings.

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

Usage Guidelines3/5

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

'Start onboarding' implies this is the first step in a sequence, which gives implied usage guidance. However, there is no explicit when-to-use vs alternatives (e.g., check pay_status first, or don't call if an account already exists) and no stated prerequisites.

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

pay_methodsPay: methodsB
Read-only
Inspect

List saved payment methods

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds nothing further: no note on whether results are paginated, scoped to the current user, or limited in count, which is the kind of context that would earn credit here.

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?

A single front-loaded clause with zero filler, which is appropriate for a trivial listing tool. It is terse to the point of leaving obvious questions unanswered, but it wastes no words.

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?

For a no-parameter read-only lister with annotations covering safety, the description is minimally sufficient. It still omits any indication of result shape or scope, which would matter for an agent deciding between the several payment-related siblings.

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 tool takes zero parameters, so the schema has nothing to document and the description needs to add no parameter detail. Baseline 4 applies for a no-param tool.

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

Purpose4/5

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

States a specific verb ('List') and resource ('saved payment methods'), so the operation is unambiguous. It does not, however, distinguish itself from close siblings like pay_payments, pay_status, or accounts_list, which an agent must disambiguate by guessing.

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

Usage Guidelines2/5

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

No guidance on when to call this versus pay_payments or pay_status, and no prerequisites or context are given. The agent is left to infer usage entirely from the name.

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

pay_paymentsPay: paymentsC
Read-only
Inspect

List recent payments

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
limitNoItems per page (default: 25)

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, covering the safety profile. The description adds nothing beyond that — it does not disclose ordering, what 'recent' means, pagination behavior, or result counts, despite page/limit parameters existing.

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?

A single three-word sentence with zero wasted language, and the core action is front-loaded. It is efficient but borders on under-specification rather than true crispness.

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

Completeness2/5

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

There is no output schema and the description does not explain return shape, sort order, default range, or how pagination terminates. For a listing tool with optional paging, these gaps leave the agent guessing about what it will actually get back.

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 both page and limit are already fully documented in the schema. The description contributes no additional parameter meaning, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (List) and resource (payments), so the agent knows this is a read/list operation. However, it offers no differentiation from siblings such as pay_status or pay_methods, and 'recent' is left undefined as a scope.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no exclusion criteria, and no mention of the sibling tools (pay_status, pay_methods) that an agent might confuse this with. The agent must infer usage entirely from the name.

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

pay_statusPay: statusB
Read-only
Inspect

Show Stripe Connect account status

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds nothing behavioral beyond that: it does not say what the status reflects, whether it requires an existing Connect account, or what happens if none exists. It essentially restates the title.

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?

A single short sentence with no filler, and the resource is front-loaded after the verb. Nothing is wasted, though it is arguably under-specified rather than deliberately terse.

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?

There is no output schema, so the description carries the burden of conveying what comes back, and it does not: 'status' could mean onboarding state, capabilities, charges/payouts enabled, or balance. For a zero-param read tool this is minimal but survivable, leaving a clear gap.

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 tool takes zero parameters, so the schema baseline of 4 applies. The description does not need to explain parameter meaning, though it also does not clarify that the account is inferred from the calling context rather than passed in.

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

Purpose4/5

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

The description gives a specific verb and resource: 'Show Stripe Connect account status'. That is far more informative than the title 'Pay: status' and lets an agent distinguish it from pay_payments and pay_methods. It does not explicitly contrast itself with pay_connect, but the read-vs-configure split is reasonably inferable.

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

Usage Guidelines2/5

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

No when-to-use guidance is offered. The description never says whether this must be called before pay_payments, whether a connected account is required first via pay_connect, or what condition makes an agent reach for this tool. The read-only intent is left to inference.

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

projects_createAInspect

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.7/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so well: it discloses asynchronous execution, the intermediate Provisioning state, the required billing/auth preconditions, the returned fields (id, name, org id, API URL), and the follow-up steps. This is behavior an agent could not infer from the schema alone.

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 tight sentences, front-loaded with the action and scope, then prerequisites, then async behavior and follow-ups. No filler or repetition of the schema.

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?

For a mutation with no output schema, the description fully covers what is required, what happens during execution, what is returned, and what to do next. Nothing essential for calling it correctly is missing.

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 every parameter is already documented, including the region default, the accountId fallback to the active account, and planId's role in tier/pricing. The description adds little parameter-level meaning beyond restating the billing-account prerequisite, so the baseline of 3 applies.

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?

States a precise verb+resource ('Provision a new project') and immediately defines what a project is: a dedicated, isolated Anythink backend instance with its own database, API, auth, and storage. This clearly separates it from siblings 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 Guidelines5/5

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

Gives explicit prerequisites (platform login, active billing account set via 'accounts_use') and explicitly routes to alternatives: poll 'projects_list' until Active, then connect with 'projects_use'. The when-to-use contract is fully specified rather than implied.

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

projects_deleteAInspect

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.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full load and does so well: it declares irreversibility, enumerates what is destroyed, notes the billing-account dependency, and even describes the success return shape. Nothing important about the operation's behavior is left implicit.

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 the destructive nature, then preconditions, then return value. Every clause adds actionable information with no filler.

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?

Despite having no output schema and no annotations, the description covers destructiveness, prerequisites, safer-invocation advice, and even the return payload for a two-parameter tool. An agent has everything needed to call it correctly and safely.

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 already 100%, so baseline is 3. The description adds marginal value by restating the prefix-matching hazard and framing the id as the safer selector, but the per-parameter meaning (UUID vs name vs prefix, accountId default) largely duplicates the schema descriptions.

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?

Opens with a specific verb and resource ('Permanently delete a project') and immediately scopes it by naming the collateral resources torn down (backend instance, database, stored data). Easily distinguished from siblings projects_list, projects_create, 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?

States the precondition (requires an active billing account, set via 'accounts_use'), the confirmation requirement ('always confirm with the user first'), and the alternative matching strategy (specific id over short prefix). This is explicit when/when-not guidance an agent can act on without inference.

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

projects_listAInspect

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.4/5.0
Behavior4/5

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

No annotations are present, so the description carries the full behavioral burden; it discloses auth requirements, the active-account dependency, and the exact shape of the returned record including the full status enum. It still omits pagination/result-limit behavior and failure modes for missing auth, which keeps it short of a 5.

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, each load-bearing: scope, prerequisites, return fields, then routing to sibling tools. The prerequisite and return-value information is front-loaded where an agent will see it first.

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?

With no output schema, the description correctly enumerates the returned fields so the agent knows what to expect, and it covers the auth/account prerequisites. It is nearly complete for a one-parameter list tool; only pagination or result-limit behavior is unaddressed.

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 single optional accountId parameter is already documented in the schema, including the default-to-active-account behavior. The description repeats the account scoping but adds no format, syntax, or edge-case detail beyond it, so the baseline of 3 applies.

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?

States a specific verb ('List') plus resource ('the projects (provisioned backend instances) in a billing account'), and the parenthetical disambiguates the domain-specific meaning of 'project'. An agent can distinguish it from projects_create, projects_use and projects_delete without opening any schema.

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 names prerequisites (platform login, an active billing account set via 'accounts_use') and states the intended use case: finding a project's id before calling 'projects_use' or 'projects_delete'. Alternatives and the condition that selects them are both given.

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

projects_useAInspect

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?

With no annotations, the description carries the full burden and does well: it discloses the resolution-then-store flow, the apiKey vs automatic transfer-token exchange behavior, and the persistent side effect of saving active-profile credentials. It omits what happens to a previously active profile on overwrite and error modes, keeping it shy of a 5.

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 tight sentences, front-loaded with purpose and effect, followed by mechanism, prerequisites, and return values. Every sentence carries distinct information 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?

There is no output schema, and the description compensates by naming the returned fields (profile name, org id, API URL, auth method). Combined with the stated prerequisites and credential flow, an agent has enough to invoke it correctly, though overwrite/error behavior is unaddressed.

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 the schema already documents id (name/org id/UUID prefix), the optional ak_... apiKey, and the accountId default. The description restates the apiKey exchange semantics without adding new syntax or format detail, so the baseline 3 applies.

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?

States a specific verb+resource ('Connect to a project and save it as the active profile') and clarifies downstream effect on the 'cli' tool's data, entities, and users commands. This clearly separates it from sibling tools like projects_list, projects_create, and accounts_use.

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?

Gives explicit prerequisites — an active billing account (pointing to accounts_use) and an Active project (pointing to projects_list) — which routes the agent to the right siblings for setup. It doesn't state an explicit 'when not to use this' condition, but the context is clear.

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

roles_createRoles: createCInspect

Create a new role

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesRole name
descriptionNoOptional description

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, covering the safety profile. The description adds nothing beyond them: no note on required permissions, whether duplicate role names are rejected, what happens to permissions on the new role, or what the call returns.

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?

A single four-word phrase, fully front-loaded with no filler. It earns credit for efficiency, though it sits close to the line where brevity becomes under-specification.

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?

Annotations cover the safety profile, the schema fully documents both parameters, and there is no output schema to explain, so the gaps are modest. Still, a creation tool that never mentions name-uniqueness behavior or permission requirements leaves the agent with open questions.

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% with only two parameters, both documented in the schema ('Role name', 'Optional description'). The description adds no extra meaning such as naming constraints, uniqueness rules, or format expectations, so the baseline 3 applies.

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

Purpose4/5

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

The description gives a clear verb+resource ('Create a new role') that unambiguously matches the tool name and cannot be confused with write siblings like roles_delete or roles_permissions_add. It stops short of differentiating itself from any sibling or scoping what a role contains, so it is clear but minimal.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool, what prerequisites must exist (e.g. whether related roles/permissions tooling must run first), or when an alternative such as roles_permissions_add is the right choice. The agent must infer usage entirely from the name.

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

roles_deleteRoles: deleteB
Destructive
Inspect

Delete a role by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRole ID to delete

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered by structured data. The description adds nothing beyond that — no note that deletion is permanent, whether it cascades to role permissions, or whether an error occurs if the role is in use.

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 six-word sentence that front-loads the action and resource with zero filler. Nothing is redundant or padded.

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?

For a one-parameter destructive tool whose annotations cover the safety profile, the essentials are present, but with no output schema the agent has no idea whether anything is returned (e.g. the deleted record or a confirmation). Mentioning irreversibility and expected result would round it out.

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?

There is a single required parameter with 100% schema description coverage ("Role ID to delete"), so the schema already carries the semantics. The description merely echoes "by ID" and adds no format or sourcing guidance, making the baseline 3 appropriate.

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

Purpose4/5

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

The description gives a clear verb and resource ("Delete a role") plus the selector ("by ID"), so an agent knows exactly what the tool does. It does not differentiate from siblings such as roles_create or roles_permissions_remove, so it falls short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus alternatives (roles_list to find the ID first, roles_permissions_remove to strip permissions) and no preconditions or warnings about the destructive nature. Usage must be inferred entirely from the name.

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

roles_listRoles: listB
Read-only
Inspect

List all roles

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered, but the description adds nothing further: no mention of pagination, ordering, or what scope of roles is returned. It is a bare restatement of the operation.

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?

Three words, front-loaded and waste-free. It is arguably too terse to earn a 5, but nothing is padded or redundant.

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?

For a zero-parameter read tool with annotations covering the safety profile and no output schema, the description is minimally sufficient. It omits any hint of return volume, pagination, or role scope, which is a gap but not a fatal one.

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 tool takes zero parameters, so the baseline is 4 and there is nothing for the description to clarify. Schema coverage is 100% by default with an empty properties object.

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

Purpose4/5

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

States a specific verb (list) and resource (roles), so an agent immediately knows what it does. It does not distinguish itself from siblings like roles_permissions_list or roles_create, so it stays below a 5.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of related tools such as roles_create, roles_delete, or roles_permissions_list. The agent must infer that this is the read entry point of the roles family.

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

roles_permissions_addRoles: permissions addCInspect

Add entity permissions to a role

ParametersJSON Schema
NameRequiredDescriptionDefault
entityYesEntity name
actionsNoComma-separated actions: read,create,update,delete (default: read)
role_idYesRole ID

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the mutation/safety profile is covered externally. The description adds nothing beyond that: it does not say what happens if a permission already exists, whether the addition is idempotent, or whether elevated authorization is required.

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?

A single short sentence with the action front-loaded and zero filler. It is efficient, though its extreme brevity is part of why other dimensions are thin rather than a virtue here.

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?

This is a simple three-parameter mutation tool with full schema coverage and no output schema, so little is strictly required. Still, for a mutation on role permissions, the absence of any note about idempotency, authorization, or relationship to the remove/list siblings leaves a visible gap.

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 all three parameters (role_id, entity, actions) are already documented in the schema, including the comma-separated action values and the 'read' default. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource combination ('Add entity permissions to a role'), which is unambiguous about the action and target. However, it does not differentiate from the closely named siblings roles_permissions_remove and roles_permissions_list, leaving the agent to infer the distinction from names alone.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus roles_permissions_remove or roles_permissions_list, nor any stated prerequisites such as required permission level or whether the role must already exist. The agent gets no context beyond the one-line purpose.

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

roles_permissions_listRoles: permissions listB
Read-only
Inspect

List entity permissions for a role

ParametersJSON Schema
NameRequiredDescriptionDefault
role_idYesRole ID

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds essentially nothing beyond the title — no note on pagination, result size, or what a role with no permissions returns — so it does not earn credit for extra behavioral context.

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 tight sentence with no filler and the resource front-loaded. Nothing redundant is present; it is appropriately sized for a trivial list operation.

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?

With no output schema, the description is the only place return values could be described, and it does not say what the permission objects contain or their shape. Combined with the absence of any 'returns empty list if unset' style note, it is only minimally complete for a read tool.

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% with a single parameter (role_id: integer, 'Role ID'), so the schema carries the burden. The description adds no semantics beyond what the schema states, which is the baseline-3 case for full coverage.

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

Purpose4/5

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

The description gives a clear verb+resource: 'List entity permissions for a role'. It is distinguishable from siblings roles_permissions_add and roles_permissions_remove by the 'List' verb. However, it does not explicitly contrast itself with those siblings, and 'entity permissions' is slightly ambiguous about whether it returns the permission set or the entities.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance is provided. Usage is only implied by the sibling naming convention (add/remove/list), which an agent can reasonably infer, but the description itself does no routing work.

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

roles_permissions_removeRoles: permissions removeC
Destructive
Inspect

Remove entity permissions from a role

ParametersJSON Schema
NameRequiredDescriptionDefault
entityYesEntity name
actionsNoComma-separated actions: read,create,update,delete (default: read)
role_idYesRole ID

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds nothing beyond that — it does not say whether removals are reversible, whether they require specific privileges, or what the default 'read' action behavior means when actions is omitted.

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?

A single front-loaded sentence with zero padding. It is efficient, though its extreme brevity leaves the definition under-specified.

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?

There is no output schema and this is a destructive mutation, so the description could reasonably explain the effect of removal or the meaning of the actions filter. Annotations carry the safety signal, and the schema covers parameters, but the definition is thin for a permission-revoking 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%, so the schema already documents role_id, entity, and actions (including the default of 'read'). The description only restates the resource and adds no format or behavioral meaning beyond the schema; baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb ('Remove') and resource ('entity permissions from a role'), which distinguishes it from siblings roles_permissions_add and roles_permissions_list. It stops short of explicitly naming the counterpart tools, but the purpose is unambiguous.

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

Usage Guidelines2/5

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

The description provides no when-to-use guidance, no prerequisites, and no mention of alternatives such as roles_permissions_add or roles_permissions_list. An agent must infer context entirely from the name.

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

search_auditSearch: auditB
Read-only
Inspect

Compare configured public-searchable fields vs what public search actually returns. Flags any data leaks.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch query to use for the audit (default: '*' — wildcard across all records)
entityYesEntity to audit
sampleNoHow many records to inspect (default: 5)

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description usefully clarifies that the operation is a config-vs-actual comparison that flags leaks, but it omits return format, sample behavior, and any side effects or rate characteristics. With annotations carrying the safety burden, a 3 is appropriate.

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?

Two tightly written sentences with the core comparison front-loaded and the leak-flagging outcome second. There is no filler, though the extreme brevity leaves the other dimensions thin.

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?

For a 3-parameter tool with no output schema, the description should ideally hint at what the audit returns (the diff structure, how leaks are reported). It conveys the concept but not the result shape, so an agent knows what the tool does but not what to expect back.

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 the schema already documents query, entity, and sample (including defaults). The description adds no syntax or format detail beyond the schema, so the baseline 3 is correct when the schema does all the work.

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

Purpose4/5

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

The description states a specific operation: comparing configured public-searchable fields against what public search actually returns, plus flagging leaks. This is clearly distinct from siblings like search_query, search_purge, or search_similar, though it never explicitly names them. The verb+resource is concrete enough for an agent to understand the intent.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no prerequisites, and no comparison against alternatives such as search_query or search_similar. The auditing use case is only weakly implied by 'Flags any data leaks.' Nothing tells the agent under what circumstances to prefer this over running a plain search.

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

search_purgeSearch: purgeA
Destructive
Inspect

Purge the search index. Omit ENTITY to purge everything (admin only).

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNoEntity name. Omit to operate on the entire index.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds context beyond them: that the operation is admin-restricted and that omitting the entity argument destroys the ENTIRE index rather than a single entity — exactly the kind of blast-radius information that matters for a destructive call.

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 short sentences with zero filler, front-loading the action and then the scope/permission qualifier. Every clause earns its place.

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 one-param destructive tool with annotations covering safety and no output schema, the description covers action, scope, and authorization. The main remaining gap is post-purge recovery — nothing tells the agent whether the index must be rebuilt with search_rehydrate afterward.

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?

With a single optional parameter at 100% schema description coverage, the schema already documents "Entity name. Omit to operate on the entire index." The description's "Omit ENTITY to purge everything" restates that and adds only the admin-only nuance, so baseline 3 applies.

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

Purpose4/5

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

Specific verb+resource ("purge the search index") that an agent can easily separate from search_query, search_audit, and search_rehydrate by verb alone. It stops short of naming a sibling or stating the inverse operation (rehydration), so it is clear but not explicitly differentiated.

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

Usage Guidelines3/5

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

The description gives a conditional scope rule ("omit ENTITY to purge everything") and an authorization prerequisite ("admin only"), which is real usage context. However, it never says when to choose purge over the obvious alternative search_rehydrate, nor when-not to use it, leaving the alternative-selection decision implicit.

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

search_querySearch: queryC
Read-only
Inspect

Run a search query

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
sortNoComma-separated sort fields, e.g. "created_at:desc,id:asc".
textYesSearch text. Use '*' for wildcard / browse all.
facetNoComma-separated fields to compute facet aggregations on.
limitNoResults per page (1-100, default: 20)
filterNoFilter expression, e.g. "status=published AND category=news". Supports _geoRadius and _geoBoundingBox.
publicNoUse the unauthenticated /search/public endpoint (returns only public-marked fields)
entitiesNoComma-separated entity names to search. Default: all indexed entities.
highlightNoEnable result highlighting on matched terms.

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds no further behavioral context such as authentication requirements, result format, rate limits, or how the public vs. authenticated endpoint behaves. It contributes nothing beyond the structured fields.

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

Conciseness3/5

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

The single sentence is concise with no wasted words, but it is under-specified rather than optimally structured. There is no front-loading of key constraints or grouping of information to help an agent quickly parse intent.

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

Completeness2/5

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

For a complex search tool with nine parameters and no output schema, the description is inadequate: it does not state what corpus is searched, how results are shaped, or how it relates to sibling search tools. The schema compensates for parameter documentation, but the description is far too thin for the tool's 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 description coverage is 100%, and all nine parameters (text, filter, sort, entities, etc.) are well documented in the schema itself. The description adds no meaning beyond what the schema already provides, which is the baseline 3 when the schema carries the full load.

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

Purpose2/5

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

The description 'Run a search query' is essentially a restatement of the tool name and title, adding no specificity about what is being searched (entities, indexed data, etc.) or the scope. It does not differentiate from sibling search tools like search_similar, search_purge, search_rehydrate, or search_audit.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives such as search_similar or search_audit, nor any prerequisites or exclusions mentioned. The agent is left to infer usage entirely from the name.

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

search_rehydrateSearch: rehydrateBInspect

Rehydrate the search index. Omit ENTITY to rehydrate everything (admin only).

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNoEntity name. Omit to operate on the entire index.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, openWorldHint=false, so the agent already knows this is a non-destructive mutation rather than a read. The description adds a genuinely useful operational detail, the admin-only requirement for whole-index rehydration, but says nothing about cost, duration, or whether the index is unavailable while rehydrating. Adding auth context beyond the annotations earns a 3.

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?

Two tight sentences with the operation front-loaded and the scope/authorization caveat appended. Nothing is wasted, though the phrasing is terse enough that it reads more like a stub than a fully structured definition.

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?

For a one-parameter maintenance tool with no output schema and annotations covering the safety profile, the description is minimally sufficient: it says what happens and who may do it. It omits the recovery/rebuild semantics of 'rehydrate' and any performance or concurrency expectations, leaving an agent without enough to judge impact.

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 single parameter is fully documented in the schema ('Omit to operate on the entire index'), which is essentially the same statement the description makes. Per the calibration rule, 100% coverage sets the baseline at 3; the description adds no syntax or format detail beyond the schema.

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

Purpose4/5

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

States a specific verb (Rehydrate) and resource (the search index), so an agent can grasp the operation immediately. It does not differentiate itself from adjacent maintenance/query siblings such as search_purge, search_query, or search_similar, so it stops short of a 5.

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

Usage Guidelines3/5

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

The description gives a scope rule (omit ENTITY to rehydrate everything) and an authorization constraint (admin only), which implies when each form is usable. It never states when to choose rehydrate over search_purge or the other search tools, so usage guidance remains implied rather than explicit.

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

search_similarSearch: similarB
Read-only
Inspect

Find documents similar to a given record (vector search)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSource document ID — find documents similar to this one
limitNoMaximum results (default: 10)
entityYesEntity name
publicNoUse the public endpoint (only public-marked fields returned)

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds the meaningful detail that matching is vector-based (semantic) rather than keyword-based, which changes how an agent should interpret results. It does not mention scoring, ranking, or result shape.

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 tight sentence with zero waste, front-loading the action and the source record. Every word earns its place.

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?

For a read-only search tool with a fully documented schema and safety annotations, the description is minimally adequate. With no output schema, it still doesn't hint at the return format (ranked list, score field) or pagination, which an agent would benefit from knowing.

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 every parameter (id, entity, limit, public) is already documented in the schema. The description adds no syntax or semantic detail beyond what the schema provides, making the baseline 3 appropriate.

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

Purpose4/5

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

States a specific verb (Find) and resource (documents) with the qualifier 'similar to a given record', and adds the mechanism '(vector search)'. However, it offers no differentiation from siblings like search_query, search_rehydrate, or search_purge, so an agent cannot distinguish intent from the description alone.

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

Usage Guidelines2/5

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

The phrase 'similar to a given record' implies a use case, but there is no explicit when-to-use guidance, no exclusions, and no reference to the alternative search_* tools. The agent is left to infer when semantic similarity lookup is preferable to keyword search.

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

secrets_createSecrets: createCInspect

Store a new secret value

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesSecret key name (e.g. CLAUDE_API_KEY, STRIPE_SECRET_KEY)
valueNoSecret value (use for non-interactive / scripted usage)

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is covered externally. The description adds nothing beyond that: it does not say whether an existing key is overwritten, whether the write is idempotent, how errors on duplicate keys behave, or what the operation returns.

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

Conciseness3/5

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

The description is a single front-loaded clause with zero padding, which fits a two-parameter tool. It is arguably over-terse rather than well-structured, since it conveys no more information than the title already provides.

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

Completeness2/5

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

For a secret-writing mutation the agent still lacks the essentials: overwrite semantics on duplicate keys, scoping to the current account or project, and any confirmation of success. Annotations cover only the abstract safety flags, and there is no output schema to fill the gap.

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%, with both key and value documented inline including naming examples, so the baseline is 3. The description contributes no additional parameter meaning such as the value's expected encoding or the behavior of key reuse.

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

Purpose3/5

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

The phrase 'Store a new secret value' gives a concrete verb and resource, so the basic operation is identifiable. However, it offers no differentiation from the near-identical siblings secrets_update and secrets_list, so an agent cannot tell from the description alone why it should pick create over update.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus secrets_update, secrets_delete, or secrets_list, and no mention of prerequisites such as required scope or authentication. The only hint of context comes from the schema's note about non-interactive usage, not from the description.

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

secrets_deleteSecrets: deleteC
Destructive
Inspect

Delete a secret

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesSecret key name to delete

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=false, so the safety profile is covered by structured data. The description adds nothing beyond that: no statement of irreversibility, no confirmation that missing keys error, no permission requirements — so it earns little credit.

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

Conciseness3/5

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

Three words with zero waste, but the extreme brevity is under-specification rather than effective conciseness for a destructive operation. It is front-loaded but trivially so.

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

Completeness2/5

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

For a destructive, irreversible operation with no output schema, the agent needs to know what gets destroyed and whether the action is recoverable. The description supplies none of that, nor any scoping context, leaving a real gap despite the tool's simplicity.

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 single parameter is documented as "Secret key name to delete", so the schema carries the full burden. The description adds no format, scope, or casing details beyond it, making the baseline 3 appropriate.

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

Purpose3/5

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

"Delete a secret" names a specific verb and resource, which is enough to distinguish it from siblings like secrets_list or secrets_create. However it offers no scope details (which secret store, per-project vs global) and no differentiation language beyond the name itself, so it stays at minimum-viable clarity.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus secrets_update (e.g. to clear a value) or when deletion is inappropriate. The agent is left to infer usage entirely from the verb and the required key parameter.

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

secrets_listSecrets: listA
Read-only
Inspect

List all secret keys (metadata only, values never shown)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful disclosure beyond that: results are 'metadata only, values never shown', which tells the agent it cannot retrieve secret material through this call.

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 front-loaded clause with zero filler. The scoping caveat is parenthetical and immediately follows the action, so nothing has to be inferred or scrolled for.

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 zero-parameter list tool with no output schema, the critical omission to guard against is whether values leak — and the description closes that gap. Ordering, pagination, and scope (all secrets vs. scoped) are unaddressed, which keeps it out of 5 territory.

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 tool takes no parameters, so there is nothing for the description to document and nothing for the schema to miss. Baseline 4 applies; no additional parameter meaning is needed.

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

Purpose4/5

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

States a specific verb (list) and resource (secret keys), which cleanly separates it from secrets_create, secrets_update, and secrets_delete in the sibling set. It does not name those siblings explicitly, so it stops short of a 5, but the action is unambiguous.

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

Usage Guidelines3/5

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

Usage is only implied by the verb 'list' — there is no explicit when-to-use statement, no precondition (e.g. required auth/workspace), and no reference to the sibling secret-management tools. Adequate for a trivial enumeration tool but with clear gaps.

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

secrets_updateSecrets: updateB
Destructive
Inspect

Rotate (overwrite) an existing secret value

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesSecret key name
valueNoSecret value (use for non-interactive / scripted usage)

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered by structured data. The description adds the useful detail that the prior value is overwritten/rotated, but says nothing about reversibility limits, permissions, or audit implications.

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?

Six words, front-loaded with the action and scope, zero filler. Every token earns its place.

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 two-parameter mutation whose annotations already carry the destructive/read-only profile and whose schema documents both fields, the description is nearly sufficient. It still leaves the create-vs-update routing and the optional-value workflow implicit, which is the only real gap.

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 both 'key' and 'value' are already documented in the schema. The description adds no syntax, format, or constraint detail beyond what the schema provides, so the baseline 3 applies.

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

Purpose4/5

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

Specific verb plus resource: 'Rotate (overwrite) an existing secret value' tells an agent exactly what happens and to what. It is clear enough to distinguish from secrets_create/secrets_delete by implication, but never names those siblings explicitly.

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

Usage Guidelines2/5

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

No statement of when to use this versus secrets_create (new secret) or secrets_delete, and no mention of prerequisites or the interactive-vs-scripted value distinction. Usage is only implied by the word 'existing'.

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

signupAInspect

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.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful behavior: it creates only the top-level user identity (not billing/project), and success may require email confirmation before 'login' works. It omits auth requirements (public vs authenticated), error cases, and any rate limits, leaving minor gaps.

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 tightly scoped sentences, front-loaded with purpose then routing then scope then follow-up. 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?

No output schema and no annotations, so the description must stand alone; it covers purpose, alternatives, scope of creation, and the post-signup confirmation flow that affects the next call. Nothing an agent needs to invoke it correctly is missing.

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 the schema already documents all five parameters (including referralCode optionality and email uniqueness). The description adds no parameter-level detail beyond the schema, making the baseline 3 correct.

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?

States a specific verb and resource ('Register a brand-new Anythink platform account with email and password') and explicitly distinguishes itself from the sibling 'login' by describing the no-account-yet condition. An agent can tell it apart from login without opening either schema.

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?

Gives explicit when-to-use ('only when the user has no account yet') and when-not ('if they already have one, use login'), plus negative scoping that routes to 'accounts_create' and 'projects_create' for downstream objects. Nothing about selection is left to inference.

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

users_deleteUsers: deleteC
Destructive
Inspect

Delete a user by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUser ID to delete

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds nothing beyond that: it does not say whether the deletion is irreversible, whether it cascades to related records, or what permissions are required. For a destructive operation, this is a bare minimum.

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?

A single five-word sentence with zero padding, front-loaded with the action. It is efficient, though its brevity is partly the source of the missing behavioral detail.

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

Completeness2/5

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

For a destructive, irreversible-looking operation with no output schema, the definition should convey consequence (cascading deletes, irreversibility, auth needs). Annotations cover the destructive flag but nothing tells the agent what actually happens to the user or its data.

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% with a single parameter ('User ID to delete'), so the schema fully documents the input. 'By ID' in the description merely echoes the schema without adding format or constraint detail. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb (delete) and resource (user) plus the identifying key, so an agent knows exactly what it does. It does not differentiate itself from the many other *_delete siblings (entities_delete, data_delete, secrets_delete), but the resource name makes the target unambiguous.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus alternatives such as users_get, users_list, or other delete tools, and no prerequisites or warnings are stated. The only usage signal is the terse verb phrase.

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

users_getUsers: getB
Read-only
Inspect

Get a user by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUser ID

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered without the description. The description adds nothing beyond that – no note on behavior for a nonexistent ID, auth/permission requirements, or response shape – but it does not contradict the annotations, so it meets the minimum viable bar.

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?

One short, front-loaded sentence with zero filler; the verb and resource come first. It is efficient, though arguably terse to the point of under-specification rather than maximally informative.

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?

For a one-parameter read-only getter with annotations covering safety and no output schema, the description is adequate but thin. It omits what the agent should expect on a missing/invalid ID and how this differs from users_me/users_list, which are the practical questions for this tool.

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% and the single parameter is fully documented in the schema ('User ID', integer). The description's 'by ID' merely restates the schema and adds no format, range, or sourcing detail, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (get) and resource (user) with the lookup key, so the agent knows exactly what it does. It does not, however, distinguish itself from near-name siblings like users_me (current user) or users_list (enumeration), so an agent must infer the difference.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no exclusions. The description never says to use this for an arbitrary user versus users_me for the caller or users_list for enumeration, so routing among the users_* siblings is left entirely to inference.

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

users_inviteUsers: inviteBInspect

Create a user and send an invitation email

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesUser email address
role_idNoRole ID to assign
last_nameYesLast name
first_nameYesFirst name

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true). The description does add one genuinely useful behavioral fact not in the annotations: an invitation email is dispatched as a side effect. It does not disclose whether the email send is reversible, what happens on duplicate emails, or whether the user is created in a pending state.

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?

A single sentence with zero filler, and the primary action is front-loaded before the side effect. It is efficient, though arguably under-specified for a tool with an irreversible email side effect.

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

Completeness2/5

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

This is a mutation tool with an outward-facing side effect and no output schema. The description does not say whether the invite can be resent, whether the created user is pending until acceptance, whether role_id defaults, or what a duplicate invitation does — real gaps for an agent calling it.

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 all four parameters (email, first_name, last_name, role_id) are documented in the schema; baseline 3 applies. The description adds no parameter-level meaning, e.g., that role_id is optional or what role is assigned by default.

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

Purpose4/5

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

States a specific verb pair ('Create a user') plus the notable side effect ('send an invitation email'), which cleanly separates it from users_list, users_get, users_delete, and even signup. It stops short of naming any sibling or clarifying how it differs from self-service signup, so it misses the top mark.

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

Usage Guidelines2/5

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

No when-to-use guidance, no mention of prerequisites (e.g., admin role), and no alternative such as signup or users_create-equivalent is referenced. The agent must infer that this is the admin-initiated path from the name alone.

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

users_listUsers: listC
Read-only
Inspect

List all users

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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

Annotations declare readOnlyHint=true and openWorldHint=false, so safety is covered externally. The description adds nothing beyond that: it does not disclose pagination, result limits, ordering, or what happens with large user sets, and the word "all" may set false expectations about an unpaginated dump.

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?

Three words, front-loaded, zero waste. It is efficiently sized and readable, though the terseness shades into under-specification rather than true economy.

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

Completeness2/5

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

With no output schema, no parameters, and only two annotations, the burden of describing the return value falls entirely on the description, which says nothing about what a "user" record contains or how results are paginated, ordered, or limited.

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 tool takes zero parameters, so the schema carries no semantics to explain; baseline is 4. The description introduces no phantom filters or options, though it also notes no filtering support explicitly.

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

Purpose3/5

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

"List all users" gives a verb and resource, but it is essentially a restatement of the name/title ('users_list' / 'Users: list') and adds no distinguishing scope. An agent still cannot tell from the description alone why it should pick users_list over users_get, users_me, or accounts_list, though the core purpose is at least not misleading.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no exclusion of alternatives, and no prerequisites. With siblings like users_get (single user) and users_me (current user) present, the description should say when a full listing is appropriate, but it says nothing.

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

users_meUsers: meB
Read-only
Inspect

Show the currently authenticated user

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds nothing beyond that: no note on auth/token requirements, whether it fails if unauthenticated, or what identity fields come back. It essentially restates the tool title.

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?

One front-loaded sentence with no filler, and the scope qualifier ("currently authenticated") comes before anything else. It is appropriately sized for a zero-argument read tool, though it is very close to the bare minimum.

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?

For a simple read-only, no-parameter tool this is nearly adequate. The main gap is that no output schema exists, so the description should ideally indicate what user information is returned; instead it says nothing about the response shape.

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 tool takes zero parameters, so the baseline is 4. There is nothing for the description to clarify, and schema coverage is trivially complete.

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

Purpose4/5

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

Clear specific verb+resource: "Show the currently authenticated user." This distinguishes it in intent from users_get (which requires an ID) and users_list (which enumerates all users), though the description never names those siblings. An agent can infer the distinction only because this tool takes no parameters.

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

Usage Guidelines3/5

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

Usage is only implied by the phrase "currently authenticated user" – i.e., call this when you don't have or need a user ID. There is no explicit when-to-use, when-not-to-use, or pointer to users_get/users_list for other lookups.

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

workflows_createWorkflows: createCInspect

Create a new workflow

ParametersJSON Schema
NameRequiredDescriptionDefault
cronNoCron expression (for Timed trigger, e.g. '0 9 * * *')
nameYesWorkflow name
eventNoEvent type: EntityCreated, EntityUpdated, EntityDeleted
entityNoEntity name for Event trigger
filterNoFilter expression JSON for Event trigger (fires only when predicate matches the row)
enabledNoEnable workflow immediately after creation
triggerNoTrigger type: Manual, Timed, Event, Api
api_routeNoCustom API route (for Api trigger)
descriptionNoWorkflow description
filter_fileNoPath to a file containing the filter expression JSON

TDQS

C2.3/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the agent knows this is a non-destructive write. Beyond that, the description adds nothing: it does not explain whether the workflow is created disabled by default, whether triggers are required, or what side effects creation has for a 10-parameter mutation tool.

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

Conciseness3/5

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

The single sentence is free of waste and front-loaded, but its brevity reflects under-specification rather than efficient communication. Minimum viable at best.

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

Completeness2/5

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

For a mutation tool with 10 parameters, no output schema, and a rich trigger model (Manual/Timed/Event/Api), the description omits everything an agent needs to decide how to configure a call. It is not complete against the tool's 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 description coverage is 100% and each of the 10 parameters carries a description (cron, event, trigger, api_route, filter, etc.). The description adds no meaning beyond that, so the baseline of 3 applies.

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

Purpose2/5

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

The description "Create a new workflow" restates the tool name and title almost verbatim, adding only the verb. It does not distinguish this tool from siblings like workflows_seed, workflows_update, or workflows_trigger, so an agent gets no signal about which creation path applies.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives, no prerequisites, and no mention of what must exist before creation (e.g. entity, trigger configuration). Usage is left entirely to inference from the tool name.

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

workflows_deleteWorkflows: deleteC
Destructive
Inspect

Delete a workflow

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkflow ID to delete

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds nothing beyond that — no statement about whether deletion is permanent, whether associated workflow steps/jobs are cascaded, or whether the operation can be undone. With annotations doing the safety work, the description needed to contribute the 'what gets destroyed' context and did not.

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?

A single front-loaded sentence with zero padding. It is efficient, though the brevity here reflects under-specification rather than disciplined editing.

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

Completeness2/5

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

For a destructive mutation with no output schema, the description should convey consequences: permanence, cascading deletions, or required permissions. None of that is present, leaving the agent to call a destructive tool with only a verb phrase of context.

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% and the single parameter is documented as 'Workflow ID to delete', so the schema fully carries parameter meaning. The description adds no syntax or sourcing detail (e.g., where to obtain the ID, whether it accepts slugs), so the baseline 3 applies.

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

Purpose3/5

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

The description states a specific verb (delete) and resource (workflow), so the basic action is unambiguous. However, it offers no differentiation from the many sibling workflow tools (workflows_disable, workflows_step_delete, workflows_update), which are adjacent in name and could plausibly also remove something. The agent gets the verb+resource but no routing signal.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as workflows_disable (a likely reversible counterpart) or workflows_step_delete. No prerequisites, no warnings about irreversibility. The agent must infer that this is the permanent removal path.

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

workflows_disableWorkflows: disableCInspect

Disable a workflow

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkflow ID

TDQS

C2.9/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false, destructiveHint=false and openWorldHint=false. The description adds nothing beyond them: it does not say whether disabling is reversible, whether it affects in-flight runs or jobs (cf. workflows_jobs), or whether it requires ownership/admin rights. With annotations present the bar is lower, but zero added context leaves the call semantics ambiguous.

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?

A single terse sentence with no waste and the operation front-loaded. It is efficient, though arguably under-specified rather than optimally concise.

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?

For a one-parameter toggle with no output schema, the description is minimally adequate, and annotations cover the safety profile. It still omits what disabling means operationally (reversibility, effect on runs/jobs, required permissions), which an agent invoking a mutating toggle would benefit from knowing.

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% — the single 'id' parameter is fully documented as 'Workflow ID' — so the description carries no extra burden. It adds no format hints or constraints, which matches the baseline 3 for fully covered schemas.

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

Purpose4/5

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

The description states a clear verb+resource ('Disable a workflow'), so the agent knows exactly what operation is performed. It does not, however, distinguish this from siblings like workflows_enable or workflows_delete, which operate on the same resource.

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

Usage Guidelines2/5

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

There is no guidance on when to disable versus delete or update a workflow, and no mention of the obvious complementary tool workflows_enable. The agent must infer usage entirely from the name.

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

workflows_enableWorkflows: enableCInspect

Enable a workflow

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkflow ID

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds no behavioral context whatsoever: it does not say whether enabling is idempotent, whether it fails on an already-enabled workflow, or what side effects (job scheduling, triggers) it starts.

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

Conciseness3/5

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

It is two words with zero waste, but the brevity is under-specification rather than disciplined concision. Nothing is front-loaded because nothing is said.

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

Completeness2/5

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

For a state-mutating tool in a large workflow family (create, update, disable, delete, trigger, steps, jobs), a two-word description leaves the agent without the state-transition semantics it needs to invoke this correctly. No output schema exists to compensate, and the description does not fill that gap.

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 single parameter has 100% schema description coverage ('Workflow ID'), so the schema carries the meaning. The description adds nothing beyond it, which is the expected baseline when schema coverage is high.

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

Purpose2/5

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

The description is a verbatim restatement of the tool name and title ('workflows_enable' / 'Workflows: enable'), adding no scope, target, or distinction from siblings. It does not differentiate this tool from workflows_disable, workflows_trigger, or integrations_enable, which all act on similar resources.

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

Usage Guidelines2/5

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

No when-to-use guidance is present: the description never says when an agent should enable a workflow or what preconditions exist (e.g., whether the workflow must be exported/paused first). The natural alternative, workflows_disable, is not mentioned.

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

workflows_exportWorkflows: exportA
Destructive
Inspect

Export an existing workflow to JSON (round-trippable with seed)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkflow ID to export
outputNoWrite to FILE instead of stdout

TDQS

A3.6/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false and destructiveHint=true, yet the description explains none of that: it never says that providing 'output' writes/overwrites a file, nor why an 'export' is considered destructive. It does add one real behavioral trait beyond the annotations, the round-trip fidelity guarantee with workflows_seed, which is why this is not lower.

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 front-loaded sentence with no filler; the essential action and output format come first and the round-trip property is a compact qualifier.

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?

With no output schema, the description does usefully characterize the return payload ('to JSON', round-trippable), which is the key thing an agent needs for a 2-parameter tool. It is close to complete, missing only the file-overwrite behavior implied by the optional output parameter.

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 both parameters (id, output) are already documented in the schema; the description adds no syntax, format, or default details beyond that. Baseline 3 is correct when the schema does all the parameter work.

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

Purpose4/5

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

States a specific verb and resource (export an existing workflow) plus the output format (JSON). The parenthetical '(round-trippable with seed)' implicitly distinguishes it from retrieval siblings like workflows_get by pointing at the import counterpart, but does not explicitly name that sibling.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer it exports a workflow given an id, and the seed reference hints the output can be re-imported. There is no explicit when-to-use vs workflows_get / workflows_list guidance, and no when-not conditions.

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

workflows_file_handler_addWorkflows: file handler addCInspect

Add a FileHandler step with named flags (no hand-written params JSON)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoStep display name (defaults to the step key)
fieldNoField name on the record to link the file to (required, snake_case)
startNoSet as start step
entityNoTarget entity name (required)
enabledNoEnable step immediately
step_keyYesStep key (unique identifier, snake_case)
file_nameNoFilename to store the uploaded file as (templatable)
folder_idNoFolder ID to upload the file into (optional, templatable)
is_publicNoMark the uploaded file as public
link_modeNoHow to link to the field: set (single value) or add (append to multi-value). Default: set
operationNoFileHandler operation: fetch_and_link, link_existing, detach
record_idNoTarget record ID, typically '{{ $anythink.trigger.id }}' (required)
on_failureNoStep ID to execute on failure
on_successNoStep ID to execute on success
source_urlNoURL to fetch the file from (required for fetch_and_link; supports templating)
workflow_idYesWorkflow ID
existing_file_idNoExisting file ID (required for link_existing operation; templatable)
overwrite_if_presentNoRe-process even if the field already has a value (idempotency override)

TDQS

C2.9/5.0
Behavior2/5

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

Annotations declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false). Beyond that, the description adds nothing: it does not say this mutates workflow state, which params are conditionally required per operation (source_url for fetch_and_link, existing_file_id for link_existing), or anything about idempotency.

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?

A single tight sentence with the core action front-loaded and zero filler. Its brevity is appropriate structurally, though the missing depth is penalized under other dimensions rather than here.

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?

With 100% schema coverage the parameters are discoverable, but for an 18-param, operation-driven mutation step with no output schema the description says nothing about operation-conditional requirements, step ordering within a workflow, or what is returned. Adequate but clearly incomplete.

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% across all 18 parameters, so the schema carries the load and baseline 3 applies. The only description-side addition is the "named flags" phrasing, indicating flat named arguments rather than a JSON blob.

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

Purpose4/5

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

States a specific verb and resource ("Add a FileHandler step") and implies the parent workflow context, so it is distinguishable from the generic workflows_step_add. It stops short of explicitly contrasting itself with that sibling, so not a 5.

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

Usage Guidelines2/5

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

The parenthetical "no hand-written params JSON" hints this is the preferred path over raw params JSON, but there is no explicit when-to-use, no mention of when to prefer workflows_step_add, and no guidance on choosing among the three FileHandler operations.

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

workflows_file_handler_exampleWorkflows: file handler exampleB
Read-only
Inspect

Print a copy-paste-ready FileHandler params JSON

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

readOnlyHint=true and openWorldHint=false already tell the agent this is a safe, non-network read, so the description only needs to add the output's nature. Saying the result is a 'copy-paste-ready' params JSON does add that it is a static template rather than live workflow state, but no further behavioral context is given.

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?

A single front-loaded sentence that tells the agent exactly what comes back, with no filler. It is arguably terse to the point of omitting routing guidance, but there is no wasted text.

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 zero-parameter helper with no output schema, the description does the one thing that matters: it characterizes the returned value as a ready-to-paste params JSON. What is missing is the pipeline context (which tool consumes that JSON), which the sibling list implies but the description never states.

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 tool takes zero parameters, which is the baseline-4 case — there is nothing for the description to disambiguate and the empty schema is fully documented at 100% coverage.

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

Purpose4/5

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

States a specific verb ('Print') and a specific resource ('FileHandler params JSON'), which is enough to separate it from mutation siblings like workflows_file_handler_add. It does not, however, name the sibling it complements, so the distinction is inferred rather than stated.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no statement that this is a discovery/helper step to run before workflows_file_handler_add, and no exclusions. The use case is only implied by the name and the word 'example'.

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

workflows_getWorkflows: getC
Read-only
Inspect

Get workflow details and steps

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkflow ID

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that the response includes both workflow details and steps, which is useful since there is no output schema, but it says nothing about behavior for a missing/invalid ID or what 'details' comprises.

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?

A single short sentence with zero filler and the core action front-loaded. It is efficient, though its brevity is close to under-specification rather than disciplined concision.

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?

For a one-parameter read tool with full schema coverage and read-only annotations, the description is close to adequate. The remaining gap is sibling disambiguation against workflows_list and workflows_step_get, and the lack of an output schema makes the thin 'details and steps' phrasing less informative than it could be.

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?

There is a single 'id' parameter with 100% schema description coverage, so the schema already carries the semantics. The description adds nothing about the identifier's origin or format, making the baseline 3 appropriate.

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

Purpose3/5

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

States a clear verb+resource (get a workflow) and adds that steps are included, but 'details' is vague and no sibling is named. With workflows_list and workflows_step_get in the set, an agent could reasonably wonder whether this overlaps with those, and the description does nothing to resolve that.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives such as workflows_list for enumeration or workflows_step_get for a single step. The agent must infer routing purely from the name.

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

workflows_integration_addWorkflows: integration addBInspect

Add an Integration step (Claude, OpenAI, Slack…) with named flags (no hand-written params JSON)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoStep display name (defaults to the step key)
inputNoOperation input as key=value (repeatable; values support {{templating}})
modelNoConvenience shortcut for the 'model' input (AI providers)
startNoSet as start step
inputsNoOperation inputs as a JSON object (merged with --input flags)
enabledNoEnable step immediately
providerNoIntegration provider key (e.g. claude, openai, slack). Required.
step_keyYesStep key (unique identifier, snake_case)
operationNoOperation key (see 'integrations get <provider>'). Required.
on_failureNoStep ID to execute on failure
on_successNoStep ID to execute on success
workflow_idYesWorkflow ID
connection_idNoConnection ID (required when --credential-source is 'connection'; templatable)
credential_fieldNoCredential field path (required when --credential-source is 'entity_field')
credential_sourceNosystem | current_user | connection | entity_field (default: system)

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), so the mutation semantics are covered structurally. The description adds only the 'named flags, no params JSON' convenience and provider examples; it omits any note on auth/credential needs or that it modifies an existing workflow.

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?

A single front-loaded sentence with zero filler, and the core action leads. It is efficient, though for a 15-parameter tool the extreme brevity edges toward underspecification rather than true conciseness.

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

Completeness2/5

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

For a 15-parameter mutation tool with no output schema, the description is far too thin: it does not cover credential-source variants, the required provider/operation inputs, or what happens on success. An agent gets almost no help beyond the schema it must already read.

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 all 15 parameters are already documented in the schema, establishing the baseline of 3. The description alludes to the input/inputs/model parameters via 'named flags' but adds no syntax or format detail beyond what the schema provides.

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

Purpose4/5

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

States a specific verb and resource ('Add an Integration step') and grounds it with concrete provider examples (Claude, OpenAI, Slack), so an agent knows exactly the operation type. However, it never distinguishes itself from the closely-named sibling workflows_step_add, leaving the reader to infer that this variant is integration-specific.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites (e.g. that provider and operation are required), and no reference to the obvious alternative workflows_step_add. The parenthetical about avoiding hand-written JSON is a value prop, not routing guidance.

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

workflows_jobsWorkflows: jobsB
Read-only
Inspect

View job history for a workflow

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkflow ID

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the read-only nature is covered. The description adds no further behavioral context such as pagination, result ordering, authentication requirements, or what the job history contains, so it does not go beyond the structured annotations.

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, front-loaded sentence with no wasted words. It conveys the core action and target resource directly.

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?

For a simple read-only tool with one documented parameter and no output schema, the description is minimally viable. However, it omits useful context such as pagination, ordering, or the relationship to other workflow tools, leaving some gaps for an agent to infer.

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 schema has 100% description coverage for the single 'id' parameter ('Workflow ID'), so the schema already documents the parameter meaning. The description does not add format, constraints, or examples beyond what the schema provides, making the baseline score of 3 appropriate.

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

Purpose4/5

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

The description states a clear verb ('View') and resource ('job history for a workflow'), making the tool's purpose immediately understandable. It does not explicitly distinguish itself from sibling workflow tools such as workflows_get or workflows_list, so it falls short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like workflows_get or workflows_list. The purpose implies viewing job history, but no when-to-use conditions, prerequisites, or exclusions are provided.

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

workflows_listWorkflows: listC
Read-only
Inspect

List all workflows

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond that: no pagination behavior, no result cap, no note about what 'all' means in a multi-tenant or permission-scoped context. For a list endpoint with no output schema, a small amount of behavioral context would have been cheap and valuable.

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?

One short, front-loaded sentence with zero filler or redundancy. It is efficient, though its brevity is also the source of its other gaps rather than a virtue earned by careful editing.

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

Completeness2/5

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

With no output schema and no annotations covering scope or pagination, the description is the only place an agent could learn what the returned list contains and how it is bounded. It says none of that, and it also fails to differentiate from the many sibling workflow tools.

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 tool has zero parameters and 100% schema coverage, so there are no parameter semantics for the description to explain. Baseline 4 applies; nothing is missing on this dimension.

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

Purpose3/5

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

States a verb+resource ('List all workflows'), which is clear enough as a basic purpose, but it does nothing to separate itself from closely named siblings such as workflows_get, workflows_jobs, or workflows_export. With roughly a dozen workflow siblings in the tool list, the lack of any scoping phrase leaves the agent to infer which one returns the full collection.

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

Usage Guidelines2/5

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

No when-to-use guidance, no mention of alternatives, no prerequisites. The agent must guess whether this returns every workflow across the account or only those it owns, and whether workflows_get is the narrower alternative.

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

workflows_seedWorkflows: seedBInspect

Create a workflow and its steps from a JSON file

ParametersJSON Schema
NameRequiredDescriptionDefault
varNoSubstitute {{KEY}} placeholders in the JSON. Repeatable.
fileYesPath to a workflow JSON file (use `workflows export` to produce one)
enabledNoOverride the workflow's enabled flag to true

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds no behavioral context beyond that: it does not say whether seeding is idempotent, what happens if the workflow already exists, whether existing steps are replaced, or how {{KEY}} substitution failures are handled.

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?

A single front-loaded sentence with no wasted words. It is efficient, though arguably too terse for a mutation tool with three parameters.

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?

Annotations cover the mutation safety profile and the schema fully documents parameters, so the core is covered. But for a create/seed operation the description omits overwrite/idempotency behavior and sibling differentiation, which an agent needs to call it confidently versus workflows_create.

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% (var substitution, file path, enabled override all documented in the schema), so the baseline is 3. The description contributes nothing beyond the schema about parameter meaning or interaction.

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

Purpose4/5

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

States a specific verb+resource ('Create a workflow and its steps') plus the input source ('from a JSON file'), which is more than a restatement of the name. It does not, however, explicitly set itself apart from the sibling workflows_create, leaving the agent to infer the distinction.

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

Usage Guidelines3/5

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

The 'from a JSON file' phrasing implies usage (when you already have an exported definition), and the schema hints at pairing with workflows export, but the description never states when to prefer this over workflows_create or workflows_step_add. Usage is implied rather than stated.

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

workflows_step_addWorkflows: step addCInspect

Add a step to a workflow

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesStep key (unique identifier)
nameNoStep display name
startNoSet as start step
actionNoAction type: ReadData, CreateData, UpdateData, UpsertData, DeleteData, CallAnApi, RunScript, Condition, SendAnEmail, SendACommand, SendPushNotification, FileHandler, Integration (for Integration, prefer 'integration-add')
paramsNoStep parameters as JSON
enabledNoEnable step immediately
workflow_idYesWorkflow ID

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare this is a non-read-only, non-destructive, closed-world mutation, so safety is covered structurally. The description adds nothing beyond that — no word on ordering/start-step semantics, key uniqueness, idempotency, or whether the addition takes effect immediately.

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?

A single short sentence, zero waste and fully front-loaded. It is appropriately terse, though the terseness borders on under-specification at only four words.

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?

For a 7-parameter mutation tool with full schema coverage and safety annotations, the essentials are technically present across the structured fields. Still, a step-ordering concept like 'start' and the key-uniqueness contract are behavioral details an agent would benefit from seeing called out in prose.

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 every parameter — including key, name, start, action, params, enabled — is already documented in the schema with useful detail. The description contributes no additional parameter meaning, which is the expected baseline when the schema does the heavy lifting.

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

Purpose4/5

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

The description states a specific verb and resource ('Add a step to a workflow'), making the operation immediately identifiable. It does not, however, distinguish this tool from closely related siblings such as workflows_step_update, workflows_step_link, workflows_step_get, or workflows_integration_add.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus updating, linking, or deleting a step, nor on prerequisites (a workflow must already exist, a step key must be unique). The only routing hint in the whole definition lives in the schema's 'action' field description, not the description itself.

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

workflows_step_deleteWorkflows: step deleteA
Destructive
Inspect

Delete a step from a workflow (warns if other steps link to it)

ParametersJSON Schema
NameRequiredDescriptionDefault
step_idYesStep ID to delete
workflow_idYesWorkflow ID

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered by structured data. The description adds a non-obvious behavioral trait beyond that: the tool warns when other steps link to the deleted step, which signals a reference-integrity risk the agent should anticipate.

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 front-loaded sentence with the destructive action first and the caveat in a compact parenthetical. Every word earns its place with no preamble or restatement of the title.

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?

Annotations carry the destructive profile, so the description need not re-explain safety. However, for a destructive mutation the ambiguity of 'warns' matters: it is unclear whether the warning aborts the delete or is advisory only, and whether link references are orphaned. That gap leaves an agent needing to probe behavior at call time.

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 both parameters (workflow_id, step_id) are documented in the schema itself. The description adds no syntax, format, or constraint information beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Delete a step from a workflow'), which an agent can immediately separate from the sibling step operations workflows_step_add, workflows_step_update and workflows_step_get. It does not explicitly name any sibling, so it lands at clear-but-not-routing rather than a 5.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus the alternatives, no prerequisites (e.g. must the workflow be disabled first?), and no when-not-to-use guidance. The only hint is the parenthetical about linked steps, which is a behavioral note rather than usage direction.

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

workflows_step_getWorkflows: step getB
Read-only
Inspect

View step details including parameters

ParametersJSON Schema
NameRequiredDescriptionDefault
step_idYesStep ID
workflow_idYesWorkflow ID

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safe-read profile is covered. The description adds only a small hint about returned content ('including parameters'), but does not disclose what a step record contains or how it relates to workflow_id.

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?

A single short, front-loaded phrase with no wasted words. It is efficient, though its terseness borders on under-specification rather than disciplined conciseness.

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?

For a simple two-parameter read tool with full schema coverage and safety annotations, the definition is minimally adequate. It lacks any output shape description and does not clarify the parent/child relationship between workflow_id and step_id.

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 both workflow_id and step_id are already documented in the schema. The description adds no syntax or relationship semantics beyond what the schema provides, making the baseline 3 appropriate.

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

Purpose4/5

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

States a specific verb (View) and resource (step details), and mentions return scope ('including parameters'). However, it does not distinguish itself from related siblings like workflows_get or workflows_step_update, leaving the agent to infer the difference.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives (e.g., workflows_get or workflows_list). The usage is only implied by the verb 'View'.

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

workflows_step_updateWorkflows: step updateC
Destructive
Inspect

Update step parameters and properties

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoStep name
paramsNoStep parameters as JSON
enabledNoEnable this step
step_idYesStep ID
workflow_idYesWorkflow ID

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description adds nothing beyond that: it doesn't disclose what is overwritten, whether the update is partial or full, or any permission requirements, so it repeats rather than enriches the structured data.

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?

A single front-loaded sentence with zero waste. It is efficient, though its brevity tips into under-specification rather than just conciseness.

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

Completeness2/5

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

For a destructive mutation tool with no output schema, the description omits partial-vs-full update semantics, what 'properties' is limited to, and required workflow_id/step_id context. Given the destructive annotation, an agent needs more than this.

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 the schema already documents all 5 parameters, and the description adds no format or syntax detail (e.g. how 'params' JSON is merged). Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

States a clear verb ('Update') and resource ('step'), plus the target fields ('parameters and properties'). It does not distinguish itself from close siblings like workflows_step_add, workflows_step_get, or workflows_step_delete, so it falls short of a 5.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of prerequisites (workflow_id and step_id are required), and no routing to alternatives. The agent must infer the entire usage context.

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

workflows_triggerWorkflows: triggerCInspect

Manually trigger a workflow

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkflow ID
entityNoEntity name for the trigger (required for Manual-trigger workflows)
payloadNoOptional JSON record to pass to the workflow (available as $anythink.trigger.data)
entity_idNoOptional entity/record id to associate with the trigger

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the side-effect profile is partly covered. The description adds only the word "manually"; it says nothing about whether execution is synchronous or async, whether a job id is returned, cost/rate implications, or the conditional entity requirement noted in the schema.

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

Conciseness3/5

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

The single short sentence is front-loaded with the verb and contains no filler, which is good. But four words is undersized for a four-parameter, open-world mutation tool, so the terseness reflects under-specification rather than disciplined conciseness.

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

Completeness2/5

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

For a non-read-only, open-world trigger operation with no output schema, the description should explain the minimum an agent needs before calling: when triggering is valid, what an entity value should be, and what the caller receives back. All of that is missing.

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 the schema already documents id, entity, payload, and entity_id, including the Manual-trigger conditional for entity. The description adds no syntax, format, or conditional detail beyond the schema, so the baseline 3 applies.

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

Purpose3/5

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

The description gives a specific verb+resource (trigger a workflow) and the qualifier "manually" distinguishes manual invocation from event- or schedule-driven runs, which is information beyond the title. However, it offers no differentiation from close siblings such as workflows_enable, workflows_disable, or workflows_create, and reads partly as a restatement of the tool name.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no exclusions, and no mention of alternatives among the many workflows_* siblings. An agent is not told how to discover an eligible workflow, whether the workflow must be enabled or Manual-trigger type before this call, or what happens after triggering.

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

workflows_updateWorkflows: updateB
Destructive
Inspect

Update a workflow's name or description

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkflow ID
nameNoNew workflow name
descriptionNoNew workflow description

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=false, so the mutation/safety profile is covered. The description adds one useful constraint — that only name and description are mutable via this tool — but says nothing about permissions, reversibility, or whether unspecified fields are left untouched.

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?

A single short sentence with zero filler, front-loading the verb and resource. It is efficient, though its brevity is partly the source of its informational gaps.

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?

For a simple 3-parameter update tool with full schema coverage and annotations, the description is minimally viable. It omits the required-id requirement, partial-update behavior, and any note on the response, but no output schema exists to carry that burden.

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 id, name, and description are already documented in the schema. The description merely restates the two optional fields without adding format, validation, or 'at least one field required' semantics; baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Update') and resource ('a workflow') and narrows the mutable surface to name and description. It does not explicitly name a sibling, but the 'workflows_' prefix and the two-field scope make it distinguishable from workflows_get, workflows_delete, and workflows_step_update.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no pointer to alternatives such as workflows_get (to read) or workflows_delete (to remove). The agent must infer usage entirely from the name and schema.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 102 tool updatesv0.2.27
    • Changedaccounts_create2 fields changed
      • removedInput schema / description
        Removed value: -"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."
      • removedInput schema / title
        Removed value: -"accounts_create"
    • Changedaccounts_list2 fields changed
      • removedInput schema / description
        Removed value: -"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."
      • removedInput schema / title
        Removed value: -"accounts_list"
    • Changedaccounts_use2 fields changed
      • removedInput schema / description
        Removed value: -"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."
      • removedInput schema / title
        Removed value: -"accounts_use"
    • Addedapi
    • Addedapi_keys_create
    • Addedapi_keys_list
    • Addedapi_keys_revoke
    • Changedcli2 fields changed
      • removedInput schema / description
        Removed value: -"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 <menu_id> <entity> --icon <Icon> --parent <parent_id>' adds an entity to a dashboard menu. For destructive commands add '--yes' to skip confirmation prompts. Add '--json' where supported for machine-readable output."
      • removedInput schema / title
        Removed value: -"cli"
    • Changedconfig_remove2 fields changed
      • removedInput schema / description
        Removed value: -"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."
      • removedInput schema / title
        Removed value: -"config_remove"
    • Changedconfig_show2 fields changed
      • removedInput schema / description
        Removed value: -"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."
      • removedInput schema / title
        Removed value: -"config_show"
    • Changedconfig_use2 fields changed
      • removedInput schema / description
        Removed value: -"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."
      • removedInput schema / title
        Removed value: -"config_use"
    • Addeddata_create
    • Addeddata_delete
    • Addeddata_get
    • Addeddata_list
    • Addeddata_rls
    • Addeddata_update
    • Addeddocs
    • Addedentities_create
    • Addedentities_delete
    • Addedentities_get
    • Addedentities_list
    • Addedentities_update
    • Addedfetch
    • Addedfields_add
    • Addedfields_delete
    • Addedfields_get
    • Addedfields_list
    • Addedfields_update
    • Addedfiles_delete
    • Addedfiles_get
    • Addedfiles_list
    • Addedfiles_upload
    • Addedintegrations_connect
    • Addedintegrations_connections_list
    • Addedintegrations_disable
    • Addedintegrations_disconnect
    • Addedintegrations_enable
    • Addedintegrations_execute
    • Addedintegrations_get
    • Addedintegrations_list
    • Addedintegrations_oauth_callback_url
    • Addedintegrations_oauth_configure
    • Addedintegrations_oauth_connect
    • Addedintegrations_oauth_status
    • Addedintegrations_test
    • Changedlogin2 fields changed
      • removedInput schema / description
        Removed value: -"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."
      • removedInput schema / title
        Removed value: -"login"
    • Changedlogin_direct6 fields changed
      • removedInput schema / description
        Removed value: -"Store credentials directly for a project (bypasses billing login). Use this when you already have an org ID and API key or JWT token."
      • changedInput schema / properties / apiKey / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedInput schema / properties / baseUrl / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedInput schema / properties / profile / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedInput schema / properties / token / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / title
        Removed value: -"login_direct"
    • Changedlogin_google2 fields changed
      • removedInput schema / description
        Removed value: -"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)."
      • removedInput schema / title
        Removed value: -"login_google"
    • Changedlogout3 fields changed
      • removedInput schema / description
        Removed value: -"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."
      • changedInput schema / properties / profile / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / title
        Removed value: -"logout"
    • Addedmenus_add_item
    • Addedmenus_list
    • Addedoauth_google_configure
    • Addedoauth_google_status
    • Addedpay_connect
    • Addedpay_methods
    • Addedpay_payments
    • Addedpay_status
    • Changedprojects_create4 fields changed
      • removedInput schema / description
        Removed value: -"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'."
      • changedInput schema / properties / accountId / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedInput schema / properties / description / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / title
        Removed value: -"projects_create"
    • Changedprojects_delete3 fields changed
      • removedInput schema / description
        Removed value: -"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."
      • changedInput schema / properties / accountId / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / title
        Removed value: -"projects_delete"
    • Changedprojects_list3 fields changed
      • removedInput schema / description
        Removed value: -"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'."
      • changedInput schema / properties / accountId / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / title
        Removed value: -"projects_list"
    • Changedprojects_use4 fields changed
      • removedInput schema / description
        Removed value: -"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."
      • changedInput schema / properties / accountId / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedInput schema / properties / apiKey / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / title
        Removed value: -"projects_use"
    • Addedroles_create
    • Addedroles_delete
    • Addedroles_list
    • Addedroles_permissions_add
    • Addedroles_permissions_list
    • Addedroles_permissions_remove
    • Addedsearch_audit
    • Addedsearch_purge
    • Addedsearch_query
    • Addedsearch_rehydrate
    • Addedsearch_similar
    • Addedsecrets_create
    • Addedsecrets_delete
    • Addedsecrets_list
    • Addedsecrets_update
    • Changedsignup3 fields changed
      • removedInput schema / description
        Removed value: -"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'."
      • changedInput schema / properties / referralCode / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / title
        Removed value: -"signup"
    • Addedusers_delete
    • Addedusers_get
    • Addedusers_invite
    • Addedusers_list
    • Addedusers_me
    • Addedworkflows_create
    • Addedworkflows_delete
    • Addedworkflows_disable
    • Addedworkflows_enable
    • Addedworkflows_export
    • Addedworkflows_file_handler_add
    • Addedworkflows_file_handler_example
    • Addedworkflows_get
    • Addedworkflows_integration_add
    • Addedworkflows_jobs
    • Addedworkflows_list
    • Addedworkflows_seed
    • Addedworkflows_step_add
    • Addedworkflows_step_delete
    • Addedworkflows_step_get
    • Addedworkflows_step_link
    • Addedworkflows_step_update
    • Addedworkflows_trigger
    • Addedworkflows_update
  2. 14 tool updatesv0.2.21
    • Changedaccounts_create4 fields changed
      • changedInput schema / description
        Previous value: -"Create a new billing account"New value: +"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."
      • changedInput schema / properties / currency / description
        Previous value: -"Currency: gbp, usd, or eur (default: gbp)"New value: +"ISO currency for billing: 'gbp', 'usd', or 'eur'. Defaults to 'gbp'. Cannot be changed later."
      • changedInput schema / properties / email / description
        Previous value: -"Billing email address"New value: +"Billing email address that receives invoices and receipts"
      • changedInput schema / properties / name / description
        Previous value: -"Organization name"New value: +"Organization name, e.g. 'Acme Inc' — shown on invoices and in the dashboard"
    • Changedaccounts_list1 field changed
      • changedInput schema / description
        Previous value: -"List all billing accounts for the logged-in user"New value: +"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."
    • Changedaccounts_use2 fields changed
      • changedInput schema / description
        Previous value: -"Set the active billing account (used for project management)"New value: +"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."
      • changedInput schema / properties / id / description
        Previous value: -"Billing account ID (full UUID or prefix)"New value: +"Billing account id — full UUID or a unique leading prefix. Get ids from 'accounts_list'."
    • Changedconfig_remove2 fields changed
      • changedInput schema / description
        Previous value: -"Remove a project profile from the CLI configuration"New value: +"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."
      • changedInput schema / properties / profile / description
        Previous value: -"Profile name to remove"New value: +"Name of the profile to remove from local config. See 'config_show' for valid names."
    • Changedconfig_show1 field changed
      • changedInput schema / description
        Previous value: -"List all configured profiles and show which is active"New value: +"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."
    • Changedconfig_use2 fields changed
      • changedInput schema / description
        Previous value: -"Set the active project profile"New value: +"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."
      • changedInput schema / properties / profile / description
        Previous value: -"Profile name to activate"New value: +"Name of an existing profile to make active. See 'config_show' for valid names."
    • Changedlogin1 field changed
      • changedInput schema / description
        Previous value: -"Log in to the Anythink platform with email and password. Returns a session token used for account and project management. For Google OAuth, use the CLI instead ('anythink login --google')."New value: +"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."
    • Addedlogin_google
    • Changedlogout2 fields changed
      • changedInput schema / description
        Previous value: -"Remove saved credentials for a project profile"New value: +"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."
      • changedInput schema / properties / profile / description
        Previous value: -"Profile name to remove (uses active profile if omitted)"New value: +"Name of the profile to remove. Defaults to the active profile. See 'config_show' for names."
    • Changedprojects_create6 fields changed
      • changedInput schema / description
        Previous value: -"Create a new project in the active billing account"New value: +"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'."
      • changedInput schema / properties / accountId / description
        Previous value: -"Billing account ID (uses active account if omitted)"New value: +"Billing account id to create the project in. Defaults to the active account set via 'accounts_use'."
      • changedInput schema / properties / description / description
        Previous value: -"Project description (optional)"New value: +"Optional free-text description shown in the dashboard"
      • changedInput schema / properties / name / description
        Previous value: -"Project name"New value: +"Human-readable project name, e.g. 'production' or 'my-app'"
      • changedInput schema / properties / planId / description
        Previous value: -"Plan ID (UUID) — use 'plans' CLI command to list available plans"New value: +"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."
      • changedInput schema / properties / region / description
        Previous value: -"Deployment region (e.g. lon1)"New value: +"Deployment region slug, e.g. 'lon1'. Defaults to 'lon1'. Choose the region closest to your users."
    • Changedprojects_delete3 fields changed
      • changedInput schema / description
        Previous value: -"Delete a project from the billing account"New value: +"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."
      • changedInput schema / properties / accountId / description
        Previous value: -"Billing account ID (uses active account if omitted)"New value: +"Billing account id the project belongs to. Defaults to the active account set via 'accounts_use'."
      • changedInput schema / properties / id / description
        Previous value: -"Project ID (UUID or prefix)"New value: +"Project to delete — its UUID, name, or a unique prefix. Use a specific id to avoid accidental matches. Find ids via 'projects_list'."
    • Changedprojects_list2 fields changed
      • changedInput schema / description
        Previous value: -"List all projects in the active billing account"New value: +"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'."
      • changedInput schema / properties / accountId / description
        Previous value: -"Billing account ID (uses active account if omitted)"New value: +"Billing account id to list projects for. Defaults to the active account set via 'accounts_use'."
    • Changedprojects_use4 fields changed
      • changedInput schema / description
        Previous value: -"Connect to a project and save it as the active profile. Exchanges a transfer token for project-scoped credentials."New value: +"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."
      • changedInput schema / properties / accountId / description
        Previous value: -"Billing account ID (uses active account if omitted)"New value: +"Billing account id the project belongs to. Defaults to the active account set via 'accounts_use'."
      • changedInput schema / properties / apiKey / description
        Previous value: -"API key for the project (generates token if omitted)"New value: +"Optional project API key (ak_...). If omitted, a project-scoped token is generated automatically via transfer-token exchange."
      • changedInput schema / properties / id / description
        Previous value: -"Project name, org ID, or UUID (or prefix)"New value: +"Project to connect to — its name, org id, or UUID (a unique prefix is accepted). Find these via 'projects_list'."
    • Changedsignup6 fields changed
      • changedInput schema / description
        Previous value: -"Create a new Anythink account"New value: +"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'."
      • changedInput schema / properties / email / description
        Previous value: -"Email address"New value: +"Email address — becomes the login identifier and must be unique"
      • changedInput schema / properties / firstName / description
        Previous value: -"First name"New value: +"User's first name"
      • changedInput schema / properties / lastName / description
        Previous value: -"Last name"New value: +"User's last name"
      • changedInput schema / properties / password / description
        Previous value: -"Password"New value: +"Password for the new account; choose a strong value"
      • changedInput schema / properties / referralCode / description
        Previous value: -"Referral code (optional)"New value: +"Optional referral code, if the user was invited by another customer"
  3. 15 tool updatesv0.2.6
    • First observedaccounts_create
    • First observedaccounts_list
    • First observedaccounts_use
    • First observedcli
    • First observedconfig_remove
    • First observedconfig_show
    • First observedconfig_use
    • First observedlogin
    • First observedlogin_direct
    • First observedlogout
    • First observedprojects_create
    • First observedprojects_delete
    • First observedprojects_list
    • First observedprojects_use
    • First observedsignup

TDQS

C2.8/5.0

Scored across 102 tools

Disambiguation3/5

Many tools are clearly scoped by resource and action, but the 102-tool surface creates overlap: `cli`, `fetch`, and `api` can all be used for API access, while `integrations_connect` vs `integrations_oauth_connect` and several workflow helper tools require careful selection. Descriptions help, but the sheer number increases misselection risk.

Naming Consistency4/5

Names predominantly follow a consistent snake_case resource_action pattern (e.g., `entities_create`, `fields_update`, `workflows_step_add`). A few bare commands like `fetch`, `docs`, `api`, `cli`, `login`, `logout`, and `signup` are minor deviations from that pattern.

Tool Count1/5

With 102 tools, this far exceeds the normal 3-15 range and the 50+ extreme-mismatch threshold. A generic `cli` and `fetch` already cover broad functionality, so many individual tools are over-provisioned rather than essential.

Completeness4/5

The surface covers most domain lifecycle areas: auth, billing, projects, entities, fields, data, files, search, workflows, integrations, secrets, roles, users, API keys, and payments. Some resource-specific gaps remain (e.g., user update, menu item management), but the generic `cli`/`fetch` tools provide workarounds.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

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.
    21,341 npm
    1,949
    -
  • A
    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.
    MIT
  • 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
    14 npm
    MIT