MCP server and AI apps
Tool reference: briefs
The draft, setup, generate and decide tools for Story, Social, Webinar and Event briefs, with their confirmation rules.
Tool reference: briefs
Brief tools follow one path: start a draft, answer its questions, generate the reviewed version, then approve or regenerate. All of these need hsai.write, and the Activate product allocated. Staff and clients can both use them.
The tools
| Tool | What it does | Confirmation rule |
|---|---|---|
start_brief | Saves a Story, Social, Webinar or Event draft from the user's sentence. Story and Social take one partner_id; Webinar and Event can take partner_ids (up to 20, host first). Returns the version, setup, proposed and missing markers and the questions. Never generates. | Pass the user's own words. Ask every returned question; never guess. |
update_story_setup, update_social_setup, update_webinar_setup, update_event_setup | Save only the user's answers against the reviewed expectedVersion. Objects and arrays replace the whole field; omitted answers keep earlier facts. | Never invent a transcript, source facts, speakers or an offer. Show proposals before generating. |
generate_brief | Generates the reviewed expectedVersion. Returns a queued receipt. | Only on the user's explicit request, after showing all proposals. Never fetch a newer version and generate it silently. |
decide_brief | Approves a ready brief (it becomes live) or queues a regeneration of a Story, Social or Webinar target, with a note for Story and Social. | Confirm first. For an Event, tell the user approval opens the public registration page. |
Setup controls kept apart from answers
- Routing:
segment,workstreamandjourney_stagecome from the strategy anchor. They are proposed when the anchor has one value, otherwise asked as choices. - Strategy decision, always last:
strategy_actionproceed_off_anchorwith the user'sstrategy_reason, oredit_requestwithrevised_text. A later change to title, description or routing cancels it. - Proposals:
accept_proposed, for example["format"]for an Event's proposed format, only with the user's answer. - Unscored generation:
allow_unscored: trueonly with explicit permission. - Webinar defaults: the first timezone saved for a client is remembered.
partner_speakersis saved only with the partner's own speakers after the user reviews them. Both can be cleared with null, and edited in Activate on the partner page.
Formats that trip people up
- Webinar
localDateisYYYY-MM-DD,localStartTimeisHH:mm, timezone is IANA, duration 30, 45, 60 or 90. - Every Webinar agenda row needs a presenter by
speakerIndex, confirmed with the user, or null for a row with no single presenter. - Event
startsAtandendsAtare full ISO date-times with offset, for example2026-11-12T18:00:00+10:00. jointOffer: ""is sent only when the user confirms there is no offer.
Common refusals
| Code | Meaning |
|---|---|
BRIEF_INCOMPLETE | Questions remain; ask them. |
setup_validation_failed | Lists each field, rule and correction. Nothing was saved. |
draft_version_conflict | The draft changed. Re-read, show it, reconfirm. |
generation_already_requested | Read the brief; do not repeat. |
story_branding_required | Partner branding must be saved in Activate first. |
story_approval_placeholders_remaining | Resolve visible placeholders before approval. |
asset_stale | Read the current output first. |
GENERATION_FUNDING_UNAVAILABLE | Webinar or Event generation is not funded or licensed for this client. |
generation_unavailable | Generation readiness is not verified. Nothing was accepted. |
Event regeneration stays in the portal. Forms (where the app supports them) share the request's 45-second budget; declining saves nothing and a form never generates.