Meeting Chairman
Ask it to prepare a review agenda — it gives you a person-centred agenda ordered around the child, with the statutory deadline it was booked against.
Every tool an EHC agent already has, beside a thousand apps you can connect — each with its own logo.
The EHC platform is built on ONE — every tool, every agent, every automation. Connect your Gmail to send evidence requests. Connect your Calendar to track review dates. Connect Stripe for personal budgets. Every logo below is a real integration, one click away.
Nine agents. Each drafts, checks or tracks one part of the plan. None decides, diagnoses, or advises on law — a named professional still reads, edits and signs every draft. Only what is reachable today is listed; a capability that isn't wired yet is left off rather than promised.
Ask it to prepare a review agenda — it gives you a person-centred agenda ordered around the child, with the statutory deadline it was booked against.
Ask it to gather a child's views in their own medium — it gives you a written record of what the child said or showed — never a summary standing in for a quote they didn't give.
Ask it to draft a family evidence submission — it gives you a structured account of what you've observed, ready for a caseworker to read, not a decision on your behalf.
Ask it to draft medical advice for a plan — it gives you a quantified draft for Section C/G that the named clinician reviews and signs — it never diagnoses.
Ask it to map current provision — it gives you a draft provision table with real baselines, for the SENCo to check and submit.
Ask it to draft a therapy report — it gives you a quantified frequency/duration draft, section-named (F or G), for the therapist to finalise.
Ask it to draft social care advice — it gives you a draft advice note for LA consultation, or an honest 'no involvement to report'.
Ask it for the clock on a case — it gives you the statutory deadlines that apply — 6/16/20 weeks from the request date, never a 30-week figure.
Ask it to draft a review brief — it gives you what's changed since the last review, in the child's own terms, for the keyworker to check before it's read aloud.
8 stages, request to transition, with 3 statutory windows beside them as waits counted in days: the decision by week 6, the advice by week 16, the final plan by week 20 (SEND Regulations 2014). Each stage names the sections of the plan it bears on, and says who acts — a person approves, an agent drafts, the clock waits.
It was cut from a plan that has been walked the whole way, with that young person’s artefacts removed — the road, not the case. Nothing in it is about one child, so it is the first line of the next one.
apps: catalog warming
Tool · Marketplace
Accept a deal so it can move to escrow. Confirm first — this commits you to the deal and arms payment.
Tool · Pages
Add ONE block to a page at a position (default: end) — any registry block (block), or a legacy CRO section (section). Existing blocks are preserved.
Tool · CRM
Attach a note to a CRM contact. Use when the owner says "add a note", "log a call", or "record that...".
Tool · Security
Add a passkey (WebAuthn biometric) to this account. Returns a link to the security settings page where the browser ceremony takes place.
Tool · Tasks
Create a child task under a parent and link them with containment in one write — the chat twin of the detail pane's subtask row. Say "break that into steps", "add a subtask to buy the milk on the way home".
Tool · Pay
Add a product to the buyer's cart. Pass the cid from a previous add_to_cart to keep building the same cart; omit it for the first item and one is minted. Prices are read server-side — you never send an amount. The cart is ambient: it lives in a bar above the composer that reads the same server truth this returns, so confirm what was added in a sentence and let the bar carry the running total.
Tool · Learning
Approve (verify) a learned fact — promotes a hypothesis from pending to confirmed. The agent will treat it as a reliable belief from the next turn.
Tool · Commerce
Archive a product so it no longer appears in the storefront. Requires owner or admin. Irreversible from chat — use the builder to restore.
Tool · Pages
Read the exact prop contract of up to 10 blocks — per-variant fields and what each renders. Use before writing a block whose fields you are not sure of.
Tool · Tasks
Record or clear a dependency: this task is blocked by that one. `remove:true` deletes exactly that edge and leaves the status alone. Cycles are refused. Say "the launch is blocked by the pricing task", "that dependency is gone".
Tool · Bookings
Hold a slot for a customer on the workspace calendar. Use after the customer picks a date + time and gives their name. Fires booking:create — the same single writer the /book page uses, so the slot can never be double-booked.
Tool · Movers
Build a real website + trained sales chatbot for a visitor from their name and either their existing URL or a short description — no account needed. `builds` picks what: "movers" (default — a moving-company site + quote desk), "store" (an online store: products with photos and stock, twelve shop pages, a shop assistant, in test mode) or "site" (a five-page business website + front desk). Use when a visitor asks to build, preview, or try their own site or store. Sponsored + rate-limited: politely refuses if the free build queue is full.
Tool · Commerce
Build a complete online store for this workspace from a plain-English description: turns the storefront on in TEST mode, writes 6-12 products with photos, prices and stock in 3-4 collections, and publishes the twelve shop pages. Never invents founders, years, addresses or policies — returns them as factsToAdd for the owner. Safe to call again: it creates nothing new the second time. Requires owner or admin.
Tool · Campaigns
Create a marketing campaign from a brief. Creates the campaign group (world_groups kind:campaign) and kicks off the section build — strategy, copy, audience — asynchronously. The campaign starts as a DRAFT: nothing sends or spends until campaign_launch. Use when the owner says "create a campaign for...", "plan a launch campaign", etc.
Tool · Campaigns
Rewrite one ELEVATE section of a campaign (its hook, gift, offer, nurture copy…) and save it. This is how the campaign page's chat actually edits the campaign — when the owner asks for sharper copy, rewrite the WHOLE section and write it back rather than describing the change. The page context names the campaignId and every stageKey.
Tool · Campaigns
Launch a built campaign: compiles its sections into a workflow and starts the run. Destructive — the campaign goes live (sends/steps execute), so confirm with the owner first. Use after campaign_create finished building and the owner approves.
Tool · Campaigns
Point the owner at their campaigns. There is no chat-readable campaign list receiver yet (the campaigns page reads the campaign groups directly), so this returns the campaigns page link rather than a fabricated list. Use to answer "what campaigns do I have?" honestly.
Tool · Campaigns
Rename a campaign. The campaign's URL is derived from its name at creation and deliberately does NOT move on rename — the address stays stable for anyone already reading it. Use when the owner asks for a better name.
Tool · Bookings
Cancel a customer's booking, releasing the slot. Needs their booking ref and the email or phone they booked with.
Tool · Tasks
Take a task off the queue for the caller — blocker-gated, moves it to picked and @-tags the claimant. The claimant is always the attested caller, never a name in the request. Address it by its tid from list_tasks. Say "I'll take that one", "claim the pricing task".
Tool · Tasks
Post a comment on a task's thread — the chat twin of the detail-pane comment box. An @mention in the body subscribes that person to the task. Readers (viewers) may comment even when they cannot move the task.
Tool · Agents
Compile an agent to Python, MCP, or skill.md format. Read-only.
Tool · Integrations
Configure messaging channels (telegram, discord, web) for this workspace.
Tool · Foundation
Confirm an inferred Foundation field — promotes it to source:human, confidence:1.0. Use after the workspace owner confirms a question the agent asked.
Tool · Channels
Connect a channel account (webex/google-chat/matrix/msteams/slack/telegram/discord…) to this workspace so its messages route here and replies send under its own credential. Use when the owner says "connect our Slack bot" or "wire up our Telegram".
Tool · Integrations
Start connecting an external app (e.g. GitHub, Slack, Gmail). Because OAuth requires user interaction in the browser, this returns the tools page URL — open it to complete the connection.
Tool · Agents
Create a new agent in this workspace. Inserts a real row into the agents table and fires a roster:changed signal.
Tool · Newsletter
Create a new newsletter draft with a subject and full markdown body. Only when no draft is open — inside the studio, use update_newsletter on the current broadcastId instead.
Tool · Affiliates
Propose an affiliate/referral offer (commission percent + terms). HANDOFF: no offer-persistence receiver is wired yet, so this structures the terms and returns the affiliates page link where the owner completes setup — it does not store the offer. Use when the owner says "set up a 20% referral offer" or similar.
Tool · Pages
Create a landing page as a private DRAFT at /p/<slug> (publish_page makes it live). Three ways, best first: (1) template=<id> from list_page_templates + edits=[{ blockId, props }] rewriting every block's copy for this business (+ remove / blocks to add); (2) blocks=[{ component, props }] from the WHOLE block registry — a rich page uses many different blocks (hero, trust badges, product grid, category tiles, stats, testimonials, comparison, pricing, FAQ, CTA, form), at least 8 sections; (3) sections (legacy 9-component CRO palette). The answer names what is left to fix — fix all of it before calling the page done: `sampleCopyLeft` (blocks still showing the TEMPLATE's copy, another business's words: rewrite with update_block or remove_block), `unlandedEdits` (your keys that block does not render — re-send under its `renders` names), `sampleImagesLeft`, and `quality` (strength checks failed, each with its fix).
Tool · Billing
Generate a crypto payment link for a ONE subscription plan upgrade. Returns a shareable pay.one.ie URL — the buyer pays with Sui or USDC on Base and the plan upgrades automatically on settlement.
Tool · Commerce
Create a new product in this workspace storefront with a price. Requires owner or admin role.
Tool · Tasks
Add a task to the board and announce it by its tags in the same act — the chat twin of the board's quick-add. Say "add a task to get milk", "remind the team to renew the domain", "new task: ship the pricing page". Give `notes` whenever the title alone would not tell a future reader what done looks like.
Tool · Views
Save a question as a live named view — dimension × tags × kind. Use when the operator asks to see, save, or pin a set of records ("won deals this month as a board"). The view lands in the sidebar and renders live in the browser, any page, and chat.
Tool · Marketplace
List your deals in flight (as buyer or seller). Optionally filter by stage (OFFER, ESCROW, VERIFY, SETTLE, RECEIPT, …).
Tool · Agents
Delegate work to another agent. Routes via strongest path if the target starts with "world:", otherwise signals the target directly. Returns a delegation card.
Tool · Security
Delete this account. Routes to the two-phase, cancellable account deletion flow in security settings — the account is not deleted from this chat turn.
Tool · Courses
Permanently delete a whole course — every lesson and every learner enrollment goes with it, and it cannot be restored. Needs the courseId (from get_course). A PUBLISHED course is refused: unpublish it first with manage_course { courseId, published: false }, then delete. Only call it when the user named that exact course; if it is unclear which one, ask first. Call it directly, not through find_tool — the user is asked to confirm. Afterwards say what was deleted.
Tool · Courses
Permanently delete one lesson from a course — its body and blocks are gone and cannot be restored. Needs courseId and lessonId (both from get_course; the lesson title also works). The other lessons keep their order. Only call it when the user named that exact lesson; if it is unclear which one, ask first. Call it directly, not through find_tool — the user is asked to confirm. Afterwards say which lesson was deleted.
Tool · Pages
Permanently delete a landing page and all its content.
Tool · Agents
Deploy/publish an agent live. Fires an agents:register signal (fire-and-forget); deploy is requested, not instant.
Tool · Channels
Disconnect a channel from this workspace — its account stops routing here and sends fall back to the platform credential. Use when the owner says "disconnect our Slack".
Tool · Integrations
Disconnect a connected external app from this workspace.
Tool · Ads
Draft an ad campaign for one network (google, meta, linkedin, or tiktok). DRAFT ONLY — composes the campaign structure (objective, audience, headline, body, budget note) for the owner to review and publish through their connected ad account. Never creates a live campaign and never spends. Use when the owner says "draft a Google ads campaign", "write me a Meta ad", etc.
Tool · Inbox
Draft a reply to an inbox thread — runs an agent over the thread's context and saves ONE pending draft the operator reviews (Approve / Edit / Dismiss) on /in. Nothing is sent to the customer. Use when the owner says "draft a reply to this thread", "prepare an answer for Jane's ticket".
Tool · Pages
Rewrite a WHOLE landing page. Call get_page first, then pass the slug with a new title and/or the full replacement — blocks (any registry block) or legacy sections. For one change use update_block / add_block instead. The answer carries `quality` — fix what it names.
Tool · Books
Change ONE passage of a book chapter — the way to update the book from chat. Quote `find` exactly as read_chapter returned it (it must occur once), then: replace it with `text` (empty text deletes it), or insert `text` as new paragraph(s) after/before the paragraph that holds it. One passage per call; call again for the next. The change is saved as the chapter's unpublished draft and appears in the author's open editor; the published book is not touched. Write in the book's voice, in markdown the press can print (*italic*, **bold**, ## subheading, > quotation, --- scene break) — never images or links.
Tool · Inbox
Escalate an inbox thread — tags it (default "escalated") so it surfaces in the matching inbox Space and staff subscribed to that tag see it. Use when a conversation needs a human, is urgent, or the customer asks for a manager.
Tool · Skills
Run the eval suite on a skill (with-skill vs without-skill). Queued on the substrate; returns when the benchmark is ready.
Tool · Security
Request a GDPR data export of all personal data held for this account. A download link will be sent when the export is ready.
Tool · Analytics
Export a full analytics report for this workspace as a structured payload. Read-only.
Tool · Bookings
Record a field-service booking. Use after the customer confirms a date/time and job type.
Tool · Agents
Flag/moderate an agent. Fires an agents:flag signal; moderation is queued, not instant.
Tool · Tasks
Follow or unfollow one task — a task-grain subscription, so its announcements land in the caller's inbox. Say "keep me posted on that one", "stop following it".
Tool · Security
Request GDPR erasure of personal data (right to be forgotten). Routes to the two-phase, cancellable deletion flow in security settings — nothing is deleted from this chat turn.
Tool · Courses
Read this workspace's courses. Call with NO arguments to list every course (courseId, title, published). Call with a courseId to read one course in full: title, description, published, and EVERY lesson with its lessonId, title, goal, order, kind, the full markdown body (body_md) and the blocks embedded in it (index, block name, line). ALWAYS call this before changing an existing course or lesson — "refine the course", "edit lesson 2", "fix the install command" all start here, so you edit the real text instead of guessing. Never ask the user for a course or lesson id: list the courses and pick by title. It only reads and needs no confirmation. A very long body comes back cut with truncated: true — never send a truncated body back through save_lesson.
Tool · Newsletter
Read one newsletter draft — subject, markdown body, audience tag, status. Use before editing so you extend the operator's draft instead of overwriting it.
Tool · Pages
Read a page's blocks before editing. Returns blocks[] — every block with its { id, type, props } — so you can target one block by id with update_block / move_block / remove_block. Always call this first when changing existing content. (Also returns legacy sections[].)
Tool · Pages
Read one page template: every block with its id, type and props, plus how to rewrite it. Then call create_page with template=<id> and edits=[{ blockId, props }] carrying your rewritten copy — the images, anchors and links come with the template.
Tool · Skills
Import a third-party skill from a URL/github ref or pasted SKILL.md. Trigger only when the owner provides a skill URL, a github:owner/repo ref, or markdown beginning with YAML frontmatter. Confirm price first.
Tool · Members
Invite someone to the workspace by email and set their role. Use when the owner says "invite sam@acme.com as an editor".
Tool · Tasks
Batch-dispatch agent-assigned tasks: per task re-check blockers, resolve the @assignee agent and fire an agent run. Human-assigned tasks are skipped. Caps at 20. Destructive — this spends model budget and starts real work, so confirm the list first.
Tool · Courses
Add, change or remove one interactive block (quiz, flashcards, callout, terminal, video, …) inside a lesson. The tool writes the block into the lesson body for you — never type <puck-block> tags into body_md yourself. Needs courseId and lessonId (both from get_course). action "add": pass block and props; it goes at the end of the lesson, or after the paragraph that contains the text you pass as `after`. action "update": pass the block index from get_course (or just the block name to change the first one of that kind) and the props to change — a key you pass replaces that key (an array such as questions is replaced whole), a key you omit is kept. action "remove": pass the index (or the block name). Nothing else in the lesson changes. Call it directly; the user is asked to confirm. Afterwards tell the user what changed in which lesson and give the link. The blocks a lesson can hold, and the props each takes: - CalloutBlock: A tip, warning or key idea set apart from the text. Fields: type(info|tip|warning|success), title, body, anchorId - AccordionBlock: Questions or sections the learner opens one at a time. Fields: title, items[question|answer], openFirst(true|false), anchorId - StepTileBlock: One numbered step — stack a few for a how-to. Fields: number, title, description, tone(primary|secondary|tertiary) - Timeline: Stages or events in order, each with a date. Fields: variant(default|alternating|compact|vertical) — default: headingScale(display|section), anchorId, eyebrow, title, subtitle, steps[date|title|body]; alternating: heading, entries[title|period|description], anchorId; compact: heading, entries[title|period|description], anchorId; vertical: heading, entries[title|org|period|description], anchorId - HighlightQuoteBlock: One line worth remembering, set large. Fields: quote, attribution, size(text-2xl|text-3xl|text-4xl), accent(primary|secondary|tertiary|none), align(left|center), anchorId - CodeComparisonBlock: Two code panes showing what changed. Fields: headline, filename, beforeCode, afterCode - TerminalBlock: Commands and their output, as a learner would type them. Fields: headline, lines[kind|text] (lines[].kind is "command" | "output" | "success") - AICodeBlock: A highlighted code sample with a copy button. Fields: code, language, filename, showCopy(yes|no) - TableBlock: Rows and columns for comparing things side by side. Fields: headers, rows[cells], striped(true|false), anchorId (headers is one string with " | " between columns; each rows[].cells is the same shape) - KeyValueTileBlock: A short label and value list — a spec sheet or summary. Fields: title, rows[label|value] - ImageBlock: A picture with an optional caption. Fields: src, alt, caption, href, rounded(""|rounded-xl|rounded-full), width(w-auto|w-full|w-1/2|w-1/3), anchorId - VideoEmbed: A YouTube, Vimeo or uploaded video. Fields: url, title, aspectRatio(56.25%|75%|100%), caption, poster, anchorId - AudioPlayerBlock: A player for a recording, podcast or narration. Fields: heading, body, coverImage, tracks[title|subtitle|url], anchorId - BeforeAfterBlock: Two images the learner compares with a slider. Fields: heading, body, beforeImage, afterImage, beforeLabel, afterLabel, startPosition, anchorId - HotspotImageBlock: An image with pins the learner taps to read about each part. Fields: heading, subheading, image, hotspots[label|body|x|y], anchorId - QuizBlock: Multiple-choice and true/false questions with instant feedback. Fields: title, reveal(immediate|on-submit), allowRetry(true|false), questions[prompt|kind|optionA|optionB|optionC|optionD|answer|explanation], quizId (questions[].kind is "multiple-choice" or "true-false"; answer is "A"|"B"|"C"|"D" (true-false: "A" = True, "B" = False)) - FlashcardDeckBlock: A deck the learner flips through for recall practice. Fields: title, cards[front|back], deckId - AssignmentBlock: A brief the learner answers and submits. Fields: title, description, dueLabel, points, placeholder, submitLabel, allowFileUpload(true|false), assignmentId - LessonNotesBlock: A space for the learner to write beside the lesson. Fields: title, placeholder, notesKey, lessonId - ResourceList: Worksheets, slides and links that go with the lesson. Fields: title, description, resources[label|href|kind|size], anchorId - FileDownloadTileBlock: One file with its size and a download button. Fields: filename, filesize, href, buttonLabel - InstructorCard: Who is teaching this, and why them. Fields: name, role, bio, avatarUrl, credentials[label], ctaLabel, ctaHref - ProgressBlock: A bar showing how far through something the learner is. Fields: value, label
Tool · Rooms
Link a channel door (telegram/discord/slack/etc.) into this room so messages relay both ways. Use when the owner says "connect our Telegram to this room".
Tool · EHC
List the evidence filed on an EHC case (photos, letters, records) — id, caption, sections, and whether the owner removed it. Call this FIRST to find the exact id of the item the user describes ("the Railay photo"); never guess an id.
Tool · Channels
List the channel accounts connected to this workspace. Use when the owner asks "which channels are connected?" or "is our Slack wired up?".
Tool · Pages
List the child pages embedded in a page via ChildPageBlock (e.g. inside a ToggleBlock). One level only — does not walk into a child page's own tree. Use to answer "what pages does this page link to?".
Tool · Integrations
List tools and apps connected to this workspace. Returns the active integrations known to the substrate.
Tool · Rooms
List which channel doors are linked into this room. Use when the owner asks "what's connected here?".
Tool · Newsletter
List the newsletters (email broadcasts) in this workspace — id, subject, status. Use to answer "what newsletters do I have?" or to find the broadcastId to edit.
Tool · Pages
List the page templates — store, product, collection, sales, webinar, course, about, pricing and more — each with its block line-up and strength score. Call this FIRST for any new page: starting from the closest strong template beats assembling blocks from nothing. A row with `pack` is a multi-page set, not a page — its note says which tool builds it.
Tool · Pages
List the landing pages in this workspace (slug, title). Use to answer "what pages do I have?".
Tool · Bookings
List the workspace's bookable services — the menu to offer the customer ('in-home survey, video walkthrough, or storage?') before list_slots/book_slot. Each service carries its intake questions: ask them conversationally before booking.
Tool · Security
List active sessions and devices signed into this workspace. Shows session IDs, device names, and last-seen times.
Tool · Bookings
List the open booking slots for the workspace on a date (or the next open days). Reads the same hours the /book page reads — no second calendar.
Tool · Tasks
List a page of the workspace task queue — open + picked tasks by default, or the logbook (done/verified, newest first) with closed:true. Returns each task's id, title, status, tags, assignee and due date, plus `total` and `truncated` — if truncated, this is NOT the whole board: use read_task_board to see or plan across everything. Use before any other task tool so you address tasks by their real id. Say "what am I working on", "what did we finish".
Tool · Views
List the saved views in this workspace (id, name, kind). Use to answer "what views do I have?".
Tool · Courses
Create a course, rename it, change its description, or publish / unpublish it. To create: pass just a title — a readable courseId is made from it (e.g. "cold-outreach"), and if a course with exactly that title already exists it is updated instead of duplicated. Use the courseId this tool returns for the lessons. To change an existing course: pass its courseId (from get_course) and ONLY the fields you are changing. Everything you leave out — title, description, published state, price — is kept exactly as it is. published: true PUBLISHES the course so learners can open it; published: false takes it back to a draft; leave published out to keep its current state. price_cents sets the price in US cents (4900 = $49.00; 0 = free). A priced course is sold on its course page by card or crypto; learners who have not paid see the lesson list but not the lessons. Leave it out to keep the current price. This does not add or edit lessons — use save_lesson and lesson_block for that. Call it directly, not through find_tool; the user is asked to confirm before it saves. Afterwards tell the user what changed and give the course link.
Tool · Meetings
Put a live video meeting with a real person into this conversation. Use it the moment someone asks to speak to a human — "can I talk to someone", "is anyone there", "I want a real person", "can we jump on a call", "put me through to sales" — and use it when you are stuck and a person would be faster. If someone is already sitting in the workspace meeting room it hands them THAT room, live, and the receipt names who is in it; otherwise it opens their own room, alerts the team wherever they listen, and the card updates when someone arrives. Either way the room shows up right here so they can join in one tap. Ask for their name first if you do not have it, and say in one line what they want — that is what the team sees. Calling it twice is safe: it never opens a duplicate room. Do not use it for questions you can answer yourself.
Tool · CRM
Merge two CRM contacts into one canonical identity (keep wins, drop is absorbed). Use when a person has a duplicate record.
Tool · Affiliates
Mint personalised referral/tracked links — one per contact — via the authed links:bulk-create receiver. Each link is actor-bound: when the contact clicks, the page and chat already know them. Authority is re-walked per contact server-side; contacts outside your workspace are skipped and counted as denied. Returns copy-ready URLs. Use when the owner says "send referral links to these contacts", "mint affiliate links for my partners", etc.
Tool · Pages
Reorder ONE block to a new position. Pass the block id (from get_page blocks[]) and the 0-based target index.
Tool · Lifecycles
Move a contact to a lifecycle stage (e.g. lead → identify, open → pending). Fires the guarded entity:tag move — the single stage-transition writer the lifecycle board uses — so the move shows on /lifecycles the same instant. Pass `from` when you know the current stage: a mismatch is rejected instead of double-moving, EXCEPT when the contact is already at the target stage — that is the same move arriving twice, so nothing changes and the receipt says no move was made. Use when the owner says "move Jane to SQL", "mark this deal won", etc.
Tool · Pay
Offer the buyer a checkout for one price (ppid) or for their whole cart (cid). This does NOT charge anything and does NOT create a payment: it names what is being bought and hands off to the trusted payment component in the browser, which reads the price again and mints. Pass exactly one of ppid or cid. When the result says cardOnly (a subscription), do not offer a crypto rail — a crypto payment cannot renew.
Tool · Marketplace
Offer an A2A deal to another workspace, optionally naming a catalog product (ppid from their show_products). Proposes terms — no money moves until the deal is accepted and escrowed.
Tool · Clients
Onboard a new client workspace from their website URL. Scrapes the site to pull company name and description, fetches their favicon as the workspace logo, and provisions a private workspace under this agency. Returns the invite URL.
Tool · Agents
Update an agent's frontmatter (name, description, system prompt). Use when the owner asks to rename or edit an agent.
Tool · Brand
Update workspace theme colors. Use when the owner asks to change colors, make it warmer, etc.
Tool · Tasks
Change many tasks in one call. `creates` files up to 25 new tasks with `ref` handles so they can parent/block each other (a whole plan tree at once); `edits` changes up to 25 named tasks (title, status, priority, notes, assignee, tags, dates, blockers); `where`+`set` applies one change to every task a board filter matches — dryRun is TRUE unless you pass false, so first show the operator the matched tasks, then apply. Put a `comment` on every change so the task thread records why. Read applied/failed per row. Say "file this plan", "move all the launch tasks to cmo", "close everything tagged stale".
Tool · Social
Draft and publish a social post. Saves the draft, then (after confirm) fires the social:publish execute receiver to push it live. Use for "post this now".
Tool · Learning
Promote a strong path between two actors to a hypothesis (harden). Use when a connection has proven reliable enough to be crystallised as a belief. Dispatches learning:promote — the harden verb exposed via signal.
Tool · Courses
Promote a learner's completed playbook into a reusable skill. Concatenates all playbook entries for the given course into a skill document the learner's agents can run.
Tool · Pages
Publish a draft landing page — makes /p/<slug> public to everyone. Use after the owner is happy with the preview and says to publish/go live.
Tool · Marketplace
Ask the server to PRICE work before offering it: list the steps and get back the fixed (guaranteed) + variable (best-effort) split and the total. Use this instead of inventing a price for offer_deal. Naming BOTH seller and skill also OPENS the deal at OFFER stage and notifies that seller — omit them for a price-only quote. A deal needs a valid ISO-8601 deadline; without one you get the price and no deal.
Tool · Ads
List the ad-network accounts connected to this workspace (Google, Meta/Facebook, LinkedIn, TikTok). Read-only — reads the same integrations list the tools page shows, filtered to ad networks. Use before drafting to know where a campaign can be published.
Tool · Books
Read one chapter of a book as its author has it now (the unpublished draft if there is one), as markdown. Call this before edit_passage so the passage you quote is exact. In the writing room the book's slug is the page's entity and the open chapter is in the page state.
Tool · Analytics
Read a plain-English digest of recent workspace activity — key signals, trends, and anomalies. Read-only.
Tool · Learning
See the learning frontier — hypotheses the agent is still uncertain about (pending or unconfirmed). Useful for understanding what the agent doesn't know yet or is still learning.
Tool · Analytics
Read the conversion funnel for this workspace/agent — top-of-funnel visitors down to paying users. Read-only.
Tool · Courses
Read a learner's persisted playbook entries for a course. Use to recall what the learner has already written so the tutor can reference earlier work.
Tool · Analytics
Read the retention curve for this workspace — day-0 through day-30 cohort retention. Read-only.
Tool · Analytics
Read commerce sales data for this workspace — views, checkouts, purchases, revenue, and per-product breakdown with chat vs storefront source split. Read-only.
Tool · Transactions
Read settlement + balance data for this workspace — seller balance (settled and pending) plus sales counters (views, purchases, revenue). Read-only; the same numbers the transactions and sales pages show. Use to answer "what have I been paid?", "any pending settlements?".
Tool · Tasks
See the WHOLE task board in one call — every task (or the whole subtree with scope:"tree"), with the exact total, what was cut (`truncated`), and a summary over every matched row: counts by status/tag/assignee, the ready set, the blocked set, overdue, unassigned, orphans, rows with no notes. Use this to plan; list_tasks is one page. On a large board ask for view:"summary" first, then narrow (ready:true, tags, assignee). include:["thread"] shows each task's conversation. Say "what's on the board", "how much is blocked", "what can we start now", "plan the week's work".
Tool · Analytics
Read A/B variant performance for this workspace. Shows which variant converts better. Read-only.
Tool · Tasks
Hand an existing task to someone else — swaps its @assignee in place, keeping the same task, its blockers, subtasks, schedule and comments. Pass an empty assignee to unassign it; a picked task also drops back to open so it is genuinely claimable again. Say "give that to sam", "reassign the pricing task to the research agent", "take it off dana".
Tool · Learning
Reject and forget a learned fact — deletes the hypothesis from the substrate. The agent will no longer use it.
Tool · Pages
Remove ONE block from a page by id (from get_page blocks[]). Every other block is preserved.
Tool · EHC
Remove one item from an EHC case's evidence locker by its EXACT id (from list_case_evidence), or restore it with removed:false. Only the case owner can do this. Nothing is deleted — the page shows how many items the owner removed, and a restore brings it back. Call once per item.
Tool · Pages
Rename a page URL slug (e.g. "cat" → "dog"). The page moves to /p/<newSlug>. Warn the user that old links will break.
Tool · Transactions
Prepare a refund request for an order. HANDOFF: refunds move money, so chat never executes them — this structures the request (order, amount, reason) and returns the transactions page link where the owner completes the refund on the real payment rail (Stripe/crypto). Use when a customer asks for their money back.
Tool · Bookings
Move a customer's existing booking to a new date/time. Needs their booking ref and the email or phone they booked with. Holds the new slot before releasing the old, so a taken new time leaves the original booking standing.
Tool · Learning
Review agent-learned facts above the workspace trust floor. Returns hypotheses the agent has learned, filtered by an optional topic. Respects the confidence floor and requireVerify gate set in /memory settings.
Tool · Security
Revoke a specific active session or device. The session will be signed out immediately after the request is processed.
Tool · Agents
Roll an agent back to a prior generation. Fires an agents:status signal; rollback is queued, not instant.
Tool · Security
Rotate an API key or agent key. The old key is invalidated; a new key is issued. This action cannot be undone.
Tool · Substrate
Execute an allowlisted TypeDB substrate function. Available functions (FN_MAP v23d5f3d9822033956b19adb284b718ea61fbee91232507458ac7301eadc757ca): actionable_hypotheses, active_frontiers, active_objectives, actor_classification, actors_by_kind, actors_by_tag, actors_for, attractive_tasks, blocked_tasks, cheapest_provider, exploratory_tasks, highways, optimal_route, promising_frontiers, suggest_route, total_contribution, blockers-of, ready-tasks, uncovered, unrealised, incomplete, covered-unproven, deadlocked, ancestors-of, descendants-of, open-ancestors-of, reachable, strong-reach, derived-from, blocks-transitively. Returns typed rows from the substrate graph.
Tool · Foundation
Write a single Foundation brain field (company, people, brand, offer, market, customers) with provenance. Higher-ranked sources (human > document > scrape > inferred) win on conflict.
Tool · Courses
Add a lesson to a course, or change an existing lesson's title, goal, body or kind. Pass courseId and a title: the lessonId comes from the title, a lesson with the same id/title is updated in place, and a new one is appended at the end. Fields you leave out are kept — passing only goal (or only lessonId + title) never touches the body. body_md REPLACES THE WHOLE LESSON BODY: to change part of a lesson, read it with get_course, edit that text, and send the complete new body — never a fragment, never a truncated body. To add or change a quiz, callout, terminal or any other block, use lesson_block, not body_md. Several lessons at once: pass a `lessons` array. Do not ask the user for ids and do not call find_tool for this — call it directly; the user is asked to confirm. Afterwards tell the user the lesson title and give the link.
Tool · Courses
Save a learner's exercise or worksheet answer into their playbook. Call after a learner submits an exercise so their work is persisted and the tutor can reference it later.
Tool · Newsletter
Schedule a newsletter to send at a future time. Pass scheduled_at as epoch SECONDS (UTC). The cron drainer sends it when the time arrives. Requires the operator to confirm.
Tool · Marketplace
Search the ONE marketplace for something a visitor wants done — agents they can hire, skills their agents can run, plugins, live listings from other workspaces, and open bounties. Call this BEFORE saying nobody sells something, and before offer_deal, which needs a seller slug this returns. Returns named results with prices.
Tool · CRM
Create a personalised tracked link for a CRM contact. When they click it the page + chat agent already know them (rung-4 identity, no cold start). Use when the owner says "send them a link to the pricing page", "share a personalised link with...", etc. Returns a copy-ready URL.
Tool · Newsletter
Send a newsletter to its audience NOW. Irreversible — every consented, non-suppressed contact in the audience gets the email. Requires the operator to confirm. Use schedule_newsletter for a future send.
Tool · Commerce
Mint a shareable pay.one.ie payment link for a product price and send it in chat. The buyer pays by crypto; card lights up when the seller connects Stripe. Requires owner or admin.
Tool · Inbox
Send a reply on an inbox thread — the customer receives it (delivered back out to Telegram/Discord when the thread came from a channel; web threads see it in-thread). This is the same single-writer receiver the inbox composer and Approve button use. Destructive: confirm the exact text with the owner first.
Tool · EHC
Send a confirmed "note for the clinician" to that clinician: writes it into this workspace's inbox on the room's thread (health, education, care or plan), tagged for the named person, where their notes page shows it. ONLY call this after the young person (or the family member you are talking with) has READ the exact note and said yes to sending it. Never send anything they have not confirmed, never add to it after the yes, and never use it as an emergency channel — nobody watches it in real time, so 999 / NHS 111 / Samaritans always come first. If it returns an error, tell them plainly the note was NOT sent.
Tool · SEO
Check how visible a domain is in ChatGPT / Google AI answers for a target keyword.
Tool · SEO
Get backlink summary for a domain — referring domains, total backlinks, spam score.
Tool · SEO
Research keywords related to a seed keyword using live Google Ads data — returns search volume, CPC, and competition for up to 135 related keywords.
Tool · Memory
Edit the company context (brand voice, policies, facts) the agent pulls every turn. Use for "tell the agent our refund policy is ...".
Tool · CRM
Record marketing or data-processing consent for a CRM contact. Use when the owner says "they opted in", "revoke consent", or "GDPR delete requested".
Tool · Domains
Point a custom domain at this workspace. Fires the domain:set execute receiver, which stages the domain and returns the exact DNS records to add. No DNS is provisioned automatically. Confirm first.
Tool · Billing
Change the workspace plan. Fires the billing:plan execute receiver, which returns a Stripe checkout link to complete the change. Confirm first — this starts a paid checkout.
Tool · Brand
Rename the workspace. Use for "rename my workspace to Acme".
Tool · Tasks
Move a task through the board: open · blocked · picked · done · verified · failed · dissolved. The chat twin of the status menu. Say "mark get milk done", "that one is blocked", "reopen it". You cannot verify a task you claimed yourself — verification asserts a second pair of eyes.
Tool · Integrations
Set a webhook URL for this workspace. Events will be POSTed to the URL.
Tool · Marketplace
Settle a deal that passed verification, releasing payment to the seller. Confirm first — this moves money.
Tool · Pay
Show what is currently in the buyer's cart, by the cid returned from add_to_cart. Read-only. Server truth — the same state the ambient cart bar reads, so the two can never tell the buyer two different stories.
Tool · Pay
Resolve a price ID (ppid) to the real price: name, amount, currency, billing interval, what kind of thing it is, and whether the buyer must sign in first. Read-only. Use it to DECIDE — which card to show, whether a subscription is card-only, whether the buyer needs to sign in first. Do not repeat the amount in your prose: a number you type can differ from what the button charges, and the buyer believes the sentence. Point at the card instead.
Tool · Pay
Show ONE product from this workspace storefront with its prices, so you can put a single item in front of a buyer. Use show_products first to find the pid. Read-only. Narrate what the product IS — never type its price into your reply; the card reads the price from the server.
Tool · Commerce
List active products in this workspace storefront with prices. Use before presenting a buy option in chat.
Tool · Skills
Execute a skill by name from this workspace. If the skill has a price, returns a payment request first.
Tool · Lifecycles
Start a lifecycle sequence for real — sequences (welcome series, winback, nurture) are workflows, so this kicks the workflow by id via workflow:run. Find the id with workflow_list first. Confirm with the owner before starting: steps execute (emails send).
Tool · CRM
Add a tag to a CRM contact. Use when the owner says "tag this person as VIP", "mark as churned", or similar.
Tool · Tasks
Add or remove board tags on a task — the chat twin of the tag chips. Plain words only: the `workspace:` and `@` namespaces are system-owned and are refused. Say "tag that errands", "drop the urgent tag".
Tool · Newsletter
Send a test copy of a newsletter draft to ONE email address so the operator can preview it in a real inbox. Not a real send — no audience, no tracking.
Tool · Billing
Top up the credit pool. Fires the billing:topup execute receiver, which returns a checkout link to complete payment. Confirm first.
Tool · Rooms
Unlink a channel door from this room — it stops receiving relayed messages. Use when the owner says "disconnect our Discord".
Tool · Pages
Change ONE block on a page (e.g. update a headline, swap a button label). Call get_page first to get the block id, then pass only the props you want to change. Every other block is preserved — use this, not edit_page, for targeted changes.
Tool · Newsletter
Write or rewrite a newsletter draft: pass the broadcastId with the new subject, the FULL replacement markdown body (body_md), and/or the FULL replacement block tree (components, a JSON string of newsletterBlockSchema[]). In the studio the open draft's broadcastId is in your context — write there and the operator's editor updates live when the turn ends. If the write conflicts (operator edited concurrently), re-read with get_newsletter and rebuild.
Tool · Commerce
Update an existing product's name, description, images, or collection. Requires owner or admin.
Tool · Tasks
Edit a task's title, notes, priority or dates — the chat twin of the detail pane. Pass only the fields you are changing; each maps to its own receiver. Say "rename that task to…", "make it high priority", "due Friday", "clear the due date" (pass dueAt:"" to clear).
Tool · CRM
Create or update a CRM contact by email. Use when the owner says "add contact", "update contact", or provides a name/email/company to track.
Tool · Workflows
Create a new, blank workflow (SOP) in this workspace and return a link to its canvas. Use when the operator wants to start a workflow from scratch ("create a workflow called Client Onboarding"). Optionally clone a starter template by id (client-onboarding, booking-approval, campaign-creation, support-ticket, url-to-client, ai-news-to-social, paid-consultation, newsletter-welcome, abandoned-cart, newsletter-winback, social-publishing, content-to-social, weekly-social-calendar, course-create, product-launch, funnel-build, campaign-ads-social). campaign-ads-social is the A/B ad + social template a marketing campaign arms: its trigger REQUIRES workspace, campaignId, armCampaignId, arm, audience and controlSubject, so every workflow_run of it must pass those six as triggerPayload. The course-create, product-launch, and funnel-build templates are creation flows — draft → approve → build → review → publish, with course-create gating a priced course behind a sell step. The newsletter-* and abandoned-cart templates are email sequences that send through message:send — clone one when the operator wants a welcome series, cart recovery, or winback. After creating, use workflow_edit to add steps. A blank draft has no side effects, so it persists immediately — no confirm.
Tool · Workflows
Change a workflow by applying a WorkflowDiff (add/remove steps, connect/disconnect them, update a step's config). To "add a step that sends a welcome email after signup": add a tool step with config {"composio":"GMAIL_SEND_EMAIL"} and connect it after the signup trigger. To gate a flow on payment, add a sell step with config {"args":{"workspace":"<slug>","ppid":"<price id>"}} — the run suspends at checkout and resumes when the buyer pays. The server validates the diff (rejects cycles) before persisting.
Tool · Workflows
Fetch one workflow's full graph — its steps (kind, name) and the edges between them. Each edge carries two learned weights: `strength` (how many runs proved this path) and `resistance` (how many failed it). Use before editing so you reference real step ids; when you propose a change, CITE the numbers ("the review→send edge has resistance 12 vs strength 3") and prefer rerouting or editing a bottleneck edge — one where resistance exceeds strength — over a healthy path.
Tool · Workflows
List the workflows (SOPs) in this workspace — each with a description of what it does, plus step count, status, last run. When the operator's goal matches a listed workflow, PREFER running it with workflow_run over performing the steps yourself one tool at a time — a workflow is the rehearsed, learnable path. Use this to answer "what workflows do I have?" and to pick the right SOP before editing or running one.
Tool · Workflows
List recent runs of a workflow (status, timing) — pass runId to get that run's step-by-step event timeline (which step ran, its latency, whether it is parked). Use to answer "did that workflow run?" or "where is run X stuck?".
Tool · Workflows
Resolve a suspended human step in a run — approve or reject it, or submit a form payload. Use after workflow_logs shows a run parked on a human step; the run advances the instant you resolve it.
Tool · Workflows
Start a run of a workflow — each step executes in order and the path learns which branches work. Use after the operator confirms they want it to run now. If the workflow's trigger declares a payloadSchema with required fields (workflow_inspect shows the trigger step's config), pass them as triggerPayload or the server rejects the start with invalid_payload and nothing runs.
Tool · Workflows
Check a WorkflowDiff against the §9 gate WITHOUT persisting — verifies step kinds/config, exactly one trigger, edges point at real steps, and no cycles. Returns ok plus any advisory warnings. Use to sanity-check a diff before workflow_edit commits it.