Skip to main content

Skill Types (Technical)

A Skill record carries a skill_type and a type-specific config_json. This page describes the real behavior of each type. For the business side see Skills and Policies.

FieldDescription
skill_typebuiltin, mcp, http, function, database
config_jsonType-specific setting (JSON text)
is_activeIf false, it is left out of the tool list
nameThe name the tool is called by
descriptionDescription shown to the model

builtin​

config_json: {"function_name": "web_search"}; if missing, name is used. Implemented tools:

function_nameStatus
web_searchWorks: first 5 related topics from the DuckDuckGo Instant Answer API; no key needed
journal_writeWorks: a Markdown entry in the session journal
delegate_to_agentWorks: opens an A2A request (to_agent_slug, task, context); if to_agent_id is written in the setting the target is fixed
instagram_post, whatsapp_sendWork: with the credentials in Settings → Social media
text_to_chartPlaceholder: returns text, does not produce a chart
code_executionDeferred: does not execute

mcp​

JSON-RPC 2.0 over HTTP. The platform sends POST {url}/call (as is if the url already ends with /call):

{"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {"name": "<skill.name>", "arguments": { }}}

Settings: url, auth_type (none · api_key → X-API-Key · bearer/oauth2 → Authorization: Bearer), auth_value, optional input_schema. The first text content of the response is returned. Timeout 30 s. The stdio and SSE transports are not supported.

http​

Any REST address. Settings: url, method (POST default | GET), headers, optional input_schema. With GET the arguments become query parameters, with POST a JSON body. Timeout 30 s.

function​

Python code embedded in the record: {"language": "python", "code": "def run(args):\n return str(args)"}. It must define run(args: dict) -> str. It must finish within 5 seconds.

It is not a real sandbox

The code runs in a separate thread inside the server process, in a namespace restricted to a few built-in functions (len, str, sum, json …). This restriction does not provide full isolation and the timeout does not stop the thread. Let only people you trust write the function skill; such changes go through the change request flow.

database​

Setting: {"db_id": "<connection id>"}. The agent generates SQL; the platform runs only SELECT / WITH … SELECT queries and rejects write commands. The schema and descriptions become context for the agent. See Settings → Databases.