Platform skills quick reference
In Chat, type / plus a skill_id (or pick from the list) to load that skill for the current turn. This page remains the tool map.
Trace AI uses skill-based tool gating: only tools listed in loaded skills (plus kernel tools) are callable. The elementary skill is auto-loaded every turn when gating is enabled.
Document information
| Field | Value |
|---|---|
| Canonical URL | /docs/07_ai-agents-and-mcp/20_platform_skills_quick_reference |
| Version (published date) | 2026-09-13 |
| Tags | ai, reference, trace-ai, skills, mcp |
Native tool call shape
Trace AI uses native function calling when skills gating is on. The function name is the tool; arguments are flat JSON matching each tool’s schema, plus optional progress_indicator:
{"skill_id":"integrations","progress_indicator":"Loading integrations skill…"}
Do not wrap args in {"action":"…","parameters":{…}} — that legacy inline shape is only for message-content fallback. The runtime unwraps nested parameters when detected, but flat args are preferred.
Kernel tools (always available when gating is on)
| Tool | Purpose |
|---|---|
get_context_resource | Fetch a context catalog resource by resource_id |
load_platform_skill | Load an official platform skill (skill_id) or job card (composition_id) — infer from the user's goal and SUGGESTED THIS TURN; do not wait for "load the skill" |
list_platform_skills | List platform skills (kind?, query?, limit? default 40) as { skills: [{ id, kind, description }] }. Offered when CHAT_DYNAMIC_CONTEXT_CATALOG_ON_DEMAND is on with the master dynamic-context flag. The human tables on this page stay the full map. |
list_context_resources | List data resources (category?, query?, limit? default 40). Offered when CHAT_DYNAMIC_CONTEXT_RESOURCES_ON_DEMAND is on with the master flag. Fetch a row with get_context_resource. |
load_tenant_skill | Load a tenant skill from SKILLS/ (when enabled) |
| Tool | Example native arguments |
|---|---|
load_platform_skill | {"skill_id":"integrations"} or {"composition_id":"process-backed-webapp"} |
list_platform_skills | {"kind":"domain","query":"webapp","limit":40} |
list_context_resources | {"category":"database_query","query":"product","limit":40} |
load_tenant_skill | {"skill_id":"invoice-review"} |
get_context_resource | {"resource_id":"ctx-entity-information"} |
Auto-loaded: elementary
The platform also exposes a native random tool (no extra skill load): it reads OS entropy from /dev/urandom and returns lowercase hex. Use it when ProcessFlow steps or integrations need a true random seed — not Math.random or other pseudo-random helpers. Optional length is the number of bytes to read (default 32, max 4096); the hex string is twice as long.
| Tool | Example call |
|---|---|
entity_search | {"query":"Acme","type":"entity_information"} |
get_context_resource | {"resource_id":"ctx-entity-information"} |
list_directory | {"dir_path":".","recursive":false} |
read_file | {"file_path":"docs/notes.md"} |
write_file | {"file_path":"chat_attachments/summary.md","content_base64":"…","mode":"overwrite"} |
file_operation | {"operation":"copy","source_path":"a.txt","dest_path":"b.txt"} |
diff | {"path_a":"a.txt","path_b":"b.txt"} |
read_todo_list | {} |
save_todo_list | {"items":[...]} |
web_fetch | {"url":"https://example.com"} |
websearch | {"query":"Tealfabric MCP","max_results":5} |
get-current-datetime | {} |
agent_wait | {"seconds":30,"user_message":"Waiting for sync…"} |
random | {"length":32} |
request_human_input | {"kind":"confirm","prompt":"Delete entity 42?"} |
Common pitfalls: entity_search without query fails immediately. For multi-line text, prefer write_file content_base64 (UTF-8); use content only for short single-line or append logs. Yes/no permission before a move, delete, or other side-effect must be request_human_input — never a Markdown “Please confirm…”.
On-demand: platform-safeguards
Load when backup or support escalation is needed (not auto-loaded).
| Tool | Example call |
|---|---|
backup | {"keep_backups":30} |
open_support_ticket | {"tenant_id":"…","user_id":"…","request_type":"Bug Report","query":"…"} |
Router: platform-actions
Load when routing to console CRUD is unclear. Does not replace domain skills.
| Tool | Purpose |
|---|---|
load_platform_skill | Route to entities, processes, integrations, etc. |
entity_search | Cross-domain discovery |
get_context_resource | Context catalog |
describe_tenant_integration | Integration shape before execute |
execute_tenant_integration | Run an integration (when allowed) |
request_human_input | Confirm destructive steps |
Job compositions (composition_id)
Source of truth: SKILLS/compositions.json. Pass exactly one of skill_id or composition_id. A composition load unlocks member tools and injects the short job map — not every member SKILL.md. Harness peek (SUGGESTED THIS TURN) is job-composition hints only; elementary/kernel tools are already active. When peek names a specialist slug, use list_subagent_catalog — see Platform specialists.
composition_id | When | Load (order) | Specialist slug |
|---|---|---|---|
process-backed-webapp | Form or page that runs a ProcessFlow | processes, platform-code-generation, webapp-library, webapps | platform-code-specialist |
webapp-static-cdn | Public static assets on the tenant CDN | webapps | — |
webapp-public-download | Controlled public file download (public_docs) | processes, webapps, documents | — |
webapp-auth | WebApp end-user login / session | processes, platform-code-generation, webapp-library, webapps | platform-code-specialist |
process-plus-integration | ProcessFlow that calls a tenant integration | processes, platform-code-generation, integrations | platform-code-specialist |
Domain skills (load via load_platform_skill)
skill_id | Unlocks (summary) | Load when |
|---|---|---|
entities | list/get/describe/create/update/delete_entity, relationships, promote_entity_to_customer | Entity CRUD |
products | products + product categories CRUD | Product catalog |
contracts | list/get/describe/create/update/delete_contract | Contracts |
integrations | list/get/describe/create/update/delete/test_integration, execute_tenant_integration | Connectors |
mattermost | Compose Mattermost Blocks, attachments, and interactive buttons; send via execute_tenant_integration | Mattermost channel posts |
processes | list/get/describe/create/update_process, steps, execute_process, triggers | ProcessFlow |
autonomic-agents | describe/list/get/create/update/disable/delete_autonomic_agent, manual run, run inspection | Current unattended tenant agents (tenant admin) |
managed-browser | browser_open_target, browser_snapshot, browser_navigate, browser_extract_table, browser_fill, browser_click, browser_select, browser_submit, browser_close | Allowlisted web UI when no integration API exists |
subagents | catalog, async delegation, parent-scoped run inspection, cooperative cancellation | Parallel or asynchronous specialist work from Trace AI. Catalog includes platform specialists |
platform-code-generation | ProcessFlow/WebApp code contracts and read-only validation | Generate ProcessFlow step or WebApp code before mutation |
datapool | query/describe_datapool_*, schema and row CRUD | DataPool tables |
webapps | describe/list/get/create/update/publish/unpublish/delete_webapp, versions | Platform WebApp records (draft create, separate publish) |
webapp-library | read_file, write_file, load_platform_skill | Author schema-driven page_content (hand off to webapps for create_webapp) |
documents | upload_document, move_document, create_document_review, pdf2md_ocr, format_convert, ocr_image | Documents API and file conversion |
users | create_user, update_user, delete_user (admin; confirm via HITL) | Tenant user admin |
api-keys | create_api_key, revoke_api_key (requires CHAT_AGENT_API_KEY_TOOLS_ENABLED=1) | API key lifecycle |
chat-visuals | read_file, write_file | Diagrams / Mermaid and KaTeX ($ / $$) in chat |
svg-art | write_file, read_file, web_fetch | SVG illustrations, icons, logos, SMIL animations (tenant-file://) |
tenant-skill-authoring | list_directory, read_file, write_file, load_tenant_skill | Create or repair tenant SKILLS/{id}/ packages |
model-skill-import | web_fetch, datapool/integrations via extra loads, write_file, load_tenant_skill | Install a Library model skill (playbook) after Prerequisite binding |
model-agent-import | web_fetch, load_platform_skill, HITL; create via autonomic-agents | Install a Library Autonomic Agent as draft |
platforms | list/get/create/update_platform, update_platform_strategy | Business platforms |
chat-history | list/search/get/archive_chat_history | Past chat sessions |
network-map | create/update_network_map_node, create_network_map_connection | Network map edits |
notifications | list_notifications, send_notification, mark_notification_read, delete_notification | In-app inbox (send does not use an integration) |
platform-safeguards | backup, open_support_ticket | Tenant snapshot or support escalation |
Each domain skill also exposes request_human_input where confirms are required. Full tool lists live in SKILLS/<skill_id>/skill.json in the platform repo.
WebApp create workflow (two skills)
flowchart LR
A[load webapp-library] --> B[Author page_content]
B --> C{Review draft?}
C -->|optional| D[write_file tenant path]
C --> E[load webapps]
D --> E
E --> F[describe_webapp]
F --> G[create_webapp with webapp_user_id]
G --> H{Draft OK?}
H -->|user wants live| I[publish_webapp]
create_webappregisters an unpublished platform draft (required). Passwebapp_user_idfromdescribe_webapp.webapp_users(rolewebapp_user). Never omit it and never use the callingtenant_admin. Ifwebapp_usersis empty, ask the tenant admin to create a Webapp user in User Management and do not create yet.publish_webappis separate when the user wants the WebApp public.- Tenant
write_filedrafts do not replacecreate_webapp.
Tenant skills
Folders under tenantdata/{tenant_id}/SKILLS/ with SKILL.md and optional skill.json. Author with load_platform_skill({ "skill_id": "tenant-skill-authoring" }). Install from the public Library with model-skill-import (see Model skills library). Run with load_tenant_skill({ "skill_id": "<folder-name>" }) when CHAT_TENANT_SKILLS_ENABLED=1. See Tenant skills user guide.
Typical workflow
flowchart LR
A[elementary auto-loaded] --> B{Console write?}
B -->|No| C[entity_search / read_file / websearch]
B -->|Yes| D[load platform-actions]
D --> E[load domain skill]
E --> F[describe_* / list_* / get_*]
F --> G[request_human_input if risky]
G --> H[create / update / execute tool]