Skip to main content
Glama

Server Details

AI creative studio for images, video and carousel decks, with one saved character in every shot.

Ownership verified
Status
Healthy
Uptime
24.3% over 41 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.6/5.0

Scored across 54 tools

Disambiguation2/5

Many deck tools duplicate operations already available inside antix_edit_deck_slides: add_slide, delete_slide, reorder, set_fonts, set_palette, set_layout, set_text_style, set_background, and set_colors all have dedicated tools as well as generic batch ops. There are also related-but-confusable image placement tools (antix_attach_deck_image vs antix_set_slide_picture) and multiple posting tools targeting different destinations, which makes tool selection uncertain despite mostly clear individual descriptions.

Naming Consistency4/5

All tools share the antix_ prefix and snake_case, with verbs generally leading the name. The main deviations are structural rather than stylistic: some deck operations use antix_set_deck_* / antix_set_slide_*, some use generic antix_edit_deck_slides, and antix_set_text_style omits a deck/slide scope prefix, but the convention is still readable and mostly predictable.

Tool Count1/5

54 tools is far beyond a practical tool surface and lands in the extreme-mismatch range. Even for a broad creative platform, many capabilities are fragmented into overlapping dedicated deck-editing tools that could be consolidated or handled through antix_edit_deck_slides.

Completeness4/5

The surface is extensive: deck creation, editing, exporting, publishing, video rendering, image/video generation, character references, galleries, scheduling, credits, and brand kit access are all covered. Minor gaps remain in lifecycle management for characters, projects, and memory (for example, no character deletion/update-metadata or project creation), but most core workflows have clear paths.

Available Tools

54 tools
antix_add_slideAdd a slideAInspect

Use this when the user asks to add or duplicate a slide. Copy a slide and place the copy right after it (afterSlideId; the last slide when omitted), then write its words with antix_set_slide_copy. Require the current expectedVersion; on DECK_CONFLICT, read the deck again and repeat the same intended change. Free.

NameRequiredDescriptionDefault
deckIdYes
localeNo
projectIdNoAIGE project whose Canvas should receive the updated deck.
afterSlideIdNo
accountHandleNo
expectedVersionYesREQUIRED: the deck version you last read. A stale value fails with DECK_CONFLICT before any work.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say non-idempotent and non-destructive; the description adds the copy-then-insert semantics, place-after-source behavior, the required expectedVersion with the DECK_CONFLICT read-and-retry protocol, and that the call is free. These are exactly the operational facts an agent needs before invoking a mutating, version-gated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences: trigger first, then mechanics, then the follow-up dependency, then the conflict/cost note. No filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter mutation tool with no output schema, the description covers the essential flow and failure mode. It would be stronger if it stated whether a new slide ID is returned so the agent can chain antix_set_slide_copy, and what locale/accountHandle/projectId affect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%, so the description must compensate. It does add real meaning for afterSlideId (defaults to last slide) and expectedVersion (stale value fails with DECK_CONFLICT), but deckId, locale, accountHandle, and projectId are left to the schema with no clarification.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific operation — copying an existing slide and inserting the duplicate immediately after the original — with the placement parameter named and the default behavior spelled out. This clearly separates it from siblings such as antix_delete_slide, antix_reorder_slides, and antix_create_deck.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this when the user asks to add or duplicate a slide" gives an explicit trigger, and the description routes the agent onward to antix_set_slide_copy for content. It stops short of naming when NOT to use it (e.g. versus antix_edit_deck_slides or antix_create_deck), so no explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_apply_deck_layoutChange the layoutA
Destructive
Inspect

Use this when the user asks 'try a different layout', 'use the highlighter layout' or 'try another look'. Re-lay the whole deck in another built-in layout (templateId lib-…) or look, keeping every slide's words; keepTheme:true keeps the current colours and typefaces. List the layouts with antix_list_carousel_templates first. Replaces the deck's current layout, slide compositions and text styling. Require the current expectedVersion; on DECK_CONFLICT, read the deck again and repeat the same intended change. Free.

NameRequiredDescriptionDefault
lookNo
deckIdYes
localeNo
keepThemeNo
projectIdNoAIGE project whose Canvas should receive the updated deck.
templateIdYes
accountHandleNo
expectedVersionYesREQUIRED: the deck version you last read. A stale value fails with DECK_CONFLICT before any work.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations flag destructiveHint=true and idempotentHint=false, and the description earns its keep by disclosing exactly what is destroyed (layout, slide compositions, text styling) versus preserved (every slide's words, and colours/typefaces when keepTheme:true). It additionally states the version precondition, the conflict-retry protocol, and that the call is free.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Information is front-loaded: trigger phrasings, then the operation, then prerequisites and failure handling. It is a single dense block with no wasted sentence, though the trigger-phrase enumeration and the 'Free' remark could be trimmed marginally.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter destructive mutation with no output schema, the description covers the full operator loop: how to pick a target layout, what gets replaced, how to avoid a stale-version failure, and how to recover from one. The only unused parameter (projectId) is already documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25% (projectId and expectedVersion only), so the description must compensate; it explains templateId's lib- prefix convention, the meaning of keepTheme, and that look is an alternative styling axis with its own shape. deckId, locale and accountHandle remain undocumented anywhere, which keeps this from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Re-lay the whole deck in another built-in layout ... keeping every slide's words" gives a specific verb, an explicit scope (whole deck, not one slide) and a preservation guarantee. The deck-wide scope implicitly separates it from antix_set_slide_layout and, combined with keepTheme, from antix_set_deck_palette/antix_set_deck_fonts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Supplies concrete user phrasings that should trigger it ('try a different layout', 'use the highlighter layout'), a mandatory prerequisite ('List the layouts with antix_list_carousel_templates first'), and the alternative path (templateId vs look). It also prescribes recovery behavior on DECK_CONFLICT rather than leaving the agent to guess.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_approve_postApprove PostA
Idempotent
Inspect

Release a post that is waiting for approval — ONLY after the user explicitly approved it in this conversation (confirm: true is required). publishNow: true sends it within about a minute; otherwise it keeps its booked time. It is not live when this returns: confirm with antix_get_post, and say it is live only once status is published with a permalink. A Story reminder is different: approving it only releases the notice that tells the user to post the Story themselves — AIGE never publishes a reminder, so it never gets a permalink (its status ends at handoff_ready).

NameRequiredDescriptionDefault
postIdYes
confirmYesMust be true: the user explicitly approved this post.
publishNowNotrue = send it within about a minute (a Story reminder: send the notice to post it by hand); otherwise keep its booked time.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses that the post is NOT live on return, that 'live' means status published with a permalink, and that idempotent-sounding Story reminders terminate at handoff_ready with no permalink. This is exactly the out-of-band behavior an agent would otherwise get wrong, and it does not conflict with readOnlyHint=false / destructiveHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the safety-critical constraint and organized as release-condition, timing, verification, and edge case. Slightly padded by restating the publishNow behavior almost verbatim from the schema, which is minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, it covers everything an agent needs: the confirm gate, the timing branch, the fact that success is not equivalent to being live, how to verify, and the Story-reminder exception. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

At 67% schema coverage, the description usefully reinforces that confirm must reflect real user approval in this conversation and explains what publishNow=true does to scheduling timing. postId's meaning is left implicit, but its constrained name and pattern make it self-evident.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Release a post that is waiting for approval') and immediately scopes it to the approval workflow, which cleanly separates it from antix_get_post, antix_cancel_post, and antix_create_post. The Story-reminder carve-out further clarifies what class of object this actually acts on.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit precondition ('ONLY after the user explicitly approved it in this conversation'), explicit required flag, and an explicit post-call verification step via antix_get_post. It also distinguishes the publishNow branch versus keeping the booked time, so an agent knows which call variant to make.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_attach_deck_imagePut an Image on Deck Slides (free)A
DestructiveIdempotent
Inspect

Put an image FILE from this conversation on named slides of a carousel deck, as their picture: an image the user uploaded, or one you made with your own image generation. FREE here — nothing is generated by this tool and no credits are used. The image is screened, stored with the deck and laid full-bleed under the slide's copy; the copy is recoloured to read on it. slideIds is REQUIRED (one image may go on several slides). A picture put on with this tool is replaced by another one freely; replacing PAID artwork needs confirmDropPaid:true, and only after the user asks for the replacement. Requires the current expectedVersion. For a good slide picture: the deck's shape (4:5 → 1080×1350), NO words, letters or logos in the image, and quiet, even areas where the copy sits. If the result's review says the copy is lost on the picture, call again with the same image and the shade it names. Returns the deck with its re-rendered previews.

NameRequiredDescriptionDefault
imageYesThe image file from this conversation: one the user uploaded, or one you generated with your own image tool.
shadeNoLay an even veil over the picture so the copy reads on it: 0.2–0.5 darkens (under light copy), −0.5 to −0.2 lightens (under dark copy). Use it when the result's review says the copy is lost on the picture, with the same image again.
deckIdYes
localeNo
slideIdsYesREQUIRED, explicit: the slides that get this picture. One image may go on several slides.
projectIdNo
accountHandleNo
confirmDropPaidNoMust be true to replace a picture a slide already holds (generated artwork or an attached image) — only after the user asks for the replacement.
expectedVersionYesREQUIRED: the deck version you last read. A stale value fails with DECK_CONFLICT before any work.

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is partly covered. The description adds useful context beyond annotations: screening, full-bleed placement, copy recolouring, free versus paid replacement rules, expectedVersion conflict behavior, and retry shading with the same image. However, it does not fully explain the destructive scope of replacing existing slide artwork beyond the confirmDropPaid condition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and free status, then layers replacement rules and image-quality guidance. It is dense and useful, though long; a few clauses could be tightened without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although there is no output schema, the description explains that it returns the deck with re-rendered previews and tells the agent how to respond to a review that says the copy is lost. Combined with the replacement and version guidance, it is complete enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 56%, so the description must help with several parameters. It adds important meaning for slideIds, expectedVersion, shade, confirmDropPaid, and the image source, but does not explain deckId, projectId, locale, or accountHandle.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: putting an image file from the conversation onto named slides of a carousel deck. It also distinguishes the operation from generation-based siblings by saying nothing is generated and no credits are used, so an agent can separate it from antix_generate_deck_slide_images or antix_set_slide_picture.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use conditions: the image must be one the user uploaded or one the agent generated separately. It also specifies replacement rules, the requirement to ask the user before replacing paid artwork, and the retry path when the review says the copy is lost.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_cancel_postCancel Scheduled PostA
DestructiveIdempotent
Inspect

Cancel a booked post that has not gone out yet (scheduled, waiting for approval, or missed). A post that is already live cannot be removed from here.

NameRequiredDescriptionDefault
postIdYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive and idempotent, so safety is structured; the description adds what the annotations cannot — the set of eligible states (scheduled, awaiting approval, missed). It does not state whether cancellation is reversible or what happens to the post record afterward, which would be the remaining behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the eligibility rule front-loaded and the exclusion second. No filler, no restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A one-parameter mutation tool with annotations covering safety and no output schema needs little more than eligibility rules, which are present. The only missing piece is guidance on sourcing postId and the outcome of a successful cancel.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single parameter postId is documented only by type, pattern, and length constraints. The description never clarifies what a postId refers to or how to obtain one (e.g., from antix_list_scheduled_posts), so it adds no semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (cancel) and resource (booked post), and bounds the resource to post states that have not gone out. It implicitly separates itself from publish/approve siblings, though it never names an alternative tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear when-to-use condition (post must not have gone out) and an explicit when-not (already live posts cannot be removed from here). It stops short of saying what to do instead for a live post, so the agent is left without a routing target.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_check_batchCheck Generation Batch StatusAInspect

Poll every generation in an image batch or multi-video request in ONE call, by batchId. Returns aggregate batchStatus (queued | processing | completed | partial | failed) plus ordered items[] entries with each task's status, prompt, model, and completed image or video media. partial is terminal: at least one item completed and at least one failed.

🚨 INLINE RENDERING — same rule as antix_check_task: show it ONCE. When any item completes, the response carries a markdownEmbed string with every completed image and each completed video's poster/play link, in item order, as AIGE links. If an AIGE panel already rendered the batch, comment only. Otherwise paste markdownEmbed EXACTLY VERBATIM at the top of your message, exactly once. Then briefly map results to prompts and report any failed items with their refund details.

Polling cadence: Wait ~15s after submission, then call this every ~10s while batchStatus is queued or processing. Stop polling on completed, partial, or failed. Parallel batches normally finish in roughly the wall time of their slowest item.

NameRequiredDescriptionDefault
batchIdYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden and does so: it enumerates the terminal statuses, defines the non-obvious `partial` semantics ('at least one item completed and at least one failed'), and states that failed items carry refund details. It also discloses the response shape (`batchStatus`, ordered `items[]`) and the `markdownEmbed` payload.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and scope are front-loaded, and the polling cadence is separated into its own labeled sentence. The imperative INLINE RENDERING block is long and is really agent-behavior instruction rather than tool semantics, which dilutes the tool contract somewhat, but nothing is pure filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description fully accounts for the return value: status vocabulary, item ordering, per-item fields (status, prompt, model, media), terminal-state rules, and the embed string. An agent can call and interpret results correctly from the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and the schema gives it 0% description coverage, but `batchId` is self-evident from the name and the description only says 'by `batchId`'. No format or sourcing detail (e.g. where the id comes from) is added beyond the property name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'Poll every generation in an image batch or multi-video request in ONE call, by `batchId`'. This clearly separates it from the single-task sibling `antix_check_task`, which is named explicitly later. An agent knows exactly what it does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit polling protocol: wait ~15s after submission, then every ~10s while status is `queued`/`processing`, stop on `completed`/`partial`/`failed`, plus a note on expected wall time. It also routes to the sibling relationship by binding the inline-rendering rule to 'same rule as antix_check_task'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_check_deck_readinessCheck a Carousel Deck's ReadinessA
Read-onlyIdempotent
Inspect

Lint a deck for the problems that make a carousel not worth posting yet: slides still carrying the seeded placeholder copy, headline ink that is nearly invisible on a flat background, a slide whose layout is waiting for a picture — and what the slides show as drawn: copy that does not fit its place, runs too long, overlaps other copy, leaves the slide or is too small to read on a phone, copy that cannot be read on the picture behind it, a typeface the slides cannot be drawn in, a swipe cue on the last slide, an arrow that points back or away from the copy. FREE, read-only, deterministic — it never calls a model and never spends a credit.

Each finding carries level (fix = broken, check = worth a look), the layers it is about and the exact correction, so the loop is: antix_get_deck → antix_check_deck_readiness → antix_edit_deck_slides (set_copy / set_text_style / set_layout / set_fonts / set_colors / set_background) → re-check. Two rounds, then tell the user what is left.

look:true also returns ONE small picture of all the slides, numbered as the findings number them, as an image block. Look at it to judge what cannot be measured — spacing, balance, emphasis, whether the slides read as one deck — and say what you see. It is for you, not for the reply: the deck panel already shows the slides to the user.

This checks structure, not taste. ready:true means nothing measurable is broken — it is not a judgement that the carousel is good, and the user always has the final word. It also mirrors the paid-art placeholder guard: a slide reported placeholder_copy here is a slide antix_generate_deck_slide_images will refuse to illustrate.

NameRequiredDescriptionDefault
lookNoAlso return ONE small picture of all the slides, numbered, to look at: spacing, balance, whether the slides read as one deck. Use it when judging how the deck looks; leave it out for a routine check.
deckIdYesDeck to lint. Get ids from antix_get_deck.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses that the tool is FREE, read-only, deterministic, never calls a model, and never spends credits. It also explains finding levels (`fix` vs `check`), that `ready:true` is not a taste judgement, and that placeholder findings mirror the paid-art placeholder guard.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and workflow are front-loaded, and the dense checklist is relevant to understanding what the linter detects. It is longer than typical, but most sentences carry operational value rather than restating the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description explains the finding shape (`level`, `layers`, exact correction), the expected edit loop, the optional image behavior, and the limits of `ready:true`. It is complete enough for an agent to call and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description still adds useful meaning for `look:true`: it returns one small numbered image block, the numbering matches findings, and the image is for the agent rather than the user reply because the deck panel already shows the slides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb and resource: lint a carousel deck for posting blockers. It goes further by enumerating the exact classes of problems detected and clearly separates structural checks from subjective taste.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit workflow: antix_get_deck → antix_check_deck_readiness → antix_edit_deck_slides → re-check, with a two-round limit and instruction to tell the user what remains. It also states when to use `look:true` versus leaving it out for a routine check.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_check_taskCheck Generation Task StatusAInspect

Check the status of an in-progress generation task (returned by antix_generate_image or antix_generate_video). Returns one of: queued, processing, completed, failed.

🚨 CRITICAL: SHOW THE RESULT ONCE — NEVER TWICE. When status: completed, the response carries a markdownEmbed string and an instruction field.

• If an AIGE panel/widget rendered this result in the conversation (MCP Apps hosts: Claude, ChatGPT, Cursor) the user can already SEE it — add commentary only. Pasting the markdown as well is a duplicate, and duplicates are a bug. • Otherwise paste markdownEmbed EXACTLY VERBATIM at the top of your reply, exactly once. Example:

Here is your image:

![Generated image 1](https://aige.ws/v/<uid>/<characterId>/<historyId>/raw.png)

<your commentary about the result>

The markdown image syntax ![alt](url) is what makes the image render INLINE in a markdown chat client. Without it — and without a panel — the user sees only prose and no picture.

• The URLs in markdownEmbed are already AIGE links (aige.ws/v/…/raw.png, which redirects to the file). Use them verbatim. Do NOT swap in a raw firebasestorage.googleapis.com URL: those expose the storage path and a download token in the conversation. • DO NOT replace the markdown with a description. Describe AFTER showing, not instead. • DO NOT paste markdownEmbed more than once in a reply. • For multiple images the string already concatenates them all — paste the whole thing once. • For video tasks it renders the poster frame AND a Play link.

Status branches: queued / processing → tell the user 'still working, polling again in 10s' and call this tool again. completed → paste markdownEmbed first, then commentary. failed → tell the user, surface error. Credits were auto-refunded (refundedCredits).

Response shape (completed image task): status, progress, images[].url (direct file), images[].viewUrl (AIGE page), markdownEmbed, instruction (a directive to you), creditsSpent, model, characterId, historyId. Response shape (completed video task): status, progress, videoUrl (direct file), viewUrl (AIGE page), posterUrl, markdownEmbed (poster + play link), instruction, creditsSpent, model, characterId, historyId.

Polling cadence: Images typically complete in 10-25s. Videos take 30-90s. Wait ~10s then call once for images; for videos, ~30s then every 15s. (On MCP Apps hosts an AIGE panel renders with this tool and keeps polling by itself — videos play inline there with a real player — so let the panel show it and comment only; paste markdownEmbed on clients WITHOUT the panel.)

NameRequiredDescriptionDefault
taskIdYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so thoroughly: it discloses refund behavior on failure, credit spending, latency expectations (10-25s images, 30-90s videos), and the full response shape for both image and video tasks. It also flags the URL-safety constraint (never substitute raw firebasestorage URLs) and the panel-vs-no-panel rendering distinction, which are behavioral traits no schema could express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and the status branches are well-ordered, but the response is heavily padded: the 'never show twice' rule is restated four separate times (pasting once, not replacing with a description, not pasting twice, whole concatenated string), and emoji/caps formatting inflates length. Much of the presentation directive is genuinely necessary, but the repetition costs it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must document return values itself — and it does, with separate response shapes for completed image and video tasks listing every field. Combined with branching behavior, refunds, and polling timing, an agent has everything needed to call and handle the result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single taskId parameter, but the description compensates by explaining where the value comes from ('returned by antix_generate_image or antix_generate_video'). It gives origin and semantics but not format, so slightly below the no-parameter baseline of 4-plus.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Check the status of an in-progress generation task') and immediately disambiguates by naming the producing tools (antix_generate_image / antix_generate_video). It even enumerates the possible return values (queued, processing, completed, failed), so an agent knows exactly what question this tool answers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit prescriptive guidance per status branch ('queued/processing → poll again in 10s', 'completed → paste markdownEmbed first', 'failed → surface error, credits refunded') plus concrete polling cadence for images vs videos. The one gap is that the adjacent sibling antix_check_batch is never mentioned, so an agent holding a batch task has no stated rule for which status tool to call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_clear_slide_backgroundRemove a drawn backgroundA
Destructive
Inspect

Use this when the user asks to remove a background. Remove the drawn background, or a free picture put on with antix_attach_deck_image, from one slide (slideId) or from the whole deck; the layout's own colours come back. Never removes artwork that was paid for. Require the current expectedVersion; on DECK_CONFLICT, read the deck again and repeat the same intended change. Free.

NameRequiredDescriptionDefault
deckIdYes
localeNo
slideIdNo
projectIdNoAIGE project whose Canvas should receive the updated deck.
accountHandleNo
expectedVersionYesREQUIRED: the deck version you last read. A stale value fails with DECK_CONFLICT before any work.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and idempotentHint=false, and the description goes well past that: it names the resulting state ('the layout's own colours come back'), the protected resource (paid artwork), the required precondition (current expectedVersion), the failure mode and retry loop, and the cost ('Free'). That is substantive context an agent needs to act safely on a destructive call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the trigger, then scope, then guardrails, then the retry rule, then cost — a sensible ordering. It is dense and slightly run-on in the middle clause, but every sentence carries information and none are filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, version-guarded mutation with no output schema, the description covers trigger, scope, protected content, precondition, conflict recovery, and cost. It does not say what is returned or how the optional projectId/accountHandle/locale affect the operation, which is the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%, so the description must compensate, and it does for the two decision-critical parameters: slideId means 'one slide' while omitting it means the whole deck, and expectedVersion carries conflict semantics with the DECK_CONFLICT failure path. The three ancillary params (locale, projectId, accountHandle) are not explained in the description, leaving some gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('remove the drawn background... from one slide or from the whole deck') and explicitly names the sibling that created the artifact (antix_attach_deck_image). It also distinguishes itself from paid-artwork removal, so an agent can tell exactly what is and isn't in scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('when the user asks to remove a background'), the two supported scopes, an exclusion ('never removes artwork that was paid for'), and a conflict-recovery procedure ('on DECK_CONFLICT, read the deck again and repeat the same intended change'). Nothing about when to reach for this tool is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_compose_content_briefCompose a Content BriefAInspect

Turn a raw idea into a structured content brief: angle, hooks, copy directions, recommended formats and prompt recommendations. FREE (rate-limited). The brief persists to the user's AIGE account and is mirrored as a real Markdown file plus long-term Memory; pass projectId to keep both scoped to a production project. It opens pre-filled in the web app via the returned openUrl. Pass locale for the brief's language and accountLocale for publishable copy. Pass briefId to refine an existing brief instead of minting a new one.

NameRequiredDescriptionDefault
brandNo
localeNoUI language for the brief text.
briefIdNoUpdate this brief instead of minting a new one.
audienceNo
ideaTextYesThe raw idea, in the user's words.
researchNoGround the strategy in server-side web research.
projectIdNoAIGE project that should receive the strategy in Files and Memory.
sourceUrlNoOptional source article to ground the brief.
accountLocaleNoLanguage of publishable copy.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses cost ('FREE (rate-limited)'), side effects (persists to the AIGE account, mirrored as a Markdown file plus long-term Memory), and a return behavior (opens pre-filled in the web app via openUrl). Those persistence details are exactly what an agent needs before triggering an unannotated write-ish side effect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then sequences cost, persistence, return channel, locale pairing, and refinement mode — each sentence carries distinct information. It is dense but borders on cramming five behaviors into one paragraph, which slightly hurts scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nine-parameter, non-idempotent generation tool with no output schema, the description covers what is produced, where it lands, what it costs, and how the returned openUrl is used. An agent can decide and call correctly without further reading.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds real meaning beyond the 78%-covered schema, notably the locale (brief text) versus accountLocale (publishable copy) distinction and the briefId refine-vs-create semantics. It stays silent on research and sourceUrl, which the schema already documents, so it does not fully cover all nine parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Turn a raw idea into a structured content brief') and enumerates the artifacts produced (angle, hooks, copy directions, formats, prompt recommendations). This makes it unmistakably distinct from siblings like antix_compose_social_post or antix_enhance_prompt without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete conditional guidance: pass projectId to scope Files/Memory to a production project, pass briefId to refine rather than mint, pass locale vs accountLocale for different language targets. It does not explicitly route against alternative sibling tools (e.g., when a brief is overkill and a social post is enough), which keeps it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_compose_social_postPost to Instagram / ThreadsAInspect

Book a post on the user's own connected Instagram and/or Threads channels (one post per channel). Set confirm: true ONLY after the user explicitly said to post — without it the post waits for approval (antix_approve_post). Nothing is live when this returns: the publisher posts within about a minute of the post's time — confirm with antix_get_post and say it is live only once it reports published with a permalink. FREE. Each request is checked first (caption length, hashtags, carousel size, video length); Instagram photos outside 4:5…1.91:1 are cropped and the response says so. Media: historyIds of AIGE generations, photos and/or videos (1 image = photo post, 1 video = Reel / Threads video, 2 or more = carousel that can mix photos and up to 4 videos — Instagram takes up to 10 items, Threads up to 20, and the server caps a post at 10), or a carousel deckId; neither = a Threads text post (Instagram needs media). when: "now", "queue" (each channel's own next free posting time from the schedule saved on it — see queueSlots / nextQueueSlot in antix_list_channels; a channel with no posting times, or none left in the next 90 days, is refused as VALIDATION_ERROR), "draft", or an ISO-8601 time WITH a timezone. LIMIT_REACHED ("limit reached on @handle") is a different thing: that channel already holds all the waiting posts it is allowed. Instagram Stories: instagram: { format: "story" } with exactly ONE image or video (a video of 3–60 seconds) — the caption isn't posted. Instagram lets apps post Stories only for Business accounts (accountType in antix_list_channels), so on any other Instagram channel (or with instagram.reminder: true, for stickers and links) the Story is a reminder: AIGE notifies the user at its time to post it themselves and never posts it — its status ends at handoff_ready, never published, so promise no permalink; the booking reply says which channels got a reminder. First comment: instagram: { firstComment } (up to 2,200 characters; Instagram channels only — a request without one is refused; not with a Story) is posted under each Instagram post once it is live; the channel needs instagram_business_manage_comments in grantedScopes, otherwise the booking is refused and the user reconnects in the browser. Threads thread: the Threads text is threads.text when set, else the caption. A Threads text over 500 characters (Threads' count: an emoji counts as several) is split into a thread automatically (at paragraph, then sentence breaks; up to 10 posts — the response says so), unless threads: { chain: [{ text, historyId?, altText? }] } is given — up to 9 replies of up to 500 characters each, posted one under another once the post is live, each with at most one IMAGE (a historyId) and its alt text; with a chain the Threads text itself must fit in 500. A thread (written or split) needs threads_manage_replies in the channel's grantedScopes, otherwise the booking is refused and the user reconnects in the browser. Threads topic tag, who can reply, poll: threads: { topicTag, replyControl, poll } — topicTag is the post's one topic tag (1–50 characters, no periods or &; without it the first usable entry of hashtags is used and the response says so, since Threads has no hashtag list), replyControl is who can reply ("everyone", "accounts_you_follow", "mentioned_only", "followers_only" or "parent_post_author_only"; omit it for Threads' default), and poll: { options } is a poll of 2–4 different options of up to 25 characters on a text post only — no historyIds or deckId, the caption is the question. All three apply to the post itself (a thread's first post), never to its replies, and need a Threads channel in the request. Threads extras: threads: { extras: { linkAttachment, quotePostId, ghost, spoilerMedia, spoilerRanges, replyApprovals, countries } }, each optional and on the post itself only — linkAttachment is an https:// link shown as a preview card (text posts only; Threads allows 5 links per post, counting the caption's), quotePostId quotes a Threads post (for the user's own live Threads post use its providerPostId from antix_get_post), ghost:true makes a text-only post that disappears after 24 hours (no media, thread, poll, link preview, quote or reply approvals), spoilerMedia:true hides the photos or videos behind a spoiler, spoilerRanges hides up to 10 parts of the Threads text ({ offset, length } counted as JavaScript counts — an emoji is 2 — from the start of threads.text, else the caption; inside that text, and for a long text split into a thread inside the first post; not overlapping), replyApprovals:true makes the user approve replies in the Threads app (AIGE has no inbox for them yet), and country limits (countries) are set in the AIGE app for now — a booking that sets them here is refused, so tell the user to set them in the app. Alt text: altTexts — one per historyIds item, same order ("" for an item with none), up to 1,000 characters each; Instagram sends it on photos only (a single photo or a carousel photo — never a Reel or a Story, and the response says when it isn't sent), Threads on photos and videos; not with a deckId. Collaborators: instagram: { collaborators: ["anna", "ben"] } invites up to 3 Instagram accounts to co-author the post (a photo, Reel or carousel; not a Story, not the channel's own account) — only while antix_list_channels reports features.instagramCollaborators: true; otherwise the booking is refused. Tagging people: userTags — one list per historyIds item, same order ([] for an item with none), up to 20 per item, each { username, x, y }; on a photo x and y (0–1 from the top-left corner of the photo as posted) are required, a Reel or a Story takes the username alone; a carousel is cropped to the shape of its FIRST item (a photo or a video), and a carousel video takes no tags (they aren't sent for it, and the response warns). Instagram only — a request with tags and no Instagram channel is refused; not with a deckId; and only while antix_list_channels reports features.instagramUserTags: true — otherwise the booking is refused. Reel options: instagram: { reel: { coverHistoryId, thumbOffsetMs, shareToFeed, audioName, trial } } — only when historyIds is exactly ONE video (no Story, no deck, no photo or carousel; anything else is refused): coverHistoryId is an IMAGE of the user's to use as the cover (Instagram crops it to 9:16, and the response warns when it isn't close), thumbOffsetMs picks a moment of the video as the cover instead (ignored when there is a cover; must be inside the video), shareToFeed:false keeps the Reel out of the main feed (default true), audioName renames the Reel's original audio (up to 100 characters; Instagram allows ONE rename in total, so it can't be changed later), and trial ("MANUAL" or "SS_PERFORMANCE") posts it as a Trial Reel shown to non-followers first. A different text per platform: the top-level caption goes to every picked channel unless instagram: { caption } and/or threads: { text } give that platform its own (a blank one means the caption; instagram: { caption } is refused without an Instagram channel) — e.g. a long Instagram caption beside a short Threads post; the Threads text is the one that is split into a thread when it is over 500, and spoilerRanges count from its start.

NameRequiredDescriptionDefault
whenYes"now", "queue" (each channel's next free posting time from the schedule the user saved on it — antix_list_channels shows `queueSlots` and `nextQueueSlot`; a channel without posting times, or with none left in the next 90 days, is refused as a VALIDATION_ERROR — not LIMIT_REACHED, which is the cap on waiting posts), "draft" (book it for approval later), or an ISO-8601 date-time WITH a timezone, e.g. "2026-10-16T09:00:00+03:00".
deckIdNoA carousel deck to post instead of historyIds. Never both.
captionYesThe post text, shared by every picked channel unless instagram.caption or threads.text gives that platform its own. Instagram: the caption (hashtags are appended). Threads: 500 characters per post (an emoji counts as several) — a longer text is split into a thread automatically (at paragraph, then sentence breaks; up to 10 posts) unless threads.chain is given, which needs the Threads text (threads.text when set, else this caption) to be at most 500.
confirmNotrue only after the user explicitly said to post. Without it the post waits for approval (antix_approve_post) — except a timed post on a channel the user put on autopilot, which posts on its own at its time. Posting "now" always needs confirm:true.
threadsNoThreads-only options: the Threads post's own text, a thread of several posts, a topic tag, who can reply, a poll and extras (link preview, quote, ghost post, spoilers, reply approvals). A Threads text over 500 characters is split into a thread automatically unless chain is given. A request with no Threads channel can't carry them. Instagram channels in the same request ignore them.
altTextsNoAlt text (accessibility descriptions), one per historyIds item, same order — use "" for an item with none. Up to 1,000 characters each; never more texts than items, and not with deckId. Instagram uses it on photos (a single photo or a carousel photo) and not on Reels or Stories — the response says so; Threads uses it on photos and videos.
hashtagsNoHashtags, with or without #. Instagram appends them to the caption. Threads has no hashtag list: the first one that can be a topic tag becomes the post's topic tag (unless threads.topicTag is given) and the rest are left off — the response says so.
userTagsNoPeople to tag on the Instagram post — one list per historyIds item, same order ([] for an item with none), up to 20 per item; not with deckId. Each tag is { username (with or without @), x, y }: on a PHOTO (a single photo or a carousel photo) x and y are required — send both, 0–1 from the top-left corner of the photo AS POSTED (x across, y down; 0.5/0.5 is the middle) — a feed photo outside 4:5 … 1.91:1 is cropped from the middle first, and every photo of a carousel takes the shape of the FIRST item (a photo or a video); a Reel or a Story takes the username alone (x and y are ignored), and a video in a carousel takes no tags — they aren't sent for it, and the response warns. Instagram only: a request with tags and no Instagram channel is refused (a Threads channel in the same request just doesn't get them). Only while antix_list_channels reports features.instagramUserTags: true — until then Instagram doesn't take photo tags from AIGE and the booking is refused, so don't offer it.
instagramNoInstagram-only options. Threads channels in the same request ignore them.
channelIdsYesChannel ids from antix_list_channels — one post is booked per channel.
historyIdsNoAIGE generations to post (ids from antix_get_history), photos and/or videos: 1 image = photo post, 1 video = Reel / Threads video, 2 or more = carousel (photos and videos can be mixed, up to 4 videos; Instagram takes up to 10 items, Threads up to 20 — the server caps a post at 10). Omit for a Threads text post.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly=false, destructive=false, openWorld=true), and the description adds valuable context: nothing is live on return, the publisher posts within about a minute, and status only reaches published with a permalink. However, it is a mutation tool with no explicit statement of reversibility beyond pointing at antix_cancel_post and antix_approve_post.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The critical facts (confirm semantics, nothing live yet, FREE) are front-loaded, which is good, but the remainder is a single ~1,500-word paragraph mixing media rules, Stories, threads, extras, alt text, tags, Reels and per-platform captions. Backticked field names help, but an agent must rescan the block to find any one rule.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter tool with deep nesting, cross-channel conditional refusals and no output schema, the description is remarkably complete: it names every refusal condition, which fields are Instagram- vs Threads-only, and what the response will report back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, but the description adds substantial meaning the schema can't: which media combinations produce a photo/Reel/carousel/text post, why Instagram Stories degrade to reminders on non-Business accounts, that spoilerRanges count in JavaScript string units, and the one-shot audio rename rule.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Book a post on the user's own connected Instagram and/or Threads channels', and immediately frames the approval flow via antix_approve_post. It does not, however, distinguish itself from the sibling antix_create_post, which is the most likely source of selection ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to set confirm:true (only after the user said to post) and what happens without it, routes to antix_approve_post and antix_get_post for verification, and explains each `when` mode's preconditions including the queue refusal case. Alternatives and exclusions are named rather than implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_create_characterCreate CharacterAInspect

Create a NEW persistent AIGE character from an image. Use when the user names a person in a photo — 'name her Aurorra', 'this is my model, call her X', 'create a character named Y from this image'.

Inputs: name (how the user refers to them), avatarUrl (HTTPS URL or base64 data URL of the face/identity image — same input rules as antix_set_character_avatar; if the client can't forward bytes, the user can upload at https://aige.ws/r and paste the short URL), optional description (style/era/vibe), optional galleryUrls (up to 8 extra reference images to seed the reference gallery).

Effects: writes to the same collection the AIGE web app uses, so the character appears in the aige.ws character switcher immediately. The returned characterId can be passed straight to antix_generate_image / antix_generate_image_batch / antix_generate_video for face-consistent generation.

Returns: characterId, name, avatarUrl, galleryCount, characterPageUrl.

NameRequiredDescriptionDefault
nameYesThe character's name as the user wants to refer to them (e.g., 'Aurorra').
avatarUrlYesHTTPS URL of the avatar image (typically the attached image URL the user just uploaded).
descriptionNoOptional short description of the character (style, era, vibe).
galleryUrlsNoOptional additional reference image URLs to seed the character's gallery.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare idempotentHint=false and destructiveHint=false; the description goes well beyond by disclosing where the write lands (the same collection the AIGE web app uses), the observable effect (character appears in the aige.ws switcher immediately), and the downstream reuse of characterId. The base64/upload fallback note is real operational context not present in structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Bold-labeled Inputs / Effects / Returns blocks make it scannable and the trigger example is front-loaded before the mechanics. Slightly long, with a few lines (name, gallery count) that re-state schema text, but nearly every block adds something the structured data lacks.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates with an explicit Returns list (characterId, name, avatarUrl, galleryCount, characterPageUrl). Combined with the Effects and input-handling notes, an agent has everything needed to call this correctly and to use the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above baseline by clarifying that avatarUrl accepts a base64 data URL as well as an HTTPS URL (the schema says only 'HTTPS URL of the avatar image') and by explaining what galleryUrls seeds ('up to 8 extra reference images to seed the reference gallery'). The name/galleryItems details largely restate the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb + resource ('Create a NEW persistent AIGE character from an image') and the capitalized 'NEW' plus the persistence framing separates it from siblings like antix_set_character_avatar and antix_add_to_character_gallery. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit trigger phrasing ('name her Aurorra', 'this is my model, call her X', 'create a character named Y from this image') and chains forward to antix_generate_image / antix_generate_image_batch / antix_generate_video via the returned characterId. It also names the sibling whose input rules apply and offers a fallback upload path when the client can't forward bytes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_create_deckCreate a Carousel DeckAInspect

Materialise a blueprint, bare topic, or reusable templateId into a REAL carousel deck in the user's AIGE account — the same document the web builder edits — and render slide previews. The deck is delivered to Canvas automatically, including when called from Claude, ChatGPT, CLI, or an automation; no Machine Run is required. FREE; the response includes backgroundCostEstimate (from the live charge resolver) so you can quote what illustrating the slides would cost BEFORE any paid call. Creation never overwrites: an existing deckId fails with DECK_EXISTS. Previews are layout approximations (see antix_get_deck's description); embed the returned preview URLs so the user sees the deck. Instagram autopublish is NOT available (publish.instagram.available=false).

NameRequiredDescriptionDefault
lookNoBuilt-in templates only: which of the layout's looks (palette + typefaces) to use. Omit for its first look.
brandNo
topicNo
aspectNo
deckIdNoReusing an existing id fails with DECK_EXISTS — creation never overwrites.
localeNo
blueprintNoA blueprint from antix_build_carousel_blueprint, verbatim.
projectIdNoAIGE project whose Canvas should automatically receive this deck.
slideCountNo
templateIdNoA template id from antix_list_carousel_templates: a built-in layout (`lib-…`, optionally `lib-…--<look>`) or one the user saved.
accountHandleNo
backgroundModelNo

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the idempotentHint/destructiveHint pair: states Canvas delivery is automatic across Claude/ChatGPT/CLI/automation, the call is FREE, the response carries backgroundCostEstimate from the live charge resolver, and reusing a deckId fails with DECK_EXISTS — consistent with destructiveHint=false. It also warns that previews are layout approximations rather than exact renders.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the core action and the three input forms come first, then cost, then the non-overwrite guarantee, then preview and publishing caveats. It is one long run-on paragraph, but each sentence contributes new information rather than restating the name or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-param, nested-object tool with no output schema, the description does meaningful work: it names two response fields (backgroundCostEstimate, preview URLs) and explains the failure mode. The main gap is that it never clarifies the minimal viable payload or the defaults for aspect/slideCount, which matters given zero required parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 42% and there are 12 params with zero required, yet the description never states whether blueprint/topic/templateId are mutually exclusive or which one wins when several are supplied. It does add meaning for the entry modes and cost estimate, but leaves look, brand, aspect, slideCount, accountHandle, backgroundModel, locale and projectId entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'materialise ... into a REAL carousel deck' — plus the three accepted input forms (blueprint, bare topic, templateId) and the side effect of rendering previews. It also implicitly distinguishes itself from antix_build_carousel_blueprint (produces the blueprint) and the slide-level mutators, since this creates the whole deck.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The three entry paths and the note that no Machine Run is required give a clear picture of when this tool fits. It also discloses an exclusion ('Instagram autopublish is NOT available'), but it never names a sibling alternative or states when-not to use this versus e.g. antix_send_to_canvas or antix_get_deck.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_create_postPublish Post to AIGORAAInspect

Publish a post to the AIGORA social feed (the creator community at aigora.ws). Attach images directly via imageUrls, or reference an existing AIGE generation by fromHistoryId. Use this when the user wants to share a creation, publish to their feed, post to social, or show their work to the community. Returns the postId and a public postUrl. Tags are optional but help discovery.

NameRequiredDescriptionDefault
tagsNo
textYes
imageUrlsNo
videoUrlsNo
fromTaskIdNo
fromHistoryIdNo
idempotencyKeyNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the sparse annotations, the description discloses that this creates a public post, returns a postId and public postUrl, and can attach media via imageUrls or reference an AIGE generation via fromHistoryId. It still omits meaningful behavioral details such as retry/idempotency behavior despite the idempotencyKey parameter and idempotentHint=false annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: purpose first, attachment modes second, usage cues third, return values fourth, and a short note on tags. Every sentence contributes actionable information without repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a publish tool with no output schema, the description helpfully covers the core action, primary media-attachment paths, and return values. It is not fully complete for a seven-parameter mutation because idempotency, fromTaskId, and videoUrls are not explained, but the main calling context is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning. It explains imageUrls, fromHistoryId, and optional tags, but leaves text, videoUrls, fromTaskId, and especially idempotencyKey unexplained, leaving several caller decisions to inference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: publishing a post to the AIGORA social feed at aigora.ws. It clearly frames the action as sharing/publishing a creation to a feed, which separates it from generation-oriented siblings such as antix_generate_image or antix_compose_social_post.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete when-to-use cases: sharing a creation, publishing to a feed, posting to social, or showing work to the community. It does not explicitly name alternatives or when-not-to-use cases, such as composing content versus publishing an approved/scheduled post, so it falls short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_delete_slideDelete a slideA
Destructive
Inspect

Use this when the user asks to remove a slide. Delete one slide from the deck. Deleting a slide whose background was paid for discards that spend and needs confirmDropPaid:true — ask the user first. Require the current expectedVersion; on DECK_CONFLICT, read the deck again and repeat the same intended change. Free.

NameRequiredDescriptionDefault
deckIdYes
localeNo
slideIdYes
projectIdNoAIGE project whose Canvas should receive the updated deck.
accountHandleNo
confirmDropPaidNoMust be true to delete a slide whose background was paid for — ask the user first.
expectedVersionYesREQUIRED: the deck version you last read. A stale value fails with DECK_CONFLICT before any work.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false; the description goes beyond them by disclosing that deleting a paid-background slide discards spend, that expectedVersion is mandatory, and that a stale version fails before any work is done. It also notes the operation is free. It stops short of describing the return payload or whether other slides shift/re-index after deletion, which is relevant for a destructive non-idempotent op.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five sentences, all load-bearing: trigger first, scope second, then the confirmation gate, then the concurrency contract, then the cost note. No repetition of the title or schema fields verbatim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent, version-guarded mutation with no output schema, the description covers the confirmation gate, the version requirement, the conflict-recovery loop, and the billing side effect. Nothing essential to a correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 43% across 7 params, so the description must compensate; it covers the two risky ones (confirmDropPaid as a confirmation gate, expectedVersion as the concurrency token with its DECK_CONFLICT failure mode). The remaining params (locale, accountHandle, and unlabeled deckId/slideId) get no semantic help beyond their obvious names, leaving deck scoping and the Canvas-related projectId lightly explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'remove a slide', 'Delete one slide from the deck' — and scopes it to exactly one slide. This clearly separates it from sibling mutations like antix_add_slide, antix_reorder_slides, and antix_edit_deck_slides.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('when the user asks to remove a slide'), a prerequisite gate for paid backgrounds requiring user confirmation before proceeding, and a recovery path on DECK_CONFLICT. An agent knows when to call it, when to pause for approval, and what to do on failure.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_edit_deck_slidesEdit Carousel Deck SlidesA
Destructive
Inspect

Apply a bounded batch of edits to a deck. Copy: set_copy (headline/body/kicker/cta per slide, plus emphasis — a phrase inside the headline the layout features). Design, all by slot and deck-wide unless slideId is given: set_fonts (heading/body/accent families from antix_list_carousel_design_options), set_palette (background/ink/accent/onAccent/paper/onPaper), apply_template (another built-in layout or look, copy kept), set_layout (a different composition for one slide), set_text_style (scale/align/case/weight of one role), set_background / clear_background (a drawn, free background), set_colors. Structure: reorder, add_slide, delete_slide, set_aspect (1:1|4:5|9:16), set_background_url (allowlisted AIGE/Storage hosts only). Text re-fits itself after every change. Every result carries design, the deck's current template, look, palette and typefaces. REQUIRES expectedVersion from your last antix_get_deck read — a stale version fails with DECK_CONFLICT before touching anything, so you can never blind-write over the user's browser edits. Deleting a slide with a PAID background — or drawing a background over one — aborts the WHOLE batch unless confirmDropPaid:true — ask the user explicitly before setting it. Only edited slides re-render. FREE.

NameRequiredDescriptionDefault
opsYes
deckIdYes
localeNo
projectIdNoAIGE project whose Canvas should receive the updated deck.
accountHandleNo
confirmDropPaidNoMust be true to delete a slide, or draw a background over one, whose background was paid for — ask the user first.
expectedVersionYesREQUIRED: the deck version you last read. A stale value fails with DECK_CONFLICT before any work.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only flag destructiveHint=true and idempotentHint=false; the description goes far beyond by disclosing transactional semantics (stale version fails with DECK_CONFLICT before touching anything), atomic batch abort on paid backgrounds unless confirmDropPaid:true, re-render scope ('only edited slides'), automatic text re-fit, the `design` return payload, and cost ('FREE'). This is exactly the extra context an agent needs to avoid blind writes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, then ops are grouped under Copy/Design/Structure, then constraints. Dense and long for a single paragraph but sized appropriately to a 13-variant operation union, with little filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent batch tool with no output schema, the description covers conflict handling, atomicity, paid-resource safety, return shape, and render behavior. Minor gaps remain: no ordering guarantee for ops, no mention of the Canvas side effect implied by projectId, and no error taxonomy beyond DECK_CONFLICT.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 43%, and the description compensates meaningfully: it explains the deck-wide-unless-slideId scoping rule, that apply_template keeps copy, that set_background_url is restricted to allowlisted AIGE/Storage hosts, and which external tool supplies font families. It leaves the large nested background recipe (light, objects, layers) and top-level locale/accountHandle/projectId unexplained, though some are covered by schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb and resource ('Apply a bounded batch of edits to a deck') and enumerates the three op families (copy, design, structure), making the scope concrete. It does not explicitly distinguish itself from the many per-slide sibling tools (antix_set_slide_copy, antix_set_deck_fonts, antix_reorder_slides), so an agent must infer that this is the batch alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Useful prerequisites are given: expectedVersion must come from a prior antix_get_deck read, design values come from antix_list_carousel_design_options, and the agent is told to ask the user before setting confirmDropPaid. However, there is no explicit when-to-use-this-vs-siblings routing against the overlapping single-slide tools, so the choice is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_enhance_promptEnhance PromptAInspect

Use AIGE's prompt enhancement (Gemini 3.5 Flash Lite) to expand a brief prompt into a richer, model-optimized description. Doesn't generate an image — just improves the text. Useful before calling antix_generate_image or antix_generate_video for higher-quality results. Specify mode: 'image' for visual prompts, 'video' for motion prompts.

NameRequiredDescriptionDefault
modeNo
audioNo
modelNo
promptYes
qualityNo
durationNo
resolutionNo
aspectRatioNo
referenceTypesNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden, and it does address the most important misconception — no image is produced, only text is returned, and a specific model performs the work. However, it says nothing about whether this consumes credits (relevant given the sibling antix_get_credits), latency, or any failure/limits behavior, which matters for a 9-parameter remote model call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with what the tool does, then the negative clarification, then the usage pointer, then the mode instruction. No filler. Slightly penalized only because the mode sentence sits at the end where the schema-adjacent guidance would be more useful earlier.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters, no annotations, and no output schema, the description explains roughly one parameter and no return shape. An agent knows what the tool is for but not how the model/quality/duration/referenceTypes inputs affect the enhancement, nor what the enhanced text looks like coming back, so it would likely call with only a prompt and mode and miss the tool's real capability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 9 parameters, so the description must compensate and it largely does not. Only 'mode' is explained ('image' for visual prompts, 'video' for motion prompts); model, quality, audio, duration, resolution, aspectRatio, and referenceTypes are left entirely to bare enum lists with no guidance on how they interact with mode or why an enhancement call would accept generation-style options.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('expand a brief prompt into a richer, model-optimized description') and names the underlying engine (Gemini 3.5 Flash Lite). It explicitly distinguishes itself from the generation siblings with 'Doesn't generate an image — just improves the text,' so an agent can tell it apart from antix_generate_image without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear positive placement: 'Useful before calling antix_generate_image or antix_generate_video for higher-quality results,' which is exactly the routing decision an agent needs. It also says which mode value maps to which downstream tool. It stops short of a when-not-to-use case (e.g. when the prompt is already detailed, or cost considerations), so it is a strong 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_export_deckExport Deck Slides (permanent files)A
Idempotent
Inspect

Export a carousel deck's slides as PERMANENT, full-resolution image files and return their direct URLs. FREE, rate-limited. Use this whenever the files leave AIGE — a scheduler (Buffer), an uploader, or the user downloading them.

Do NOT hand out antix_get_deck's previewUrl for that: previews are 540px WebP approximations under the daily scheduled preview cleanup (14 days), which also prunes to the three newest design versions. These export URLs are public, full-resolution and never reaped.

A browser-finalized export always wins and is returned as-is (exportSource: "browser"); every other slide is rendered server-side once at full resolution and REUSED on later calls for the same designVersion and format — calling twice re-renders nothing. bufferAssets mirrors slides in Buffer's own create_post asset shape: { image: { url, metadata: { altText } } }.

If you just called antix_generate_deck_slide_images, wait for antix_check_deck_readiness to report no missing_photo before exporting — the response's pendingArt flag tells you when slides were exported without their art.

Instagram autopublish is NOT available — exporting hands YOU the files; it posts nothing anywhere. To post to a connected Instagram/Threads channel instead, use antix_compose_social_post.

NameRequiredDescriptionDefault
deckIdYesDeck to export. Get ids from antix_get_deck.
formatNoOutput file format. Default png.
slideIdsNoExport only these page ids. Omit to export every slide in deck order.
knownDesignVersionNoThe designVersion you already have; the response reports upToDate. Exports always target the deck's CURRENT version.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses that exports are permanent, public, full-resolution, and never reaped, unlike previews subject to 14-day cleanup and pruning. It explains browser-finalized export precedence, server-side rendering reuse per designVersion/format, and the pendingArt flag when art is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The main purpose and key warning are front-loaded, and the remaining paragraphs are organized around alternatives, caching behavior, response shape, and caveats. It is somewhat dense and long, but nearly every sentence provides actionable information rather than restating structured fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description explains the returned URLs, exportSource semantics, bufferAssets shape, and pendingArt signal. It also covers the main operational caveat that Instagram autopublish is unavailable and points to the alternative tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents deckId, format, slideIds, and knownDesignVersion. The description still adds behavioral meaning by explaining that exports always target the current version and that rendering is reused across calls for the same designVersion and format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: export a carousel deck's slides as permanent, full-resolution image files with direct URLs. It explicitly distinguishes itself from antix_get_deck's previewUrl and from antix_compose_social_post, so an agent can identify the correct tool without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names concrete use cases (scheduler, uploader, user download) and explicitly says not to hand out previewUrl for those cases. It also gives sequencing guidance with antix_check_deck_readiness and redirects posting use cases to antix_compose_social_post.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_generate_deck_backgroundDraw a Deck Background (free)A
DestructiveIdempotent
Inspect

Draw a procedural background on a deck's slides — by code, not by a model: FREE, no credits, about a second. A recipe is a base, up to 4 pattern layers, an optional light, up to 8 objects, then grain, vignette and scrim. Or start from a preset and override parts. base is solid | linear | radial, a shader (mesh, aurora, plasma, marble, clouds, waves, voronoi, halftone), or surface — a real MATERIAL the light models: paper, kraft, cardboard, crumpled, watercolor, linen, canvas, denim, leather, velvet, satin, concrete, plaster, marble, terrazzo, wood, brushed-metal, foil, holographic, chrome (book:true shapes it as a book cover; emboss + foil press a gilt line into it). Patterns (dots, grid, lines, stripes, cross, checker, zigzag, waves, arcs, triangles, rings, sunburst, blobs, bokeh, confetti, stars, topo, scribble) print ON the surface. light sets where the light comes from and can add a spot, a gobo shadow (blinds, window, arch, leaves) or a glossy sheen. objects lie on the surface and cast shadows: sheet, note, tape, sticker (a shape and/or a word, die-cut), stamp, pin, clip, stain — place by x/y or on a corner of the sheet before it. Colours are #rrggbb or a palette slot (bg, ink, accent, onAccent, paper, onPaper) so the background follows the deck's look. The same recipe and seed always draw the same image; change seed to re-roll. It replaces the slide's background image: drawing over PAID art needs confirmDropPaid:true after the user agrees. Text is recoloured for contrast with what lies under it unless adaptInk:false; objects sit BEHIND the copy, so keep them clear of it or put the copy on a sheet. REQUIRES expectedVersion. Omit slideIds for every slide.

NameRequiredDescriptionDefault
deckIdYes
localeNo
adaptInkNoRecolour the text that sits on the background to stay readable. Default true.
slideIdsNoSlides to draw it on. Omit for every slide.
projectIdNo
backgroundYes
accountHandleNo
confirmDropPaidNoMust be true to draw over a background that was paid for — ask the user first.
expectedVersionYesREQUIRED: the deck version you last read. A stale value fails with DECK_CONFLICT before any work.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare idempotentHint=true and destructiveHint=true; the description earns its keep by explaining exactly why: it replaces the slide's background image, determinism holds for 'the same recipe and `seed`', and a stale `expectedVersion` fails with DECK_CONFLICT before any work. It also discloses side effects not in the annotations — text recolouring for contrast unless `adaptInk:false`, and objects rendering BEHIND the copy.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the highest-value facts (what it draws, that it is free and fast) and every clause carries information. It is one dense ~250-word paragraph though, and the long material/pattern enumerations would read far better as a bulleted list or grouped sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with nested objects, no output schema and thin schema descriptions, it covers the side effects, version precondition, paid-overwrite confirmation and determinism. It never mentions the return value or the role of locale/projectId/accountHandle, but those are minor relative to the recipe guidance it does provide.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 44%, but the description compensates heavily: it defines the recipe shape (base, ≤4 layers, light, ≤8 objects, grain/vignette/scrim), the five `base` variants and their shader/material enumerations, palette-slot colour values, object placement via x/y or `on`, and `seed` re-roll semantics. The only untouched parameters are locale, projectId and accountHandle.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Draw a procedural background on a deck's slides') and immediately distinguishes itself from the model-based sibling: 'by code, not by a model: FREE, no credits, about a second.' An agent can tell this apart from antix_generate_deck_slide_images or antix_clear_slide_background without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It sets the condition for dropping existing paid art ('needs `confirmDropPaid:true` after the user agrees') and states 'Omit `slideIds` for every slide', which is real invocation guidance. It stops short of naming alternatives (e.g. when to prefer model-generated art via antix_generate_deck_slide_images instead), so an exclusion rule is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_generate_deck_slide_imagesIllustrate Deck Slides (PAID)AInspect

Generate background art for NAMED slides of a carousel deck. This is the ONLY deck tool that spends credits. Two structural money rules: slideIds is REQUIRED (no implicit all-slides), and maxCredits is a REQUIRED hard ceiling — if the resolved total exceeds it the tool refuses and charges NOTHING; quote backgroundCostEstimate from antix_create_deck/antix_get_deck and get the user's explicit approval BEFORE calling. Slides still carrying placeholder copy are refused with zero spend (write the copy first, or pass promptOverrides). Charges run through the same atomic batch pipeline as antix_generate_image_batch — failed generations refund automatically. Finished art attaches to the deck on your NEXT antix_get_deck call (a deck-attach hiccup never refunds: the image was generated and lives in history). Poll antix_check_batch for raw progress.

NameRequiredDescriptionDefault
modelNo
deckIdYes
slideIdsYesREQUIRED, explicit — there is deliberately no 'all slides' shorthand; accidental full-deck respend must be impossible.
maxCreditsYesREQUIRED hard ceiling. If the resolved total exceeds it the tool refuses and charges NOTHING. Never raise it beyond what the user approved.
resolutionNo
characterIdNo
accountHandleNo
idempotencyKeyNo
promptOverridesNoPer-slide prompt overrides as {slideId, prompt} entries; slides without one use the deck's own brief/headline.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply weak hints (idempotentHint false, destructiveHint false), but the description adds substantial undisclosed behavior: it spends credits, refusals charge nothing, failed generations auto-refund, deck-attach hiccups never refund, and placeholder-copy slides are refused at zero spend. This is exactly the extra context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The critical payload (cost gate, required params, approval flow) is front-loaded and every sentence carries operational content. The bold/bold-caps emphasis is slightly heavy but does not waste much space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-output-schema, 9-param, credit-spending mutation, the description covers the approval gate, refund behavior and post-call polling well. The remaining gap is the unexplained optional parameters, which leaves an agent guessing about model/resolution/characterId selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% across 9 params. The description explains slideIds, maxCredits and promptOverrides semantics, but those are already documented in the schema, while model, resolution, characterId, accountHandle and idempotencyKey remain undocumented in both places. Partial compensation, not full.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Generate background art for NAMED slides of a carousel deck') plus its cost-critical distinction from other deck tools. It does not, however, explicitly contrast with the sibling antix_generate_deck_background, and the claim 'the ONLY deck tool that spends credits' is ambiguous given a background-generation sibling exists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit prerequisites and a pre-call sequence (quote backgroundCostEstimate from antix_create_deck/antix_get_deck, get explicit user approval), plus conditional routing (write copy first or use promptOverrides; poll antix_check_batch for progress). An agent knows exactly when and how to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_generate_imageGenerate AI ImageAInspect

Generate one or more AI images for a SINGLE prompt. ASYNC — queues the task and returns a taskId in <1s; call antix_check_task ~10–25s later to get the inline preview(s) and URLs.

🚀 IF THE USER WANTS MULTIPLE DIFFERENT PROMPTS (e.g. 'generate 5 different scenes: beach, café, gym, library, sunset'), USE antix_generate_image_batch INSTEAD. That tool submits all N prompts in one call, fal runs them in parallel, total wall time = ~one item's time instead of N × time, credits are charged atomically, and polling is one call against a single batchId. This tool is for ONE prompt only (with optional count: 2-4 variations of that one prompt).

⚠️ ALWAYS pass user's specified parameters explicitly — do NOT use defaults if the user requested specific settings. If the user says 'use GPT model 9:16 ratio with high quality,' you MUST pass model: 'gpt-image-2', aspectRatio: '9:16', AND quality: 'high'. Missing any of these means we silently fall back to defaults and the user's request is ignored.

🖼️ IMG2IMG & CHARACTER CONSISTENCY — read this section carefully.

The server automatically resolves the reference image in this priority order:

  1. Explicit referenceImage arg (URL or base64 data URL) — always wins.

  2. Most recent image in the character's GALLERY (the multi-image reference pool backing the AIGE PromptBar's 'Upload Character Image' dialog). This is the PREFERRED img2img path — users curate references in the gallery and they auto-apply to every future generation without needing to forward image bytes per call. Manage via antix_list_character_gallery + antix_add_to_character_gallery.

  3. Saved avatar of characterId (legacy single-image fallback).

  4. Pure text-to-image if none of the above resolves.

When to pass referenceImage explicitly: • User attached an image AND it's NOT a saved AIGE character (e.g. an inspiration photo, a scene reference, a sketch). • User pasted an HTTPS URL. • User uploaded to https://aige.ws/r and gave you the short URL. • You're in Claude Code with file access — read the file, base64-encode, pass as data:image/...;base64,....

When you have BOTH a chat-attached image AND a characterId, prefer referenceImage (the explicit upload wins) — the user wanted that specific image, not the saved avatar.

If you genuinely can't access the chat-attached bytes (your chat client shows you the image as vision content but doesn't expose it as data URL/URL for tool args): do NOT silently fall back to text-to-image. Reply to the user: 'My chat client isn't forwarding your image bytes in a tool-callable form. Options: (a) paste a public URL of the image, (b) upload to https://aige.ws/r and paste the short link, or (c) if it's a saved AIGE character, tell me their name and I'll use that.' Then wait.

Supported img2img models: nano-banana-lite, nano-banana-2 (best default for character continuation), nano-banana-pro (highest fidelity), gpt-image-2 (auto-routes to /edit), and flux-pro (auto-routes to /redux). Nano Banana and GPT Image accept ordered referenceImages; Flux uses the first reference. Recraft variants are text-only, so choose another model when a reference must be honored.

Characters and reference images COMBINE. Passing characterId alongside referenceImages sends both — the character's own images lead (identity anchors best in the first slot), your references follow. Use characterUse to say what you need from the character: face (default, the identity uploads), body (their gallery shots, for build/framing/wardrobe) or both.

Models — pick by user intent (or use the user's explicit model name). Unsure? Call antix_pick_model (free, instant) with the use case. • nano-banana-lite — 4 cr/img, cheapest + fastest. Drafts, moodboards, bulk exploration; img2img via /edit. Half the price of nano-banana-2 — use it when quantity beats polish. • nano-banana-2 — DEFAULT, 8 cr/img. Fast photoreal; character work, faces, portraits, product shots, character continuation. • nano-banana-pro — 15 cr/img. Gemini 3 Pro image preview. Highest fidelity, complex multi-subject scenes, editorial. • gpt-image-2 — 6 cr/img (medium). OpenAI GPT Image 2. Strongest at text-in-image, posters, magazine covers. Supports quality. • recraft-v4 — 4 cr/img. Recraft V4.1. Vector/illustration/icon work (text-only). • recraft-v4-pro — 25 cr/img. Recraft V4.1 Pro. Premium illustration quality (text-only). • recraft-v4-flash — 1 cr/img. Recraft V4.1 Flash — ultra-fast (1.3s), lowest-cost raster illustration/icon drafts (text-only). • recraft-v4-utility — 4 cr/img. Recraft V4.1 Utility — faster, cost-optimized for high-volume work (text-only). • recraft-v4-utility-pro — 25 cr/img. Recraft V4.1 Utility Pro — faster pro tier for studio pipelines (text-only). • flux-pro — 8 cr/img. Black Forest Labs flux-pro v1.1. Photoreal alternative; supports img2img via /redux.

Per-parameter behavior (so you know what gets honored): • model — always honored. If user names a specific model, pass it verbatim. • aspectRatio — always honored. Allowed values: 1:1, 16:9, 9:16, 4:5, 3:4, 4:3, 3:2, 2:3, 21:9, 9:21. Mapping is automatic per model: nano-banana models receive the raw string; gpt-image-2 / flux-pro / recraft receive fal's preset enum (portrait_16_9 for 9:16/9:21/2:3, landscape_16_9 for 16:9/21:9/3:2, square_hd for 1:1, etc.). Pick the closest match if user says e.g. 'portrait' (use 9:16) or 'landscape' (use 16:9). • resolution — 0.5K / 1K / 2K / 4K. Honored by nano-banana-2 (all four), nano-banana-pro (1K/2K/4K; 0.5K clamps to 1K), and GPT Image 2 (1K/2K/4K via explicit dimensions). Other models render at native resolution. • quality — auto / low / medium / high, honored by GPT Image 2. Default is medium; quality and resolution both affect the canonical credit action. Other models use their native tier. • style — photo / anime / cinematic / neutral. Non-neutral styles are injected into the provider prompt and stored for exact regeneration. • count — 1-4. Total cost = per-image-cost × count. All variants returned inline via check_task. (Note: recraft-v4 / recraft-v4-pro / recraft-v4-flash / recraft-v4-utility / recraft-v4-utility-pro have no native batch support — we fan out parallel fal calls for count > 1.) • characterId — keeps a saved AIGE character's face/style across generations. The server automatically attaches the character's saved avatar as the reference image (img2img), so just passing characterId is enough — no need to also forward the user's chat-attached image when they're working with a saved character. Unique to AIGE.

Returns: taskId, creditsSpent (charged upfront, atomically), perImageCost, creditsRemaining, estimatedSeconds, and nextStep instructions for polling. On INSUFFICIENT_CREDITS, response includes action with the URL to buy more credits. On generation failure (e.g. content_policy_violation), credits are refunded automatically.

NameRequiredDescriptionDefault
countNo
modelNo
styleNo
promptYes
qualityNo
messageIdNoOptional originating chat message id for inline media reconciliation.
projectIdNoAIGE work-project id that should receive pending and completed assets.
sessionIdNoOptional AIGE agent session id within projectId.
resolutionNo
aspectRatioNo
characterIdNo
characterUseNo
idempotencyKeyNoStable client-generated key. Retrying the same request with the same key must not charge or queue twice.
referenceImageNo
referenceImagesNo
referenceImageUrlNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the thin annotations (idempotentHint/destructiveHint false) by disclosing async queueing, return-in-<1s, poll at 10–25s, upfront atomic credit charge with per-image cost math, and automatic refunds on provider failure such as content_policy_violation. One inconsistency is left unresolved at the description level: annotations declare idempotentHint=false while the schema advertises an idempotencyKey that guarantees 'same key must not charge or queue twice' — the description never reconciles these, so retry safety is ambiguous.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the single-vs-batch decision and the async contract, then organized into bolded, skimmable sections — appropriate shape for a 16-parameter tool. It is very long, however, and the model list is partially restated across the img2img and model-selection sections, which is redundant for an agent that reads sequentially.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an async, credit-consuming, multi-model generation tool with no output schema, the description covers the full lifecycle: what is returned (taskId, creditsSpent, perImageCost, creditsRemaining, estimatedSeconds, nextStep), how to poll, and what happens on insufficient credits and on generation failure. Nothing essential to calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25%, so the description carries the burden and mostly delivers: per-parameter honor semantics for model, aspectRatio (with provider-specific preset mapping), resolution clamping, quality, style injection, count fan-out and cost multiplication, characterUse, and a 4-step reference-image resolution priority order. Gaps remain for referenceImageUrl (never explained alongside referenceImage/referenceImages) and for how the three reference variants interact.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb + resource + scope ('Generate one or more AI images for a SINGLE prompt') and immediately names the sibling it is not for — 'IF THE USER WANTS MULTIPLE DIFFERENT PROMPTS ... USE antix_generate_image_batch INSTEAD'. An agent can distinguish this from antix_generate_image_batch, antix_generate_video and antix_enhance_prompt without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing rules: single prompt here, N different prompts to the batch tool, model selection by intent, and a fallback to antix_pick_model when unsure. It also enumerates when to pass referenceImage explicitly vs. let the character gallery/avatar resolve, and tells the agent exactly what to say to the user when chat-attached bytes are unavailable instead of silently degrading to text-to-image.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_generate_image_batchGenerate Multiple AI Images in ParallelAInspect

Submit N image generations in ONE tool call so they run IN PARALLEL on fal.ai. Use this whenever the user asks for multiple different scenes / poses / variations at once (e.g. 'generate 5 different Aurora photos: beach, café, gym, library, sunset'). The user composes their list of distinct prompts in chat, you compose final prompts for each, then send them all at once via this tool.

Why this over N sequential generate_image calls: • Faster — fal processes all items concurrently, so wall time ≈ slowest single item (~15-30s), not N×T. • Atomic billing — credits for ALL items are charged in a single Firestore transaction. Either every item queues or nothing is charged. No partial charges if credit balance is tight. • One batchId to track — poll the whole batch with antix_check_batch instead of juggling N taskIds. • One inline render — antix_check_batch returns a single markdownEmbed string with all N image URLs, so you paste it once and the user sees every result inline.

Inputs: • items — array of 1-10 generation specs. Each MUST include prompt. Each MAY override aspectRatio, count, model, quality, resolution, style, referenceImage independently. • Top-level shared params (model, aspectRatio, resolution, quality, style, characterId, referenceImage) — apply to every item that doesn't override. This is the 80% case: 'use gpt-image-2 + 9:16 + Aurora's characterId for all 5 prompts.'

Same reference-resolution priority as generate_image per item:

  1. Explicit per-item referenceImage → wins

  2. Batch-level referenceImage → wins

  3. Newest entry in characterId's gallery (antix_list_character_gallery)

  4. character.avatar (legacy)

  5. Text-to-image

Returns: batchId, tasks[] (with per-item taskId, prompt, model, cost), totalCredits, creditsRemaining, estimatedSeconds (worst-case wall time), nextStep. Tell the user 'queued N generations in parallel, results in ~Xs.' Then call antix_check_batch once per ~10s until batchStatus: completed.

Limits: max 10 items per batch, max 4 variations (count) per item, so max 40 images per batch. For >10 different prompts, send multiple sequential batches.

NameRequiredDescriptionDefault
itemsYes
modelNo
styleNo
qualityNo
messageIdNoOptional originating chat message id for inline media reconciliation.
projectIdNoAIGE work-project id that should receive pending and completed assets.
sessionIdNoOptional AIGE agent session id within projectId.
resolutionNo
aspectRatioNo
characterIdNo
idempotencyKeyNoStable client-generated key. Retrying the same request with the same key must not charge or queue twice.
referenceImageNo
referenceImagesNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only carry idempotentHint/destructiveHint, so the description does the heavy lifting and does it well: atomic all-or-nothing billing, ~15-30s wall time, the exact return fields (batchId, tasks[], totalCredits, creditsRemaining, estimatedSeconds), and a polling cadence via antix_check_batch. Limits (10 items, 4 variations, 40 images) and the reference-resolution priority chain are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then structured with bold headers and bullets so an agent can skim to the relevant section. Slightly inflated by persuasive framing ('Why this over N sequential...') and duplicated limit/speed claims, but almost every sentence carries operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter tool with no output schema, the description compensates by enumerating return fields, polling behavior, billing semantics, and hard limits. Remaining shortfall: `referenceImages`, `idempotencyKey` retry semantics, and the projectId/sessionId asset-routing behavior are left to the schema (or undocumented), which matters for a paid batch operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 31% schema coverage, the description usefully explains the `items` array (1-10 entries, `prompt` required, per-item overrides), the top-level shared-param inheritance rule, and the five-step reference resolution order. The notable gap is `referenceImages` (plural, up to 10) which appears only in the schema and is never reconciled with the singular `referenceImage` priority chain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (submit N image generations in parallel) and immediately distinguishes itself from the sequential sibling by contrasting with 'N sequential generate_image calls'. An agent can route between this, antix_generate_image, and antix_check_batch without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('use this whenever the user asks for multiple different scenes / poses / variations at once') with a worked example, names the alternative it replaces, and states the boundary condition ('for >10 different prompts, send multiple sequential batches'). When-to-use and when-to-split are both covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_generate_videoGenerate AI VideoAInspect

Generate 1–4 independent AI videos from one prompt, optionally with a starting image. Set count to the requested amount (default 1); all videos queue atomically and run in parallel, while each has its own task, charge receipt, and failure refund. duration is any whole second the model renders, priced per second: kling-v3/kling-v3-fast 3-15, omni-flash 3-10, seedance 4-15, seedance-2-5 4-30, h3-max 5-15, veo exactly 4/6/8 (another value snaps to the nearest length the model renders). The response preserves taskId for the first output and also returns batchId, taskIds, and tasks; for count > 1 poll once with antix_check_batch, otherwise call antix_check_task (typically 30–90s). Supports character/scene continuity from a starting frame. Charged at the same rate as the AIGE web app. Unsure which model? Call antix_pick_model (free, instant).

Models (credits at 5s/8s/10s): • omni-flash — 50/80/100 cr at the default 720p, audio BUNDLED (dialogue, sfx, ambience in the same pass). Priced per second BY resolution: 360p is 15/24/30 cr (the cheapest clip with sound anywhere in this list), 1080p is 75/120/150, 4k is 150/240/300 — so state the tier when you quote it. Supports text/image/reference-to-video, an optional endImage, and prompt-based source-video editing (editing is a flat 140 cr at 720p). First pick for fast talking clips and social content with sound. • kling-v3 — 84/135/168 cr with audio (the default), 56/90/112 cr silent (audio: false). Top cinematic quality, fluid character animation, start+end frame control. • kling-v3-fast — Kling V3 Standard, the lower-cost tier: 63/101/126 cr with audio, 42/68/84 cr silent. Pick when cost or turnaround matters more than polish. • veo — 240/320/320 cr, audio included. Google's flagship: best prompt adherence and physical realism; renders exactly 4/6/8s (5→6s, 10→8s). Retiring: Google retires Veo 3.1 on 17 Nov 2026; once AIGE switches it off the call is refused before any charge — use omni-flash instead (1080p costs what Veo Fast did). • seedance — 152/242/303 cr, audio included. Motion-rich dynamic action, expressive camera moves, start+end frames, and multimodal reference mode. • seedance-2-5 — 232/370/463 cr, audio included. The longest single take: any whole duration from 4 to 30 seconds as one continuous shot, priced per second (30s = 1387 cr at 720p, 617 cr at 480p — long takes are expensive, so confirm the length with the user before queueing one). Caps at 720p. Takes up to 50 references (30 images / 10 videos / 10 audio) to lock a character, set and palette across the whole shot. Pick it for long single-shot storytelling; pick seedance when 1080p matters more than length. • h3-max — 40/64/80 cr at 768P, 25/40/50 cr at 480P: the CHEAPEST video in the catalogue, with audio BUNDLED at no extra cost. Audio is always on and cannot be disabled (passing audio: false is rejected rather than silently ignored). Any whole duration from 5 to 15 seconds, priced per second. Supports text/image-to-video plus an optional endImage for a directed transition. Pick it for bulk drafts, animatics, b-roll and silent loops.

Starting-frame priority: pass sourceImage (HTTPS URL or base64 data URL) when the user attaches/provides a specific frame. Legacy sourceImageUrl also works. If there is no explicit source image but the user named a saved AIGE character, pass characterId — the server will use that character's latest gallery image, then avatar, before falling back to text-to-video. endImage / endImageUrl can provide a tail frame for models that support it.

Video/audio sources from chat: sourceVideo, referenceVideos and referenceAudios accept HTTPS URLs only — video bytes are too large for base64 tool args. The user path: upload at https://aige.ws/r (accepts MP4/WebM/MOV ≤50MB and MP3/WAV/OGG/M4A/FLAC ≤15MB, returns a short link) → paste the link → you forward it in the matching field. A URL of a previous AIGE generation (from antix_get_history or a completed task) works directly. If the user attached a video in chat and you cannot access it as a URL, do NOT silently generate without it — tell them: 'Upload it at https://aige.ws/r and paste the short link here.' Then wait.

NameRequiredDescriptionDefault
audioNo
countNo
modelNo
promptYes
durationNo
endImageNo
messageIdNoOptional originating chat message id for inline media reconciliation.
projectIdNoAIGE work-project id that should receive pending and completed assets.
sessionIdNoOptional AIGE agent session id within projectId.
resolutionNo
aspectRatioNo
characterIdNo
endImageUrlNo
sourceImageNo
sourceVideoNo
idempotencyKeyNoStable client-generated key. Retrying the same request with the same key must not charge or queue twice.
sourceImageUrlNo
referenceAudiosNo
referenceImagesNo
referenceVideosNo

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only declare destructiveHint=false and idempotentHint=false, so the description carries the behavioral burden and does add real value: atomic queueing, per-video charge receipts and failure refunds, ~30–90s polling latency, forced-audio rejection on h3-max, and the Veo retirement cutoff. However, most of the volume is pricing/marketing detail rather than operational behavior (no mention of concurrency limits, what happens to partial batch failures, or how long assets persist), so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded correctly: the first two sentences cover the core action, batching, and polling. But the body balloons into a multi-tier credit price list per model and per resolution, which is far more than an agent needs to select and invoke the tool and buries the operational rules (source-image priority, upload path) mid-document.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 20-parameter, 7-model generation tool with no output schema, the description explains the return shape (taskId, batchId, taskIds, tasks), the correct follow-up polling path per count, billing/refund semantics, and input-source prerequisites. An agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 20% schema description coverage across 20 parameters, the description compensates heavily: it constrains `duration` per model (including Veo's exact 4/6/8 snap behavior), documents count semantics, sourceImage vs legacy sourceImageUrl vs characterId priority, endImage as tail frame, HTTPS-only rules for sourceVideo/referenceVideos/referenceAudios, and resolution-dependent pricing. Only aspectRatio and the projectId/sessionId plumbing go unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opening sentence states a specific verb and resource with scope: 'Generate 1–4 independent AI videos from one prompt, optionally with a starting image.' It also distinguishes itself from siblings by naming follow-up tools (antix_check_batch vs antix_check_task) and by routing model uncertainty to antix_pick_model.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use rules per model ('First pick for fast talking clips and social content with sound', 'Pick it for bulk drafts, animatics, b-roll', 'pick seedance when 1080p matters more than length'), plus when to use batch polling, how to choose sourceImage vs characterId, and a hard when-not with the exact user-facing message for inaccessible chat videos.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_get_brand_kitGet Brand KitA
Read-onlyIdempotent
Inspect

Read this user's saved AIGE Atelier brand kit — their palette, font families, uploaded logo files and uploaded font files — as last synced from the Atelier. FREE and read-only: it spends no credits and changes nothing. Call it BEFORE you design, illustrate or write anything branded for them. When they have never saved a kit the response is exists: false: say so plainly and ask for their colors and fonts. Never invent a brand color, font or logo, and never claim a brand kit was applied when exists is false. logos and customFonts[].url are ready-to-use https file URLs — hand them over verbatim (e.g. as a referenceImage) and never re-derive them. This is a mirror, so a kit cleared in the Atelier can still appear here: treat it as the user's last saved brand, not a guarantee of what they see right now.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds context beyond them: no credits are spent, the data is a mirror that may lag the Atelier, and logos/customFonts[].url are ready-to-use https URLs that must not be re-derived. That is real behavioral disclosure, not a restatement of hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource and its contents, then the trigger, then the failure mode and caveats — a good ordering. Slightly long for a zero-parameter read tool; the 'never invent a brand color, font or logo' sentence partially repeats the preceding exists: false instruction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does it: it names the key fields, the empty-state signal (`exists: false`), the URL format, and the staleness caveat. An agent can call it and interpret the response without further information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero input parameters, so the baseline of 4 applies; nothing needs documenting in the schema. The description instead documents the response keys (`exists`, `logos`, `customFonts[].url`), which is useful but belongs more to output semantics than to parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (read) plus resource (this user's saved brand kit) with the contents enumerated: palette, font families, logo files, font files. No sibling tool covers brand-kit retrieval, and the description makes the boundary obvious against the many generation/set-* siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Call it BEFORE you design, illustrate or write anything branded'), covers the negative case (exists: false → say so plainly and ask for colors/fonts), and adds a staleness caveat about the mirror. Both when-to-call and what-to-do-on-empty are spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_get_creditsGet Credit BalanceAInspect

Get the user's current AIGE credit balance, subscription plan, and daily-free-credit allowance. Call this when generating fails with INSUFFICIENT_CREDITS, when the user asks 'how many credits do I have', or proactively before queuing many generations. Returns balance, plan name, dailyFreeRemaining, and a purchase URL the user can visit to buy more credits.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden, and it does disclose the return shape (balance, plan name, dailyFreeRemaining, purchase URL). For a zero-parameter read it omits little of consequence — no mention of caching or rate limits, but risk is inherently low and the 'Get' framing plus enumerated outputs implies a safe read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no waste: purpose first, triggers second, return contents third. Each sentence adds information an agent needs and none restates the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must enumerate what comes back — and it does, including the actionable purchase URL. Combined with the trigger conditions, an agent has everything needed to decide when to call and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; the description correctly says nothing about parameters and instead spends that space on return values, which is the only semantic content available.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Get the user's current AIGE credit balance' — plus the two adjacent data points (subscription plan, daily-free allowance) it returns. No sibling tool does anything similar, so the agent can immediately separate this from the many generation/deck tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives three explicit triggering conditions: failure with INSUFFICIENT_CREDITS, a direct user question about credit count, and proactively before queuing many generations. This is exactly the when-to-use guidance that most definitions omit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_get_deckView an Instagram Carousel DeckA
Read-onlyIdempotent
Inspect

Read one of the user's Instagram carousel decks (or list them all) with SERVER-RENDERED slide previews. FREE, read-only. Omit deckId to list decks newest-first; pass deckId for the full deck: per-slide preview URLs, copy headlines, paid-background flags, and a fidelity report.

Previews are faithful layout approximations, not pixel-exact exports — they are rasterised from the deck's vector layout on the server; effects like glass/blur, image crop pan-zoom, and exotic gradients are simplified, estimated line breaks are flagged TEXT_WRAP_ESTIMATED, and fidelity.exact=false whenever anything was approximated. The user's browser export remains the source of truth for final pixels.

Instagram autopublish is NOT available (publish.instagram.available=false in every response) — do not promise posting to Instagram; the deck can be exported or (later waves) published to AIGORA.

Each slide also carries exportUrl: the PERMANENT full-resolution file when one already exists for this designVersion, else null. export.available says whether any exist. Preview URLs are for showing the slides in chat and are cleared by the daily scheduled preview cleanup (14 days); when a scheduler, an uploader or a download needs the real files, call antix_export_deck.

Embed the returned preview URLs in your reply (see markdownEmbed) so the user SEES the slides. Poll cheaply after edits by passing knownDesignVersion (unchanged version skips re-rendering) and slideIds to re-render only edited slides. previewStatus:"partial" means some slides hit the time budget — call again to finish, never assume they failed.

NameRequiredDescriptionDefault
limitNoList mode only: max decks to return (default 10).
deckIdNoDeck to load. Omit to LIST the user's decks (newest first) instead.
localeNoUI language for the deck panel.
slideIdsNoRender previews only for these page ids (after edits).
projectIdNoAIGE project whose Canvas should receive the refreshed deck.
refreshPreviewsNoForce re-render even when upToDate.
knownDesignVersionNoPass the designVersion you already rendered; if unchanged the server skips re-rendering and sets upToDate.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (read-only, idempotent, non-destructive), and the description adds substantial context beyond them: previews are rasterised approximations with specific simplifications (glass/blur, pan-zoom, exotic gradients), `fidelity.exact=false` signals approximation, preview URLs expire on a 14-day cleanup while `exportUrl` is permanent, and `knownDesignVersion` lets unchanged decks skip re-rendering. This is materially useful behavior an agent would otherwise have to infer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the mode split and the primary capability, then layers caveats in a defensible order. It runs long with heavy bold emphasis and some density around export/preview URL lifetimes, but nearly every sentence carries an operational constraint rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With seven parameters and no output schema, the description carries the burden of describing the response shape — per-slide preview URLs, copy headlines, paid-background flags, and a fidelity report — and it also explains the durability of `exportUrl` versus ephemeral previews. Nothing an agent needs to call this correctly and interpret the result is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, yet the description still adds semantics the schema cannot: `deckId` omitted flips the tool into list mode, `knownDesignVersion` suppresses re-rendering when unchanged, and `slideIds` re-renders only the edited slides for cheap polling. That is interaction-level meaning rather than a restatement of field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource — 'Read one of the user's Instagram carousel decks (or list them all)' — and immediately flags the distinguishing feature: server-rendered slide previews. The dual list/detail mode is stated in the first sentence, so an agent can separate it from siblings like antix_export_deck or antix_get_instagram_audit without inspecting the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit routing rules: omit `deckId` to list newest-first, pass `deckId` for the full deck, and use `antix_export_deck` when an actual file is needed for a scheduler, uploader or download. It also gives a hard negative ('do not promise posting to Instagram') and a recovery rule for `previewStatus:"partial"` — call again, don't assume failure.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_get_historyGet Generation HistoryAInspect

Get the user's recent AIGE generation history (images and videos). Each item includes the prompt used, the result URL, and a thumbnail. Filter by type: 'image' or 'video'. Useful when the user says 'show me my recent generations', 'what was that prompt I used yesterday', or wants to remix/post a previous generation. Returns up to 200 items per call. The newest few items come back as inline image previews; on MCP Apps hosts a browsable gallery panel renders alongside (filter, load more, post to AIGORA).

NameRequiredDescriptionDefault
typeNo
limitNo
cursorNo
projectIdNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does substantial work: it discloses the 200-item cap per call, that the newest items return as inline image previews, and that MCP Apps hosts render a browsable gallery panel with filter/load-more/post actions. It omits ordering guarantees, whether results are strictly scoped to the calling user/workspace, and any auth or rate-limit context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, followed by return shape, filter, triggers, and UI behavior — a sensible ordering. All six clauses carry information, though the gallery-panel sentence could be trimmed without losing call-critical detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description still describes the returned fields, the result cap, and host-rendered UI side effects, which is most of what an agent needs. The unexplained `projectId` filter and vague cursor pagination are the remaining holes for this zero-required-param read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning. It explains `type` ('image' or 'video') and constrains `limit` via 'up to 200 items per call', but `cursor` is only hinted at through 'load more' and `projectId` is never mentioned at all — an agent would not know they can scope history to a project.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Get the user's recent AIGE generation history (images and videos)' — plus the scope (per-user, recent) and item contents (prompt, result URL, thumbnail). No sibling in the list covers generation history, so an agent can route here without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete trigger phrasings ('show me my recent generations', 'what was that prompt I used yesterday') and downstream intents (remix/post a previous generation), which is clear positive guidance. It never states when NOT to use it or names an alternative sibling (e.g. antix_get_post, antix_list_projects), so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_get_instagram_auditGet Instagram AuditA
Read-only
Inspect

READ-ONLY Instagram analytics: the latest account audit the AIGE growth agent produced (overall score, per-area findings with severity, recommendations, suggested bio). Omit handle to list every account the user has analyzed; pass a handle for that account's full audit. Use when the user says 'show my Instagram analytics', 'how is my account doing', or asks about a past audit. This tool never scrapes, never analyzes, and never spends credits — a FRESH audit runs in the AIGE app (the response carries openUrl). On MCP Apps hosts an insights panel renders scores and findings inline; for other clients, follow the returned markdownEmbed instruction.

NameRequiredDescriptionDefault
handleNoInstagram handle to read the audit for (with or without @). Omit to LIST the accounts the user has analyzed.
localeNoUI language for the insights panel.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true; the description adds substantial context beyond that — no scraping, no analysis, no credit spend, the response carries an openUrl for running a fresh audit, and it explains host-dependent rendering (inline insights panel on MCP Apps hosts, markdownEmbed elsewhere). That is exactly the operational detail an agent needs to set expectations with the user.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the read-only framing and what is returned, then routing rules, then boundaries, then rendering. Every sentence carries distinct information — no filler or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must describe returns — and it does, listing the audit fields, openUrl, and markdownEmbed. For a zero-required-parameter read tool this is close to complete; only the shape of the list mode (what an account entry looks like) is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are already documented, including the omit-to-list behavior. The description restates the handle semantics but adds no format or behavior detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('READ-ONLY Instagram analytics: the latest account audit the AIGE growth agent produced') and enumerates the payload (overall score, per-area findings with severity, recommendations, suggested bio). It also distinguishes itself from a fresh audit, which no sibling tool provides, so the agent can route correctly without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit both ways: 'Omit `handle` to list every account... pass a handle for that account's full audit.' It adds natural-language triggers ('show my Instagram analytics', 'how is my account doing') and an explicit when-not ('This tool never scrapes, never analyzes... a FRESH audit runs in the AIGE app').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_get_postGet Post StatusA
Read-onlyIdempotent
Inspect

One booked post: status, time, media, permalink once live, providerPostId (the post's id on its platform once it is live — a Threads post id or an Instagram media id; threads.extras.quotePostId takes a Threads post id to quote it) and the plain reason when it failed. FREE and read-only. Use it to confirm a post went live — only status: published with a permalink means it is live; an in-progress status means Meta is still processing (videos take a few minutes). followUpState / followUps show the first comment or a thread's replies, in order, each with its text: "waiting" = the post is not live yet, so none has started; "pending" = the post is live and they are still posting; "done" = nothing is left to do, and each item is "done" (posted; a reply has its own permalink) or "skipped" (NOT sent — its error says why, for example the user posted the post themselves, the user cancelled the post, or the account asked Meta to delete its data from AIGE) — when every item is skipped, say they were not sent, never that they were posted; "attention" = one ended "failed" (it did not post) or "unknown" (it may or may not have posted) and the ones after it were skipped — explain its error and never offer to post it again without the user checking the post first. A post in handoff_ready was NOT published by AIGE — the user posts it by hand: followUps[].text is what they add as the first comment or the thread's other posts, handoffNotes lists what else they set themselves, and statusHint says it.

NameRequiredDescriptionDefault
postIdYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered and "FREE and read-only" is redundant. The description earns credit by disclosing semantics beyond annotations: the meaning of each status/followUp state, that a skipped item was NOT sent, and that handoff_ready posts were not published by AIGE. It says nothing about error behavior for an unknown postId or any rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense run-on paragraph mixing return fields, status interpretation and handoff rules, with nested quotes that are hard to scan. Front-loading is good (it starts with what is returned), but the parenthetical about `threads.extras.quotePostId` belongs to another tool and dilutes focus.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates thoroughly by explaining status, permalink, followUpState/followUps, skipped vs failed, and handoff fields. The only real gap is identifying what postId to pass and what happens when the post is not found.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the sole parameter postId is only constrained by pattern/length, so the description must carry the meaning. It never says the input is the AIGE post id or where to obtain it; the contrast with `providerPostId` ("the post's id on its platform") only partially implies the distinction.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description makes clear this returns a single booked post with its status, time, media, permalink and IDs, which distinguishes it from list-style siblings like antix_list_scheduled_posts. It never states the verb plainly ("fetch/retrieve a post by postId"), but the resource and scope are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance: "Use it to confirm a post went live," with the decision rule that only status: published plus a permalink means live, and that in-progress means Meta is still processing. It also prescribes behavior for followUpState values and handoff_ready. It lacks an explicit "don't use this for X, use sibling Y instead" routing statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_list_channelsList Social ChannelsA
Read-onlyIdempotent
Inspect

List the user's connected Instagram and Threads accounts (channels): handle, accountType, status, whether AIGE can post to it right now (available), autopilot, how many posts are waiting against the per-channel cap, the permissions the user granted (grantedScopes), and — when the user set posting times — the weekly schedule (queueSlots) and the next time on it that no waiting post holds (nextQueueSlot, ISO-8601 UTC, null if none). accountType is the Instagram account's type ("business", "creator", "personal" or "unknown"; null on Threads): AIGE posts an Instagram Story only on a "business" account — on any other type a Story is booked as a reminder the user posts themselves, and the booking reply says so. queueSlots is { timezone, times: [{ day, minute }] }: day 0 = Sunday … 6 = Saturday, minute = minutes after local midnight in timezone (540 = 09:00). features (top level) says which post options are switched on: instagramCollaborators and instagramUserTags are false until Instagram is shown to accept collaborator invites / photo tags from AIGE — don't offer collaborators or tagging people while the matching one is false. FREE and read-only. Call it BEFORE antix_compose_social_post — only channels with available:true can be posted to. Connecting or reconnecting a channel happens in the browser (Meta's sign-in can't run inside a chat): hand the user connectUrl.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/non-destructive annotations, the description discloses that the operation is FREE, explains how channel availability works, clarifies Instagram Story behavior by accountType, and defines queue-slot timing semantics. It also warns that Meta sign-in cannot run inside chat and must happen in the browser. These are substantial behavioral details beyond structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and usage rule are front-loaded, and most clauses earn their place because there is no output schema to document return fields. However, the description is a single dense paragraph with multiple nested clauses, so structure could be improved for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and zero parameters, the description carries the full burden of explaining what the tool returns. It defines the key response fields, accountType semantics, available status, queueSlots format, nextQueueSlot ISO-8601 behavior, and connectUrl usage. That is complete for an agent to call and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is no parameter syntax to explain and the baseline is 4. The description appropriately spends its detail on return-value semantics instead.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a specific verb and resource: listing the user's connected Instagram and Threads accounts. It enumerates the channel fields returned and explicitly differentiates the tool from antix_compose_social_post by stating it should be called first. An agent can identify exactly what this tool does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit sequencing rule: call this BEFORE antix_compose_social_post because only channels with available:true can be posted to. It also names the alternative workflow for connecting or reconnecting a channel through the browser and connectUrl. Feature-gated guidance for collaborators and tagging is also included.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_list_charactersList CharactersAInspect

List the user's saved AIGE characters. Each character has: id (pass to generate_image as characterId), name, description, avatarCount, avatarUrl (direct URL to the character's primary face image — this is the image the server auto-attaches as the img2img reference whenever you pass characterId without an explicit referenceImage), and createdAt. Also returns activeCharacterId — the character the user is currently working with on aige.ws.

How character consistency works: when you pass characterId to antix_generate_image, the server reads that character's avatarUrl from Firestore and uses it as the img2img reference. This is what makes 'generate Aurora on a beach' produce the same Aurora across generations. The user maintains each character's avatarUrl via the AIGE web app (aige.ws — pick a character, change the avatar). If a character has avatarCount: 0 / no avatarUrl, the generation falls back to pure text-to-image based on the character's name + description.

Call this when the user mentions a character by name, asks 'what characters do I have', wants to verify which avatar AIGE will use for img2img, or before generating an image where the user wants a specific person/face.

NameRequiredDescriptionDefault
limitNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses that avatarUrl is auto-attached as the img2img reference, that Firestore is the backing store, that the user maintains avatars via aige.ws, and that avatarCount 0 degrades to text-to-image. It omits ordering, default page size, and any auth/scope notes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and field list are front-loaded, followed by a clearly labeled mechanism section and a trigger list. It is longer than most list tools need, but the img2img explanation genuinely earns its space; the typographic styling is slightly noisy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by documenting every returned field and the meaning of activeCharacterId. The one real gap is the undocumented `limit` input, which leaves an agent guessing about pagination behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter `limit` has 0% schema description coverage and the description never mentions it, its default, or its 1-200 range. All of the prose is about return fields, leaving the only input completely undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the user's saved AIGE characters') and enumerates the returned fields, so the agent knows exactly what comes back. It does not differentiate itself from the similarly named sibling antix_list_character_gallery, which is the one plausible source of confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives four concrete invocation triggers: user names a character, asks 'what characters do I have', wants to verify which avatar will be used for img2img, or is about to generate an image of a specific person/face. No when-not conditions or named alternative tools are given, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_list_projectsList AIGE Work ProjectsA
Read-onlyIdempotent
Inspect

List the user's AIGE work projects and return valid projectId targets for generation. Call this when the user says 'put it in my project', names a project, or wants MCP output to appear live in the same AIGE workspace. Pass the selected id as projectId to image, image-batch, or video generation; omit characterId to use the project's mirrored character automatically.

NameRequiredDescriptionDefault
limitNo
includeArchivedNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only/idempotent/non-destructive profile, and the description adds non-obvious behavioral context: results are valid projectId inputs to specific generation tools, and omitting characterId falls back to the project's mirrored character. It does not disclose ordering, pagination, or default filtering behavior, so it stops short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what it does and immediately followed by triggers and the downstream handoff. The trigger list is slightly crammed into one sentence but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only list with no output schema, the description supplies the essential missing piece (what the returned ids are for) and the implicit character fallback. The only real hole is parameter behavior, which is addressed in the parameter dimension.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description says nothing about either parameter. limit and includeArchived are left entirely to bare schema typing with no guidance on defaults or when to set them, so the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List the user's AIGE work projects") and adds the output contract that matters: it returns valid projectId targets for generation. That distinguishes it from the sibling list tools (antix_list_characters, antix_list_channels) without the agent needing to open a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit trigger phrases ("put it in my project", naming a project, wanting output live in the same AIGE workspace) and names the downstream tools that consume the id (image, image-batch, video). This is a clear when-to-use plus how-to-continue chain.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_list_scheduled_postsList Scheduled PostsB
Read-onlyIdempotent
Inspect

The user's Instagram/Threads posts booked through AIGE, newest first: status (scheduled, awaiting_approval, published, handoff_ready, failed and the in-progress states), time, permalink and failure reason, with the same fields as antix_get_post (follow-ups with their text, handoffNotes, statusHint). Filter by status or channelId. FREE and read-only.

NameRequiredDescriptionDefault
limitNo
statusNo
channelIdNo

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, and non-destructive behavior. The description adds useful context beyond them: results are newest-first, include status, time, permalink, failure reason, follow-up text, handoffNotes, and statusHint, and the call is FREE. It still omits pagination/default limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the resource and return shape, then filter options and cost. It is dense but mostly earns its space; the parenthetical status list is somewhat duplicative of the schema enum, though it adds categorization.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does a good job naming returned fields and ordering. It is less complete on limit/pagination behavior and does not fully explain all status values, but for a simple read-only list it is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must document all three parameters. It explains status and channelId as filters but never mentions the limit parameter or its default/max, and its status examples omit enum values such as missed, needs_review, cancelled, and posted_manually.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: lists the user's Instagram/Threads posts booked through AIGE, newest first, with status/time/permalink/failure fields. It distinguishes this from antix_get_post by describing a collection and referencing shared fields, but it does not explicitly distinguish it from other list/history siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by explaining that results can be filtered by status or channelId and are read-only/free. However, it gives no explicit when-to-use/when-not guidance or alternatives such as antix_get_history.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_pick_modelPick the Right AIGE ModelA
Read-onlyIdempotent
Inspect

Deterministic model routing — tells you WHICH image/video model fits a job and the exact params to pass. FREE (no credits, no API call, instant). Call it whenever the user hasn't named a model and the choice isn't obvious, or when they ask 'which model should I use'.

Inputs: kind (image|video), plus any of: useCase (free text — 'poster with a big headline', 'cheap drafts of 10 scenes', 'talking reel with sound'), priorities (cost, speed, fidelity, text-in-image, vector, character-consistency, audio, high-resolution, motion, cinematic), needsImg2img (image), needsAudio/duration (video), count.

Returns: recommended {model, estimatedCredits, rationale, suggestedParams — pass these straight to antix_generate_image / antix_generate_video}, a runnerUp, honest consider caveats (e.g. 'kling-v3-fast is NOT cheaper than Pro'), and notes.

Quick map: photoreal/character → nano-banana-2; cheap drafts/bulk → nano-banana-lite; words inside the image → gpt-image-2; icons/vector → recraft-v4; max fidelity/4K → nano-banana-pro; video with sound → omni-flash (audio bundled, cheapest; pick the resolution tier); cinematic video → kling-v3; dynamic action no audio → seedance; cheapest with sound → h3-max. The full live guide is in the antix://models resource.

NameRequiredDescriptionDefault
kindYesWhat is being generated.
countNoHow many images.
qualityNo
useCaseNoFree-text job description, e.g. 'poster with a big headline', 'cheap drafts of 10 scenes', 'talking-head reel with sound'.
durationNoVideo only: clip length in whole seconds. Each model is quoted at the nearest length it renders (kling 3-15, omni-flash 3-10, seedance 4-15, seedance-2-5 4-30, h3-max 5-15, veo 4/6/8).
needsAudioNoVideo only: the clip needs sound.
prioritiesNoWhat matters most, in order.
resolutionNoRequested output resolution, when supported.
aspectRatioNo
needsImg2imgNoImage only: a reference image / saved character face must be honored.
needsEndFrameNoVideo only: both a start and end frame must be honored.
needsAudioReferenceNoVideo only: one or more reference audio files must be honored.
needsVideoReferenceNoVideo only: one or more reference videos must be honored.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds non-derivable behavior: it is deterministic, makes no API call, costs no credits, and is instant. It also discloses the return shape (recommended + suggestedParams pass-through, runnerUp, 'honest' consider caveats such as a model not actually being cheaper) — meaningful for a tool with no output schema, and it points to antix://models for the live guide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core claim and the cost/latency reassurance, then cleanly sectioned into Inputs / Returns / Quick map. It runs long and the hardcoded model map partially duplicates what the tool computes at runtime (and may drift from the antix://models resource), but every block is scannable and purposeful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter tool with no output schema, it supplies the two things an agent most needs: when to invoke it and what comes back (recommended, runnerUp, caveats, notes). Minor gaps remain — quality/resolution/aspectRatio semantics are left to the schema — but nothing blocks a correct call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 85%, so the schema already carries most parameter meaning; the description mainly restates a subset (kind, useCase, priorities, needsImg2img, needsAudio, duration, count). It adds some value with concrete free-text useCase examples, but omits quality, resolution, aspectRatio and the three reference-flag params entirely, so it does not extend much beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'deterministic model routing' that returns which image/video model fits and the exact params — and explicitly positions itself upstream of antix_generate_image / antix_generate_video, so it is unmistakable against its siblings. An agent knows this is a decision tool, not a generation tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('whenever the user hasn't named a model and the choice isn't obvious, or when they ask which model should I use') and an implicit exclusion (if the user named a model, skip it). The 'FREE (no credits, no API call, instant)' note removes the usual hesitation about calling a helper tool, which is exactly the routing guidance an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_publish_deckPublish Deck to AIGORAAInspect

Publish a finished carousel deck to the AIGORA feed — the only live publish target. FREE. Slide images resolve in order: a browser-finalized export always wins (it is what the user approved); otherwise the slide is rendered server-side at full resolution and the response reports exportSource: "server_rendered" (or "mixed") — in that case the PUBLISHED image itself is the vector approximation, say so. The response's slideUrls[] are the exact permanent image URLs that were posted, in slide order — hand those (or antix_export_deck's bufferAssets) to a scheduler; never re-derive them. Caption + hashtags are moderated together with every image's bytes by the same pipeline as antix_create_post; nothing posts if moderation refuses. Instagram autopublish is NOT available — this posts to AIGORA (aigora.ws), and every response carries publish.instagram.available=false; never imply otherwise.

NameRequiredDescriptionDefault
deckIdYes
captionNo
hashtagsNo
accountHandleNo
idempotencyKeyNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the thin annotations: FREE, moderation of caption + hashtags + image bytes with nothing posting on refusal, and the exportSource resolution rule (browser-finalized export wins; server_rendered is a vector approximation that must be disclosed). Annotations only declare idempotentHint=false and destructiveHint=false, so this added detail is valuable. It never explains that idempotencyKey is the retry-safety mechanism despite idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and the publish target, then layers the details that matter (export resolution, URL reuse, moderation, no Instagram). Dense but nearly every clause carries operational information; the Instagram paragraph is somewhat long relative to its single fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description explains the key response fields (exportSource values, slideUrls[] ordering and permanence, publish.instagram.available=false) and failure behavior, which is exactly what an agent needs. The gap is input-side: with five parameters and zero schema descriptions, an agent gets no guidance on caption/hashtags/accountHandle/idempotencyKey usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 5 parameters, and the description mentions no parameter by name — caption limits, hashtag count/moderated status, accountHandle, and especially idempotencyKey semantics are entirely undocumented. The only implicit parameter mapping is 'a finished carousel deck' → deckId, which the required field already conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+destination: 'Publish a finished carousel deck to the AIGORA feed — the only live publish target.' It explicitly distinguishes itself from antix_create_post (moderation pipeline reference) and antix_export_deck (scheduling handoff), and rules out Instagram in bold.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-to-use context ('the only live publish target'), tells the agent what to do with the output (hand slideUrls[] to a scheduler, never re-derive), and names a hard exclusion (no Instagram autopublish). It does not state preconditions such as deck readiness (e.g., antix_check_deck_readiness) or when to prefer antix_create_post instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_render_deck_videoRender Deck to VideoAInspect

Turn a finished carousel deck into an MP4 that is SAVED IN THE USER'S AIGE ACCOUNT (it appears in their AIGE history and in antix_get_history). FREE — it spends no credits. Each slide is rendered server-side at full resolution and held for secondsPerSlide (1-10s, default 3), joined either with a short crossfade (transition = fade, the default) or with hard cuts (transition = none). 2-10 slides, 60 seconds maximum, 1080p at the deck's own carousel aspect (1:1, 4:5 or 9:16) — a deck of any other shape is refused as DECK_ASPECT_UNSUPPORTED rather than silently letterboxed. Optional audioUrl must be a plain https URL on an AIGE media host, and is trimmed to the video length.

This is ASYNCHRONOUS: it returns a taskId plus the exact durationSeconds the file will run — then poll antix_check_task, which returns the poster, the play link and the direct .mp4 URL. Renders are limited to 6 per 5 minutes per account, and a replay (reusing the same idempotencyKey) counts against that too. If that task comes back failed with DECK_VIDEO_BUSY, the render queue was full and NOTHING was retried for you: wait a few minutes, then call antix_render_deck_video again, omitting idempotencyKey or passing a new one (reusing the old key just hands back the same failed task). Server-rendered slides are faithful layout approximations, not the browser's pixel-exact export; say so if the user asks about fidelity.

Instagram autopublish is NOT available — this renders a file and saves it to the account; hand it to the user or to their own scheduler. To post to a connected Instagram/Threads channel instead, use antix_compose_social_post.

NameRequiredDescriptionDefault
deckIdYesThe deck to render. Get ids from antix_get_deck.
audioUrlNoOptional soundtrack. Must be a plain https URL on an AIGE media host (no custom port, no embedded credentials); it is trimmed to the video length.
projectIdNoAIGE work project the finished video is filed under. Get ids from antix_list_projects.
transitionNoSlide-to-slide transition. Default fade (a short crossfade); none gives hard cuts.
idempotencyKeyNoReusing a key returns the SAME task instead of starting a second render. Omit it (or use a new one) when you deliberately want another render.
secondsPerSlideNoHow long each slide is held, in seconds (1-10). Default 3.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only cover destructiveHint/idempotentHint. The description adds the async taskId contract, the account-global rate limit of 6 renders per 5 minutes, the fact that a key-replay counts against it, the cost (free, no credits), the input validation of deck aspect (DECK_ASPECT_UNSUPPORTED rather than letterboxing), the queue-full failure mode, and the fidelity caveat. That is exactly the kind of context annotations cannot provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the outcome (MP4 saved to the account) and the cost (free), then the async contract. It is dense but every sentence earns its place; the uppercase emphasis and parenthetical asides make it slightly heavier than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description fully covers what comes back: a taskId plus durationSeconds, then polling that yields poster, play link and direct .mp4 URL. It also covers the failure path and the fidelity caveat, so an agent can call and follow up correctly without other sources.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, so the baseline is 3. The description adds real meaning beyond the schema: how secondsPerSlide affects the held duration, what transition=fade actually does, that audioUrl is trimmed to the video length, and that reusing idempotencyKey after a failure hands back the same failed task instead of retrying.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: turns a finished carousel deck into an MP4 saved in the user's AIGE account. It also distinguishes itself from the nearest siblings by name: antix_compose_social_post for actually posting, and antix_check_task for polling the result.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly scopes when to use it (render a file and hand it off) and when not to (Instagram/Threads autopublish is NOT available — use antix_compose_social_post). It also names the follow-up step (poll antix_check_task) and the retry procedure after DECK_VIDEO_BUSY.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_reorder_slidesReorder the slidesA
Destructive
Inspect

Use this when the user asks 'move slide 4 to the front' or 'swap slides 2 and 3'. Put the slides in a new order: pass every slide id of the deck, in the order wanted. Require the current expectedVersion; on DECK_CONFLICT, read the deck again and repeat the same intended change. Free.

NameRequiredDescriptionDefault
orderYes
deckIdYes
localeNo
projectIdNoAIGE project whose Canvas should receive the updated deck.
accountHandleNo
expectedVersionYesREQUIRED: the deck version you last read. A stale value fails with DECK_CONFLICT before any work.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and idempotentHint=false; the description adds real context beyond them: optimistic-concurrency via expectedVersion, the DECK_CONFLICT failure mode and retry protocol, and the cost ('Free'). It confirms the full-replacement nature of `order` (every slide id required), which is consistent with the destructive annotation. It doesn't say whether existing slide content/ids are preserved or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the trigger and the core contract, with no filler. Every clause (order contract, version requirement, conflict handling, cost) carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive reorder with no output schema and six params, the description covers the essentials: what the argument must contain, the concurrency precondition, the failure mode and recovery, and that it costs nothing. The unmentioned params are optional and self-describing in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%, and the description compensates for the two highest-risk params: `order` must contain every slide id in the desired sequence (a non-obvious full-replacement contract), and `expectedVersion` is mandatory with a stale value failing before any work. The three ancillary params (locale, accountHandle, projectId) are left entirely to the schema, so it is not complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Put the slides in a new order') and pins down the exact payload semantics (pass every slide id, in the order wanted), which separates it from the layout/edit siblings by implication. It never names antix_apply_deck_layout or antix_edit_deck_slides to draw the boundary explicitly, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete trigger phrasings ('move slide 4 to the front', 'swap slides 2 and 3') and recovery guidance for DECK_CONFLICT (re-read and repeat the same intended change). No when-not guidance or named alternative for cases where the agent may wrongly reach for this tool instead of a layout tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_save_to_memorySave File to AIGE MemoryAInspect

Pin a FILE (image, video, PDF, markdown — any asset URL) to the user's long-term AIGE memory with a label and optional tags. The pinned file appears in the AIGE agent's @-mention picker on aige.ws and persists across sessions.

Use when the user says 'remember this reference', 'save this for later', 'keep this brand guide', or wants an asset available to their AIGE agent going forward. For character reference images specifically, prefer antix_add_to_character_gallery (those drive img2img); memory is for everything else worth keeping.

Inputs: url (HTTPS or data URL), label (short human name), optional mimeType (inferred from the URL if omitted), name, tags (up to 8).

Returns: fileId, label — confirm to the user what was pinned.

NameRequiredDescriptionDefault
urlYesHTTPS URL of the file to pin (image, video, PDF, markdown — any file type).
nameNoOriginal filename if known.
tagsNoOptional tags for filtering ('aurorra', 'brand', 'reference').
labelYesShort human label for this file ('Aurorra reference photo', 'Brand voice guide', 'Q4 launch deck').
mimeTypeNoMIME type ('image/jpeg', 'video/mp4', 'application/pdf', 'text/markdown'). Inferred from URL if omitted.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real behavior beyond the thin annotations: the pin persists across sessions, surfaces in the @-mention picker on aige.ws, and mimeType is inferred when omitted. What's missing is duplicate behavior — idempotentHint is false, so re-pinning likely creates a second entry, but the description never warns about that or about any limits on memory size.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then triggers, then exclusion, then Inputs/Returns headers — an agent can stop reading after sentence two and still call correctly. It is somewhat longer than necessary, with the Returns sentence partly duplicating what a caller would verify anyway.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the return fields (fileId, label) and telling the agent to confirm the pin to the user. Combined with the stated persistence and picker visibility, nothing important about the call outcome is left unknown.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already labels every parameter; the description still adds value by stating the URL may be an HTTPS or data URL (the schema only says HTTPS) and by grouping constraints such as tags up to 8 and mimeType inference. It does not explain format expectations for label or name beyond what the schema's examples already give.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'Pin a FILE ... to the user's long-term AIGE memory', and enumerates the asset types covered. It also explicitly contrasts itself with antix_add_to_character_gallery, so an agent can select it over that sibling without inspecting either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete user phrasings that should trigger the tool ('remember this reference', 'save this for later') plus a clear when-not with the named alternative for character reference images. The routing decision is fully specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_send_to_canvasSend Image to CanvasA
Idempotent
Inspect

Place an image this user ALREADY generated in AIGE onto their AIGE Canvas board, so they can design on top of it. Pass EITHER historyId (from antix_get_history) OR url (a direct https file URL on an AIGE storage host) — never both. Images only: a video generation is refused, and a URL on any other host is refused, including expiring provider links. FREE, spends no credits, and it creates nothing new. The image is queued into the board's inbox and lands the next time that Canvas is open in the browser — it is not an instant remote paste, so tell the user to open https://aige.ws/canvas rather than claiming it is already on their screen.

NameRequiredDescriptionDefault
urlNoDirect https file URL on an AIGE storage host. Pass EITHER this or historyId, never both.
noteNoShort label stored with the board item (shown as its prompt in the Canvas inspector).
historyIdNoGeneration id from antix_get_history. Pass EITHER this or url, never both.
projectIdNoAIGE work project whose Canvas board should receive it. Omit to let whichever board opens first claim it.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnlyHint=false, idempotentHint=true, destructiveHint=false; the description adds genuinely new behavioral facts — FREE/no credits, creates nothing new, image is queued into the board inbox and materializes asynchronously the next time Canvas is open. That async caveat plus the instruction not to claim it is on screen is exactly the context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action, then constraints, then cost, then the async caveat and user-facing instruction. Dense but every sentence carries an operational fact; nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a zero-required-param mutation with no output schema: it covers cost, idempotency implications, accepted inputs, refusal cases, delivery timing, and what to tell the user. An agent can call this and set expectations correctly with no further lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents the either/or rule for url vs historyId and the 'omit to let whichever board opens first claim it' behavior for projectId. The description mostly restates this; its only marginal addition is reiterating that url must be an AIGE storage host, which the schema also states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (place/send) and resource (image onto AIGE Canvas board) with scope: 'an image this user ALREADY generated in AIGE'. It distinguishes itself from sibling generation tools by emphasizing it creates nothing new and moves existing output, so an agent can tell it apart from antix_generate_image or the deck tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit conditions and exclusions: pass EITHER historyId (from antix_get_history) OR url, never both; images only; video generations and non-AIGE-host URLs (including expiring provider links) are refused. It also names the upstream tool that supplies the id, which routes the agent correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_set_character_avatarSet Character AvatarA
Destructive
Inspect

Change the saved AIGE character's avatar — the image that gets AUTO-ATTACHED as the img2img reference whenever this character's id is passed to antix_generate_image. Use this when the user wants future generations of an existing character to use a new face/look (e.g. 'use this image as Aurora's new face going forward', 'set this as her avatar', 'update Aurora's profile picture to this').

Why this matters: Claude.ai's MCP client doesn't currently forward chat-attached image bytes to tool args (Anthropic-side limit). So the most reliable way to get a chat-attached image into AIGE's img2img pipeline is the two-step pattern: (a) user uploads to https://aige.ws/r and pastes the short URL, OR provides any public image URL; (b) you call this tool to bake that URL into the character's saved avatar. After that, every generate_image call with that characterId implicitly uses the new image as the reference — no need to forward bytes again per generation.

Inputs: • characterId — the character to update. Get it from antix_list_characters. • image — either an HTTPS URL (recommended path: user uploads at https://aige.ws/r → pastes URL → you forward it here), OR a base64 data URL data:image/png;base64,... if your client surfaces the bytes.

Side effects: Overwrites users/<uid>/characters/<characterId>/avatar.jpg in Firebase Storage and updates the avatar field on the character doc. The previous avatar URL is returned as previousAvatarUrl for your reference but is not preserved. This change is visible in the AIGE web app at https://aige.ws/twin/<characterId> immediately.

Returns: characterId, characterName, avatarUrl (the new one), previousAvatarUrl, characterPageUrl (direct AIGE link), and a note confirming future img2img will use it.

NameRequiredDescriptionDefault
imageYes
characterIdYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the destructiveHint=true / idempotentHint=false annotations: names the exact storage path overwritten (users/<uid>/characters/<characterId>/avatar.jpg), states the previous avatar is returned but not preserved, and notes the change is immediately visible on the AIGE web page. It also discloses the client-side limitation that motivates the design.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose and usage examples, then uses bold-labelled Inputs/Side effects/Returns sections that scan well. It is longer than strictly necessary — the 'Why this matters' client-limitation discussion is useful but the longest single block, and a little of it could be trimmed without losing agent-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description enumerates the return fields (characterId, characterName, avatarUrl, previousAvatarUrl, characterPageUrl). Combined with the documented side effects and the two documented params, an agent has everything needed to call this correctly and report the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the schema provides no descriptions, so the description must carry the load — and it does. It documents both parameters: characterId sourced from antix_list_characters, and image accepting either an HTTPS URL (with the recommended acquisition path) or a base64 data URL.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Change the saved AIGE character's avatar') and immediately defines what an avatar means operationally — the img2img reference auto-attached when the characterId is passed to antix_generate_image. That definition cleanly separates it from antix_create_character, antix_add_to_character_gallery, and antix_generate_image in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit triggering conditions with three natural-language user utterances ('use this image as Aurora's new face going forward', etc.) and explains the correct alternative workflow when chat bytes aren't forwarded — upload to aige.ws/r or supply any public URL, then call this tool. The when-to-use boundary against per-generation image passing is stated outright.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_set_deck_fontsChange the typefacesA
Destructive
Inspect

Use this when the user asks 'change the font', 'use a serif for the titles' or 'match my brand fonts'. Set the heading, body and accent typefaces for the whole deck, or for one slide with slideId, and the heading's weight, italic and capitals. Use only families listed by antix_list_carousel_design_options; any other family is refused. The text re-fits after the change. Require the current expectedVersion; on DECK_CONFLICT, read the deck again and repeat the same intended change. Free.

NameRequiredDescriptionDefault
bodyNo
accentNo
deckIdYes
localeNo
headingNo
slideIdNo
projectIdNoAIGE project whose Canvas should receive the updated deck.
accountHandleNo
headingItalicNo
headingWeightNo
expectedVersionYesREQUIRED: the deck version you last read. A stale value fails with DECK_CONFLICT before any work.
headingUppercaseNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the destructiveHint/idempotentHint annotations: disallowed font families are refused server-side, text re-fits after the change, the call is free, and the optimistic-concurrency contract (expectedVersion required; DECK_CONFLICT means re-read and repeat) is documented. That is the exact failure-mode guidance an agent needs for a mutating tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded trigger sentence, then scope, then the supporting constraint, then the concurrency contract. Four compact sentences with no filler; the refusal and DECK_CONFLICT rules are stated in the fewest words that make them actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter destructive mutation with no output schema, the description covers the intent, scope, validation source, side effect (text re-fitting) and the conflict-recovery path. What remains missing is what the three ancillary context params (locale, accountHandle, projectId routing) mean and whether prior fonts can be restored.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 17% schema coverage across 12 params, the description carries the load and does so for most of them: heading/body/accent, slideId scoping, headingWeight/headingItalic/headingUppercase, and expectedVersion semantics. It leaves locale, accountHandle and the deckId/projectId relationship unaddressed, so coverage is strong but not complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: set heading, body and accent typefaces for the whole deck or a single slide via slideId, plus heading weight/italic/capitals. This is clearly differentiated from siblings like antix_set_text_style and antix_set_slide_colors, which operate on different attributes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete user-utterance triggers ('change the font', 'use a serif for the titles', 'match my brand fonts') and an explicit precondition: families must come from antix_list_carousel_design_options or be refused. Scope selection (whole deck vs slideId) is spelled out. It does not explicitly exclude attribute siblings such as antix_set_text_style, so it falls short of a full when/when-not map.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_set_deck_paletteChange the deck's coloursA
Destructive
Inspect

Use this when the user asks 'change the colors', 'use my brand colors' or 'make it darker'. Set the deck's colour slots as six-digit hex: background, ink (text), accent, onAccent (text on accent), paper and onPaper (text on paper), for the whole deck or for one slide with slideId. Only the slots you pass change. Require the current expectedVersion; on DECK_CONFLICT, read the deck again and repeat the same intended change. Free.

NameRequiredDescriptionDefault
inkNo
paperNo
accentNo
deckIdYes
localeNo
onPaperNo
slideIdNo
onAccentNo
projectIdNoAIGE project whose Canvas should receive the updated deck.
backgroundNo
accountHandleNo
expectedVersionYesREQUIRED: the deck version you last read. A stale value fails with DECK_CONFLICT before any work.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false; the description adds real context beyond that: partial-update semantics ('Only the slots you pass change'), the required expectedVersion with a named failure mode and retry procedure, and that the call is free. The conflict-retry guidance slightly softens the non-idempotent hint but is coherent once a fresh version is re-read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger conditions, then slot definitions, then scope, then versioning and cost. It is dense but every sentence carries new information; there is no restatement of the title or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, version-guarded mutation with no output schema, this covers intent, slot semantics, conflict recovery and cost. The one real gap is precedence: it never says whether a deck-level palette change overrides palettes previously set per-slide via slideId or antix_set_slide_colors.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 17%, so the description has to carry the load, and it does for the six colour slots by naming each and its role, plus slideId scope and expectedVersion semantics. It leaves locale, accountHandle and projectId unexplained, so 3 of 12 parameters remain opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set the deck's colour slots') and enumerates exactly which slots are touched, with the semantic role of each (ink = text, onAccent = text on accent). Scope is clear (whole deck, or one slide via slideId). It does not explicitly name the close sibling antix_set_slide_colors or antix_set_deck_fonts, so the agent must infer the routing from the slideId clause.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete user-intent triggers ('change the colors', 'use my brand colors', 'make it darker') plus a recovery protocol for DECK_CONFLICT, which is exactly the when-to-use context an agent needs. It does not explicitly exclude or defer to antix_set_slide_colors, which overlaps on single-slide recolouring, so the exclusions side of the equation is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_set_deck_shapeChange the slide shapeA
Destructive
Inspect

Use this when the user asks 'make it square', 'make it 4:5' or 'make it a story'. Set the deck's shape to 1:1, 4:5 or 9:16; every slide is laid out again and its text re-fits. Require the current expectedVersion; on DECK_CONFLICT, read the deck again and repeat the same intended change. Free.

NameRequiredDescriptionDefault
aspectYes
deckIdYes
localeNo
projectIdNoAIGE project whose Canvas should receive the updated deck.
accountHandleNo
expectedVersionYesREQUIRED: the deck version you last read. A stale value fails with DECK_CONFLICT before any work.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond annotations: it discloses that every slide is re-laid-out and text re-fits (matching destructiveHint=true), notes the operation is Free, and requires expectedVersion. The retry guidance could be read as downplaying the non-idempotent risk, but no direct contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the trigger condition, followed by effect, precondition, and failure handling — no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the core mutation, its destructive side effect, and the versioning contract, which is sufficient given no output schema. Minor gap: the optional locale/projectId/accountHandle parameters and their effect on the operation are never mentioned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% across 6 params; the description usefully constrains aspect and explains expectedVersion's conflict role, but deckId, locale, accountHandle and projectId semantics are left to the schema, so compensation is partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set the deck's shape') and enumerates the exact allowed values (1:1, 4:5, 9:16), which cleanly separates it from siblings like antix_apply_deck_layout or antix_set_slide_layout.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit user-phrase triggers ('make it square', 'make it 4:5', 'make it a story') and a concrete recovery procedure on DECK_CONFLICT (re-read deck, repeat same change), so the agent knows both when to call it and what to do if it fails.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_set_slide_colorsFix a slide's contrastA
Destructive
Inspect

Use this when antix_check_deck_readiness reports low_contrast, or the user asks to recolour one slide's background or headline. Set one slide's flat background colour and/or its headline colour, as six-digit hex; pass at least one. Require the current expectedVersion; on DECK_CONFLICT, read the deck again and repeat the same intended change. Free.

NameRequiredDescriptionDefault
deckIdYes
localeNo
slideIdYes
projectIdNoAIGE project whose Canvas should receive the updated deck.
backgroundNo
accountHandleNo
headlineColorNo
expectedVersionYesREQUIRED: the deck version you last read. A stale value fails with DECK_CONFLICT before any work.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantive behaviour beyond the annotations: required optimistic-concurrency token, the DECK_CONFLICT failure mode with a re-read-and-repeat recovery, and the cost ("Free"). The destructiveHint=true implication — that existing background/headline colours on the slide are overwritten and not recoverable — is only implied by 'Set ... colour', not stated outright.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the triggering situation and the payload shape, then the version/conflict rule. Four dense sentences with little waste, though the expectedVersion/DECK_CONFLICT explanation partially repeats the schema's own field description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the primary flow, conflict recovery and cost, which is decent for a mutation tool with no output schema. But with 8 parameters, no output schema, and a projectId that appears to push the deck to a Canvas, the description omits side effects and the semantics of half the parameters — an agent cannot fully predict the result of passing projectId or accountHandle.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25% (just projectId and expectedVersion documented), and four parameters — deckId, slideId, locale, accountHandle — get no explanation anywhere. The description does add the valuable cross-parameter constraint that at least one of background/headlineColor must be passed, plus hex format, but leaves the Canvas-routing role of projectId and the purpose of locale/accountHandle unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with precise scope: set ONE slide's flat background colour and/or headline colour, as six-digit hex. The single-slide scope plus the 'and/or' minimum-one rule clearly separates it from deck-wide siblings like antix_set_deck_palette and from antix_clear_slide_background.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit trigger conditions tied to a named sibling ("when antix_check_deck_readiness reports low_contrast, or the user asks to recolour one slide") and prescribes a retry protocol on DECK_CONFLICT. It stops short of stating when NOT to use it — e.g. that whole-deck changes belong to antix_set_deck_palette rather than repeated single-slide calls.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_set_slide_copyRewrite a slide's textA
Destructive
Inspect

Use this when the user asks 'rewrite slide 3', 'make the headline shorter', 'change the call to action' or 'highlight this phrase'. Replace the words of one slide by role: headline, body, kicker (the small line above the headline) and cta. emphasis picks a phrase inside the headline for the layout to feature (highlighted, enlarged, coloured or struck); an empty string returns to the automatic pick. Only the roles you pass change, and the text re-fits its place. Require the current expectedVersion; on DECK_CONFLICT, read the deck again and repeat the same intended change. Free. Does not publish.

NameRequiredDescriptionDefault
ctaNo
bodyNo
deckIdYes
kickerNo
localeNo
slideIdYes
emphasisNoA phrase INSIDE the headline for the layout to feature (highlight, enlarge, colour or strike). Empty string returns to the automatic pick.
headlineNo
projectIdNoAIGE project whose Canvas should receive the updated deck.
accountHandleNo
expectedVersionYesREQUIRED: the deck version you last read. A stale value fails with DECK_CONFLICT before any work.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and idempotentHint=false. The description adds real context beyond them: only passed roles change, text re-fits, expectedVersion is mandatory, and DECK_CONFLICT requires re-reading and retrying. It doesn't say whether overwritten text is recoverable or what a success response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Usage triggers are front-loaded and most sentences carry information the schema doesn't. 'Free.' and 'Does not publish.' are terse and valuable, though 'text re-fits its place' is slightly vague and the description is dense enough to reward a second read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive 11-parameter mutation with no output schema, the description covers the crucial behavioral contract: versioning, conflict recovery, selective role updates, and non-publishing. It still omits what a successful call returns and leaves several parameters unexplained, so it is strong but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 27% schema coverage across 11 parameters, the description carries a heavy burden. It explains the creative roles, emphasis behavior (including empty-string reset), and expectedVersion/conflict handling well, but says nothing about deckId, slideId, locale, projectId, or accountHandle, leaving nearly half the parameters undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Replace the words'), scopes it to one slide, and enumerates the exact roles (headline, body, kicker, cta) plus emphasis. The example utterances make the intent unmistakable, but it never explicitly names a sibling like antix_edit_deck_slides to draw the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It opens with explicit trigger phrases ('rewrite slide 3', 'make the headline shorter', 'change the call to action') and adds a boundary ('Does not publish'). It lacks an explicit statement of when to use a different tool, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_set_slide_layoutChange one slide's compositionA
Destructive
Inspect

Use this when the user asks to arrange one slide differently, or a review finding suggests another composition. Give one slide another composition from its layout (variant 1 to the number the deck result's compositions gives for that slide) or a slide from another built-in layout (templateId). Require the current expectedVersion; on DECK_CONFLICT, read the deck again and repeat the same intended change. Free.

NameRequiredDescriptionDefault
deckIdYes
localeNo
slideIdYes
variantNo
projectIdNoAIGE project whose Canvas should receive the updated deck.
templateIdNo
accountHandleNo
expectedVersionYesREQUIRED: the deck version you last read. A stale value fails with DECK_CONFLICT before any work.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false; the description adds the optimism/locking protocol an agent must follow (require expectedVersion, on DECK_CONFLICT re-read and repeat the same intended change) and a cost signal ('Free'). It stops short of saying what existing slide content/arrangement is replaced, which would matter given the destructive hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the usage trigger, then the two modes, then the version/conflict rule, then cost. Phrasing is somewhat compressed and run-on ('Give one slide another composition from its layout (variant 1 to the number the deck result's compositions gives...)'), but every sentence carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with no output schema, the description covers the decision between variant and templateId, the required version guard, and the retry path. Missing only the failure modes beyond DECK_CONFLICT and the semantics of the remaining optional parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25% (projectId, expectedVersion), so the description carries real weight and does: it scopes variant to 1..N where N comes from the deck result's compositions, and clarifies templateId means a slide from another built-in layout. locale and accountHandle remain unexplained in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('arrange one slide differently', 'Give one slide another composition') that plainly distinguishes it from deck-wide siblings like antix_apply_deck_layout or antix_set_deck_palette. It never names those siblings explicitly, so the differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete triggers ('user asks to arrange one slide differently, or a review finding suggests another composition') and explains the choice between the two modes: variant from the current layout vs templateId from another built-in layout. It does not mention when to prefer antix_apply_deck_layout or antix_edit_deck_slides instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_set_slide_picturePut a stored image on a slideA
Destructive
Inspect

Use this to put an image that is already stored by AIGE (an https link this server returned, on AIGE storage hosts only; any other host is refused) on one slide as its picture. luma, as antix_attach_deck_image measures it, recolours the copy to read on the picture. For a file from this conversation use antix_attach_deck_image instead. Replacing a picture that was paid for needs confirmDropPaid:true — ask the user first. Require the current expectedVersion; on DECK_CONFLICT, read the deck again and repeat the same intended change. Free.

NameRequiredDescriptionDefault
urlYes
lumaNoHow light the picture is, as a small grid ("<cols>x<rows>:" then one hex digit a cell, row by row). When given, the copy on the slide is recoloured to read on the picture. antix_attach_deck_image measures it for you.
deckIdYes
localeNo
slideIdYes
projectIdNoAIGE project whose Canvas should receive the updated deck.
accountHandleNo
confirmDropPaidNoMust be true to replace a picture that was paid for — ask the user first.
expectedVersionYesREQUIRED: the deck version you last read. A stale value fails with DECK_CONFLICT before any work.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description explains that replacing a paid picture requires confirmDropPaid:true and user confirmation, that foreign hosts are refused, that luma recolors the copy, and that stale expectedVersion causes DECK_CONFLICT. These are meaningful behavioral constraints and failure modes not covered by the annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main action and host restriction, then proceeds through the key alternative, paid-replacement warning, concurrency rule, and cost note. Each sentence carries useful routing or safety information without filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no output schema, the description covers the core usage, alternative, safety confirmation, host restriction, and conflict handling well. It is not fully complete because several optional parameters and the success return behavior are left for the schema or inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 44%, and the description adds critical meaning for url, luma, confirmDropPaid, and expectedVersion. However, several parameters such as deckId, slideId, locale, accountHandle, and projectId remain undocumented in the prose, so it only partially compensates for the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: put an already-stored AIGE image on one slide as its picture. It immediately distinguishes the scope by restricting the URL to AIGE storage hosts and explicitly names the different sibling tool for files from the conversation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states exactly when to use this tool versus antix_attach_deck_image: stored AIGE https link versus a conversation file. It also gives concrete operational guidance for paid-picture replacement and for handling DECK_CONFLICT.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

antix_set_text_styleResize or align textA
Destructive
Inspect

Use this when the user asks 'make the headline smaller', 'center the text' or 'make it all caps', or a review finding says copy does not fit. Set how one role (headline, body, kicker or cta) is drawn: scale 0.5–2, alignment, capitals, italic, weight, letter spacing and line height, for the whole deck or for one slide with slideId. Require the current expectedVersion; on DECK_CONFLICT, read the deck again and repeat the same intended change. Free.

NameRequiredDescriptionDefault
roleYes
alignNo
scaleNo
deckIdYes
italicNo
localeNo
weightNo
slideIdNo
projectIdNoAIGE project whose Canvas should receive the updated deck.
uppercaseNo
lineHeightNo
accountHandleNo
letterSpacingNo
expectedVersionYesREQUIRED: the deck version you last read. A stale value fails with DECK_CONFLICT before any work.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and idempotentHint=false; the description adds material context beyond them: expectedVersion is mandatory, a stale value fails with DECK_CONFLICT before any work, and the correct retry is to re-read and repeat the same change. It also discloses cost ('Free.'), though it never explicitly says existing styling for that role is overwritten or what happens to unspecified style fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads trigger phrases before mechanics, so an agent can pattern-match quickly. It is dense but nearly every clause carries information; the param enumeration is slightly list-heavy but justified by the low schema coverage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter destructive mutation with no output schema, the description covers the critical call mechanics: required version, conflict recovery, scope, and cost. It is only missing the merge semantics (whether omitted style fields are preserved or reset) and the meaning of a few ancillary params.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 14% (2 of 14 params described), so the description must carry the load, and it does: it explains role, the full set of style knobs, the 0.5–2 scale bound, and crucially the slideId semantics (whole deck vs. one slide) that the schema does not convey. Gaps remain for locale, accountHandle, and projectId, which are never mentioned.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (set how one role — headline/body/kicker/cta — is drawn) and enumerates the exact style dimensions it controls. It is clearly distinguishable from siblings like antix_set_deck_fonts, antix_set_deck_palette, and antix_set_slide_layout.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with concrete user phrasings ('make the headline smaller', 'center the text', 'make it all caps') and a review-finding trigger, which is strong when-to-use guidance. It also gives recovery guidance on DECK_CONFLICT, but does not name competing siblings or state when-not to use it (e.g., versus set_deck_fonts).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 54 tool updates
    • First observedantix_add_slide
    • First observedantix_add_to_character_gallery
    • First observedantix_apply_deck_layout
    • First observedantix_approve_post
    • First observedantix_attach_deck_image
    • First observedantix_build_carousel_blueprint
    • First observedantix_cancel_post
    • First observedantix_check_batch
    • First observedantix_check_deck_readiness
    • First observedantix_check_task
    • First observedantix_clear_slide_background
    • First observedantix_compose_content_brief
    • First observedantix_compose_social_post
    • First observedantix_create_character
    • First observedantix_create_deck
    • First observedantix_create_post
    • First observedantix_delete_slide
    • First observedantix_edit_deck_slides
    • First observedantix_enhance_prompt
    • First observedantix_export_deck
    • First observedantix_generate_deck_background
    • First observedantix_generate_deck_slide_images
    • First observedantix_generate_image
    • First observedantix_generate_image_batch
    • First observedantix_generate_video
    • First observedantix_get_brand_kit
    • First observedantix_get_credits
    • First observedantix_get_deck
    • First observedantix_get_history
    • First observedantix_get_instagram_audit
    • First observedantix_get_post
    • First observedantix_list_carousel_design_options
    • First observedantix_list_carousel_templates
    • First observedantix_list_channels
    • First observedantix_list_character_gallery
    • First observedantix_list_characters
    • First observedantix_list_projects
    • First observedantix_list_scheduled_posts
    • First observedantix_pick_model
    • First observedantix_publish_deck
    • First observedantix_render_deck_video
    • First observedantix_reorder_slides
    • First observedantix_save_carousel_template
    • First observedantix_save_to_memory
    • First observedantix_send_to_canvas
    • First observedantix_set_character_avatar
    • First observedantix_set_deck_fonts
    • First observedantix_set_deck_palette
    • First observedantix_set_deck_shape
    • First observedantix_set_slide_colors
    • First observedantix_set_slide_copy
    • First observedantix_set_slide_layout
    • First observedantix_set_slide_picture
    • First observedantix_set_text_style

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources