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 and set your key in one go. The key goes into your system's secure credential store, never into a file, and the plugin adds a skill that teaches Claude when to use which tool.

claude plugin marketplace add heliyos-ai/heliyos-mcp
claude plugin install heliyos@heliyos --config api_key=YOUR_HELIYOS_API_KEY

If you installed without --config, the server stays off until the key is set: run /plugin configure heliyos@heliyos inside Claude Code and enter it there. Then /mcp lists heliyos, or restart Claude Code if it does not.

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/heliyos-mcp.

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 shows "connecting" on its first start

The first npx -y @heliyos/heliyos-mcp downloads the package, which can take 20 to 30 seconds on a slow connection and outlast a client's startup timeout. Warm the cache once from a terminal with npx -y @heliyos/heliyos-mcp --version, then reconnect; later starts take about a second. Or raise the timeout (Codex startup_timeout_sec, Claude Code MCP_TIMEOUT=60000).

Node 16.x is too old or tools fail with fetch is not defined

The client started npx with an old Node, usually a version manager's default. The server needs Node 20 or newer and restarts itself on the newest suitable Node it finds (nvm, fnm, n, Volta, Homebrew, PATH); the message names which one. If it finds none, install Node 20+ or run nvm install 20 && nvm alias default 20, then restart the client. Apps opened from the dock may not find npx at all; 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?}.

Inputs: message (required), thread_id. Returns: done, answer, run_id, status, +1 more

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

Inputs: scout_ids (required), company_id (required). Returns: status, scout_ids, company_id

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, ...}]}.

Inputs: company_id (required), status. Returns: scouts, company_id

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

Inputs: company_id (required). Returns: failed, removed, company_id

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

Inputs: record_id (required). Returns: watched, record_id

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

Inputs: record_id (required). Returns: watched, record_id

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

Inputs: type (required), label (required), object_type (required), key, +7 more. Returns: field

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

Inputs: field_id (required), object_type (required), schema_id. Returns: key, deleted, field_id

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

Inputs: field_id (required), object_type (required), type, label, +6 more. Returns: field

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

Inputs: file_id (required). Returns: deleted, file_id

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

Inputs: file_id (required), response_format. Returns: file

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

Inputs: kind, limit, cursor, search, +2 more. Returns: files, next_cursor

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

Inputs: kind (required), name (required), text, record_id, +2 more. Returns: file

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

Inputs: interaction_id (required), response_format. Returns: interaction

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

Inputs: sort, limit, cursor, search, +3 more. Returns: next_cursor, interactions

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

Inputs: label (required). Returns: label, deleted, entries

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

Inputs: label (required), content (required). Returns: entry, created, entries

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

Inputs: response_format. Returns: knowledge

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

Inputs: pain_points, business_context, value_proposition, products_information, +1 more. Returns: knowledge

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

Inputs: name (required), description (required), values, is_active. Returns: label

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

Inputs: label_id (required). Returns: deleted, label_id

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

Inputs: limit, cursor, search, is_active, +1 more. Returns: labels, next_cursor

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

Inputs: label_id (required), name, values, is_active, +1 more. Returns: label

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

Inputs: title (required), content, record_ids. Returns: note

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

Inputs: note_id (required). Returns: deleted, note_id

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

Inputs: note_id (required), response_format. Returns: note

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

Inputs: limit, cursor, search, record_id, +1 more. Returns: notes, next_cursor

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

Inputs: note_id (required), title, content, record_ids. Returns: note

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

Inputs: no named parameters. Returns: settings

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

Inputs: is_active, event_types, notify_emails. Returns: settings

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, ...}]}}.

Inputs: object_type (required), schema_id, response_format. Returns: object

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

Inputs: response_format. Returns: objects

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

Inputs: no named parameters. Returns: organization

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

Inputs: fields (required), object_type (required), schema_id. Returns: record

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

Inputs: record_ids (required), object_type (required), schema_id. Returns: record_ids, deleted_count

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

Inputs: record_id (required), limit, since, until, +5 more. Returns: events, next_cursor

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

Inputs: record_id (required), response_format. Returns: record

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.

Inputs: object_type (required), sort, limit, match, +5 more. Returns: records, next_cursor

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

Inputs: query (required), object_type (required), limit, schema_id, +1 more. Returns: matches, total_matches, index_truncated

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

Inputs: record_id (required), limit, cursor, response_format. Returns: total, entries, summary, record_id, +1 more

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

Inputs: fields (required), record_id (required). Returns: record

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

Inputs: decision (required), review_id (required), args, data, +2 more. Returns: review, status, decision, review_id, +1 more

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

Inputs: review_id (required), response_format. Returns: review

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

Inputs: type, limit, cursor, status, +2 more. Returns: reviews, next_cursor

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

Inputs: run_id (required), wait, response_format. Returns: run

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

Inputs: sort, limit, since, until, +6 more. Returns: runs, next_cursor

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

Inputs: name (required), query (required), category (required), effort, +5 more. Returns: scout

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

Inputs: scout_id (required). Returns: deleted, scout_id, deleted_company_scouts

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

Inputs: scout_id (required), response_format. Returns: scout, recent_signals

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, ...}]}.

Inputs: type, apply_to, is_active, response_format. Returns: scouts

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

Inputs: scout_id (required), name, query, state, +4 more. Returns: scout

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

Inputs: limit, cursor, status, scout_id, +2 more. Returns: signals, next_cursor

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.

Inputs: company_id, signal_ids. Returns: failed, marked, company_id, marked_count

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

Inputs: title (required), status, due_date, priority, +2 more. Returns: task

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

Inputs: task_id (required). Returns: deleted, task_id

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

Inputs: task_id (required), limit, cursor, response_format. Returns: events, next_cursor

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

Inputs: task_id (required), response_format. Returns: task

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

Inputs: limit, cursor, search, status, +2 more. Returns: tasks, next_cursor

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.

Inputs: task_id (required). Returns: run_id, status, started, task_id

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

Inputs: task_id (required), title, status, due_date, +3 more. Returns: task

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

Inputs: role (required), membership_id (required). Returns: role, membership_id

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.

Inputs: role (required), email (required). Returns: member

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

Inputs: role, limit, cursor, search, +1 more. Returns: total, members, next_cursor

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

Inputs: membership_id (required). Returns: removed, membership_id

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, ...}]}.

Inputs: kind, object_type. Returns: triggers

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

Inputs: to, from, limit, cursor, +4 more. Returns: entries, next_cursor, page_credits, total_entries

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

Inputs: limit, cursor, response_format. Returns: companies, statistics, next_cursor

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

Inputs: name (required), instructions (required), triggers, is_active, +4 more. Returns: worker

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

Inputs: worker_id (required). Returns: deleted, worker_id

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

Inputs: worker_id (required), response_format. Returns: worker

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, ...}]}.

Inputs: type, is_active, response_format. Returns: workers

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

Inputs: search, source, provider, response_format. Returns: tools

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

Inputs: worker_id (required), name, triggers, is_active, +5 more. Returns: worker

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

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