Skip to main content
Glama
Heliyos MCP server

Heliyos MCP server

Official
by heliyos-ai

@heliyos/heliyos-mcp is a Model Context Protocol server for Heliyos. It runs on your machine over stdio and calls the Heliyos API with a workspace API key, so an agent in Claude Code, Codex, Cursor, VS Code, Antigravity or any other MCP client can work in your CRM.

Documentation: docs.heliyos.ai/mcp · Install guides · All tools · API reference · Changelog

With it, an agent can:

  • find and update companies, people, deals and custom objects, and add fields to them

  • read a record's timeline, change history, emails and meetings

  • write notes and tasks, and start Heliyos workers on a task

  • list the reviews waiting for a person and approve or reject them

  • create and configure workers from the trigger and tool catalogs

  • manage scouts, read their signals and keep the watchlist

  • read and edit the knowledge base, and upload the files the workers read

  • hand a job to Heliyos with heliyos_ask and follow the run

Important actions that workers take still wait for review in Heliyos, so the team stays in control.

Quick start

  1. Create an API key in Heliyos under Settings → API keys (details below).

  2. Add the server to your client. For Claude Code:

    claude mcp add --transport stdio --env HELIYOS_API_KEY=YOUR_HELIYOS_API_KEY --scope user heliyos -- npx -y @heliyos/heliyos-mcp
  3. Ask your agent "Which Heliyos workspace am I connected to?". It calls heliyos_organization_get and answers with your workspace name.

Every other client is covered in Install.

Related MCP server: ParcelPilot MCP Server

Contents

Before you start

You need Node.js 20 or later (node -v) and a Heliyos API key.

To create a key:

  1. Open Heliyos and go to Settings → API keys (gtm.heliyos.ai/settings/api-keys).

  2. Click New key. Give it a name you will recognise, such as "Claude Code on my laptop", and an expiry date if you want one, then click Create key.

  3. Copy the key. It starts with heliyos_ and is shown once. If you lose it, revoke it and create a new one.

Only workspace owners and admins can create keys. A key has admin access to one workspace, the one you created it in, and to nothing else. Use one key per person and machine, so you can revoke one without breaking the others.

Install

Every client runs the same command, npx -y @heliyos/heliyos-mcp, with your key in the HELIYOS_API_KEY environment variable. In the snippets below, replace YOUR_HELIYOS_API_KEY with your key.

Claude Code

Install the plugin. It asks for your key and keeps it in your system's secure credential store, and it adds a skill that teaches Claude when to use which tool.

claude plugin marketplace add heliyos-ai/heliyos-mcp
claude plugin install heliyos@heliyos

Or add only the MCP server:

claude mcp add --transport stdio --env HELIYOS_API_KEY=YOUR_HELIYOS_API_KEY --scope user heliyos -- npx -y @heliyos/heliyos-mcp

Check it with claude mcp list, or /mcp inside a session.

Claude Desktop

Open Settings → Developer → Edit Config and add the server to claude_desktop_config.json, then restart Claude Desktop:

{
  "mcpServers": {
    "heliyos": {
      "command": "npx",
      "args": ["-y", "@heliyos/heliyos-mcp"],
      "env": { "HELIYOS_API_KEY": "YOUR_HELIYOS_API_KEY" }
    }
  }
}

This file stores the key in plain text, so keep it private. Custom connectors on claude.ai and in the Claude connector directory need a hosted (remote) MCP server with OAuth. Heliyos does not offer one yet, so use a local client for now.

Codex

Add the server to ~/.codex/config.toml:

[mcp_servers.heliyos]
command = "npx"
args = ["-y", "@heliyos/heliyos-mcp"]
env_vars = ["HELIYOS_API_KEY"]
startup_timeout_sec = 30
tool_timeout_sec = 120

env_vars passes HELIYOS_API_KEY from the shell you start Codex in, so export it there (for example in ~/.zshrc). To keep the key in the file instead, replace the env_vars line with an env table at the end:

[mcp_servers.heliyos.env]
HELIYOS_API_KEY = "YOUR_HELIYOS_API_KEY"

The CLI does the same in one line, after which you add tool_timeout_sec = 120 to the table it writes:

codex mcp add heliyos --env HELIYOS_API_KEY=YOUR_HELIYOS_API_KEY -- npx -y @heliyos/heliyos-mcp

Cursor

Add Heliyos to Cursor

The link opens this deeplink, which you can also paste into your browser:

cursor://anysphere.cursor-deeplink/mcp/install?name=heliyos&config=eyJ0eXBlIjoic3RkaW8iLCJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBoZWxpeW9zL2hlbGl5b3MtbWNwIl0sImVudiI6eyJIRUxJWU9TX0FQSV9LRVkiOiIke2VudjpIRUxJWU9TX0FQSV9LRVl9In19

It adds this entry to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "heliyos": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@heliyos/heliyos-mcp"],
      "env": { "HELIYOS_API_KEY": "${env:HELIYOS_API_KEY}" }
    }
  }
}

Cursor reads ${env:HELIYOS_API_KEY} from its own environment. Export the variable in your shell profile and start Cursor from that shell, or replace the value with your key. Run npm run install-links in this repository to print the links again.

VS Code

Install Heliyos in VS Code

The link opens this deeplink, which you can also paste into your browser:

vscode:mcp/install?%7B%22name%22%3A%22heliyos%22%2C%22inputs%22%3A%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22heliyos-api-key%22%2C%22description%22%3A%22Heliyos%20API%20key%20(Settings%20%E2%86%92%20API%20keys)%22%2C%22password%22%3Atrue%7D%5D%2C%22type%22%3A%22stdio%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40heliyos%2Fheliyos-mcp%22%5D%2C%22env%22%3A%7B%22HELIYOS_API_KEY%22%3A%22%24%7Binput%3Aheliyos-api-key%7D%22%7D%7D)%22%2C%22password%22%3Atrue%7D%5D%2C%22type%22%3A%22stdio%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40heliyos%2Fmcp%22%5D%2C%22env%22%3A%7B%22HELIYOS_API_KEY%22%3A%22%24%7Binput%3Aheliyos-api-key%7D%22%7D%7D

VS Code asks for the key the first time the server starts and keeps it in its secret storage. To set it up by hand, add this to .vscode/mcp.json in a project, or to your user mcp.json (MCP: Open User Configuration):

{
  "inputs": [
    {
      "type": "promptString",
      "id": "heliyos-api-key",
      "description": "Heliyos API key (Settings → API keys)",
      "password": true
    }
  ],
  "servers": {
    "heliyos": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@heliyos/heliyos-mcp"],
      "env": { "HELIYOS_API_KEY": "${input:heliyos-api-key}" }
    }
  }
}

Antigravity

In the agent panel, open … → MCP Servers → Manage MCP Servers → View raw config, or edit ~/.gemini/config/mcp_config.json directly (.agents/mcp_config.json for one project):

{
  "mcpServers": {
    "heliyos": {
      "command": "npx",
      "args": ["-y", "@heliyos/heliyos-mcp"],
      "env": { "HELIYOS_API_KEY": "YOUR_HELIYOS_API_KEY" }
    }
  }
}

Any other client

Run the package over stdio with the key in the environment:

HELIYOS_API_KEY=YOUR_HELIYOS_API_KEY npx -y @heliyos/heliyos-mcp

The repository also ships portable Agent Plugins manifests (plugin.json and mcp.json) for clients that install plugins from a Git repository. They do not carry a key, so set HELIYOS_API_KEY in the environment your client starts servers with. In the MCP Registry the server is listed as ai.heliyos/crm.

Tool timeout

heliyos_ask waits up to 90 seconds for Heliyos to answer, so give tool calls at least 120 seconds.

Client

Setting

Codex

tool_timeout_sec = 120 in the [mcp_servers.heliyos] table (the default is 60). Installed as a plugin from a marketplace, Codex keeps the 60 second default, because the plugin's .mcp.json cannot carry tool_timeout_sec, so a long heliyos_ask stops at 60 seconds; use the config.toml setup above for 120.

Claude Code

The default is long enough. If you set MCP_TOOL_TIMEOUT, keep it at 120000 or more, for example MCP_TOOL_TIMEOUT=120000 claude.

Claude Desktop

No documented setting.

Cursor

No documented tool timeout setting.

VS Code

No documented tool timeout setting.

Antigravity

No documented tool timeout setting.

When a client cuts a call short, the run keeps going in Heliyos. Find it with heliyos_runs_list and follow it with heliyos_runs_get and wait: true, which waits up to 30 seconds per call.

A rate-limited request (HTTP 429) is retried once after the Retry-After delay, capped at 30 s, so a heliyos_ask that hits the limit can take about 125 seconds. If you see timeouts while you are near the limit, raise the timeout to 150 seconds.

Configuration

Variable

Required

Default

What it does

HELIYOS_API_KEY

Yes

None

Your Heliyos API key. It must start with heliyos_.

HELIYOS_BASE_URL

No

https://api-prod.heliyos.ai

The Heliyos API to call. It must use https; plain http is accepted only for localhost.

HELIYOS_MCP_EXPERIMENTAL

No

Off

1, true, yes or on adds the experimental tools marked below.

The server also offers a resource template, heliyos://records/{id}, which returns one record as JSON, and two prompts: prepare_account_review (for one company) and daily_pipeline_summary.

Tools

Every tool is named heliyos_<resource>_<verb> and declares whether it reads, writes or deletes, so your client can ask before it changes anything. Reads take response_format (concise or detailed), and lists take limit and cursor.

73 tools by default, and 4 more with HELIYOS_MCP_EXPERIMENTAL=1. Kind is read (no changes), write (creates or updates) or destructive (deletes or removes).

Records

Tool

What it does

Kind

heliyos_records_list

List records

read

heliyos_records_get

Get a record

read

heliyos_records_create

Create a record

write

heliyos_records_update

Update a record

write

heliyos_records_delete

Delete records

destructive

heliyos_records_lookup

Find records by name

read

heliyos_records_enrich

Enrich a person (experimental)

write

Timeline and activity

Tool

What it does

Kind

heliyos_records_timeline

Read a record's timeline

read

heliyos_records_events

Read a record's change history

read

heliyos_interactions_list

List emails and meetings

read

heliyos_interactions_get

Get an email or meeting

read

Workspace, objects and fields

Tool

What it does

Kind

heliyos_organization_get

Get the workspace

read

heliyos_objects_list

List objects

read

heliyos_objects_get

Get an object's fields

read

heliyos_objects_create

Create a custom object (experimental)

write

heliyos_objects_update

Rename or describe an object (experimental)

write

heliyos_objects_delete

Delete a custom object (experimental)

destructive

heliyos_fields_create

Add a field to an object

write

heliyos_fields_update

Change a field

destructive

heliyos_fields_delete

Delete a field

destructive

Notes

Tool

What it does

Kind

heliyos_notes_list

List notes

read

heliyos_notes_get

Get a note

read

heliyos_notes_create

Create a note

write

heliyos_notes_update

Update a note

write

heliyos_notes_delete

Delete a note

destructive

Tasks

Tool

What it does

Kind

heliyos_tasks_list

List tasks

read

heliyos_tasks_get

Get a task

read

heliyos_tasks_events

Read a task's activity

read

heliyos_tasks_create

Create a task

write

heliyos_tasks_update

Update a task

write

heliyos_tasks_delete

Delete a task

destructive

heliyos_tasks_run

Run workers on a task

destructive

Scouts and signals

Tool

What it does

Kind

heliyos_scouts_list

List scouts

read

heliyos_scouts_get

Get a scout

read

heliyos_scouts_create

Create a scout

write

heliyos_scouts_update

Update a scout

write

heliyos_scouts_delete

Delete a scout

destructive

heliyos_companies_scouts_list

List a company's scouts

read

heliyos_companies_scouts_add

Add scouts to a company

write

heliyos_companies_scouts_remove

Remove a company's scouts

destructive

heliyos_signals_list

List signals

read

heliyos_signals_mark_read

Mark signals read

write

Ask, runs and reviews

Tool

What it does

Kind

heliyos_ask

Ask Heliyos

destructive

heliyos_runs_get

Get a run

read

heliyos_runs_list

List runs

read

heliyos_reviews_list

List reviews

read

heliyos_reviews_get

Get a review

read

heliyos_reviews_decide

Approve or reject a review

destructive

Workers, triggers and tools

Tool

What it does

Kind

heliyos_workers_list

List workers

read

heliyos_workers_get

Get a worker

read

heliyos_workers_create

Create a worker

write

heliyos_workers_update

Update a worker

write

heliyos_workers_delete

Delete a worker

destructive

heliyos_triggers_list

List worker triggers

read

heliyos_workers_tools_list

List tools a worker can use

read

Knowledge base and files

Tool

What it does

Kind

heliyos_knowledge_get

Read the knowledge base

read

heliyos_knowledge_update

Update the knowledge base

write

heliyos_knowledge_entries_set

Add or change a knowledge entry

write

heliyos_knowledge_entries_delete

Delete a knowledge entry

destructive

heliyos_files_list

List files

read

heliyos_files_get

Get a file

read

heliyos_files_upload

Upload a file

write

heliyos_files_delete

Delete a file

destructive

Watchlist

Tool

What it does

Kind

heliyos_watchlist_get

Get the watchlist

read

heliyos_companies_watch

Watch a company

write

heliyos_companies_unwatch

Unwatch a company

destructive

Labels

Tool

What it does

Kind

heliyos_labels_list

List label groups

read

heliyos_labels_create

Create a label group

write

heliyos_labels_update

Update a label group

destructive

heliyos_labels_delete

Delete a label group

destructive

Team

Tool

What it does

Kind

heliyos_team_members_list

List team members

read

heliyos_team_members_invite

Invite a team member

write

heliyos_team_members_remove

Remove a team member

destructive

heliyos_team_members_change_role

Change a team member's role

write

Notification settings

Tool

What it does

Kind

heliyos_notification_settings_get

Get notification settings

read

heliyos_notification_settings_update

Update notification settings

write

Usage

Tool

What it does

Kind

heliyos_usage_get

Get credit usage

read

Security

  • Your key stays on your machine. The server reads it from its environment and sends it only to the Heliyos API (HELIYOS_BASE_URL), as a bearer token over https. It refuses a base URL that is not https, other than localhost.

  • File uploads skip the key. File content goes to a short-lived signed storage URL, and that request does not carry your key.

  • No telemetry. The server sends nothing anywhere else and keeps no logs. Diagnostics go to your client's stderr, and error messages have keys removed.

  • Rate limits. The API allows 60 requests per minute per key, and per IP address. When it answers 429, the server waits for Retry-After and retries once.

  • Least access. A key has admin rights in one workspace. Give it an expiry, keep one key per person and machine, and revoke it in Settings → API keys when you no longer need it.

  • Destructive tools are marked. Deletes and removals are annotated as destructive, and the agent skill tells agents to confirm them first.

Report a security issue privately through GitHub security advisories rather than in a public issue.

Troubleshooting

What you see

What to do

heliyos-mcp: Set HELIYOS_API_KEY to a Heliyos API key

The client did not pass the key. Check the env block, or that the variable is exported in the shell that started the client.

HELIYOS_API_KEY does not look like a Heliyos API key

The value is not a Heliyos key. Keys start with heliyos_. Copy it again or create a new one.

UNAUTHENTICATED

The key was revoked, has expired or was mistyped. Create a new key in Settings → API keys.

FORBIDDEN_ACTION

The workspace plan or billing status does not allow the action, or the action is not available to API keys.

RATE_LIMITED

You are above 60 requests per minute. Wait a minute, and prefer list calls over many single gets.

heliyos_ask times out

Raise the client's tool timeout (see Tool timeout). The run keeps going; follow it with heliyos_runs_get.

The server does not start or shows no tools

Check node -v is 20 or later. The first start downloads the package, which can take longer than a 10 second startup timeout; raise it (Codex startup_timeout_sec, Claude Code MCP_TIMEOUT). Apps opened from the dock may not find npx; use its full path from which npx.

Experimental tools are missing

Set HELIYOS_MCP_EXPERIMENTAL=1 and restart the client.

Still stuck? Open an issue at github.com/heliyos-ai/heliyos-mcp/issues. Never paste your key.

Development

Requirements: Node.js 20 or later and npm. Everything else is a dev dependency.

git clone https://github.com/heliyos-ai/heliyos-mcp.git
cd heliyos-mcp
npm ci
npm test                  # unit tests with a mocked Heliyos API
npm run typecheck
npm run build             # codegen, then tsc into dist/
npm run readme:tools      # regenerate the tool table above
npm run install-links     # print the Cursor and VS Code install links
npm run prepublish:check  # manifests, versions and package contents
HELIYOS_API_KEY=YOUR_HELIYOS_API_KEY npm run smoke   # read-only checks against a real workspace

To run your local build in a client instead of the published package, point the client at dist/src/bin/stdio.js:

claude mcp add --transport stdio --env HELIYOS_API_KEY=YOUR_HELIYOS_API_KEY --scope user heliyos-dev -- node /path/to/heliyos-mcp/dist/src/bin/stdio.js

How it is built

  • src/client/openapi/ holds copies of the Heliyos API's OpenAPI documents. npm run codegen turns them into a typed operation table (src/client/generated.ts) with zod schemas, so every request is validated before it is sent.

  • src/tools/ defines one file per resource. Each tool declares its input and output schemas, its annotations (read, write or destructive) and a handler that calls one or two API operations and renders a short text plus structuredContent.

  • tests/ runs every tool against a mocked API with msw. A snapshot test pins the public tool contract (names, annotations, input keys), so an accidental change fails the build.

  • skills/heliyos/SKILL.md ships with the Claude Code plugin and teaches the agent when to use which tool.

Updating the API client

When the Heliyos API changes, save the new OpenAPI documents and resync:

curl -s https://api-prod.heliyos.ai/v1/platform/openapi.json -o /tmp/platform.json
curl -s https://api-prod.heliyos.ai/v1/auth/openapi.json -o /tmp/auth.json
HELIYOS_PLATFORM_OPENAPI=/tmp/platform.json HELIYOS_AUTH_OPENAPI=/tmp/auth.json npm run sync-openapi
npm run codegen && npm test

With those two variables set, npm run prepublish:check and the drift test also refuse a bundled copy that no longer matches.

Releasing

Releases are published by GitHub Actions on every push to main (.github/workflows/publish-package.yml):

  1. CI builds, tests and checks the package and manifests.

  2. If the version in package.json is already on npm, the workflow bumps the patch version with node scripts/set-version.mjs, which keeps package.json, the lockfile, server.json, every plugin manifest and src/version.ts on the same version, and commits the bump.

  3. It publishes to npm with provenance through npm trusted publishing (no token is stored anywhere), waits until the version is served, and then publishes server.json to the MCP registry when the MCP_PRIVATE_KEY secret is configured.

To cut a specific version, run node scripts/set-version.mjs 1.2.0, commit, and push to main. See CONTRIBUTING.md for the one-time repository setup.

Contributing

Issues and pull requests are welcome. Read CONTRIBUTING.md for the workflow, the coding rules and how to add a tool, and SECURITY.md for how to report a vulnerability. By participating you agree to the code of conduct.

License

MIT

Available Tools

73 tools
heliyos_askAsk HeliyosA
Destructive

Asks Heliyos (the orchestrator and its workers) a question or gives it a job, in plain language, for example "summarise what changed with Acme this week" or "draft a follow-up to the Globex thread". It can read and act on the whole workspace: it may change records and tasks or send email, and consequential actions wait for approval in Heliyos, so confirm jobs that change things with the user first. Waits up to 90 s: a finished run returns its answer and run_id. Otherwise it returns {run_id, status, thread_id} and the text "Still running"; then call heliyos_runs_get with that run_id and wait: true. Pass thread_id to continue the same conversation. Runs use credits; calling it twice starts two runs. Needs a client tool timeout of at least 120 s. Returns structuredContent {run_id, status, thread_id, done, answer?}.

NameRequiredDescriptionDefault
messageYesThe question or instruction.
thread_idNothread_id from an earlier heliyos_ask, to ask a follow-up in the same conversation.

Output Schema

NameRequiredDescription
doneYesfalse: the run is still going; follow it with heliyos_runs_get.
answerNo
run_idNo
statusYes
thread_idNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only say destructive, non-idempotent, non-read-only; the description goes well beyond by disclosing the approval gate for consequential actions, the 90 s wait ceiling, the minimum 120 s client timeout requirement, credit consumption, and the dual-run consequence of repeated calls. These are the operational facts an agent cannot infer from the annotations and would otherwise trip over.

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-loaded with purpose and examples, then moves efficiently through safety, timing, follow-up, and cost. Minor waste: it restates the return payload both inline ({run_id, status, thread_id}) and again at the end as structuredContent, which is redundant given an output schema exists.

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 complex, long-running, destructive orchestration tool this covers everything an agent needs before calling: scope of side effects, approval semantics, latency and timeout, follow-up path, conversation continuity, and cost model. Return values are additionally spelled out even though an output schema 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 both parameters are already documented in the schema, so the baseline is 3. The description's note about passing thread_id to continue the same conversation largely restates the schema field description and adds nothing about the 20,000-character message limit or content expectations.

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 ('Asks Heliyos (the orchestrator and its workers) a question or gives it a job, in plain language') and backs it with two concrete examples that show the level of abstraction expected. It is clearly distinguishable from the granular siblings like heliyos_records_update or heliyos_tasks_create because it is the natural-language entry point.

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 routes the agent: use this for plain-language jobs, call heliyos_runs_get with wait: true when the result is 'Still running', and pass thread_id to continue a conversation. It also gives a pre-call instruction ('confirm jobs that change things with the user first') and warns that calling twice starts two runs, which is exactly the when/when-not guidance an agent needs.

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

heliyos_companies_scouts_addAdd scouts to a companyA

Starts the given scouts on one company. Each scout_id must be an active global scout with apply_to watchlist (see heliyos_scouts_list). Setup runs in the background; check it with heliyos_companies_scouts_list. A scout already running on the company is not added twice. Scout runs use credits. Returns structuredContent {company_id, scout_ids, status}.

NameRequiredDescriptionDefault
scout_idsYesGlobal scout ids, 1 to 50.
company_idYesCompany record id (heliyos_records_lookup with object_type company).

Output Schema

NameRequiredDescription
statusNoprocessing: setup continues in the background.
scout_idsYes
company_idYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare the mutation profile (readOnly=false, destructive=false, openWorld=false), and the description adds real context beyond them: setup runs asynchronously and must be polled via heliyos_companies_scouts_list, scout runs consume credits, and duplicate scouts are skipped. The credit cost is the most valuable disclosure since idempotentHint=false means repeat calls can carry cost. The skip-if-running rule is not a contradiction of idempotentHint but a clarification of it.

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?

Four sentences, each carrying a distinct fact (precondition, async behavior, dedupe, cost), with the core action front-loaded. The final sentence restating structuredContent fields duplicates the existing output schema and could be dropped without loss.

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 that fires async work and spends credits, the description covers the required input constraints, the polling path, dedupe semantics, cost, and return shape — and an output schema exists so return details need only a pointer. Nothing an agent needs to call this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds a validity constraint the schema cannot express: scout_ids must reference active global scouts with apply_to watchlist. It does not elaborate on the 50-item cap or id format, which the schema already handles.

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 opening sentence gives a specific verb and resource — 'Starts the given scouts on one company' — which separates it from heliyos_scouts_create (defines a scout) and heliyos_companies_scouts_remove (detaches). Sibling differentiation is implicit in the wording rather than stated by contrast, so it stops just 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 Guidelines4/5

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

It states the precondition that each scout_id must be an active global scout with apply_to watchlist, and routes the agent to heliyos_scouts_list to find valid ids and to heliyos_companies_scouts_list to verify the result. It also notes an already-running scout is skipped, effectively a when-not condition. No explicit statement of when removal or a different sibling is preferable.

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

heliyos_companies_scouts_listList a company's scoutsA
Read-onlyIdempotent

Lists the scouts running on one company: each company scout's own id, its global scout id (scout_id, for heliyos_scouts_get), status (active, paused or failed), cadence and last run. A company has only a few, so there is no paging. Returns structuredContent {company_id, scouts:[{id, scout_id, name, status, ...}]}.

NameRequiredDescriptionDefault
statusNoOnly scouts in this status: active, paused or failed.
company_idYesCompany record id (heliyos_records_lookup with object_type company).

Output Schema

NameRequiredDescription
scoutsYes
company_idYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds behavior the annotations cannot: no paging because the collection is small, the status enumeration, and a sketch of the returned structuredContent. It does not state ordering or behavior for an unknown company_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?

Two dense sentences, front-loaded with purpose and followed by the return shape; nothing is wasted. The second sentence is somewhat packed with field lists and an inline tool reference, but it remains readable.

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 only two parameters, full schema coverage, an output schema, and rich annotations, this is nearly complete: it covers what is listed, that paging is unnecessary, and the shape of the response. Minor omissions such as whether the status filter is optional or how results are ordered keep it just short of full marks.

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 both parameters are already documented, including the enum values and the company_id pattern. The description largely restates the status values and the company_id linkage rather than adding new syntax or semantics, 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 and resource ('Lists the scouts running on one company') and immediately scopes it to a single company, which distinguishes it from the global heliyos_scouts_list and from heliyos_scouts_get. The enumerated fields (id, scout_id, status, cadence, last run) make the payload predictable.

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 real usage context: 'A company has only a few, so there is no paging,' which tells an agent not to expect pagination, and it routes the agent to heliyos_scouts_get via the global scout_id. It stops short of an explicit when-not-to-use statement (e.g., versus heliyos_scouts_list), so it is clear rather than exhaustive.

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

heliyos_companies_scouts_removeRemove a company's scoutsA
DestructiveIdempotent

Stops and removes EVERY scout running on one company (there is no per-scout removal). Signals already found are kept, and the company stays watched. This cannot be undone: confirm with the user first. Returns structuredContent {company_id, removed (company scout ids), failed}.

NameRequiredDescriptionDefault
company_idYesCompany record id (heliyos_records_lookup with object_type company).

Output Schema

NameRequiredDescription
failedYesCompany scout ids that could not be removed; retry the call.
removedYes
company_idYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already flag destructive and idempotent, but the description adds the consequences an agent cannot infer: existing signals are retained, the company remains watched, the action is irreversible, and the return payload can report partial failures. This is exactly the extra behavioral context the annotations do not carry.

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 ordered by importance: scope, side effects, irreversibility. Nothing is repeated from the schema or annotations, and no sentence could be dropped without losing information.

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

Completeness5/5

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

For a single-parameter destructive tool with full annotation coverage and an output schema, this covers everything an agent needs: scope, retained state, irreversibility, and failure reporting. No gaps remain.

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

Parameters3/5

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

Schema coverage is 100% and the company_id field is already documented with format and a lookup pointer, so the description correctly omits parameter detail. It adds no meaning beyond the schema, which is the expected baseline here.

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 (stops and removes) and resource (every scout on one company), with an explicit scope boundary — no per-scout removal — that separates it from heliyos_scouts_delete and heliyos_companies_scouts_add.

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?

Clearly frames both when to use it (bulk removal for a company) and how the scope differs from per-scout operations, plus a confirmation requirement before invoking. It does not name the alternative tool for single-scout removal, which keeps it from a 5.

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

heliyos_companies_unwatchUnwatch a companyA
DestructiveIdempotent

Removes a company record from the watchlist. Its Scouts are deleted and the workers stop monitoring it; its history (emails, meetings, notes, signals) is kept, so watching it again resumes where it left off. Confirm with the user first. Returns structuredContent {record_id, watched}.

NameRequiredDescriptionDefault
record_idYesThe company record's id (from heliyos_records_list or _lookup).

Output Schema

NameRequiredDescription
watchedYes
record_idYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations flag destructiveHint=true and idempotentHint=true, but the description adds the crucial detail of what exactly is destroyed (Scouts) versus preserved (emails, meetings, notes, signals). It also carries a human-confirmation requirement that appears nowhere in 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.

Conciseness4/5

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

Three tight sentences ordered by importance: what it does, what happens to data, then the confirmation gate. The trailing 'Returns structuredContent {record_id, watched}' is mildly redundant given an output schema exists, but it is brief and harmless.

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 mutation with an output schema and full annotations, the description covers everything an agent needs: destruction scope, preservation semantics, reversibility, and the confirmation requirement. Nothing material is left to inference.

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 record_id parameter is already documented in the schema with its source (heliyos_records_list or _lookup). The description adds no further 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.

Purpose5/5

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

States a specific verb and resource ('Removes a company record from the watchlist'), which is clearly distinct from heliyos_companies_watch, heliyos_watchlist_get, and heliyos_records_delete. An agent can tell from the first clause exactly which operation this performs.

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 precondition ('Confirm with the user first') and clarifies the reversibility model ('watching it again resumes where it left off'), which tells the agent this is not terminal. It stops short of naming the counterpart tool (heliyos_companies_watch) or stating when to prefer heliyos_records_delete instead.

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

heliyos_companies_watchWatch a companyA
Idempotent

Adds a company record to the watchlist: the workers enrich it, pull in its emails and meetings, and start its Scouts. Counts against the plan's watched-company limit (heliyos_organization_get) and uses credits for enrichment. Watching an already watched company changes nothing. Returns structuredContent {record_id, watched}.

NameRequiredDescriptionDefault
record_idYesThe company record's id (from heliyos_records_list or _lookup).

Output Schema

NameRequiredDescription
watchedYes
record_idYes

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (readOnly=false, idempotent=true, destructive=false), the description discloses the real side effects — enrichment workers, email/meeting pulls, Scout startup — plus two cost dimensions (watched-company plan limit, credit consumption) and confirms idempotency in plain language. That is exactly the behavior-over-annotations value this dimension rewards.

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 action, then cost, then idempotency, then return shape. No sentence is padding; each carries a distinct fact an agent needs before calling.

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 mutation with an output schema, everything an agent needs is present: side effects, billing/limit impact, no-op semantics, and the structuredContent keys. Nothing material is left to inference about what calling it commits you to.

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 record_id parameter already documents its 24-hex format and its provenance (records_list or _lookup). The description adds no additional meaning about the identifier, 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?

The description opens with a precise verb+resource pair ('Adds a company record to the watchlist') and immediately enumerates the concrete consequences — enrichment, email/meeting ingestion, Scout activation — so an agent can distinguish this from heliyos_companies_unwatch or a plain record update 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 Guidelines4/5

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

It gives clear decision context: the action consumes a plan-limited slot (cross-referencing heliyos_organization_get) and burns credits, and is a no-op for already-watched companies. What it lacks is explicit routing advice — nothing says to check heliyos_watchlist_get or heliyos_records_get first to avoid spending credits unnecessarily.

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

heliyos_fields_createAdd a field to an objectA

Adds one field (column) to an object: companies, people, deals or a custom object (object_type, plus schema_id for custom). Give it a label and a type; select and multiSelect need options; ai_prompt makes it an AI column. The field key (what record fields and filters use) is derived from the label unless key is given, and must be new on the object. Relationship fields are created in the Heliyos web app. Calling this twice with the same key fails. Returns structuredContent {field:{field_id, key, label, type}}.

NameRequiredDescriptionDefault
keyNoField key, for example contract_value. Derived from the label when omitted.
typeYesOne of text, richText, number, currency, rating, checkbox, date, timestamp, select, multiSelect, url, email, phone, user, image, file.
labelYesDisplay name, for example "Contract value".
hiddenNoHidden from the web app's tables by default. Default false.
optionsNoAllowed values of a select or multiSelect field, unique.
requiredNoRecords must have a value. Default false.
ai_promptNoMakes this an AI column: the workers fill it from this prompt (text, richText, number, date, select, multiSelect or checkbox only). Filling existing records is started from the Heliyos web app and uses credits.
schema_idNoObject schema id. Required when object_type is "custom"; the error lists the available ones.
visibilityNo"organization" (default): every member sees it; "private": only owners and admins.organization
descriptionNoWhat the field holds; shown in the web app and read by the workers.
object_typeYesWhich object: "company", "person", "deal", or "custom" (custom objects also need schema_id).

Output Schema

NameRequiredDescription
fieldYes

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations it discloses the non-obvious operational constraints: the key is derived from the label unless supplied, must be unique on the object, and repeat calls with the same key fail; AI columns consume credits and only certain types support ai_prompt. It even names the return shape, structuredContent {field:{field_id, key, label, type}}, so the agent knows what comes back.

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 core action and required inputs are front-loaded, and each subsequent clause adds a distinct constraint rather than repeating the schema. It is a dense single block, though, and could be split into a short usage sentence plus a constraints list for easier scanning.

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 an 11-parameter mutation tool with an output schema, the description covers the decision points an agent needs: which object types, when schema_id is needed, when options is needed, how the key is derived and what happens on collision, and what the response contains. Nothing material for correct invocation is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, and the description earns more by documenting cross-parameter conditionals the schema does not: options is required for select/multiSelect, schema_id is required when object_type is "custom", and key derivation rules tie key to label. Secondary parameters such as hidden, required, visibility and description are left entirely to the schema.

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

Purpose5/5

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

"Adds one field (column) to an object" gives a specific verb and resource, and then enumerates the valid targets (companies, people, deals, custom objects) and the required shape (object_type + schema_id for custom). It also scopes the operation by excluding relationship fields, so an agent can distinguish this from field-editing and record-level tools at a glance.

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

Usage Guidelines4/5

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

It states when the tool applies and several when-not cases: relationship fields must be created in the Heliyos web app, and backfilling existing records with an AI prompt is started from the web app, not here. It does not explicitly route to heliyos_fields_update for modifying an existing field, which is the one obvious disambiguation left implicit.

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

heliyos_fields_deleteDelete a fieldA
DestructiveIdempotent

Permanently deletes one field of an object by field_id (from heliyos_objects_get) AND its value on every record. This cannot be undone: confirm with the user first, naming the field and the object. Built-in required fields (for example a company's name) are refused by the platform. Returns structuredContent {field_id, key, deleted}.

NameRequiredDescriptionDefault
field_idYesfield_id: a 24-character hex id.
schema_idNoObject schema id. Required when object_type is "custom"; the error lists the available ones.
object_typeYesWhich object: "company", "person", "deal", or "custom" (custom objects also need schema_id).

Output Schema

NameRequiredDescription
keyYes
deletedYes
field_idYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds the material consequences an agent actually needs: deletion is permanent and irreversible, it wipes the value on every record, built-in fields are rejected by the platform, and the response shape is structuredContent {field_id, key, deleted}. This is meaningful behavior beyond the annotation flags.

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, front-loaded with the destructive scope before the confirmation requirement and the platform restriction. Every clause carries operational information; nothing is redundant 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?

For a destructive three-parameter tool this covers the essentials: what is destroyed, irreversibility, the required user confirmation, the platform-level restriction, and the return shape. Nothing needed to invoke it safely is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline would be 3, but the description adds real semantic value by telling the agent where field_id must come from (heliyos_objects_get) rather than letting it guess. It does not add anything on schema_id or object_type beyond what the schema's enum and conditional note already provide.

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 ("Permanently deletes one field of an object by field_id") and immediately clarifies the blast radius: the field AND its value on every record. That scope statement distinguishes it cleanly from the sibling heliyos_fields_update 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 Guidelines4/5

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

Gives a concrete precondition (field_id comes from heliyos_objects_get) and a when-not rule (built-in required fields such as a company's name are refused by the platform). It also prescribes a confirmation protocol naming the field and object. It stops short of naming an alternative sibling such as heliyos_fields_update for non-destructive edits, so it is clear context rather than full alternative routing.

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

heliyos_fields_updateChange a fieldA
DestructiveIdempotent

Changes one field of an object by field_id (from heliyos_objects_get): its label, description, options, required or hidden flag, AI prompt, or type. What you leave out is kept. options REPLACES the allowed values, and records holding a removed value keep it as stale text. A type change is refused by the platform when existing values do not fit the new type. The field key never changes. Returns structuredContent {field}.

NameRequiredDescriptionDefault
typeNoNew type; values must fit it.
labelNoDisplay name, for example "Contract value".
hiddenNotrue: hidden from the web app's tables by default.
optionsNoAllowed values of a select or multiSelect field, unique.
field_idYesfield_id: a 24-character hex id.
requiredNotrue: records must have a value.
ai_promptNoMakes this an AI column: the workers fill it from this prompt (text, richText, number, date, select, multiSelect or checkbox only). Filling existing records is started from the Heliyos web app and uses credits.
schema_idNoObject schema id. Required when object_type is "custom"; the error lists the available ones.
descriptionNoWhat the field holds; shown in the web app and read by the workers.
object_typeYesWhich object: "company", "person", "deal", or "custom" (custom objects also need schema_id).

Output Schema

NameRequiredDescription
fieldYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint=true, idempotentHint=true), the description explains exactly why the operation is destructive: options REPLACES allowed values and records holding a removed value keep it as stale text. It also discloses the platform-side refusal on incompatible type changes, that the field key is immutable, and that the response is structuredContent {field}, all of which the annotations do not convey.

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 front-loaded sentences plus a return-value clause, with the highest-risk fact (options replaces values, leaving stale text) surfaced early. No redundant restatement of the name or title.

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 10-parameter destructive mutation with an output schema, the description covers partial-update semantics, the destructive edge case, the type-change refusal, immutability of the key, and the return shape. 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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns above that by adding meaning the schema lacks, notably that options overwrites rather than merges and that a type change is rejected when existing values do not fit. It does not otherwise elaborate on individual parameters such as ai_prompt's credit cost or schema_id's requirement, which the schema already handles.

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

Purpose5/5

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

The description opens with a specific verb and resource ("Changes one field of an object by field_id") and immediately tells the agent where field_id comes from (heliyos_objects_get), which separates it from heliyos_fields_create and heliyos_fields_delete 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 Guidelines4/5

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

It states the partial-update contract ("What you leave out is kept") and the preconditions for a type change, which tells the agent how to call it safely. It does not explicitly name the alternative tools (fields_create/fields_delete) or the when-not condition, so it falls short of a full routing statement.

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

heliyos_files_deleteDelete a fileA
DestructiveIdempotent

Permanently deletes one file by id. A knowledge-base file also disappears from what the workers can read. This cannot be undone: confirm with the user first. Returns structuredContent {file_id, deleted}.

NameRequiredDescriptionDefault
file_idYesFile id from heliyos_files_list.

Output Schema

NameRequiredDescription
deletedYes
file_idYes

TDQS

A4.3/5.0
Behavior4/5

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

The annotations already declare destructiveHint=true and idempotentHint=true, so "cannot be undone" mostly restates structured data. The genuine added context is the downstream effect: a knowledge-base file "disappears from what the workers can read," which the annotations cannot express. It also notes the structuredContent return shape, though an output schema already exists.

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 gets destroyed, then the irreversible consequence and the confirmation requirement. Every clause carries information; nothing is 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 single-parameter destructive tool, the description covers the action, the irreversibility, the required user confirmation, and the side effect on worker visibility. Since an output schema exists, the brief return-value mention is a bonus rather than a 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?

There is a single parameter with 100% schema description coverage, and the schema already documents the 24-hex-char id pattern and points at heliyos_files_list as the source. The description only restates "by id" and "one file," adding no new meaning, 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 with scope: "Permanently deletes one file by id." That cleanly separates it from heliyos_files_list, heliyos_files_get, and heliyos_files_upload without needing to open 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 Guidelines4/5

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

Gives an explicit precondition — "confirm with the user first" — that tells the agent when this call is appropriate and what gate must pass before invoking it. It does not name alternative tools (e.g., heliyos_knowledge_entries_delete) for the adjacent case of removing knowledge content, which keeps it short of a 5.

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

heliyos_files_getGet a fileA
Read-onlyIdempotent

Fetches one file's details by id: name, kind, type, size, description and the records it is attached to. "detailed" also returns a signed download link that expires about 60 s after the call, so use it at once. Returns structuredContent {file}.

NameRequiredDescriptionDefault
file_idYesFile id from heliyos_files_list.
response_formatNo"concise" (default) returns the file's details; "detailed" returns the details plus a download link valid for about 60 s.concise

Output Schema

NameRequiredDescription
fileYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, non-open-world behavior, and the description correctly does not restate that. It does add genuinely new behavior: the signed download link's ~60 s expiry and the warning to consume it immediately, which no annotation conveys. Not describing not-found/error behavior or whether links can be re-fetched 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 short sentences, front-loaded with the core capability, then the conditional 'detailed' behavior and its time constraint, then the return shape. No filler and the most actionable warning (use the link at once) is not buried.

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 with a full schema and an output schema, the description covers purpose, the format branch, the expiry hazard, and the structuredContent wrapper. Only error/not-found handling is unaddressed, which is minor at this complexity.

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

Parameters3/5

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

Schema coverage is 100% and the enum descriptions already explain concise vs. detailed including the 60 s validity, so the description's mention of 'detailed' is largely duplicative of structured data. The id format and required-ness are handled entirely by 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 ('Fetches one file's details by id') and enumerates exactly what comes back: name, kind, type, size, description, and attached records. The 'by id' framing plus the single-object scope distinguishes it cleanly from the sibling heliyos_files_list.

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?

Gives a real operational constraint for one path — the detailed download link expires in about 60 s, 'so use it at once' — but never says when to prefer this tool over heliyos_files_list, heliyos_files_delete, or heliyos_records_get for attached records. The only id-sourcing hint lives in the schema ('File id from heliyos_files_list'), not the description.

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

heliyos_files_listList filesA
Read-onlyIdempotent

Lists files, newest first: knowledge-base files (documents the workers read, kind knowledge_base) and attachments on records (kind attachment). Filter by kind, by the record a file is attached to (record_id) or by name. Shows each file's id, name, kind, type and size; use heliyos_files_get for a download link. Returns structuredContent {files:[{id, name, kind, content_type, size_bytes}], next_cursor}.

NameRequiredDescriptionDefault
kindNoknowledge_base or attachment. Omit for both.
limitNoFiles per page, 1 to 100. Default 20.
cursorNonext_cursor from the previous page, with the same limit. Omit for the first page.
searchNoPlain words matched against file names and types. Symbols such as + ( ) [ ] * ? can cause an error.
record_idNoOnly files attached to this record.
response_formatNo"concise" (default) returns one row per file; "detailed" returns descriptions and linked records too.concise

Output Schema

NameRequiredDescription
filesYes
next_cursorNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuinely non-structured behavior: newest-first ordering, the exact fields returned per file, the next_cursor pagination contract, and a handoff to the download tool.

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

Conciseness4/5

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

Three tight sentences, front-loaded with the primary behavior and ending on the sibling handoff. Restating structuredContent {files:[...], next_cursor} is mildly redundant given an output schema exists, but it is compact and useful as a quick shape preview.

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 six-parameter list tool with an output schema and full annotations, the description covers purpose, the two file kinds, all main filters, ordering, pagination, and the follow-up tool. An agent has everything needed 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?

Schema coverage is 100%, so the baseline is 3; the description goes beyond it by explaining what the kind values mean in practice and by tying record_id to 'the record a file is attached to'. It does not mention response_format at all, leaving that parameter to the schema.

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

Purpose5/5

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

States a specific verb and resource ('Lists files') plus scope: knowledge-base files vs attachments on records, with an explicit ordering (newest first). The two kinds are defined in domain terms ('documents the workers read'), which an agent cannot infer from the enum alone.

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

Usage Guidelines4/5

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

Explicitly routes the agent to heliyos_files_get when a download link is needed, and explains the available narrowing options (kind, record_id, name). It stops short of stating when-not-to-use it, e.g. that browsing records themselves belongs to heliyos_records_list.

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

heliyos_files_uploadUpload a fileA

Uploads one file, up to 10 MB, as a knowledge-base file (kind knowledge_base: documents the workers read, such as playbooks or pricing) or as an attachment (kind attachment), optionally attached to one record (record_id). Pass the content as text (stored as UTF-8) or as content_base64 for binary files, exactly one of the two. content_type is guessed from the name's extension when omitted; HTML, SVG, XML, scripts and executables are refused. Calling it twice stores two files. Returns structuredContent {file}.

NameRequiredDescriptionDefault
kindYesknowledge_base (read by the workers) or attachment.
nameYesFile name with extension, for example "pricing-2026.pdf".
textNoThe file's content as text (UTF-8). Use content_base64 for binary files.
record_idNoAttach the file to this record (company, person, deal).
content_typeNoMIME type, for example "application/pdf". Guessed from the name when omitted.
content_base64NoThe file's bytes, base64-encoded.

Output Schema

NameRequiredDescription
fileYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare non-idempotent and non-destructive, but the description adds substance the annotations cannot: a 10 MB size cap, a refusal list (HTML, SVG, XML, scripts, executables), content-type guessing from the extension, and the concrete consequence "Calling it twice stores two files." It also discloses the return envelope, so an agent knows what comes back.

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-loaded with the verb and resource, then the size limit, then the kind split, then encoding rules and refusals — a sensible order. It is a dense single block with heavy parentheticals, and the trailing return-value sentence is largely redundant given the output schema, but almost nothing else 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 six-parameter mutation upload with an output schema, the description covers everything an agent needs to call it correctly: size limit, kind semantics, encoding choice, content-type default, rejected types, attachment target, and duplicate-write behavior. Nothing material is left 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?

Schema description coverage is 100%, so a baseline of 3 is warranted, but the description adds meaning the schema lacks: the mutual-exclusivity constraint between text and content_base64 (the schema has no oneOf/anyOf to enforce it) and the default-resolution behavior of content_type when omitted. record_id's single-record limitation is also restated in plainer terms than the schema's regex-scoped field.

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 ("Uploads one file") and immediately distinguishes the two file kinds it can create, which no sibling does — files_get/list/delete are read or removal operations. The 10 MB ceiling and the two storage modes make the tool's identity unambiguous.

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 concrete selection conditions: use knowledge_base for documents workers read (playbooks, pricing) versus attachment, and use text for UTF-8 versus content_base64 for binary, "exactly one of the two." That is real when-to-use guidance. It stops short of naming alternatives or stating when not to upload at all (e.g., updating existing knowledge via the knowledge tools).

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

heliyos_interactions_getGet an email or meetingA
Read-onlyIdempotent

Fetches one synced email thread or meeting by id (from heliyos_interactions_list or heliyos_records_timeline): subject or title, time, the AI summary, sentiment, the records it is linked to, participants and next steps. "concise" cuts the summary; "detailed" returns all of it. Returns structuredContent {interaction}.

NameRequiredDescriptionDefault
interaction_idYesinteraction_id: a 24-character hex id.
response_formatNo"concise" (default) returns the summary cut at 300 characters; "detailed" returns the full summary, participants and next steps.concise

Output Schema

NameRequiredDescription
interactionYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered; the description adds value beyond that by naming the returned fields and explaining the response_format trade-off ("concise" cuts the summary, "detailed" returns all of it). It does not state what happens for a missing or malformed id, which is the main remaining behavioral 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?

Three compact sentences, front-loaded with the verb+resource and then the return contents, with zero padding or restated title. The response_format clause slightly duplicates the schema, but it is short enough to earn its place as a scannable summary.

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 two-parameter read tool with full schema coverage, complete annotations, and an output schema, everything an agent needs to call it correctly is present: the id source, the format switch, and the return payload shape ("structuredContent {interaction}"). No material gap remains.

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

Parameters4/5

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

Schema coverage is 100% and includes an enum with a default, so most parameter meaning is already structured. The description still adds the provenance of interaction_id (list or timeline) and frames response_format as a summary-length dial, which is useful framing even though the schema spells out the 300-character cutoff in more detail.

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?

"Fetches one synced email thread or meeting by id" gives a specific verb, a specific resource (a single interaction, not a list), and the retrieval key. The remaining clauses enumerate exactly what comes back (subject/title, time, AI summary, sentiment, linked records, participants, next steps), so it is clearly distinguishable from heliyos_interactions_list.

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

Usage Guidelines4/5

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

The description tells the agent where the required id comes from ("from heliyos_interactions_list or heliyos_records_timeline"), which is real routing guidance for a get-by-id tool. It stops short of explicit when-not conditions or stating that heliyos_interactions_list should be used for browsing rather than this tool, so it is clear context without exclusions.

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

heliyos_interactions_listList emails and meetingsA
Read-onlyIdempotent

Lists synced emails and meetings, newest first, optionally only those linked to one record (record_id) or of one channel. Each has its subject or title, time, AI summary and the records it is linked to. "detailed" adds participants and next steps; heliyos_interactions_get returns one with its full summary. Order with sort. Returns structuredContent {interactions:[{id, channel, title, at, summary, record_ids}], next_cursor}.

NameRequiredDescriptionDefault
sortNoSort order. Omit for newest first. With a sort, next_cursor is a page cursor from this tool; pass it back unchanged.
limitNoInteractions per page, 1 to 100. Default 20.
cursorNonext_cursor from the previous page, with the same limit. Omit for the first page.
searchNoPlain words matched against subjects, titles and summaries. Symbols such as + ( ) [ ] * ? can cause an error.
channelNoOnly emails or only meetings.
record_idNoOnly interactions linked to this record (company, person or deal).
response_formatNo"concise" (default) returns subject, time and a summary cut at 300 characters; "detailed" returns the full summary, participants and next steps.concise

Output Schema

NameRequiredDescription
next_cursorNo
interactionsYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds real behavior: newest-first default, what each item carries, that detailed expands participants and next steps, and the returned structuredContent shape including next_cursor. Pagination contract is spelled out well; no rate limits or auth notes, hence a 4.

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?

Front-loads what is listed and the default order, then filters, then the response shape, then the sibling alternative. Every clause carries information; no filler or repetition.

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 filter-and-paginate list tool with a nested sort object, the description covers scope, ordering, filtering, page size behavior via cursor, response verbosity, and the return envelope. With an output schema present, return values need not be fully re-explained, so nothing an agent needs 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 baseline is 3. The description restates the key filters (record_id, channel, sort, detailed) but adds little beyond what the schema already documents, including the concise/detailed cut at 300 characters.

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 (lists) and resource (synced emails and meetings) plus default ordering, and distinguishes itself from heliyos_interactions_get by naming that sibling as the single-item variant. An agent can tell which of the two to call 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 Guidelines4/5

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

Gives clear selection conditions: use record_id to scope to one record, channel to scope to emails or meetings, and switch to heliyos_interactions_get when a single interaction with its full summary is wanted. It lacks explicit when-not guidance (e.g. preferring search or timeline tools for other lookups), so it stops short of a 5.

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

heliyos_knowledge_entries_deleteDelete a knowledge entryA
DestructiveIdempotent

Removes one custom knowledge entry by label. The fixed texts and other entries are kept. This cannot be undone: confirm with the user first. Returns structuredContent {label, deleted, entries}.

NameRequiredDescriptionDefault
labelYesThe entry's label; matched case-insensitively against the existing entries.

Output Schema

NameRequiredDescription
labelYes
deletedYes
entriesYes

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 idempotentHint=true, so the safety profile is structured data; the description still earns credit by spelling out the consequence in prose ("This cannot be undone") and by stating exactly what survives the call ("The fixed texts and other entries are kept"). That blast-radius statement is information the annotations do not carry.

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 the action and its scope, then the irreversibility warning, then the return contract. No filler and nothing repeated from the title alone.

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 single-parameter destructive tool with full annotations and an output schema, the description covers action, blast radius, confirmation requirement, and a summary of the return payload — enough to call it safely. The only gap is the not-found / no-op outcome, which matters given idempotentHint=true but is left unstated.

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 already documents the label's length bounds and case-insensitive matching, so the baseline applies. The description's phrase "by label" restates the parameter rather than adding format, aliasing, or failure semantics 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?

"Removes one custom knowledge entry by label" gives a specific verb (removes), a bounded scope (one), and the resource qualified as "custom", which implicitly separates it from the fixed texts handled elsewhere. It stops short of naming a sibling such as heliyos_knowledge_entries_set, so the agent must infer the boundary from the shared vocabulary rather than being told.

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 supplies a hard precondition ("confirm with the user first") which is genuine operational guidance, and the word "one" plus "by label" implies single-entry deletion. However it never states when to prefer this over heliyos_knowledge_entries_set or heliyos_knowledge_update, nor what happens if the label does not exist, so the when-not guidance is missing.

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

heliyos_knowledge_entries_setAdd or change a knowledge entryA
Idempotent

Adds a custom knowledge entry (a label and its content) or replaces the content of the entry with that label. Other entries and the fixed texts are kept. Use it for facts the fixed texts do not cover, for example "Pricing" or "Competitors". Remove one with heliyos_knowledge_entries_delete. Returns structuredContent {entry, created, entries}.

NameRequiredDescriptionDefault
labelYesThe entry's label; matched case-insensitively against the existing entries.
contentYesThe entry's content, plain text or HTML (the web app shows it as rich text). Replaces the current content.

Output Schema

NameRequiredDescription
entryYes
createdYes
entriesYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare non-read-only, idempotent, non-destructive, so the safety bar is largely met; the description still adds real value by clarifying that the operation is an upsert keyed on label and that other entries and fixed texts survive. It also discloses the response shape (entry, created, entries), the created flag being useful for distinguishing insert from update.

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?

Four short sentences, front-loaded with the operation and its upsert scope, then usage example, sibling pointer, and return shape. Only the return-shape sentence is arguably redundant given an output schema exists, but it is terse enough not to be waste.

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 an output schema, full parameter coverage, and clean annotations, the description covers what remains: upsert identity, preservation of other data, and the alternative for removal. The only gap is not naming heliyos_knowledge_update explicitly when contrasting with "fixed texts", leaving a small inference for the agent.

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 both parameters are documented there, including case-insensitive label matching and the content replace semantics, so the baseline is 3. The description restates label+content and "replaces the current content" but adds no format, matching, or length guidance beyond the schema.

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

Purpose5/5

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

"Adds a custom knowledge entry ... or replaces the content of the entry with that label" gives a specific verb and names the upsert semantics, which is the key behavior an agent must understand. It also scopes itself against the sibling delete tool by name and implicitly against heliyos_knowledge_update by noting the fixed texts are kept.

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?

"Use it for facts the fixed texts do not cover, for example 'Pricing' or 'Competitors'" gives a concrete when-to-use condition, and "Remove one with heliyos_knowledge_entries_delete" routes to the alternative. It falls short of 5 because it never says when-not to use it (e.g. that editing fixed texts is heliyos_knowledge_update's job).

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

heliyos_knowledge_getRead the knowledge baseA
Read-onlyIdempotent

Returns what the workers know about the business: the business context, products information, pain points, value proposition and qualification criteria, and the team's custom entries (label and content). Texts are cut at 1500 characters in concise. Knowledge-base files are listed with heliyos_files_list kind knowledge_base. Returns structuredContent {knowledge:{business_context, products_information, ..., entries}}.

NameRequiredDescriptionDefault
response_formatNo"concise" (default) returns each text shortened; "detailed" returns every text in full.concise

Output Schema

NameRequiredDescription
knowledgeYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the bar is lower, yet the description still adds meaningful behavior: texts are truncated at 1500 characters in concise mode, and the response is delivered as structuredContent with a named shape. It does not mention auth requirements, but for a read-only tenant-scoped fetch that is a minor omission.

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 tightly packed sentences, front-loaded with what is returned and its truncation behavior. The final sentence restates the structuredContent shape that the output schema already declares, which is slight redundancy but also serves as a quick preview.

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 single-optional-parameter read tool with annotations and an output schema, the description covers purpose, truncation behavior, and the sibling routing for files. Repeating the return object fields is redundant given the output schema, but nothing an agent needs in order 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.

Parameters4/5

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

Schema coverage is 100% and the enum is documented, establishing a baseline of 3, but the description adds a concrete detail the schema lacks: the 1500-character cutoff that 'concise' enforces, which is decision-relevant for choosing a format. It adds real meaning rather than restating the enum.

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 ('Returns what the workers know about the business') and enumerates the concrete contents: business context, products, pain points, value proposition, qualification criteria, and custom entries. This clearly separates it from the mutation siblings heliyos_knowledge_update and heliyos_knowledge_entries_set, and from the separate file tools.

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

Usage Guidelines4/5

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

The description gives a routing hint for the adjacent case: 'Knowledge-base files are listed with heliyos_files_list kind knowledge_base', telling the agent not to expect the file listing here. It does not explicitly say when to prefer this over a full record read, but the read-context is unambiguous for a knowledge-base fetch.

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

heliyos_knowledge_updateUpdate the knowledge baseA
Idempotent

Changes the knowledge base's fixed texts: business_context, products_information, pain_points, value_proposition and qualification_criteria. What you leave out is kept, and the custom entries are untouched (use heliyos_knowledge_entries_set for those). Each text replaces the current one whole, so read it with heliyos_knowledge_get first when you mean to add to it. The workers read these on their next run. Returns structuredContent {knowledge}.

NameRequiredDescriptionDefault
pain_pointsNoThe customer problems the products solve, plain text or Markdown. An empty string clears it.
business_contextNoWhat the business does, plain text or Markdown. An empty string clears it.
value_propositionNoWhy customers choose these products, plain text or Markdown. An empty string clears it.
products_informationNoThe products and services, plain text or Markdown. An empty string clears it.
qualification_criteriaNoWhat makes a lead worth pursuing, plain text or Markdown. An empty string clears it.

Output Schema

NameRequiredDescription
knowledgeYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare it mutable, idempotent, non-destructive, and closed-world. The description adds important behavior beyond those hints: each provided text replaces the current one wholesale, omitted fields are preserved, custom entries are untouched, and workers pick up the changes on their next run. It also notes the returned structuredContent field.

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

Conciseness5/5

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

The description is four tight sentences, front-loaded with the operation and affected fields, then the replacement caveat, sibling routing, and worker-visibility note. Every sentence adds useful operational context 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?

For a five-parameter optional update tool with full schema coverage and an output schema, the description covers the important gaps: partial-update behavior, wholesale replacement risk, how to read before appending, sibling-tool routing, and when workers see the changes. Nothing essential to correct invocation 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 already describes each field, including that an empty string clears it. The description lists the same field names and adds overall replacement semantics, but does not add per-parameter meaning beyond what the schema provides, so the high-coverage 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 the specific verb and resource: it changes the knowledge base's fixed texts and names all five fields. It explicitly separates those fixed texts from custom entries handled by heliyos_knowledge_entries_set, so the agent can distinguish it from the sibling 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 routing: use heliyos_knowledge_entries_set for custom entries, and use heliyos_knowledge_get first when adding to an existing text. It also explains that omitted fields are kept, clarifying partial-update behavior.

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

heliyos_labels_createCreate a label groupA

Creates a classification label group with its values, for example name Intent, values [Pricing, Support]. The workers start applying it to new emails and meetings when it is active. Calling it twice creates two groups; check heliyos_labels_list first. Returns structuredContent {label}.

NameRequiredDescriptionDefault
nameYesGroup name, for example Intent.
valuesNoValue names, unique within the group.
is_activeNoDefault true.
descriptionYesWhat the group classifies; the workers read it to decide which value applies.

Output Schema

NameRequiredDescription
labelYes

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that the call is non-idempotent in a concrete way (calling twice creates two groups) and that activation triggers workers to start applying the label to new emails and meetings. These are real downstream side effects an agent could not infer from readOnlyHint=false / idempotentHint=false alone.

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 action and the example, then adds the duplicate-creation warning and activation behavior in short clauses. The final "Returns structuredContent {label}" sentence is mild redundancy since an output schema exists, but nothing else is wasted.

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 4-parameter create tool with an output schema and full annotation coverage, the description covers action, duplicate risk, activation effect and return shape. It omits whether values can be added later via labels_update and any permission requirements, minor gaps given the surrounding structure.

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 name, values, is_active and description. The description adds only an illustrative example of name plus values; it doesn't reinforce that the required description field drives worker classification. 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?

Names a specific verb and resource ("Creates a classification label group with its values") and gives a concrete example (name Intent, values [Pricing, Support]). It is clearly distinguishable from heliyos_labels_list, which it routes to, but it doesn't explicitly distinguish itself from heliyos_labels_update/delete.

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

Usage Guidelines4/5

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

Gives a clear pre-condition ("check heliyos_labels_list first") to avoid duplicate groups and explains the activation condition under which workers apply the label. It lacks explicit when-not guidance (e.g., use labels_update to add values to an existing group).

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

heliyos_labels_deleteDelete a label groupA
DestructiveIdempotent

Permanently deletes a label group and its values by id. This cannot be undone: confirm with the user first. To stop the workers applying it but keep it, use heliyos_labels_update with is_active false. Returns structuredContent {label_id, deleted}.

NameRequiredDescriptionDefault
label_idYeslabel_id: a 24-character hex id.

Output Schema

NameRequiredDescription
deletedYes
label_idYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag destructiveHint and idempotentHint, but the description goes further by naming what is destroyed (the group and its values) and that the action is irreversible, plus a required user confirmation step. That is exactly the extra context a destructive tool needs beyond the structured hints.

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 the action and its permanence, then the alternative, then the return shape. Every sentence carries information an agent would otherwise lack.

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 destructive tool, the description covers impact, irreversibility, confirmation requirement, the safe alternative, and even the returned fields. 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% for the single label_id parameter, with the 24-char hex pattern documented in the schema itself. The description only restates 'by id', adding no format or validation meaning 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 — 'Permanently deletes a label group and its values by id' — and implicitly separates itself from the update sibling. An agent can tell exactly what object this removes and what scope of data goes with it.

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 when-not path: to stop workers applying it while keeping it, use heliyos_labels_update with is_active false. It also adds a procedural precondition ('confirm with the user first'), leaving nothing to inference about which tool to pick.

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

heliyos_labels_listList label groupsA
Read-onlyIdempotent

Lists the workspace's classification label groups (for example Intent with values Pricing and Support) that the workers apply to emails and meetings, with each group's id, active flag and values (each with its id). Returns structuredContent {labels:[{id, name, is_active, values:[{id, name}]}], next_cursor}.

NameRequiredDescriptionDefault
limitNoGroups per page, 1 to 100. Default 20.
cursorNonext_cursor from the previous page, with the same limit. Omit for the first page.
searchNoPlain words matched against group names. Symbols such as + ( ) [ ] * ? can cause an error.
is_activeNoOnly active (true) or only inactive (false) groups.
response_formatNo"concise" (default) returns names and values; "detailed" returns each group's description too.concise

Output Schema

NameRequiredDescription
labelsYes
next_cursorNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, non-open-world behavior, so the safety profile is covered. The description adds real context beyond that by naming the source of truth (groups workers apply to emails/meetings) and surfacing the next_cursor pagination contract. It does not state ordering of results or what happens on an invalid/stale cursor, which keeps 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.

Conciseness4/5

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

Two sentences, front-loaded with what the tool lists and followed by the return shape; nothing is padded. The second sentence partially restates what the output schema already provides, which is the only wasted weight.

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 an output schema present the description need not explain return values, and annotations cover safety, so the remaining burden is purpose plus usage. Purpose and the pagination contract are covered; what an agent still lacks is result ordering and any relationship to worker configuration, which is why this stops at 4 rather than 5.

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 (limit, cursor, search, is_active, response_format) is already documented in the schema, including the note about symbols causing errors. The description adds no parameter-level meaning beyond noting that values carry ids; 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?

"Lists the workspace's classification label groups ... that the workers apply to emails and meetings" gives a specific verb, a scoped resource, and the domain role of the data, with a concrete example (Intent with Pricing and Support). It is unambiguously the read-side counterpart of heliyos_labels_create/update/delete among the 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?

The listing intent is clear and the response_format enum hint implies a 'fetch then pick shape' workflow, but there is no explicit when-to-use guidance, no mention of when to reach for heliyos_labels_create/update/delete instead, and no note on whether workers must already be configured for these groups to exist. Usage is inferable rather than stated.

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

heliyos_labels_updateUpdate a label groupA
DestructiveIdempotent

Changes a label group's name, description, active flag or values by label_id. values REPLACES the group's values: to keep a value, pass it with its existing id (shown as "Name (id …)" by heliyos_labels_list); a value without an id is created as a NEW value, even if its name matches an existing one. Values left out are removed, and emails and meetings already classified with them lose that label. Returns structuredContent {label}.

NameRequiredDescriptionDefault
nameNoGroup name, for example Intent.
valuesNoThe complete list of values the group should have afterwards; it replaces the current values.
label_idYeslabel_id: a 24-character hex id.
is_activeNotrue to let the workers apply the group, false to pause it without deleting it.
descriptionNoWhat the group classifies; the workers read it to decide which value applies.

Output Schema

NameRequiredDescription
labelYes

TDQS

A4.2/5.0
Behavior3/5

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

The destructive disclosure is excellent and goes well past destructiveHint=true: omitted values are removed and already-classified emails/meetings lose that label. However, the emphasized rule that a value without an id is always created as a NEW value each call means identical arguments do not produce an identical end state (old ids are dropped and classifications lost), which is at odds with the idempotentHint=true annotation.

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?

Every sentence carries a distinct, non-redundant fact, with the replace semantics front-loaded ahead of the id-preservation rule and the consequences. No filler or restatement of the tool name.

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 annotations, a full-coverage schema, and a declared return value (structuredContent {label}), the description covers what an agent needs to call this correctly. The remaining gap is the idempotency tension noted above rather than missing call mechanics.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: the replace-only contract for values, the keep-by-id convention, the display format in heliyos_labels_list, and the downstream consequence for classified emails and meetings. is_active is left to the schema, which already explains it.

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 (changes) and a specific resource (a label group) plus the four mutable aspects (name, description, active flag, values) keyed by label_id. It is clearly distinguishable from heliyos_labels_create/delete, and it names heliyos_labels_list as the source of value ids.

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 concrete operational guidance: to keep a value, re-send it with its existing id obtained from heliyos_labels_list. What is missing is an explicit statement of when to use this tool versus create or delete a group, or what to do when the group is not found.

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

heliyos_notes_createCreate a noteA

Creates a note, optionally linked to records (a company, person or deal) so it shows on them and can trigger workers. Calling it twice creates two notes. Returns the new note's id as structuredContent {note}.

NameRequiredDescriptionDefault
titleYesNote title.
contentNoNote body (plain text or simple HTML).
record_idsNoIds of records (companies, people, deals) to link the note to, 1 to 10. Each id is checked first; an unknown id fails the call and nothing is written.

Output Schema

NameRequiredDescription
noteYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare the non-read-only, non-idempotent, non-destructive profile, and the description reinforces the idempotency consequence concretely ("Calling it twice creates two notes"). It also adds genuine value beyond annotations by disclosing the side effect that linked notes appear on records and can trigger workers. It stops short of stating permission requirements or any rate limits.

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 with zero filler: purpose first, then linkage semantics, then the duplicate-call warning and return shape. Nothing is buried and nothing repeats the schema verbatim.

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 an output schema present, the brief return-value mention is sufficient, and the atomicity and worker-trigger behavior round out what an agent needs for a three-parameter create tool. The remaining gap is that it never says how to obtain valid record ids or when to prefer updating an existing note instead.

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 titles, content format, and record id constraints are already documented in the schema, including the 24-hex id pattern and the all-or-nothing failure on unknown ids. The description confirms the records can be companies, people, or deals but adds no format or syntax detail beyond that baseline.

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

Purpose5/5

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

The description opens with a specific verb and resource ("Creates a note") and immediately scopes it with optional record linking. The verb unambiguously separates it from heliyos_notes_list, heliyos_notes_get, and heliyos_notes_update without the agent needing to open other schemas.

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: it hints that linking to a company, person, or deal makes the note visible on those records and can trigger workers, which suggests why to link. There is no explicit when-to-use versus when-not guidance, and no routing to heliyos_notes_update for existing notes or heliyos_records_lookup for finding ids.

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

heliyos_notes_deleteDelete a noteA
DestructiveIdempotent

Permanently deletes one note by id. This cannot be undone: confirm with the user first. Returns structuredContent {note_id, deleted}.

NameRequiredDescriptionDefault
note_idYesnote_id: a 24-character hex id.

Output Schema

NameRequiredDescription
deletedYes
note_idYes

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, idempotentHint=true and readOnlyHint=false, so irreversibility is partly pre-signalled; the description nonetheless reinforces it in plain language and adds the operationally important requirement to obtain user confirmation. It also previews the return payload, which goes beyond the annotations, though it says nothing about side effects on related records or how a failure (e.g., unknown id) is surfaced.

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 the action and scope, then the irreversibility warning, then the return shape. No filler and nothing buried.

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 a single fully documented parameter, destructive annotations, and an output schema already declaring structuredContent, most structured burden is covered and the description fills the behavioral gap (confirmation, permanence). The only missing piece is what happens to a note's associated data or attachments upon deletion, a minor gap for a delete 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%: note_id is documented as a 24-character hex id with a matching regex pattern. The description only restates "by id" and adds no format, sourcing, or lookup-hint 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?

"Permanently deletes one note by id" gives a specific verb (delete), resource (note), cardinality (one) and lookup key (id), which cleanly separates it from heliyos_notes_get, heliyos_notes_update and heliyos_records_delete. It stops short of naming a sibling explicitly, but the resource scoping makes mis-selection unlikely.

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 instruction "confirm with the user first" is a real precondition that shapes agent behavior before invocation. However, there is no guidance on when to prefer an alternative (e.g., heliyos_notes_update to modify rather than remove, or heliyos_notes_get to verify the target first), so the when-to-use context 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.

heliyos_notes_getGet a noteA
Read-onlyIdempotent

Fetches one note by id with its title, text and linked records. "concise" cuts the text at 1500 characters; "detailed" returns all of it plus created and updated times. Returns structuredContent {note}.

NameRequiredDescriptionDefault
note_idYesnote_id: a 24-character hex id.
response_formatNo"concise" (default) returns the text cut at 1500 characters; "detailed" returns the full text and times.concise

Output Schema

NameRequiredDescription
noteYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, closed-world behavior, so the description is not obligated to restate safety. It adds real behavioral value instead: the 1500-character truncation under "concise" and the extra created/updated times under "detailed" are things an agent cannot learn from 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?

Three short sentences, front-loaded with the core action and followed by the format nuance and return shape. Slightly repetitive of the schema's enum wording, but nothing is wasted and nothing is buried.

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 read tool with full schema coverage and an output schema, this is nearly complete; return structure is appropriately left to the output schema. The only gaps are edge behavior such as a missing or invalid id and whether a truncated text is flagged in the 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 coverage is 100% and the description's explanation of "concise" versus "detailed" nearly duplicates the enum's own schema description. With both parameters already documented in the schema, the baseline of 3 applies; the description adds emphasis but no new semantics such as whether truncation is signaled in the response.

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 uses a specific verb and resource ("fetches one note by id") and enumerates what comes back (title, text, linked records), which clearly separates it from heliyos_notes_list. It never names the sibling tools explicitly, so the differentiation is inferable 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 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 this is the single-note read versus heliyos_notes_list, but the description never states when to prefer this tool or what to do if the id is unknown. No exclusions, prerequisites, or error-path guidance are given.

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

heliyos_notes_listList notesA
Read-onlyIdempotent

Lists notes, newest first, optionally only those linked to one record (record_id) or matching text in the title or body. Each note shows its id, title, a short preview and the records it is linked to. Use heliyos_notes_get for the full text. Returns structuredContent {notes:[{id, title, content, links}], next_cursor}.

NameRequiredDescriptionDefault
limitNoNotes per page, 1 to 100. Default 20.
cursorNonext_cursor from the previous page, with the same limit. Omit for the first page.
searchNoPlain words matched against note titles and bodies. Symbols such as + ( ) [ ] * ? can cause an error.
record_idNoOnly notes linked to this record.
response_formatNo"concise" (default) returns a 200-character preview; "detailed" returns each note's full text and times.concise

Output Schema

NameRequiredDescription
notesYes
next_cursorNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavior: default ordering (newest first), that results are truncated previews unless response_format is detailed, and pagination via next_cursor. That's solid added context, though permissions or note-visibility constraints are not discussed.

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-loaded with the core verb, ordering, and filters; the alternative is named early. The closing sentence enumerates the return shape even though an output schema exists, which is mild redundancy, but overall the text is tight and well ordered.

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?

Annotations cover safety, the output schema covers return values, and the schema covers every parameter, so the remaining burden is low and mostly met. The description handles ordering, preview-vs-full-text, and pagination adequately; only edge-case behavior (empty results, search error handling) is absent.

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 are already documented, including search matching titles and bodies and the concise 200-character preview. The description restates these without adding syntax, format, or interaction details beyond what the schema provides, 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 and resource ("Lists notes") plus ordering ("newest first") and the optional filters, and explicitly marks its difference from heliyos_notes_get (full text). An agent can distinguish it from every sibling in the notes group without opening a schema.

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?

Names the alternative tool heliyos_notes_get and the condition that selects it ("for the full text"), and implies the filtering modes available here. There's no explicit when-not guidance for search vs record_id combinations, so it falls just short of a 5.

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

heliyos_notes_updateUpdate a noteA
Idempotent

Changes a note's title, text or linked records by id; what you leave out is kept. record_ids REPLACES the note's links (pass every record it should stay linked to). Returns structuredContent {note}.

NameRequiredDescriptionDefault
titleNoNote title.
contentNoNote body (plain text or simple HTML).
note_idYesnote_id: a 24-character hex id.
record_idsNoIds of records (companies, people, deals) to link the note to, 1 to 10. Each id is checked first; an unknown id fails the call and nothing is written.

Output Schema

NameRequiredDescription
noteYes

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already declare readOnly=false, idempotent=true, destructive=false and openWorld=false, so the safety profile is covered. The description adds genuine behavioral context beyond that — partial-update semantics (omitted fields kept) and the replace-not-append semantics of record_ids. It does not discuss permissions or what an empty record_ids situation would look like, and the "REPLACES links" behavior sits somewhat in tension with destructiveHint=false, though link-set replacement is reasonably read as non-destructive of the note itself.

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 compact sentence with semicolons that front-loads the action and then the two non-obvious rules. Every clause carries information an agent cannot get from the name alone; nothing is padding.

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 an output schema present, the description needn't explain returns, and the brief "Returns structuredContent {note}" is a harmless pointer. Partial-update, replacement and validation behavior are all covered. The only gap is auth/permission expectations for a mutation 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%, so the schema already documents note_id, title, content and record_ids formats and limits, making 3 the baseline. The description does add meaning the schema lacks: record_ids is a full replacement set, not an additive one. That is a modest but real increment over the structured fields.

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?

"Changes a note's title, text or linked records by id" names a specific verb and resource and enumerates the mutable fields, so an agent can distinguish this from heliyos_notes_create, heliyos_notes_get and heliyos_notes_delete without opening the schema. It stops just short of a 5 because it never explicitly routes the agent away from those siblings (e.g. "to create a note use heliyos_notes_create").

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

Usage Guidelines4/5

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

It gives clear usage context: only what you supply changes, and record_ids must contain the full desired link set rather than a delta. That is exactly the guidance an agent needs to avoid clobbering links. No explicit when-not-to-use or alternative-tool guidance is present.

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

heliyos_notification_settings_getGet notification settingsA
Read-onlyIdempotent

Returns the workspace's notification email settings: whether they are on, who receives them, and which events notify (each immediate or in a daily digest). Returns structuredContent {settings:{configured, is_active, notify_emails, event_types:[{type, frequency}]}}.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
settingsYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered elsewhere. The description adds useful substance beyond that by noting the workspace scope and that settings can be unconfigured and that each event type carries an immediate-vs-digest frequency, but it says nothing about permissions or what happens when nothing is configured beyond the 'configured' flag name.

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 sentences, front-loaded with the primary statement of what is returned, with no filler. The second sentence restates the output shape that the output schema already declares, which is mild redundancy but also serves as a quick scan aid.

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-argument read tool with full annotation coverage and an output schema, this is close to complete: the agent knows it needs no inputs and roughly what comes back. The only gap is the absence of guidance on where to go next (e.g., the update sibling) or whether specific permissions are needed to read settings.

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 to explain and the baseline of 4 applies. Schema coverage is reported at 100% and additionalProperties is false, leaving nothing ambiguous about 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?

The description names a specific verb and resource: 'Returns the workspace's notification email settings', and enumerates the facets covered (on/off, recipients, event types). It is unambiguous about scope, but never explicitly names the counterpart heliyos_notification_settings_update, so sibling routing is inferred from naming convention alone.

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?

There is no explicit when-to-use or when-not-to-use statement, nor a pointer to the update sibling or to heliyos_organization_get/team_members_list for related config. Usage is implied by the read framing ('Returns...'), which is adequate for a zero-parameter getter but leaves guidance to inference.

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

heliyos_notification_settings_updateUpdate notification settingsA
Idempotent

Changes the workspace's notification email settings. Each key you pass REPLACES that setting: notify_emails is the full recipient list and event_types the full list of notifying events (read the current ones with heliyos_notification_settings_get and send the complete list). Keys you leave out are kept. scout.signal_detected is always immediate. Returns structuredContent {settings}.

NameRequiredDescriptionDefault
is_activeNoTurns all notification emails on or off.
event_typesNoEvery event that should notify, each immediate or daily (replaces the list).
notify_emailsNoEvery recipient address (replaces the list).

Output Schema

NameRequiredDescription
settingsYes

TDQS

A4.7/5.0
Behavior5/5

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

Adds critical behavior beyond annotations: per-key REPLACE semantics (a partial list silently drops recipients/events), omitted keys are preserved, scout.signal_detected is forced to immediate regardless of input, and the response shape is named. This is exactly the kind of data-loss risk an agent needs, since destructiveHint=false would otherwise understate the replace behavior.

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

Conciseness5/5

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

Four dense sentences, front-loaded with the core action and replace warning, with the get-first workflow and the exception clause following. No filler or repetition.

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?

Output schema covers the return value and annotations cover the safety/idempotency profile, so the description's remaining job is the replace semantics and workflow — both fully addressed. 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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns extra by clarifying the cross-parameter contract (each key replaces wholesale, so the full list must be supplied) and by flagging the scout.signal_detected override that the schema's enum does not reveal.

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 ('Changes the workspace's notification email settings') and implicitly contrasts with the read sibling by mandating a get-then-update workflow. An agent can distinguish it from heliyos_notification_settings_get 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 Guidelines4/5

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

Explicitly routes the agent to heliyos_notification_settings_get to read current values before calling, and warns that passing a key means sending the complete list. It lacks an explicit 'when not to use' clause, but the read-before-write prerequisite is clearly stated.

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

heliyos_objects_getGet an object's fieldsA
Read-onlyIdempotent

Returns one object's fields: each field key (what heliyos_records_create, _update and _list filters take), its label and type, and which are required. "detailed" adds the allowed values of select fields, hidden and AI-filled flags, and the target object of relationship fields. Pick the object with object_type (company, person, deal, or custom with schema_id from heliyos_objects_list). Each field's field_id feeds heliyos_fields_update and heliyos_fields_delete; heliyos_fields_create adds one. Returns structuredContent {object:{schema_id, name, fields:[{key, field_id, type, ...}]}}.

NameRequiredDescriptionDefault
schema_idNoObject schema id. Required when object_type is "custom"; the error lists the available ones.
object_typeYesWhich object: "company", "person", "deal", or "custom" (custom objects also need schema_id).
response_formatNo"concise" (default) returns each field's key, label and type; "detailed" returns select options and field flags too.concise

Output Schema

NameRequiredDescription
objectYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish the safe read-only, idempotent profile, so the description's job is to add context — and it does: it explains that 'detailed' changes the payload to include select options, hidden/AI-filled flags and relationship targets. It also notes the structuredContent shape. Minor redundancy with the output schema keeps it from 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.

Conciseness4/5

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

Front-loaded with the return contract, then the object-selection rule, then downstream tool routing — a sensible order. It is dense rather than padded, though the run of sibling tool references (records_create/update/list, fields_create/update/delete) compresses a lot into one paragraph.

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 three-parameter read tool with full schema coverage, annotations, and an output schema, the description covers selection rules, response modes, error fallback for custom schemas, and follow-up tools. 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 all three parameters are already documented, giving a baseline of 3. The description reinforces the custom/schema_id dependency and clarifies that 'detailed' surfaces allowed select values and flags, but adds little syntax or constraint detail beyond the schema.

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

Purpose5/5

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

Opens with a specific verb and resource: 'Returns one object's fields', then enumerates exactly what each field carries (key, label, type, required) and what 'detailed' adds. It is clearly distinguishable from heliyos_objects_list (which supplies schema_id) and from the field-mutation siblings it feeds.

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

Usage Guidelines4/5

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

It states how to pick the object (object_type, with custom requiring schema_id from heliyos_objects_list) and routes the returned field_id to heliyos_fields_update/_delete and new fields to heliyos_fields_create. What's missing is an explicit disambiguation from heliyos_records_get / heliyos_records_list, which an agent might confuse with schema inspection versus record data.

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

heliyos_objects_listList objectsA
Read-onlyIdempotent

Lists the workspace's objects (record types): companies, people, deals and any custom objects, with each one's schema_id, object_type, record count and number of fields. Use it to learn which object_type and schema_id to pass to the heliyos_records_* tools (custom objects need schema_id), then heliyos_objects_get for an object's field keys. Returns every object in one page (a workspace has a handful), as structuredContent {objects}.

NameRequiredDescriptionDefault
response_formatNo"concise" (default) returns one line per object; "detailed" returns each object's field keys too.concise

Output Schema

NameRequiredDescription
objectsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds genuinely new behavior: every object comes back in a single page (a workspace has a handful), so no pagination is needed, and results arrive as structuredContent {objects}. What is missing is only minor, e.g. nothing about ordering or error behavior.

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

Conciseness5/5

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

Three sentences, each earning its place: what it lists, how to use the output, and the return shape. The identity of the tool and its return shape are front-loaded before the routing advice.

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 optional-enum parameter tool with an output schema and full annotation coverage, this is sufficient: the agent knows what comes back, that there is one page, and which tools to chain into. 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 response_format enum already documents the concise vs detailed difference in the schema itself, so the description need not restate it. The description adds no parameter-level meaning beyond what the schema provides, which is the correct baseline at full coverage.

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

Purpose5/5

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

States a specific verb and resource and enumerates what is returned: 'Lists the workspace's objects (record types): companies, people, deals and any custom objects'. It also contrasts with the sibling heliyos_objects_get, so an agent can tell the list tool from the get tool 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 downstream usage: use it to learn which object_type and schema_id to pass to heliyos_records_*, notes that custom objects need schema_id, and points to heliyos_objects_get for field keys. Both the purpose and the alternative are named, leaving nothing to inference.

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

heliyos_organization_getGet the workspaceA
Read-onlyIdempotent

Returns the Heliyos workspace this API key belongs to: its id and name, billing status, active plan, member count, how many companies, people and deals it holds, and how many companies are watched out of the plan's limit. Call it first to orient yourself. Use heliyos_objects_list for the objects and their schema ids, heliyos_usage_get for credit usage. Returns structuredContent {organization}.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
organizationYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description still adds value beyond them by disclosing the implicit scope (the workspace bound to the calling API key, no lookup parameter needed) and the response shape via structuredContent {organization}. It stops short of covering error or auth-failure behavior, so a 4 rather than 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.

Conciseness4/5

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

Three sentences, front-loaded with the return payload and then the routing guidance; nothing is wasted. The long enumeration of returned fields overlaps with the existing output schema, which makes it slightly heavier than strictly necessary, but it remains scannable and purposeful.

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 trivial, side-effect-free orientation call with a full output schema and complete annotations, the description covers everything an agent needs: what it returns, that it should come first, and where to go next for adjacent data. No gaps remain that would cause a mis-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 no parameters, so there is nothing to disambiguate and the baseline is 4. The description correctly communicates that scope comes from the API key rather than from input, which is the only semantic question this zero-parameter signature raises.

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 ("Returns the Heliyos workspace this API key belongs to") and then enumerates the concrete data returned: id, name, billing status, plan, member count, company/person/deal counts, and watchlist usage against plan limit. This is clearly distinguishable from siblings like heliyos_usage_get or heliyos_objects_list.

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 ordering instruction ("Call it first to orient yourself") and names two alternatives with the conditions that select them: heliyos_objects_list for objects and schema ids, heliyos_usage_get for credit usage. An agent knows both when to use this tool and which sibling to pick instead.

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

heliyos_records_createCreate a recordA

Creates one record (a company, person, deal, or custom object row) with the given field values. Check first with heliyos_records_lookup that the record does not already exist; calling this twice creates two records. Creating a company can start automatic enrichment, which uses credits when automatic enrichment is on (Settings, Autopilot). Returns the new record's id and key fields as structuredContent {record}.

NameRequiredDescriptionDefault
fieldsYesField values keyed by the object's field keys (for example company_name, domain, people_name, email, deal_name, stage). Unknown keys are rejected with the list of valid keys. `relationships` takes an array of record ids to link to this record (for example a person's company); linking adds to the existing links, and updates never remove links.
schema_idNoObject schema id. Required when object_type is "custom"; the error lists the available ones.
object_typeYesWhich object: "company", "person", "deal", or "custom" (custom objects also need schema_id).

Output Schema

NameRequiredDescription
recordNo

TDQS

A4.3/5.0
Behavior4/5

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

The annotations already declare non-idempotent, non-read-only, non-destructive behavior. The description adds valuable side-effect context not in annotations: duplicate calls create duplicate records, and creating a company can trigger automatic enrichment that consumes credits. It does not cover permission or error details, but the description carries the key behavioral risks well.

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 are front-loaded with the action and the duplicate-check warning, and each sentence carries useful information. The final sentence about return value is somewhat redundant because an output schema exists, but it does not undermine clarity.

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 create tool with a nested fields object and an output schema, the description covers the critical operational context: what it creates, duplicate risk, and the enrichment side effect. The schema handles the fine-grained field requirements, and the annotation profile is already covered, leaving little missing for correct invocation.

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 input schema already explains object_type, fields, relationships, and schema_id in depth. The description adds little parameter-specific meaning beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: creating one record, with the concrete object types (company, person, deal, custom object row). This distinguishes it clearly from sibling tools such as heliyos_records_lookup and heliyos_records_update without opening their 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?

It gives explicit when-to-use guidance by instructing the agent to check heliyos_records_lookup first to avoid duplicates, and it warns that calling twice creates two records. That is direct routing to an 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.

heliyos_records_deleteDelete recordsA
DestructiveIdempotent

Permanently deletes up to 100 records of one object by id. This cannot be undone: confirm with the user first. All ids must belong to the given object_type; the API ignores ids from other objects and does not confirm a count. Returns structuredContent {deleted_count (ids sent), record_ids}.

NameRequiredDescriptionDefault
schema_idNoObject schema id. Required when object_type is "custom"; the error lists the available ones.
record_idsYesIds of the records to delete, 1 to 100.
object_typeYesWhich object: "company", "person", "deal", or "custom" (custom objects also need schema_id).

Output Schema

NameRequiredDescription
record_idsYes
deleted_countYesNumber of distinct ids sent; the API does not confirm the count.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description still adds real value beyond them: irreversibility, the fact that ids from other objects are silently ignored, and the important caveat that deleted_count reflects ids sent rather than confirmed deletions.

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 its limit, then the safety warning, then the return shape. No filler and no repetition of schema content.

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 destructive batch tool, it covers the essentials: the 100-record cap, the object_type/record_ids coupling, irreversibility, and the return payload. An output schema exists, yet the description's note about deleted_count semantics is still the key detail an agent needs.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description earns above baseline by explaining cross-parameter semantics the schema cannot: all record_ids must belong to object_type, and mismatched ids are ignored without an error or count confirmation.

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 with scope: "Permanently deletes up to 100 records of one object by id." The batch cap and single-object constraint distinguish it from sibling delete tools (notes_delete, tasks_delete, fields_delete) and from records_update.

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?

Gives one explicit usage directive — "confirm with the user first" — which is valuable for a destructive operation. However, it never names alternatives (e.g., records_update to modify instead of delete) or states when-not to use it, so routing guidance is only implied.

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

heliyos_records_eventsRead a record's change historyA
Read-onlyIdempotent

Returns the audit trail of one record: who changed what and when (people and workers), newest first, each with a one-line change summary. Filter by operation type, event type, date range or text. "detailed" adds the paths of the changed fields. Use heliyos_records_timeline instead for a narrative of the relationship. Returns structuredContent {events:[{id, at, operation_type, actor, change_summary}], next_cursor}.

NameRequiredDescriptionDefault
limitNoEvents per page, 1 to 100. Default 20.
sinceNosince as an ISO 8601 date (2026-03-01) or date-time (2026-03-01T09:00:00Z).
untilNoOnly events at or before this date; a date alone includes that whole day (UTC).
cursorNonext_cursor from the previous page, with the same limit. Omit for the first page.
searchNoPlain words matched against the change summaries. Symbols such as + ( ) [ ] * ? can cause an error.
record_idYesrecord_id: a 24-character hex id.
event_typesNoOnly these event types: AUDIT (field changes), INTERACTION (emails, meetings), ENRICHMENT.
operation_typesNoOnly these operations: CREATE, UPDATE, DELETE.
response_formatNo"concise" (default) returns one line per change; "detailed" returns the changed field paths too.concise

Output Schema

NameRequiredDescription
eventsYes
next_cursorNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds real behavior beyond that: sort order (newest first), per-event shape (one-line change summary, actor can be a person or a worker), and that response_format='detailed' enlarges each entry with changed field paths. It does not discuss rate limits or maximum result depth, which is the remaining 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-loaded and dense: core behavior first, then filtering, then the mode flag, then the sibling routing. The closing return-shape sentence is largely redundant given a full output schema exists, which is the one sentence that does not fully earn 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 9-parameter read tool with annotations and an output schema, it covers intent, ordering, filtering, pagination via next_cursor and mode behavior. Nothing needed to call it correctly is missing, though it repeats the structuredContent shape that the output schema already defines.

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 limit, cursor, since/until, search, event_types, operation_types and response_format. The description only restates the available filter axes and the 'detailed' behavior, which the response_format schema description already says. Baseline 3 is appropriate because the schema carries the semantic load.

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 ('returns the audit trail of one record') and immediately scopes the payoff: who changed what, when, newest first, with one-line summaries. It also names the sibling it is not (heliyos_records_timeline) so an agent can separate event history from a narrative timeline 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 Guidelines4/5

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

Explicitly routes the agent away from this tool when it wants a narrative of the relationship, naming heliyos_records_timeline as the alternative. It gives no guidance on the other close neighbors (heliyos_records_get for current field values, heliyos_tasks_events for task history), so the exclusion set is only partially drawn.

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

heliyos_records_getGet a recordA
Read-onlyIdempotent

Fetches one record (a company, person, deal, or custom object row) by id. Use it after heliyos_records_list or heliyos_records_lookup gives you an id. "concise" returns the name, key fields and a count of linked records; "detailed" returns every field, the linked records (for example a person's company or a company's deals) with their ids, and created and updated times. Returns structuredContent {record:{id, object_type, schema_id, name, fields, relationships}}.

NameRequiredDescriptionDefault
record_idYesrecord_id: a 24-character hex id.
response_formatNo"concise" (default) returns the name and key fields; "detailed" returns every field and linked records.concise

Output Schema

NameRequiredDescription
recordYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive behavior, so the safety profile is covered. The description adds real behavioral context the annotations cannot: what the two response modes actually return, including that detailed includes linked records with ids plus created/updated timestamps. It omits error behavior for unknown ids.

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 front-loaded sentences: purpose, sequencing, then return modes. Every sentence carries content, with no restatement of the title. The final sentence is dense but still readable.

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 only two parameters, a 100% schema and a declared output schema, this is close to complete. It explains the mode tradeoff an agent needs in order to choose correctly. Only edge cases such as invalid id or not-found handling are absent, and those are minor.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description still adds meaning beyond the schema by spelling out what concise counts (linked records) and what detailed expands to (linked records with ids, created and updated times, with a person's company / company's deals as concrete examples).

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 and resource ("Fetches one record") and enumerates the record types it covers (company, person, deal, custom object row), which helps an agent distinguish it from list/lookup. It does not explicitly contrast its own return with heliyos_records_lookup, so the sibling boundary is implied 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 Guidelines4/5

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

It gives an explicit sequencing rule: call it after heliyos_records_list or heliyos_records_lookup yields an id. That routes the agent correctly among the 70 siblings. It does not state when not to use it (for example, when a timeline or events call is more appropriate).

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

heliyos_records_listList recordsA
Read-onlyIdempotent

Lists records of one object (companies, people, deals, or a custom object) in the Heliyos workspace, newest first. Use it to browse or filter records; use heliyos_records_lookup to find a record by name and heliyos_records_get for one record. Filter with search (free text) and filters (field conditions joined by match); order with sort. Returns a table of id, name and key fields plus structuredContent {records:[{id, object_type, name, fields}], next_cursor}. When next_cursor is present, call again with cursor set to it for the next page. Record ids feed heliyos_records_get, _update and _delete.

NameRequiredDescriptionDefault
sortNoSort order. Omit for newest updated first. With a sort, next_cursor is a page cursor from this tool; pass it back unchanged.
limitNoRecords per page, 1 to 100. Default 20.
matchNo"all" (default): a record must meet every filter condition. "any": at least one condition.all
cursorNonext_cursor from the previous page, with the same limit. Omit for the first page.
searchNoPlain words matched across the record's text fields. Symbols such as + ( ) [ ] * ? can cause an error.
filtersNoField conditions, for example [{field:"stage", operator:"equals", value:"Won"}]. Joined by `match`.
schema_idNoObject schema id. Required when object_type is "custom"; the error lists the available ones.
object_typeYesWhich object: "company", "person", "deal", or "custom" (custom objects also need schema_id).
response_formatNo"concise" (default) returns the name and key fields; "detailed" returns every field and linked records.concise

Output Schema

NameRequiredDescription
recordsYes
next_cursorNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and non-open-world, so the safety profile is covered. The description adds behavior beyond that: newest-first default ordering, the exact pagination loop ("when next_cursor is present, call again with `cursor` set to it"), and the concise/detailed return distinction. It does not mention permissions or rate limits, which keeps it at 4 rather than 5.

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?

Four front-loaded sentences: purpose, sibling routing, parameter grouping, and return/pagination. Everything is dense and usable, though the return-shape sentence duplicates what the existing output schema already declares, which is the one place words could be trimmed.

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 9-parameter, nested-filter, paginated list tool with an output schema, the description covers purpose, alternatives, parameter grouping, pagination continuation, and downstream id usage. Nothing needed to call it correctly is missing, and return values being explained is a bonus rather than a gap since an output schema exists.

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, including the nested filter operators and the sort object, is documented in the schema itself. The description only restates the cross-parameter linkage ("filters (field conditions joined by `match`)") without adding syntax, value formats, or edge cases beyond what the schema already says. Baseline 3 is appropriate when the schema carries the parameter burden.

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?

"Lists records of one object (companies, people, deals, or a custom object) in the Heliyos workspace, newest first" names a specific verb, the resource, the allowed object scopes, and the default ordering. It explicitly contrasts itself with heliyos_records_lookup (find by name) and heliyos_records_get (single record), so an agent can distinguish it from the nearest siblings without opening a 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?

The description states the browse/filter use case and then routes the agent away: use heliyos_records_lookup to find a record by name and heliyos_records_get for one record. It also gives the within-tool selection logic for `search` vs `filters` vs `sort`, and closes by noting that returned ids feed _get, _update and _delete, which tells the agent what to do next.

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

heliyos_records_lookupFind records by nameA
Read-onlyIdempotent

Finds records of one object whose name contains query (case-insensitive; exact and prefix matches rank first), or whose secondary value does (the first of domain, email, job title or stage that the object has). Use it to turn a name the user mentions into a record id. It searches the 2000 most recently updated records; for older ones use heliyos_records_list with search. Returns structuredContent {matches:[{id, name, secondary}], total_matches}.

NameRequiredDescriptionDefault
limitNoMaximum matches to return, 1 to 100. Default 20.
queryYesName or part of a name, for example "acme".
schema_idNoObject schema id. Required when object_type is "custom"; the error lists the available ones.
object_typeYesWhich object: "company", "person", "deal", or "custom" (custom objects also need schema_id).
response_formatNo"concise" (default) returns the name and key fields; "detailed" returns every field and linked records.concise

Output Schema

NameRequiredDescription
matchesYes
total_matchesYes
index_truncatedYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. Beyond that the description discloses traits annotations cannot: a hard search scope of the 2000 most recently updated records, the ranking order (exact and prefix first), and which secondary field is consulted. The only minor omission is that it does not restate how limit/response_format shape the result set, though it does name the return payload.

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: capability and ranking first, purpose second, scope limit and fallback third. Parenthetical asides carry genuine information rather than hedging, and no sentence is redundant with the schema or annotations.

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 5-parameter read tool with a full output schema, the description covers purpose, matching semantics, the search-window limit, the fallback path and even the return shape. Nothing an agent needs to call it correctly or decide against it is missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; the description still adds real meaning by explaining that matching is case-insensitive, that exact and prefix matches rank first, and that query falls back to a secondary value (first of domain, email, job title or stage). That goes beyond the schema's plain "Name or part of a name".

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?

It opens with a specific verb and resource ("Finds records of one object") and immediately narrows the match predicate to name-contains or secondary-value-contains, with ranking rules. An agent can tell it apart from heliyos_records_get (exact retrieval) and heliyos_records_list (enumeration) without opening a 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?

It states the intended job explicitly ("Use it to turn a name the user mentions into a record id") and gives a concrete exclusion plus alternative: older records outside the 2000 most recently updated require heliyos_records_list with search. That is an explicit when/when-not/alternative triple.

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

heliyos_records_timelineRead a record's timelineA
Read-onlyIdempotent

Returns the AI-written timeline of one record (company, person or deal): the record's current relationship summary and dated entries describing what happened (emails, meetings, deal moves), newest first. Use it to brief yourself on an account before acting. For the raw audit trail of field changes use heliyos_records_events; for the emails and meetings themselves use heliyos_interactions_list. Returns structuredContent {record_id, summary, entries, next_cursor}.

NameRequiredDescriptionDefault
limitNoEntries per page, 1 to 100. Default 20.
cursorNonext_cursor from the previous page, with the same limit. Omit for the first page.
record_idYesrecord_id: a 24-character hex id.
response_formatNo"concise" (default) returns each entry cut at 300 characters; "detailed" returns full entry text.concise

Output Schema

NameRequiredDescription
totalNo
entriesYes
summaryNo
record_idYes
next_cursorNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely new context beyond that: entries are AI-written, ordered newest first, paginated via next_cursor, and shaped as structuredContent. It stops short of saying how fresh or complete the AI summary is, which keeps 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 sentences, front-loaded with what is returned, then when to use it, then the disambiguation. Every clause carries information and there is no restatement of the title or name.

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?

With an output schema present, the description does not need to explain return values, yet it still names the structuredContent fields as a convenience. Combined with explicit sibling routing and pagination notes, an agent has everything needed to call this correctly on the first attempt.

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 record_id format, limit bounds, cursor reuse, and the concise/detailed truncation tradeoff are all already documented in the schema. The description only reinforces cursor pagination and newest-first ordering, adding little syntax or semantic meaning beyond the structured fields.

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 ("Returns the AI-written timeline of one record"), scopes it to company/person/deal, and enumerates the payload (relationship summary plus dated entries for emails, meetings, deal moves). It explicitly names the sibling tools it is not, so an agent can separate it from heliyos_records_events and heliyos_interactions_list without opening a 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 a positive use case ("brief yourself on an account before acting") and two explicit alternatives with the condition that selects each: raw field-change audit goes to heliyos_records_events, and the underlying emails/meetings go to heliyos_interactions_list. Nothing about routing 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.

heliyos_records_updateUpdate a recordA
Idempotent

Updates some fields of one record by id; fields you leave out keep their values. Set a field to null to clear it. Field keys are checked against the record's object first, and unknown keys are rejected with the valid ones. relationships adds links and never removes existing ones. Get the id from heliyos_records_list or heliyos_records_lookup. Returns the changed fields and the record's key fields as structuredContent {record}.

NameRequiredDescriptionDefault
fieldsYesField values keyed by the object's field keys (for example company_name, domain, people_name, email, deal_name, stage). Unknown keys are rejected with the list of valid keys. `relationships` takes an array of record ids to link to this record (for example a person's company); linking adds to the existing links, and updates never remove links.
record_idYesrecord_id: a 24-character hex id.

Output Schema

NameRequiredDescription
recordYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnly=false, idempotent=true, destructive=false; the description goes well beyond that by disclosing merge semantics ('fields you leave out keep their values'), the null-to-clear convention, key validation that rejects unknown keys and returns the valid set, and that `relationships` only adds links and never removes them. It also states the return payload shape. This is exactly the mutation-specific behavior an agent needs before writing.

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?

Four tight, front-loaded sentences that each carry operational information, starting with the core verb+scope before the field-level rules. Minor redundancy with the `fields` schema description for the relationships behavior keeps it from a 5.

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 two-parameter mutation with nested `fields` and an output schema, the description covers everything an agent needs: id sourcing, merge vs clear semantics, validation failure mode, link accumulation, and return contents. Nothing material is left 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?

Schema coverage is 100%, so a 3 is the baseline, but the description adds meaning the schema does not: omitted keys are preserved and explicit nulls clear a field. The `relationships` and unknown-key semantics are largely restated from the `fields` schema description, so the gain is real but modest.

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 plus its precise scope: 'Updates some fields of one record by id', which immediately signals a partial (merge) update rather than a full replace. It also names heliyos_records_list and heliyos_records_lookup as the id sources, so an agent can distinguish it from the read siblings without opening a schema.

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 operative context: get the id from heliyos_records_list or heliyos_records_lookup before calling, and omit fields you don't want changed. It stops short of explicit exclusions — it never contrasts itself with heliyos_fields_update (schema/field definitions) or states what to do when the record doesn't exist.

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

heliyos_reviews_decideApprove or reject a reviewA
Destructive

Decides one pending review. Approving does the thing the worker proposed: the email is sent, the deal or label is changed, the meeting is booked, or the paused run continues with its action; rejecting discards it and tells the worker why (feedback). A review is decided once; a second call fails. Approving acts on the user's behalf and cannot be undone: read it with heliyos_reviews_get and confirm with the user first. For a deal_update you may pass the fields as the user edited them in data; for a paused tool call, edited arguments in args. Returns structuredContent {review_id, decision, status, run_notified}.

NameRequiredDescriptionDefault
argsNoA paused tool call and approved only: the tool's arguments as the user edited them (see proposal in heliyos_reviews_get).
dataNodeal_update and approved only: the deal's fields as the user confirmed or edited them (field key to value).
commentNoA note kept on the review.
decisionYesapproved or rejected.
feedbackNoWhat to tell the worker, for example why it was rejected or what to change.
review_idYesreview_id: a 24-character hex id.

Output Schema

NameRequiredDescription
reviewNo
statusYes
decisionYes
review_idYes
run_notifiedYesfalse: the change was applied but the paused run could not be told; it will be picked up later.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds substantive context beyond them: the concrete side effects of approval, the explicit irreversibility warning, the user-consent requirement, and the fact that a second call fails. The only thing not covered is failure modes other than double-decision (e.g., stale or already-executed runs).

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?

Purpose is front-loaded in the first clause, followed by consequences, constraints, and parameter notes in a sensible order. The four-item enumeration of approve outcomes is slightly long but each item conveys a distinct side effect, so little 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 destructive, non-idempotent decision tool with a rich schema and an output schema, the description covers purpose, side effects, irreversibility, consent workflow, and the conditional parameter split. Nothing an agent needs in order 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 description coverage is 100%, so all six params are already documented, and the description's notes on `data` and `args` largely restate the schema's own "deal_update and approved only" / "paused tool call and approved only" wording. It adds modest value by tying `feedback` to the reject flow, but does not go meaningfully beyond the schema.

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

Purpose5/5

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

States a specific verb and resource ("Decides one pending review") and immediately enumerates what the decision does across the possible proposal types (email sent, deal/label changed, meeting booked, paused run continued). This distinguishes it cleanly from the read-only sibling heliyos_reviews_get, which it names explicitly.

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 preconditions and an ordering: read the review with heliyos_reviews_get and confirm with the user before approving. It also states the one-shot constraint ("A review is decided once; a second call fails") and routes the two conditional params to the right proposal type, so an agent knows both when to call and how to sequence it.

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

heliyos_reviews_getGet a reviewA
Read-onlyIdempotent

Fetches one review by id with everything a person needs to decide it: the worker's proposal and reasoning, the draft email (subject, recipients, body) or the deal's fields before and after, the records and run it belongs to, and, once decided, the comment and outcome. Long texts are cut at 400 characters in concise. Returns structuredContent {review}.

NameRequiredDescriptionDefault
review_idYesreview_id: a 24-character hex id.
response_formatNo"concise" (default) returns the proposal with shortened texts; "detailed" returns full texts, the raw proposed arguments and the outcome.concise

Output Schema

NameRequiredDescription
reviewYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description still adds useful behavior: the truncation rule at 400 characters in concise mode, the fuller contents in detailed mode, and the fact that decision data appears only once the review is decided, plus the structuredContent {review} return shape.

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 spends its length on the payload contents and the truncation caveat; nothing is redundant. It is dense but every clause carries information an agent would otherwise have to discover by calling the tool.

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 read tool with full schema coverage, complete annotations, and an output schema, the description covers everything needed to select and call it correctly. The only shortfall is the missing routing to the decide/list siblings, which keeps it just short of full marks.

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 a baseline of 3 applies. The description earns an extra point by adding a fact the schema omits: texts are cut at 400 characters in concise mode, which concretely explains the real cost of the default response_format.

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

Purpose5/5

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

The description names a specific verb and resource ("Fetches one review by id") and enumerates exactly what is returned: the worker's proposal and reasoning, the draft email or before/after deal fields, the parent records/run, and the decision comment and outcome. That level of detail makes it immediately distinguishable from heliyos_reviews_list (many reviews) and heliyos_reviews_decide (acting on one).

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: the phrase "everything a person needs to decide it" hints this is the inspection step before heliyos_reviews_decide, but neither that sibling nor heliyos_reviews_list is named, and there is no explicit when-to-use or when-not-to-use statement.

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

heliyos_reviews_listList reviewsA
Read-onlyIdempotent

Lists reviews: worker actions waiting for a person's decision (an email draft, a deal change, a meeting, a task, a document, or a question the worker asked), pending ones by default, newest first. Filter by status, type, or the record or task they are about. Each shows its id, type, title, summary, the worker and the records. Read one with heliyos_reviews_get, decide it with heliyos_reviews_decide. Returns structuredContent {reviews:[{id, status, type, title, summary, worker, run_id, records}], next_cursor}.

NameRequiredDescriptionDefault
typeNoOnly one type: deal_update, email_draft, meeting_scheduled, task, document, decision (questions and ad-hoc approvals), classification_label, or a tool name.
limitNoReviews per page, 1 to 100. Default 20.
cursorNonext_cursor from the previous page, with the same limit. Omit for the first page.
statusNopending (default), approved or rejected.pending
object_idNoOnly reviews about this record (company, person, deal) or task.
response_formatNo"concise" (default) returns id, type, title, summary, worker and records per review; "detailed" returns the reasoning and draft or deal details too.concise

Output Schema

NameRequiredDescription
reviewsYes
next_cursorNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds behavioral detail annotations cannot express: default status filter, newest-first ordering, and the fields returned per review. It stops short of describing pagination edge cases beyond the next_cursor mention, so it is strong but not maximal.

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 definition before defaults and routing, with no filler sentences. The parenthetical enumeration of review kinds is slightly long but serves a real disambiguation purpose, so the small density cost is acceptable.

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 six-parameter read-only list tool with full schema coverage and an output schema, the description covers purpose, defaults, filtering, ordering, and sibling routing. The inline return-shape summary is mild redundancy against the output schema but not harmful, and nothing an agent needs 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, and enums for status and response_format are self-evident. The description adds only a light semantic frame — 'filter by status, type, or the record or task they are about' — which restates rather than extends the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Lists reviews') and then defines the concept precisely: 'worker actions waiting for a person's decision' with concrete examples (email draft, deal change, meeting, task, document, question). This distinguishes it from heliyos_reviews_get and heliyos_reviews_decide without requiring the agent to read 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 routing: 'Read one with heliyos_reviews_get, decide it with heliyos_reviews_decide', and states the default behavior ('pending ones by default, newest first'). An agent knows both when to select this tool and when to switch to a sibling.

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

heliyos_runs_getGet a runA
Read-onlyIdempotent

Reads one worker run: its status, whether it is done, its steps (seq, type, title, status, start and end times, a one-line summary each), reviews waiting on a person, credits used, and the final answer once there is one. wait: true waits up to 30 s for the run to finish or stop on a person; call again with wait: true while done is false, unless the run waits on a person (awaiting_approval, paused, waiting, scheduled): then it only moves when someone acts in Heliyos, and wait: true returns at once. "detailed" adds each step's raw input, output and error. Returns structuredContent {run:{id, status, done, steps, reviews, answer?}}.

NameRequiredDescriptionDefault
waitNotrue: wait up to 30 s for the run to finish before answering.
run_idYesThe run id (run_id) from heliyos_ask, heliyos_tasks_run, heliyos_tasks_get or heliyos_runs_list.
response_formatNo"concise" (default) returns status and one line per step; "detailed" returns each step's raw input, output and error, plus run title and workers.concise

Output Schema

NameRequiredDescription
runYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/non-destructive, and the description adds real behavioral context on top: the 30 s wait ceiling, the immediate-return behavior for human-gated states, and the fact that "detailed" exposes raw step input/output/error. The human-gating nuance is exactly the kind of trait an agent cannot infer from annotations or schema.

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-loaded with the resource and its payload, then the wait semantics, then the mode difference. Dense but no filler sentences; the returns clause slightly duplicates the presence of an output schema, which is the only minor waste.

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?

Covers the hard parts of a polling-get tool: retry policy, human-gated states, and the mode switch. With an output schema present it needn't detail return values, and the remaining gap (error/not-found behavior, how credits are scoped) is minor for this complexity.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it explains that wait:true returns immediately for person-gated runs (the schema only says "wait up to 30 s"), and that detailed adds run title and workers in addition to raw step payloads. That is genuine value over the field 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?

The description opens with a specific verb and resource ("Reads one worker run") and enumerates exactly what is returned: status, done flag, steps, reviews, credits, answer. The singular "one worker run" also distinguishes it from the sibling heliyos_runs_list, so an agent can pick 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 Guidelines4/5

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

Strong conditional guidance for the polling loop: call again with wait:true while done is false, but do NOT poll when the run is awaiting_approval/paused/waiting/scheduled because it will return at once and only moves when a person acts. It gives no explicit guidance on when to prefer heliyos_runs_list or heliyos_tasks_get instead, which keeps it short of a 5.

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

heliyos_runs_listList runsA
Read-onlyIdempotent

Lists worker runs (chats with Heliyos, task runs and automatic runs), newest first, optionally in one status, for one task, one worker or one company, or in a date range. Shows each run's id, status, title and start time; read one with heliyos_runs_get. Order with sort. Returns structuredContent {runs:[{id, status, title, ...}], next_cursor}.

NameRequiredDescriptionDefault
sortNoSort order. Omit for newest first. With a sort, next_cursor is a page cursor from this tool; pass it back unchanged.
limitNoRuns per page, 1 to 100. Default 20.
sinceNoOnly runs started at or after this date (ISO 8601).
untilNoOnly runs started at or before this date; a date alone includes that whole day (UTC).
cursorNonext_cursor from the previous page, with the same limit. Omit for the first page.
statusNoOnly runs in this status, for example running, awaiting_approval, completed or failed.
task_idNoOnly runs on this task (its own runs and chats that mention it).
worker_idNoOnly runs of this worker (id from heliyos_workers_list).
company_idNoOnly runs about this company record.
response_formatNo"concise" (default) returns one row per run; "detailed" returns task, workers and tool calls too.concise

Output Schema

NameRequiredDescription
runsYes
next_cursorNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered; the description adds behavior the annotations cannot: default ordering (newest first, overridable via `sort`) and cursor-based pagination returning next_cursor. The one gap is that it never says how multiple filters combine (AND vs. one-at-a-time).

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 dense sentences, front-loaded with purpose, then filters, then the read-one sibling, then return shape. Nearly every clause carries information, though the trailing return-shape sentence partially duplicates the existing output schema and could be trimmed.

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 10-parameter list tool with an output schema, this covers purpose, filtering, ordering, pagination and result fields adequately. The remaining ambiguity is whether the phrase "one status, one task, one worker or one company" means mutually exclusive filter modes or one value per filter — a point an agent could get wrong on a multi-filter query.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: the filters are single-valued ("one status, one task, one worker or one company") and default ordering is newest-first unless `sort` is supplied. It does not clarify the concise/detailed response_format tradeoff beyond naming it, which keeps it from a 5.

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

Purpose5/5

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

Opens with a specific verb and resource ("Lists worker runs") and immediately enumerates the concrete subtypes (chats with Heliyos, task runs, automatic runs), so the agent knows exactly what domain object this returns. It also names the sibling heliyos_runs_get for single-record reads, making it distinguishable from the rest of the runs/records family.

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

Usage Guidelines4/5

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

Explicitly routes the agent: use this to enumerate, use heliyos_runs_get to read one. The filter vocabulary (status, task, worker, company, date range) tells the agent which situations this tool serves. It stops short of stating exclusions or what to do when no filter matches, so it is clear context rather than a full when/when-not decision rule.

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

heliyos_scouts_createCreate a scoutA

Creates a custom scout and starts a preview run of its query. The scout stays inactive until you confirm it: when heliyos_scouts_get shows preview completed, call heliyos_scouts_update with state "confirmed" to activate it on its companies. apply_to: watchlist (every watched company, the default), selected_watchlist (only selected_company_ids, which must be watched companies) or entire_web. The scope cannot be changed later. Scout runs use credits. Calling this twice creates two scouts. Returns structuredContent {scout}.

NameRequiredDescriptionDefault
nameYesScout name.
queryYesWhat to look for, in plain language. For watchlist scopes write it about "the company"; each company's name and website are added when it runs. For entire_web, describe the event anywhere on the web.
effortNoSearch depth: low, medium (default) or high. Higher effort costs more credits per run.
cadenceNoHow often it runs: daily, weekly (default) or monthly.
apply_toNowatchlist (default), selected_watchlist or entire_web. Fixed once created.
categoryYesA short category label, for example "Funding" or "Hiring".
preview_companyNoselected_watchlist only: the company the preview runs on.
preview_lookbackNoHow far back the preview searches: 1_month (default), 3_months or 6_months.
selected_company_idsNoWatched company record ids the scout runs on (only with apply_to selected_watchlist).

Output Schema

NameRequiredDescription
scoutYes

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: the scout remains inactive until confirmed, the scope is immutable, runs consume credits, and calling twice creates two scouts (explicit non-idempotency matching idempotentHint=false). The confirmation flow and credit cost are exactly the behavioral facts an agent would otherwise get wrong.

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 action and the activation requirement, and every sentence carries information. The inline apply_to enumeration is dense but readable; a bulleted structure would be marginally clearer, yet 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 9-parameter, non-idempotent creation tool with a follow-up confirmation step, the description covers the full lifecycle, cost, immutability, and duplicate-call hazard. Return values are covered by the output schema and briefly acknowledged via structuredContent {scout}.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description still adds meaning by spelling out the three apply_to modes and the constraint that selected_company_ids must be watched companies. Otherwise it largely mirrors schema text, so it does not warrant a 5.

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

Purpose5/5

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

States a specific verb and resource ("Creates a custom scout") plus the side effect that matters ("starts a preview run of its query"), which immediately distinguishes it from heliyos_scouts_update and heliyos_scouts_list. The creation state machine (created but inactive) is articulated in one clause.

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 a clear explicit workflow: create, poll heliyos_scouts_get until preview completes, then call heliyos_scouts_update with state "confirmed". It also explains which apply_to value applies to which situation. It stops short of naming when to prefer this over siblings such as heliyos_companies_scouts_add for attaching existing scouts.

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

heliyos_scouts_deleteDelete a scoutA
DestructiveIdempotent

Permanently deletes one custom scout and stops it on every company it runs on. Built-in (default) scouts cannot be deleted; pause them with heliyos_scouts_update state "paused". Signals it already found are kept. This cannot be undone: confirm with the user first. Returns structuredContent {scout_id, deleted, deleted_company_scouts}.

NameRequiredDescriptionDefault
scout_idYesGlobal scout id from heliyos_scouts_list.

Output Schema

NameRequiredDescription
deletedYes
scout_idYes
deleted_company_scoutsNoCompany scouts removed with it.

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the supplied annotations (destructiveHint/readOnlyHint/idempotentHint) by disclosing the cascade (stops the scout on every company it runs on), the data-retention behavior (signals already found are kept), irreversibility, and the requirement for user confirmation. It even names the returned fields, so the agent knows what evidence of success to expect.

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 short sentences, front-loaded with the destructive effect, then the exclusion/alternative, then retention, then the confirmation and return shape. No sentence is filler and the risk warning appears before the alternative route.

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 destructive tool with a declared output schema, nothing material is missing: effect scope, irreversibility, sibling alternative, retained data, and return contract are all covered. The output schema removes any need to describe the response further.

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 scout_id parameter is already documented with its format pattern and provenance ("from heliyos_scouts_list"). The description adds no additional parameter meaning such as id provenance rules for deleted scouts or lookup fallbacks, so 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 ("Permanently deletes one custom scout") plus scope ("stops it on every company it runs on"). It also separates itself from built-in default scouts and from the sibling heliyos_scouts_update, so an agent can distinguish it without reading 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?

Gives an explicit when-not-to-use rule (built-in scouts cannot be deleted) and routes to the correct alternative (pause via heliyos_scouts_update with state "paused"). It also adds a procedural precondition, "confirm with the user first", which is exactly the routing guidance an agent needs before a destructive call.

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

heliyos_scouts_getGet a scoutA
Read-onlyIdempotent

Fetches one scout by id: what it looks for (its query), cadence, effort, scope, whether it is active, its preview state (custom scouts) and its signal counts. "detailed" adds the 5 most recent signals with their ids and the full query. Returns structuredContent {scout, recent_signals?}.

NameRequiredDescriptionDefault
scout_idYesGlobal scout id from heliyos_scouts_list.
response_formatNo"concise" (default) returns the scout with its query cut at 1500 characters; "detailed" returns the full query and the 5 most recent signals.concise

Output Schema

NameRequiredDescription
scoutYes
recent_signalsNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds real value on top: the specific fields present on the returned scout, the difference in query truncation, and the structuredContent {scout, recent_signals?} return shape. It stops short of noting any auth or rate-limit behavior, but for a pure read that is minor.

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

Conciseness5/5

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

Two sentences, front-loaded with the retrieval scope, then the return-shape note. Nothing is repeated and no filler appears.

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 two-parameter read-only fetch with full schema coverage, complete annotations, and an output schema, the description covers what is needed to call it correctly. Return-value explanation is present but minimal, which is right given the output schema exists.

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 are already fully documented, including the 24-hex id pattern and the enum semantics of response_format. The description restates the detailed-mode contents and adds only the detail that recent signals carry ids, so it does not meaningfully exceed the schema's own explanation. 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?

"Fetches one scout by id" states a specific verb, resource, and cardinality, and the enumeration of returned facets (query, cadence, effort, scope, active state, preview state, signal counts) tells an agent exactly what it gets. It separates itself from heliyos_scouts_list by specifying a single record, though it never names the list tool as the id source — that routing hint lives only in 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 Guidelines2/5

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

There is no when-to-use or when-not guidance: nothing says to call this after heliyos_scouts_list to resolve an id, or to prefer heliyos_scouts_list, heliyos_companies_scouts_list, or heliyos_signals_list for aggregate needs. The concise-vs-detailed choice is defined only in terms of what data is returned, not when each mode is appropriate.

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

heliyos_scouts_listList scoutsA
Read-onlyIdempotent

Lists the workspace's scouts: the built-in (default) and custom monitors that look for events such as funding, hiring or leadership changes on watched companies or across the web. Shows each scout's id, whether it is active, its cadence, and how many signals it found (new of total). Returns every scout (there are only a few, so there is no paging). Use heliyos_scouts_get for one scout's query and recent signals, heliyos_signals_list for what scouts found. Returns structuredContent {scouts:[{id, name, type, is_active, ...}]}.

NameRequiredDescriptionDefault
typeNoOnly built-in (default) or only custom scouts.
apply_toNoOnly scouts with this scope.
is_activeNoOnly active (true) or only paused and unconfirmed (false) scouts.
response_formatNo"concise" (default) returns one row per scout; "detailed" returns category, scope, effort and preview state too.concise

Output Schema

NameRequiredDescription
scoutsYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds value beyond that by noting the result set is small and unpaged and by describing the signal-count semantics (new of total). It does not discuss filter combination behavior (e.g., whether type, apply_to and is_active AND together), which is the main remaining behavioral 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?

It is a single dense paragraph that front-loads the definition of a scout before the sibling routing and the return summary. Almost every sentence carries information, though the explicit structuredContent field listing partially duplicates the existing output schema.

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?

This is a simple, zero-required-parameter read tool with annotations and an output schema, and the description covers scope, non-paging behavior, sibling alternatives and the headline return fields. Only the interaction between the optional filters is left implicit, a minor gap for this complexity level.

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 three of four parameters are enums with documented values, so the schema carries the parameter semantics. The description does not restate or extend filter meaning beyond noting which fields are surfaced per scout. Baseline 3 is appropriate given the schema does the heavy lifting.

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

Purpose5/5

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

The description uses a specific verb and resource ("Lists the workspace's scouts") and immediately defines what a scout is: built-in (default) and custom monitors watching companies or the web for funding, hiring or leadership changes. It also states the per-item fields returned (id, active state, cadence, signal counts), so an agent can distinguish it from siblings like heliyos_scouts_get or heliyos_signals_list without opening a 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?

It explicitly routes the agent: use heliyos_scouts_get for one scout's query and recent signals, and heliyos_signals_list for what scouts found, leaving this tool for enumerating scouts. It also removes a common ambiguity by stating there is no paging because the set is small, so the agent knows not to look for offset/limit parameters.

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

heliyos_scouts_updateUpdate a scoutA
Idempotent

Changes a scout's name, category, query, cadence, effort or selected companies, and/or its state; what you leave out is kept. Changes apply to every company the scout runs on. state: "paused" stops it on every company, "active" resumes it, "confirmed" activates a new custom scout after its preview completed. The scope (apply_to) cannot be changed. To delete a custom scout use heliyos_scouts_delete. Returns structuredContent {scout}.

NameRequiredDescriptionDefault
nameNoScout name.
queryNoWhat to look for, in plain language. For watchlist scopes write it about "the company"; each company's name and website are added when it runs. For entire_web, describe the event anywhere on the web.
stateNo"active", "paused", or "confirmed" (activate a custom scout once its preview completed). Applied after the field changes.
effortNoSearch depth: low, medium (default) or high. Higher effort costs more credits per run.
cadenceNoHow often it runs: daily, weekly (default) or monthly.
categoryNoA short category label, for example "Funding" or "Hiring".
scout_idYesGlobal scout id from heliyos_scouts_list.
selected_company_idsNoReplaces the selected companies (selected_watchlist scouts only).

Output Schema

NameRequiredDescription
scoutYes

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that changes propagate to every company the scout runs on, that the scope (apply_to) is immutable, and what each state value actually does operationally. The return shape is also noted, which an agent cannot infer from the annotations alone.

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-loaded with the mutable field list and the no-op-on-omitted-fields rule, with no filler sentences. It is dense — a long run-on clause chain — but every clause carries distinct information.

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

Completeness5/5

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

For an 8-parameter mutation with an output schema, the description covers propagation scope, immutability of scope, state semantics, return value, and the delete alternative. Nothing an agent needs to call it safely is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description adds real meaning by defining the three state transitions, including the non-obvious 'confirmed' preview-workflow meaning, and by clarifying that apply_to is out of scope. Minor gap: selected_company_ids replacement semantics are only in the schema.

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

Purpose5/5

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

Opens with a specific verb (Changes) and enumerates exactly which fields are mutable, then names the sibling tool for deletion. An agent can distinguish this from heliyos_scouts_create and heliyos_scouts_delete without inspecting schemas.

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?

Clearly states patch semantics ('what you leave out is kept') and routes deletion to heliyos_scouts_delete. It does not explicitly say when to update versus recreating a scout, so a small inference remains, but the primary alternatives are covered.

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

heliyos_signals_listList signalsA
Read-onlyIdempotent

Lists signals (events scouts found, such as a funding round or a leadership change), newest first. Filter by company_id, by scout_id (a global scout from heliyos_scouts_list) and by status (new = unread). Each signal shows its id, date, company and a summary; detailed adds source URLs. Mark them read with heliyos_signals_mark_read. Returns structuredContent {signals:[{id, status, detected_at, company_id, company_name, summary}], next_cursor}.

NameRequiredDescriptionDefault
limitNoSignals per page, 1 to 100. Default 20.
cursorNonext_cursor from the previous page, with the same limit. Omit for the first page.
statusNonew (unread), read or archived.
scout_idNoOnly signals found by this global scout.
company_idNoOnly signals about this company record.
response_formatNo"concise" (default) returns one line per signal; "detailed" returns full summaries, source URLs and relevance.concise

Output Schema

NameRequiredDescription
signalsYes
next_cursorNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds ordering (newest first), per-item fields, the effect of response_format, and the next_cursor pagination contract in structuredContent. It does not discuss page-size limits or cursor expiry, but the added behavioral context is well 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?

Four tight sentences, front-loaded with the definition and ordering before filters and follow-up actions. The closing structuredContent summary is slightly redundant given a dedicated output schema, which keeps it from being maximally economical.

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 filtered, paginated list tool it covers everything an agent needs: what a signal is, default ordering, filter dimensions, response-format effects, pagination via next_cursor, and the follow-up tool for state changes. Return-value explanation is redundant with the output schema but not harmful.

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 already spells out limit bounds, cursor usage, the status enum meanings, and what detailed returns, so the description mostly restates rather than extends it. Minor value is added by clarifying that scout_id refers to a global scout and that status "new" means unread, but with full schema coverage 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 and resource ("Lists signals") and disambiguates with concrete examples ("events scouts found, such as a funding round or a leadership change") plus ordering ("newest first"). An agent can distinguish this from siblings like heliyos_scouts_list or heliyos_signals_mark_read 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 Guidelines4/5

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

Gives real routing guidance: scouts come from heliyos_scouts_list, and read-state changes belong to heliyos_signals_mark_read, which steers the agent away from misusing this tool. It does not state exclusions (e.g., when to prefer a records or interactions listing instead), so it falls short of a full when/when-not treatment.

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

heliyos_signals_mark_readMark signals readA
Idempotent

Marks signals read: either the given signal_ids (1 to 20) or every new signal about one company (company_id). Pass exactly one of the two. Marking a read signal again changes nothing. Returns structuredContent {marked, failed} for signal_ids, or {company_id, marked_count} for a company.

NameRequiredDescriptionDefault
company_idNoMark every new signal about this company read.
signal_idsNoSignal ids from heliyos_signals_list, 1 to 20.

Output Schema

NameRequiredDescription
failedNo
markedNo
company_idNo
marked_countNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, destructiveHint=false, and openWorldHint=false, but the description reinforces idempotency with a concrete phrasing ('Marking a read signal again changes nothing') and adds the 1-to-20 batch bound plus the two distinct return shapes. With no annotations it would be even higher, but the annotations already carry the safety profile.

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

Conciseness5/5

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

Two sentences, both front-loaded: scope and constraint first, behavior and return shape second. Every clause carries information (mutual exclusion, idempotency, batch bounds, response shape) 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?

An output schema exists, yet the description still helpfully distinguishes the two response shapes ({marked, failed} vs {company_id, marked_count}), which is exactly what an agent needs to branch on after the call. For a two-param mutation with full schema coverage, nothing material is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline would be 3, but the description adds real semantics the schema cannot express: the exactly-one-of relationship between the two parameters and the 1-to-20 cap tied to the array. It does not add format detail beyond the 24-hex pattern already in the schema.

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

Purpose5/5

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

States the specific verb ('Marks signals read') and resource, and immediately enumerates the two mutually exclusive scopes (signal_ids vs company_id). The two-mode structure is clear enough that an agent knows exactly what the tool does 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 Guidelines4/5

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

"Pass exactly one of the two" is an explicit and necessary constraint because required=[] in the schema, so nothing else enforces it. The pairing of signal_ids with heliyos_signals_list gives provenance guidance. No explicit 'when not to use' or alternative tool is named, keeping it just below a 5.

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

heliyos_tasks_createCreate a taskA

Creates a task, optionally linked to records (a company, person or deal). Creating a task can start workers that subscribe to new tasks. Calling it twice creates two tasks. To have workers act on it now, call heliyos_tasks_run with the returned id. Returns structuredContent {task}.

NameRequiredDescriptionDefault
titleYesTask title.
statusNoDefault backlog.
due_dateNodue_date as an ISO 8601 date (2026-03-01) or date-time (2026-03-01T09:00:00Z).
priorityNonone, low, medium, high or urgent.
record_idsNoIds of records (companies, people, deals) to link the task to, 1 to 10. Each id is checked first; an unknown id fails the call and nothing is written.
descriptionNoTask description (plain text).

Output Schema

NameRequiredDescription
taskYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and idempotentHint=false, but the description adds the consequence that an agent actually needs: calling it twice creates two tasks, and creation may trigger subscribing workers. That is behavioral context beyond the structured hints. It stops short of stating permissions or what happens on partial worker failure, so not 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 short sentences, front-loaded with what the tool does, then side effects, then non-idempotency, then the follow-up call. No filler and no repetition 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?

For a six-parameter create tool with a full output schema, the description covers the mutation's side effects, the duplicate-call hazard, and the natural next step, and notes the structuredContent return. Only auth/prerequisite context is absent, which is minor given the annotation and schema coverage.

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 already documents enums, length limits, the 1–10 id range, and the validation-then-write failure behavior for record_ids. The description only restates that linkage is optional and which record types are valid, adding no format or ordering 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?

Opens with a specific verb and resource ("Creates a task") and immediately qualifies scope with the optional record linkage naming the record types (company, person, deal). An agent can distinguish it from heliyos_tasks_list/get/update/run 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 Guidelines4/5

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

Gives explicit routing advice: to have workers act on the task now, call heliyos_tasks_run with the returned id. That is a clear alternative-and-condition statement. It does not state when a task should be created at all versus, say, a note, but the alternative path within the task lifecycle is well covered.

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

heliyos_tasks_deleteDelete a taskA
DestructiveIdempotent

Permanently deletes one task by id. This cannot be undone: confirm with the user first. Returns structuredContent {task_id, deleted}.

NameRequiredDescriptionDefault
task_idYestask_id: a 24-character hex id.

Output Schema

NameRequiredDescription
deletedYes
task_idYes

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, but the description reinforces irreversibility in plain language and adds an agent-facing confirmation step, which is behavior beyond the flag. It also names the returned fields, giving the agent a lightweight expectation of the response side-effect.

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, with the destructive nature and confirmation requirement front-loaded ahead of the return note. Every sentence carries distinct information and there is no redundant phrasing.

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 single-parameter destructive tool with full annotations and an output schema, the description covers purpose, irreversibility, the confirmation step, and the return shape. Only failure modes (e.g., deleting an already-removed or unknown task_id) are left unmentioned, which is a minor 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 documents both its name and the 24-character hex pattern, so the schema already carries the semantics. The description only says 'by id', which adds no format or sourcing detail beyond the structured field.

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 uses a specific verb and resource ('Permanently deletes one task by id'), and the singular 'one task' plus the resource name separates it from siblings like heliyos_notes_delete and heliyos_records_delete without needing the schema. It stops short of naming an alternative tool such as heliyos_tasks_update for soft changes, which keeps it from 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?

It gives one concrete precondition, 'confirm with the user first', which is real when-to-use guidance for a destructive call. It does not cover when not to delete (e.g., deferring to heliyos_tasks_update) or any prerequisite about task ownership or state, so the guidance is implied rather than complete.

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

heliyos_tasks_eventsRead a task's activityA
Read-onlyIdempotent

Returns the activity (change history) of one task: who changed what and when (people and workers), newest first, each with a one-line change summary. "detailed" adds the paths of the changed fields. For a company, person or deal use heliyos_records_events; for what the workers did on the task use heliyos_runs_list with task_id. Returns structuredContent {events:[{id, at, operation_type, actor, change_summary}], next_cursor}.

NameRequiredDescriptionDefault
limitNoEvents per page, 1 to 100. Default 20.
cursorNonext_cursor from the previous page, with the same limit. Omit for the first page.
task_idYestask_id: a 24-character hex id.
response_formatNo"concise" (default) returns one line per change; "detailed" returns the changed field paths too.concise

Output Schema

NameRequiredDescription
eventsYes
next_cursorNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare this a safe, idempotent, closed read, so the description doesn't need to re-argue safety. It adds ordering ('newest first'), the one-line-per-change shape, the effect of response_format='detailed', and the presence of next_cursor for pagination — useful context beyond the annotations. The only miss is not stating that cursor must be reused with the same limit (that detail lives in the schema instead).

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 the core behavior, then alternatives, then return shape — no filler. The explicit output-shape sentence is slightly redundant given the output schema exists, but it's compact and helps set expectations before the call.

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?

With annotations covering safety, a full schema, and an output schema, the description supplies everything an agent still needs: what the history contains, ordering, pagination via next_cursor, detailed mode, and sibling disambiguation. Nothing material is missing for correct invocation.

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 task_id format, limit bounds, cursor semantics, and the concise/detailed enum. The description's note that 'detailed' adds changed field paths and its mention of next_cursor largely restate that, adding little new meaning. Baseline 3 is appropriate for full coverage.

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

Purpose5/5

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

States a specific verb and resource with scope: 'returns the activity (change history) of one task: who changed what and when'. It immediately distinguishes itself from heliyos_records_events (other record types) and heliyos_runs_list (worker runs), so an agent can route without reading sibling 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 names two alternatives and the condition that selects each: heliyos_records_events for company/person/deal and heliyos_runs_list with task_id for what workers did. It also implies this tool is for task-level change history, leaving no ambiguity about when to pick it.

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

heliyos_tasks_getGet a taskA
Read-onlyIdempotent

Fetches one task by id: title, status, priority, due date, assignees and workers, the workers' run status and run_id, the records it is linked to, and its description (cut at 1500 characters in concise). Returns structuredContent {task}.

NameRequiredDescriptionDefault
task_idYestask_id: a 24-character hex id.
response_formatNo"concise" (default) returns the task with a shortened description; "detailed" returns the full description and times.concise

Output Schema

NameRequiredDescription
taskYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description still adds real value by disclosing the truncation behavior (description cut at 1500 characters in concise mode) and the structuredContent {task} return shape, which an agent cannot learn from 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 front-loaded sentence that begins with the verb and scope before the field inventory; nothing is wasted, though the lengthy field enumeration is partly redundant with the output schema.

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?

A two-parameter read tool with annotations and an output schema needs little more: the description covers scope, returned content, truncation, and return envelope. Only explicit sibling routing (vs. heliyos_tasks_list) is missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline would be 3; the description goes further by quantifying the concise-mode truncation at 1500 characters, giving the agent a concrete reason to prefer detailed when the body text matters. The task_id format requirement is left to 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 with clear scope: 'Fetches one task by id', then enumerates what comes back (title, status, priority, due date, assignees, workers, linked records, description). This makes it plainly distinct from the list/search siblings, though no sibling is named explicitly.

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 'by id' — an agent can infer it should call this when it already holds a task id rather than browsing with heliyos_tasks_list. There is no explicit when-to-use/when-not statement and no guidance on choosing concise vs detailed beyond the mechanical effect.

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

heliyos_tasks_listList tasksA
Read-onlyIdempotent

Lists tasks, newest first, optionally only those linked to one record (record_id), in one status, or matching text. Each task shows its id, title, status, priority, due date and whether workers are running on it. Use heliyos_tasks_get for the description and links. Returns structuredContent {tasks:[{id, title, status, ...}], next_cursor}.

NameRequiredDescriptionDefault
limitNoTasks per page, 1 to 100. Default 20.
cursorNonext_cursor from the previous page, with the same limit. Omit for the first page.
searchNoPlain words matched against task titles and descriptions. Symbols such as + ( ) [ ] * ? can cause an error.
statusNobacklog, in_progress, scheduled_for_later (a worker set a wake-up for it), on_hold (waiting on a person or an event), cancelled or completed.
record_idNoOnly tasks linked to this record.
response_formatNo"concise" (default) returns one row per task; "detailed" returns assignees, workers and linked records too.concise

Output Schema

NameRequiredDescription
tasksYes
next_cursorNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare this is a read-only, idempotent, non-destructive, closed-world operation, so safety needs no restating. The description still adds real context beyond them: result ordering, the fields surfaced per task (including whether workers are running), and a next_cursor for pagination.

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 short sentences with the filter scope front-loaded and the sibling pointer following immediately. The final "Returns structuredContent {tasks:[...], next_cursor}" sentence partly duplicates the output schema, which is the only slack in an otherwise tight definition.

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 a full output schema and complete annotation coverage, the only burden on the description is scope and routing, both of which are handled. The explicit return-shape sentence is redundant given the output schema, but nothing an agent needs in order to call this 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 already documents limit, cursor, search, status, record_id and response_format in depth, including the enum meanings and search-symbol caveats. The description restates the filter intent (one record, one status, matching text) but adds no syntax 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.

Purpose5/5

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

The description opens with a specific verb and resource ("Lists tasks") plus default ordering ("newest first") and the three filters it supports. It explicitly contrasts itself with heliyos_tasks_get, so an agent can separate the two 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 Guidelines4/5

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

It names a concrete alternative and the dimension on which it differs: use heliyos_tasks_get when you need the description and links. That is clear routing guidance for the sibling an agent is most likely to confuse with this one, though it gives no guidance for other siblings such as tasks_events or tasks_run.

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

heliyos_tasks_runRun workers on a taskA
Destructive

Starts the workers (AI agents) on one task now and marks it in progress. If a run is already open, returns that run instead of starting another. Runs use credits; the call fails when the workspace is out of them. Returns structuredContent {task_id, run_id, started, status}; follow the run with heliyos_runs_get using run_id.

NameRequiredDescriptionDefault
task_idYestask_id: a 24-character hex id.

Output Schema

NameRequiredDescription
run_idYes
statusNo
startedYesfalse when an already open run was returned.
task_idYes

TDQS

A4.3/5.0
Behavior5/5

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

Annotations declare a destructive, non-read-only mutation, and the description earns extra credit by disclosing the side effects: the task is marked in progress, credits are consumed, and the call fails when the workspace is out of credits. It also documents the reuse behavior ('if a run is already open, returns that run instead of starting another') and points to heliyos_runs_get for follow-up, which is exactly the behavioral context annotations alone cannot convey.

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

Conciseness5/5

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

Four sentences, each doing distinct work: action, repeat-call behavior, cost/failure mode, then return shape and next step. The action and the run_id handoff are front-loaded 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?

For a mutation that spends credits, the description covers the action, the side effect, the failure condition, the tax on repeat calls, and the return contract, which is more than an output schema alone conveys. Nothing an agent needs before calling or immediately after 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?

With a single required task_id and 100% schema description coverage including a 24-character hex pattern, the schema already covers the only parameter. The description adds no format, constraint or validation guidance 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.

Purpose5/5

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

The description opens with a specific verb and resource: 'Starts the workers (AI agents) on one task now and marks it in progress.' It also distinguishes this tool from the adjacent read tool by naming heliyos_runs_get as the follow-up for the resulting run_id, so an agent can tell it apart from heliyos_tasks_get, heliyos_tasks_update and heliyos_runs_* 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 Guidelines3/5

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

The word 'now' implies this is the immediate-execution path, and the return of an existing open run gives some context on repeat calls. However, the description never states when an agent should call this instead of heliyos_tasks_update or a future-scheduled path, and it gives no prerequisites such as required credits or task state.

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

heliyos_tasks_updateUpdate a taskA
Idempotent

Changes a task's title, description, status, priority, due date or linked records by id; what you leave out is kept. Setting status completed also marks it finished. record_ids REPLACES the task's links (pass every record it should stay linked to). Returns structuredContent {task}.

NameRequiredDescriptionDefault
titleNoTask title.
statusNobacklog, in_progress, scheduled_for_later (a worker set a wake-up for it), on_hold (waiting on a person or an event), cancelled or completed.
task_idYestask_id: a 24-character hex id.
due_dateNodue_date as an ISO 8601 date (2026-03-01) or date-time (2026-03-01T09:00:00Z).
priorityNonone, low, medium, high or urgent.
record_idsNoIds of records (companies, people, deals) to link the task to, 1 to 10. Each id is checked first; an unknown id fails the call and nothing is written.
descriptionNoTask description (plain text).

Output Schema

NameRequiredDescription
taskYes

TDQS

A4.2/5.0
Behavior4/5

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

Goes well past the annotations: discloses partial-update merge semantics, the side effect that status=completed marks the task finished, and that record_ids replaces rather than appends links. The link-replacement behavior is a destructive-ish effect worth flagging against destructiveHint=false, but it is explicitly warned about rather than hidden, so it is a caveat not a contradiction.

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

Conciseness5/5

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

Two densely packed sentences, front-loaded with the mutable field list, then the merge rule, the status side effect, the record_ids replacement warning and the return shape. No filler and no repetition of schema 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?

A mutation tool with an output schema is adequately covered: merge semantics, the riskiest parameter's behavior and the return value are all stated. Minor gaps remain around failure modes for an unknown task_id and what happens on empty/partial input beyond the merge rule.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns above that by clarifying record_ids is a full replacement ('pass every record it should stay linked to') and that status completed triggers a finished state, both of which are behavioral rather than syntactic detail the schema lacks.

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 (Changes) plus the exact set of mutable fields on a named resource (a task), identified by id. An agent can distinguish this from heliyos_tasks_create, heliyos_tasks_get and heliyos_tasks_delete 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 Guidelines3/5

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

Implies the right usage through 'what you leave out is kept', which tells the agent this is a partial update rather than a replace, but it never names alternatives (e.g. tasks_create for new tasks, tasks_run for execution) or states preconditions such as the task needing to exist.

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

heliyos_team_members_change_roleChange a team member's roleA
Idempotent

Sets a team member's role to ADMIN or MEMBER by membership_id (from heliyos_team_members_list). Owners' roles and the OWNER role cannot be changed with an API key. Returns structuredContent {membership_id, role}.

NameRequiredDescriptionDefault
roleYesADMIN or MEMBER. OWNER cannot be granted with an API key; an owner does that in Heliyos Settings, Team.
membership_idYesmembership_id: a 24-character hex id.

Output Schema

NameRequiredDescription
roleYes
membership_idYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare non-read-only, idempotent, non-destructive behavior, so the bar is lower. The description adds genuinely useful context beyond them: the API-key authorization restriction around OWNER roles and the structuredContent return 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?

Three short sentences with no filler: the action and values come first, then the prerequisite source, then the restriction and return. Every sentence carries actionable information.

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

Completeness5/5

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

For a two-parameter mutation with full schema coverage, annotations, and an output schema, the description covers action, allowed values, id provenance, authorization limits, and return shape. 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.

Parameters4/5

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

Schema coverage is 100% and the enum plus 24-hex pattern are already documented, so the baseline would be 3. The description adds provenance for membership_id (retrieved from heliyos_team_members_list) and restates the OWNER restriction at the call level, which is meaning beyond the schema.

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

Purpose5/5

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

States a specific verb and resource ("Sets a team member's role"), the allowed target values (ADMIN or MEMBER), and the key (membership_id). It also implies its distinction from siblings like heliyos_team_members_remove and heliyos_team_members_invite by scoping the action to a role change.

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 a clear routing hint by naming heliyos_team_members_list as the source of membership_id, and states the exclusion that owners and the OWNER role cannot be changed with an API key. It does not explicitly contrast with sibling mutation tools such as remove or invite, so it falls short of a full when/when-not treatment.

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

heliyos_team_members_inviteInvite a team memberA

Emails an invitation to join the workspace with the given role (ADMIN or MEMBER). A second invite to an email with a pending invitation fails with CONFLICT (resend it from Heliyos), so check heliyos_team_members_list first. Returns structuredContent {member} with the new membership_id and status invited.

NameRequiredDescriptionDefault
roleYesADMIN or MEMBER. OWNER cannot be granted with an API key; an owner does that in Heliyos Settings, Team.
emailYesThe person's email address.

Output Schema

NameRequiredDescription
memberYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-idempotent, non-destructive, closed-world behavior; the description adds real value beyond that by naming the CONFLICT failure mode on duplicate invites and pointing to the recovery path. It stops short of stating who may invite (required permission/scope) or whether a sent invite can be revoked, which matters for a mutation tool that triggers an outbound email.

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 with no filler: action first, precondition and failure mode second, return shape last. Every clause carries operational information.

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

Completeness5/5

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

For a two-parameter mutation with full schema coverage, annotations, and an output schema, nothing an agent needs to call it correctly is missing; the callback of return shape is mild redundancy but harmless.

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 role enum, the OWNER restriction, and the email format are all already documented. The description only restates the role values, adding no format, constraint, or edge-case detail the schema does not already carry — 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 ('Emails an invitation to join the workspace') plus the role scope, which is unmistakably distinct from siblings like heliyos_team_members_change_role or heliyos_team_members_list. An agent can select this tool 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?

Gives an explicit precondition ('check heliyos_team_members_list first') and names the correct alternative path for the failure case ('resend it from Heliyos'), so the agent knows both when to call this and what not to retry.

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

heliyos_team_members_listList team membersA
Read-onlyIdempotent

Lists the workspace's people: joined members and pending invitations, each with its membership_id, email, name, role (OWNER, ADMIN, MEMBER) and status (active, invited, declined or revoked). Filter by role or by text in the name or email. Returns structuredContent {members:[{membership_id, email, name, role, status}], total, next_cursor}.

NameRequiredDescriptionDefault
roleNoOnly members with this role.
limitNoMembers per page, 1 to 100. Default 20.
cursorNonext_cursor from the previous page, with the same limit. Omit for the first page.
searchNoPlain words matched against names and email addresses. Symbols such as + ( ) [ ] * ? can cause an error.
response_formatNo"concise" (default) returns one row per person; "detailed" returns user ids and invitation dates too.concise

Output Schema

NameRequiredDescription
totalNo
membersYes
next_cursorNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds real value beyond them: it discloses that pending invitations (not just active members) are included, enumerates the status values, and surfaces cursor-based pagination via next_cursor and total. It omits whether the caller's permissions limit what is visible, which is the main remaining 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?

Three sentences, front-loaded with what the tool returns, then filtering, then response shape — every sentence carries information. The final sentence restating the structuredContent envelope partially duplicates the existing output schema, which is the only mild 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 paginated read tool, the definition covers scope (members plus invitations), filterability, the meaning of each returned field, and pagination tokens; annotations and the output schema carry the safety and shape details. An agent has everything needed to call it correctly without further inspection.

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, limit, cursor, search and response_format. The description restates the role and search filters at a high level without adding format or edge cases (the search-symbol caveat and the 1–100 limit live only in the schema), so it does not meaningfully exceed the baseline.

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?

"Lists the workspace's people: joined members and pending invitations" gives a specific verb, resource, and scope, and enumerates the returned fields (membership_id, email, name, role, status). Nothing overlaps with the sibling mutators (team_members_invite, team_members_remove, team_members_change_role), so an agent can pick this tool unambiguously.

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?

It states the tool filters by role or by text in name/email, which implies the use case, but there is no explicit "use this when…" framing, no prerequisite (e.g., admin permission), and no mention of when to prefer another listing tool. Usage is inferable rather than stated.

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

heliyos_team_members_removeRemove a team memberA
DestructiveIdempotent

Removes a person from the workspace, or cancels a pending invitation, by membership_id (from heliyos_team_members_list). They lose access immediately. This cannot be undone (they would need a new invitation): confirm with the user first. The last owner cannot be removed. Returns structuredContent {membership_id, removed}.

NameRequiredDescriptionDefault
membership_idYesmembership_id: a 24-character hex id.

Output Schema

NameRequiredDescription
removedYes
membership_idYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds the operationally critical context an agent needs: access is revoked immediately, the action is irreversible, re-adding requires a fresh invitation, and the last-owner guard will block the call. It also discloses the return payload, which is more than the annotations carry.

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?

Front-loaded with the action and the id source, then the consequences, then the guardrail, then the return shape. Four short sentences with no filler; every clause changes how an agent would call the tool.

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

Completeness5/5

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

For a single-parameter destructive tool this covers everything material: what it does, both operating modes, the irreversibility warning, the permission/ownership edge case, and the response shape even though an output schema exists. Nothing an agent needs before invoking is missing.

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

Parameters4/5

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

Schema coverage is 100% and the regex/format is already documented, so the baseline is 3. The description adds real provenance value by telling the agent to obtain membership_id from heliyos_team_members_list, which prevents guessing or fabricating an id for a destructive call.

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 ("Removes a person from the workspace") and explicitly covers the second mode, "cancels a pending invitation", which distinguishes it from siblings like heliyos_team_members_invite and heliyos_team_members_change_role. The keying parameter (membership_id) is named inline.

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 operating conditions: confirm with the user first, and the constraint that the last owner cannot be removed. It also points to heliyos_team_members_list as the source of the id. It stops short of explicitly saying when to prefer change_role or invite over removal, so not a full 5.

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

heliyos_triggers_listList worker triggersA
Read-onlyIdempotent

Lists the events a worker can subscribe to (the names to put in an event trigger's events on heliyos_workers_create / heliyos_workers_update), each with what it means and the object it is about. Also lists the mention and schedule kinds. Call it before creating a worker that reacts to events. Returns every trigger in one page. Returns structuredContent {triggers:[{name, kind, label, description, object_type, ...}]}.

NameRequiredDescriptionDefault
kindNoOnly event, mention or schedule triggers.
object_typeNoOnly triggers about this object: company, people, deals, task, note, interaction, review, signal, ...

Output Schema

NameRequiredDescription
triggersYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds useful behavior beyond that: results come back in a single page with no pagination, and the payload is structuredContent with a named triggers array. It does not discuss auth or rate limits, but those are not material for a static catalog read.

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 purpose and the call-before-creating guidance are front-loaded, and the return-shape note comes last where it belongs. The two closing sentences about paging and structuredContent overlap slightly, which is the only waste.

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 two-parameter, read-only catalog tool with an output schema, the description covers purpose, when to call, filtering scope, and return shape. Nothing an agent needs in order 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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, and the description earns an extra point by explaining what the filters mean in context: kind covers event/mention/schedule and object_type scopes to the object the trigger is about. It does not add syntax or format detail beyond the schema, so it stops short of 5.

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

Purpose5/5

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

The description states a specific verb and resource ('Lists the events a worker can subscribe to') and immediately ties it to the sibling tools that consume the output (heliyos_workers_create / heliyos_workers_update). It also clarifies the scope includes mention and schedule kinds, so an agent can distinguish it from unrelated list tools.

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

Usage Guidelines4/5

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

It gives an explicit call condition: 'Call it before creating a worker that reacts to events.' That is clear when-to-use guidance tied to a concrete workflow. It does not state when not to call it or name an alternative source for the same data, which keeps it short of a 5.

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

heliyos_usage_getGet credit usageA
Read-onlyIdempotent

Lists the workspace's credit usage, newest first: when credits were used, by which feature (company_enrichment, worker_run, scout, ...), how many, and on which record. Filter by date range, feature, record or text. Read-only: usage and credits cannot be changed via the API. Returns structuredContent {entries:[{at, feature, credits, record_id}], page_credits, total_entries, next_cursor}.

NameRequiredDescriptionDefault
toNoOnly usage at or before this date (ISO 8601); a date alone includes that whole day (UTC).
fromNoOnly usage at or after this date (ISO 8601).
limitNoEntries per page, 1 to 100. Default 20.
cursorNonext_cursor from the previous page, with the same limit. Omit for the first page.
searchNoPlain words matched against features, descriptions and object types. Symbols such as + ( ) [ ] * ? can cause an error.
featureNoOnly this feature (exact match): company_enrichment, people_enrichment, leadset_enrichment, leadset_match, worker_run, scout, meeting_analysis, ai_column, agent_operation. Older entries may use other names; find them with search.
record_idNoOnly usage on this record.
response_formatNo"concise" (default) returns date, feature, credits and record; "detailed" returns descriptions and sources too.concise

Output Schema

NameRequiredDescription
entriesYes
next_cursorNo
page_creditsYesCredits used by the entries on this page.
total_entriesNoEntries matching the filters, across all pages.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description's genuinely additive bits are ordering ("newest first") and the fact that emitted features may be open-ended ("company_enrichment, worker_run, scout, ..."), which hints that unseen feature names exist; the "usage and credits cannot be changed via the API" line largely restates readOnlyHint.

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 compact sentences with the purpose, filters, safety note, and return shape in descending priority order; the identifying clause comes first and nothing is padded. The return-shape sentence is slightly less valuable because an output schema exists, but it is not verbose enough to hurt scannability.

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 an 8-parameter, zero-required, read-only listing tool with comprehensive annotations and a real output schema, the description covers purpose, filtering dimensions, ordering, safety, and a return summary. The remaining gap is routing guidance to sibling tools, not missing operational information.

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 100% schema description coverage across all 8 optional parameters, the schema already carries the semantics and the baseline of 3 applies. The description adds only a coarse filter inventory (date range, feature, record, text) that maps to parameters the schema documents in more depth, so it adds little syntax or format meaning of its own.

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 opens with a specific verb and resource ("Lists the workspace's credit usage") and enumerates exactly what each entry contains: timestamp, feature, credit count, and record. That is far more informative than the title "Get credit usage" alone. It stops short of a 5 because it never contrasts itself with plausible neighbors like heliyos_runs_list, which an agent could reasonably confuse with per-feature credit consumption.

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?

"Filter by date range, feature, record or text" implies the retrieval scenarios (auditing spend, drilling into one record or feature) but gives no explicit when-to-use, when-not-to-use, or alternative-tool guidance. Nothing tells the agent what to do instead when it wants run-level detail rather than credit totals, so the routing decision 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.

heliyos_watchlist_getGet the watchlistA
Read-onlyIdempotent

Lists the companies on the watchlist (the accounts the workers monitor with Scouts and keep enriched), most recently created records first (not by watch date), with their ids, names and key fields. "detailed" also returns watchlist statistics on the first page: tasks done, deals, meetings and actions across watched companies. Use heliyos_companies_watch / _unwatch to change it. Returns structuredContent {companies:[{id, name, fields}], statistics?, next_cursor}.

NameRequiredDescriptionDefault
limitNoCompanies per page, 1 to 100. Default 20.
cursorNonext_cursor from the previous page, with the same limit. Omit for the first page.
response_formatNo"concise" (default) returns companies with key fields; "detailed" returns every field plus watchlist statistics.concise

Output Schema

NameRequiredDescription
companiesYes
statisticsNo
next_cursorNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, yet the description still adds non-obvious behavior: the sort key is record creation rather than watch date, and the detailed statistics block appears only on the first page. That first-page quirk is exactly the kind of thing an agent would otherwise mis-infer from a paginated call.

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-loaded with the resource and ordering, then the mode caveat, then the sibling pointer — a sensible priority order with no filler sentences. The closing structuredContent enumeration is somewhat redundant given an output schema exists, which keeps it from a 5.

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 read-only, paginated list with only three optional parameters, everything an agent needs to call it correctly is present: pagination contract, sort semantics, mode difference, and where to go to modify the list. Return values are already covered by the output schema, so the brief shape note is supplementary rather than a 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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by clarifying that statistics accompany "the first page" only, which affects how cursor and limit interact with response_format. It doesn't expand on limit bounds or cursor reuse, leaving those to the schema.

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

Purpose5/5

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

States a specific verb and resource ("Lists the companies on the watchlist") and defines the concept inline as "the accounts the workers monitor with Scouts and keep enriched." It also pins down ordering ("most recently created records first (not by watch date)"), which no sibling tool covers, so an agent can distinguish it from records_list or companies_watch without opening a schema.

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

Usage Guidelines4/5

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

Explicitly routes mutation intent to heliyos_companies_watch / _unwatch, which is the main confusion risk for a fetch-only tool. It does not contrast itself against adjacent read tools like heliyos_companies_scouts_list or heliyos_records_list, so the when-not guidance is partial rather than complete.

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

heliyos_workers_createCreate a workerA

Creates a custom worker (AI agent) with a name, instructions and, optionally, triggers that start it: on every new task, when mentioned in chat, on named events, or on a cron schedule. It starts active unless is_active is false, and its runs use credits and can change records or send email (consequential actions wait for approval in Heliyos), so confirm with the user first. Names are unique; a repeat fails with CONFLICT. Before calling: heliyos_triggers_list for valid event names and heliyos_workers_tools_list for the tool_names it may use (both are checked; unknown names are refused). Files are configured in the Heliyos web app. Returns structuredContent {worker}.

NameRequiredDescriptionDefault
nameYesWorker name, unique in the workspace.
triggersNoWhen the worker runs. Replaces the current triggers; on a default worker its built-in triggers stay. Event names must come from heliyos_triggers_list.
is_activeNoDefault true.
read_onlyNotrue: the worker may read but never change data. Default false.
tool_namesNoThe tools the worker may call, by name from heliyos_workers_tools_list (Heliyos tools and integration actions alike). Unknown names are refused. Custom workers only.
descriptionNoOne line shown in the worker catalog.
instructionsYesWhat the worker does and how, in Markdown.
memory_enabledNotrue: the worker keeps memory across runs. Default from the workspace.

Output Schema

NameRequiredDescription
workerYes

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint false, destructiveHint false, idempotentHint false), the description discloses the default active state, uniqueness constraint and CONFLICT failure mode, credit consumption, the downstream consequential actions of created workers and their approval gate, and the fact that files must be configured in the web app rather than here. This is materially more than the annotations convey.

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-loaded with the action and the trigger options before the risk and precondition notes; nearly every clause carries information. Sentences are long and clause-dense, which slightly hurts scannability, but there is 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?

For an 8-parameter mutation tool with an output schema, the description covers creation semantics, defaults, failure modes, dependencies on two sibling tools, and the return shape (structuredContent {worker}). 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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description adds cross-field meaning the schema does not (that tool_names and event names are validated against two sibling list tools, and that is_active defaults true). It does not explain read_only or memory_enabled defaults beyond the schema, so it stops short of a 5.

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

Purpose5/5

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

Opens with a specific verb and resource ("Creates a custom worker (AI agent)") and enumerates the core fields plus the optional trigger kinds that shape behavior. An agent can distinguish this from heliyos_workers_update or heliyos_scouts_create 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?

Gives explicit preconditions (call heliyos_triggers_list and heliyos_workers_tools_list first, since unknown names are refused) and an explicit caution to confirm with the user because runs consume credits and can mutate records or send email. That is when-to-use, when-not-to-proceed, and which sibling tools to consult, all stated directly.

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

heliyos_workers_deleteDelete a workerA
DestructiveIdempotent

Permanently deletes one custom worker by id and its schedules. Default (built-in) workers cannot be deleted; pause them with heliyos_workers_update is_active false. Past runs are kept. This cannot be undone: confirm with the user first. Returns structuredContent {worker_id, deleted}.

NameRequiredDescriptionDefault
worker_idYesworker_id: a 24-character hex id.

Output Schema

NameRequiredDescription
deletedYes
worker_idYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag destructiveHint and non-readOnly, and the description adds what those annotations cannot say: that schedules are deleted along with the worker, that past runs survive, that the action is irreversible, and that user confirmation is required. It also states the return shape, so an agent knows exactly what it gets back.

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 short sentences, each carrying a distinct and necessary fact: scope, exclusion plus alternative, data-retention consequence, and irreversibility plus return shape. Nothing is redundant and the destructive nature is front-loaded.

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

Completeness5/5

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

For a single-parameter destructive tool with an output schema, the description covers the exclusion rule, side effects on schedules, preservation of run history, reversibility, and the confirmation requirement. No meaningful gap remains that an agent would need before 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% and the single parameter already carries the 24-character hex pattern, so the schema does the heavy lifting. The description only restates that deletion is "by id," adding no format or lookup semantics 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.

Purpose5/5

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

The description opens with a specific verb and resource: "Permanently deletes one custom worker by id and its schedules," and it distinguishes the custom-worker case from the built-in/default case. An agent can tell this apart from heliyos_workers_update or heliyos_workers_get without opening a 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?

It explicitly names the exclusion ("Default (built-in) workers cannot be deleted") and gives the alternative tool and parameter for that case ("pause them with heliyos_workers_update is_active false"). It also states a precondition on invocation: confirm with the user first.

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

heliyos_workers_getGet a workerA
Read-onlyIdempotent

Fetches one worker by id: name, type, active flag, description, triggers and instructions (cut at 1500 characters in concise). "detailed" adds the full instructions, the tools it may call, read-only and memory flags, file scope and times. Returns structuredContent {worker}.

NameRequiredDescriptionDefault
worker_idYesworker_id: a 24-character hex id.
response_formatNo"concise" (default) returns the worker with shortened instructions; "detailed" returns full instructions, tools, flags and times.concise

Output Schema

NameRequiredDescription
workerYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: instructions are cut at 1500 characters in concise mode, and 'detailed' surfaces the additional fields (tools, flags, scope, times). It does not mention permission requirements or error behavior for an unknown id, but for a read tool the added truncation caveat is the important disclosure.

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 sentences, front-loaded with the action and the returned field set, with the mode distinction in the second sentence. The second sentence is a dense comma list, but each element (truncation limit, detailed-only fields) carries information an agent would otherwise have to probe 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?

With an output schema present and full parameter coverage, the description need only cover the non-obvious behavior, and it does: the concise truncation limit and which fields require detailed mode. Nothing about calling it correctly is missing, though a note on what happens for a missing or malformed id would close the last 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?

Schema coverage is 100%, so baseline is 3; the description still adds meaning by quantifying the concise-mode truncation at 1500 characters, which the schema only calls 'shortened instructions'. It does not restate the 24-hex-id format, correctly leaving that to 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 ('Fetches one worker by id') and enumerates the primary fields returned, which makes it distinguishable from heliyos_workers_list and the update/delete siblings. It never names those siblings explicitly, so the routing signal 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 Guidelines3/5

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

Usage is only implied: an agent infers it should call this when it already has a worker_id and needs that worker's full definition. There is no statement of when to prefer it over heliyos_workers_list (e.g. 'use list to discover ids first') or any preconditions.

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

heliyos_workers_listList workersA
Read-onlyIdempotent

Lists the workspace's workers (AI agents): the built-in default ones and custom ones, each with its id, type, active flag, description and triggers. Returns every worker in one page (a workspace has a handful). Use heliyos_workers_get for a worker's instructions, heliyos_runs_list with worker_id for its runs. Returns structuredContent {workers:[{id, name, type, is_active, ...}]}.

NameRequiredDescriptionDefault
typeNoOnly built-in (default) or only custom workers.
is_activeNoOnly active (true) or only inactive (false) workers.
response_formatNo"concise" (default) returns one row per worker; "detailed" returns each worker's triggers too.concise

Output Schema

NameRequiredDescription
workersYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuine behavioral context beyond that: no pagination ("Returns every worker in one page (a workspace has a handful)") and the structuredContent envelope. It does not mention ordering, which is the only real 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 tight sentences: what it returns, the no-pagination constraint, then sibling routing. Front-loaded and every sentence carries information an agent needs.

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 zero-required-parameter list tool with an output schema, annotations and full schema coverage, nothing material is missing. Scope, result cardinality, return shape and alternatives are all addressed.

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 enums fully documented, so the schema does the heavy lifting. The description only lightly echoes the type filter ("built-in default ones and custom ones") and the triggers field tied to response_format=detailed; it adds little beyond the schema's own text.

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 ("Lists the workspace's workers (AI agents)") plus the scope of what is returned (default and custom, with id, type, active flag, description, triggers). This clearly separates it from heliyos_workers_get, which fetches a single worker's instructions.

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 routes the agent to alternatives with conditions: heliyos_workers_get for a worker's instructions and heliyos_runs_list with worker_id for its runs. It also preempts a common question by saying results come in one page, so no pagination handling is needed.

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

heliyos_workers_tools_listList tools a worker can useA
Read-onlyIdempotent

Lists the tools a worker may be given (the names to put in tool_names on heliyos_workers_create / heliyos_workers_update): Heliyos's own tools (source builtin) and the actions of the workspace's connected integrations (source action, for example sending email through the connected mailbox). Each has a risk class; communicate, write_crm and external tools do things people will want to review. Call it before creating a worker. Returns every tool in one page. Returns structuredContent {tools:[{name, label, description, source, risk, provider}]}.

NameRequiredDescriptionDefault
searchNoPlain words matched against names, labels and descriptions.
sourceNoOnly Heliyos's own tools (builtin) or only integration actions (action).
providerNoOnly one integration's actions, for example gmail or hubspot.
response_formatNo"concise" (default) returns name, label, description, source and risk; "detailed" returns each tool's input schema too.concise

Output Schema

NameRequiredDescription
toolsYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, but the description adds genuinely new behavior: each entry carries a risk class and communicate/write_crm/external tools "do things people will want to review." It also discloses the pagination profile ("Returns every tool in one page") and the concrete return shape, which prevents an agent from hunting for a cursor or guessing at 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?

Front-loaded with the definition, then the downstream purpose, then the risk warning, then the return contract — a natural reading order with no filler. Every clause carries information an agent needs: what it lists, why to call it, what the risk field means, and that results are unpaginated.

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 read-only, well-annotated list tool with a full output schema, the description covers purpose, prerequisite timing, safety implications of the returned risk classes, and pagination. The only omission is guidance on using the filter parameters to narrow a large inventory, which the schema handles but the description leaves implicit.

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 four parameters are documented in-schema, so the baseline of 3 applies. The description echoes the `source` enum values (builtin vs action) and clarifies that actions belong to the workspace's connected integrations, but it says nothing about `search`, `provider`, or the `response_format` default that an agent would otherwise have to read from the schema.

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

Purpose5/5

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

States a specific verb and resource ("Lists the tools a worker may be given") and immediately ties the output to its downstream use: the names to pass as `tool_names` on heliyos_workers_create / heliyos_workers_update. It also enumerates what the list contains (builtin tools plus integration actions) and attaches a risk class, so an agent can distinguish this from heliyos_workers_list/get without opening a schema.

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?

"Call it before creating a worker" gives an explicit prerequisite and names the two sibling tools that consume the result, which is the main routing decision an agent faces here. It stops short of stating when not to call it (e.g. skipping the lookup when tool names are already known) or when to narrow with search/source/provider rather than pulling everything.

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

heliyos_workers_updateUpdate a workerA
Idempotent

Changes a worker by id; what you leave out is kept. Custom workers: name, instructions, description, is_active, read_only, memory_enabled, triggers and tool_names. Default (built-in) workers: only instructions, description, is_active, memory_enabled and triggers; the rest is ignored. triggers REPLACES the worker's own triggers (a default worker keeps its built-in ones) and tool_names REPLACES its tools: pass every tool it should keep (heliyos_workers_get detailed shows the current ones, heliyos_workers_tools_list the valid names). Set is_active false to pause a worker. Returns structuredContent {worker}.

NameRequiredDescriptionDefault
nameNoWorker name, unique in the workspace.
triggersNoWhen the worker runs. Replaces the current triggers; on a default worker its built-in triggers stay. Event names must come from heliyos_triggers_list.
is_activeNofalse pauses the worker; true resumes it.
read_onlyNotrue: the worker may read but never change data (custom workers only).
worker_idYesworker_id: a 24-character hex id.
tool_namesNoThe tools the worker may call, by name from heliyos_workers_tools_list (Heliyos tools and integration actions alike). Unknown names are refused. Custom workers only.
descriptionNoOne line shown in the worker catalog.
instructionsNoWhat the worker does and how, in Markdown.
memory_enabledNoWhether the worker keeps memory across runs.

Output Schema

NameRequiredDescription
workerYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare the generic profile (not read-only, idempotent, non-destructive); the description goes far beyond by disclosing partial-update merge semantics, per-worker-type field applicability with silent ignoring of the rest on default workers, and the critical REPLACE semantics of `triggers` and `tool_names` where omission drops existing entries. It even notes that default workers retain built-in triggers and that the result is returned as structuredContent {worker}.

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-loaded with the update semantics, then the type-specific rules, then the two dangerous replacement fields, then the return shape — a sensible order with no filler sentences. The middle section is densely packed into semicolon-chained clauses, which borders on run-on but keeps every fact load-bearing.

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 9-parameter mutation tool with an output schema, everything an agent needs is present: merge behavior, per-type field validity, replacement traps with pointers to the tools that reveal current state, and confirmation that return values are documented by the output schema. No material gap remains.

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 the baseline is 3, but the description adds real meaning the schema cannot: which parameters are honored for custom versus default workers, that `triggers` and `tool_names` are wholesale replacements rather than patches, and that `is_active=false` is the pause mechanism. Constraint detail (cron format, id format, enum meanings) is left to the schema, which is fine at full coverage.

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

Purpose5/5

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

States a specific verb and resource ('Changes a worker by id') plus the key scope qualifier 'what you leave out is kept', which immediately distinguishes this from create/delete siblings. An agent knows exactly what the operation does 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 Guidelines4/5

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

Explicitly routes the agent to heliyos_workers_get for current tools and heliyos_workers_tools_list for valid names, and names the concrete pause use case ('Set is_active false to pause a worker'). It does not spell out when to use heliyos_workers_create or heliyos_workers_delete instead, though the CRUD split makes that mostly self-evident.

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. 73 tool updatesv1.0.1
    • First observedheliyos_ask
    • First observedheliyos_companies_scouts_add
    • First observedheliyos_companies_scouts_list
    • First observedheliyos_companies_scouts_remove
    • First observedheliyos_companies_unwatch
    • First observedheliyos_companies_watch
    • First observedheliyos_fields_create
    • First observedheliyos_fields_delete
    • First observedheliyos_fields_update
    • First observedheliyos_files_delete
    • First observedheliyos_files_get
    • First observedheliyos_files_list
    • First observedheliyos_files_upload
    • First observedheliyos_interactions_get
    • First observedheliyos_interactions_list
    • First observedheliyos_knowledge_entries_delete
    • First observedheliyos_knowledge_entries_set
    • First observedheliyos_knowledge_get
    • First observedheliyos_knowledge_update
    • First observedheliyos_labels_create
    • First observedheliyos_labels_delete
    • First observedheliyos_labels_list
    • First observedheliyos_labels_update
    • First observedheliyos_notes_create
    • First observedheliyos_notes_delete
    • First observedheliyos_notes_get
    • First observedheliyos_notes_list
    • First observedheliyos_notes_update
    • First observedheliyos_notification_settings_get
    • First observedheliyos_notification_settings_update
    • First observedheliyos_objects_get
    • First observedheliyos_objects_list
    • First observedheliyos_organization_get
    • First observedheliyos_records_create
    • First observedheliyos_records_delete
    • First observedheliyos_records_events
    • First observedheliyos_records_get
    • First observedheliyos_records_list
    • First observedheliyos_records_lookup
    • First observedheliyos_records_timeline
    • First observedheliyos_records_update
    • First observedheliyos_reviews_decide
    • First observedheliyos_reviews_get
    • First observedheliyos_reviews_list
    • First observedheliyos_runs_get
    • First observedheliyos_runs_list
    • First observedheliyos_scouts_create
    • First observedheliyos_scouts_delete
    • First observedheliyos_scouts_get
    • First observedheliyos_scouts_list
    • First observedheliyos_scouts_update
    • First observedheliyos_signals_list
    • First observedheliyos_signals_mark_read
    • First observedheliyos_tasks_create
    • First observedheliyos_tasks_delete
    • First observedheliyos_tasks_events
    • First observedheliyos_tasks_get
    • First observedheliyos_tasks_list
    • First observedheliyos_tasks_run
    • First observedheliyos_tasks_update
    • First observedheliyos_team_members_change_role
    • First observedheliyos_team_members_invite
    • First observedheliyos_team_members_list
    • First observedheliyos_team_members_remove
    • First observedheliyos_triggers_list
    • First observedheliyos_usage_get
    • First observedheliyos_watchlist_get
    • First observedheliyos_workers_create
    • First observedheliyos_workers_delete
    • First observedheliyos_workers_get
    • First observedheliyos_workers_list
    • First observedheliyos_workers_tools_list
    • First observedheliyos_workers_update

TDQS

A3.8/5.0

Scored across 73 tools

Disambiguation4/5

Tools are organized by resource and action, and the descriptions explicitly differentiate near-neighbors such as records_list vs lookup vs get, records_timeline vs records_events, and global scouts vs company scouts. Some overlap remains around finding records and initiating AI work, but an agent can generally choose correctly.

Naming Consistency4/5

Nearly all tools follow a clear heliyos_<resource>_<verb> snake_case pattern with plural resource nouns. A few actions break the create/update/delete convention, such as knowledge_entries_set, files_upload, signals_mark_read, team_members_change_role, and ask, but the overall pattern is still predictable.

Tool Count1/5

With 73 tools, the surface is far beyond the well-scoped 3-15 range and exceeds the 50-tool extreme threshold. The broad workspace domain explains some breadth, but the set should be consolidated or split into narrower servers for agent usability.

Completeness4/5

Core domains have strong coverage: records, fields, tasks, notes, labels, workers, scouts, knowledge, files, team, reviews, and runs all expose appropriate read/write or lifecycle operations. Minor gaps exist, such as no custom-object schema mutation, no run cancellation, and no file update operation, but they are mostly workaroundable.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to interact with a CRM covering companies, people, leads, deals, and more, with role checks, scoped agent keys, approval gates, and a shared audit trail.
    AGPL 3.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to retrieve customer, order, ticket, policy, and agreement information, and to prepare or execute state-changing support actions like escalations and follow-ups with confirmation and access control.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to interact with CRM contacts, companies, activity, and conversations, and to perform semantic search across previously retrieved data.
    -