ShapelessAI
Server Details
AI marketing team for founders, callable from any agent: plan what to say, edit video, generate images and clips, write and design posts, publish to LinkedIn, X, Instagram, TikTok, YouTube, Facebook, Threads, Bluesky, Discord and Mastodon and read what performed. OAuth sign-in, no API key; every draft waits for approval unless you say publish now. Free Forever plan: 10 posts a day, no card.
- Status
- Healthy
- Uptime
- 99.9% over 42 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- FirstClassTree/shapelessai
- GitHub Stars
- 1
- Server Listing
- shapeless
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 86 tools
The descriptions are unusually explicit about boundaries, often naming the sibling tool to use instead (current_pulse vs x_pulse, identity_search vs identity_resolve vs identity_expand, probe_media before edit_footage). A few pairs still invite misselection: tools_list vs capabilities_list, reference_search (judged post library) vs references_browse (reference graph), and the six page tools (read_page, record_page, screenshot_page, demo_page, list_page_assets, inspect_page_style). No two tools appear to do the same thing outright.
Everything is snake_case, with two coherent families: resource-prefixed operations (posts_create, jobs_list, panel_open, agents_save, brain_read, identity_search, references_add) and verb-first operations (generate_image, find_photo, edit_footage, render_carousel, capture_tweet). The singular/plural split between reference_search (library) and references_* (the account's set) is a subtle inconsistency that could trip an agent, but overall the pattern is predictable.
86 tools is far beyond a reliable surface for an agent, and many are near-siblings that could be consolidated (8 jobs_*, 9 identity_*, 6 panel_*, 7 references_*, 6 posts_*). The domain is genuinely broad, but selection cost and cross-family overlap make the surface mismatched even for that breadth.
Coverage is remarkably deep across research, generation, identity, publishing, analytics and media handling, with lifecycle operations (create/read/list/update/stop/approve) for most domains. Gaps are minor: no delete/prune for media library assets, no full CRUD for characters beyond voice assignment, no unlink for connections, and no in-place edit of a queued post's text.
Available Tools
86 toolsagents_listList agentsARead-onlyInspect
The agent roster (the API calls them strategies). Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| strategies | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered by structured data. The description adds context the annotations cannot express: the caller must hold the read OAuth scope, and the underlying API terminology differs from the tool naming. Those two facts materially affect whether a call succeeds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Twelve words across two fragments, front-loaded with the resource before the scope prerequisite. Every clause carries information. It is perhaps too terse to be maximally useful, but there is no filler to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the read-only safety profile. The description supplies the remaining critical agent-facing facts (read scope requirement, agent/strategy terminology). Minor gaps remain around whether the roster is paginated or filtered, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and schema coverage is 100%, so there is nothing for the description to clarify. Baseline 4 applies; no parameter behavior is misdescribed or left ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource concretely ('The agent roster') and resolves a real naming ambiguity by noting the API calls agents 'strategies', which lets an agent map the tool onto what it will see in responses. The listing verb is carried by the tool name rather than the description, and there is no explicit differentiation from agents_save/agents_wake, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Needs the read scope' gives a clear prerequisite for invoking the tool, which is useful operational guidance. However, it says nothing about when to prefer this over siblings like agents_save or agents_wake, nor about any conditions that would make the call inappropriate. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agents_saveCreate or edit an agentADestructiveInspect
Create an agent (no id) or edit one (with id). Setting autoPublishPosts arms publishing without human approval and needs the publish scope; everything else needs write.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | The agent id to edit; omit to create. | |
| name | No | Name, up to 60 characters. | |
| prompt | No | The standing brief, up to 4000 characters. | |
| status | No | ||
| planDays | No | Wake days, 0=Sunday. | |
| timezone | No | IANA timezone. | |
| planHours | No | Wake hours. | |
| subreddits | No | Up to 5 subreddits. | |
| connectionIds | No | Accounts to post through; null means all. | |
| idempotencyKey | No | On a create: Any string unique to this one intended thing (a UUID you keep). A retry with the same key answers what the first call made, with replayed: true, and makes nothing new. Derive it from the thing, not the attempt, so every agent and every restarted run that means the same one sends the same key. | |
| monthlyCapCents | No | Monthly spend cap in cents; null = no cap. The studio shows it in credits. | |
| autoPublishPosts | No | DANGEROUS: publish with no human approval. Needs the publish scope. |
Output Schema
| Name | Required | Description |
|---|---|---|
| strategy | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is partly covered; the description adds genuinely new context by disclosing the permission model (publish scope vs write) and flagging that autoPublishPosts removes human approval from publishing. It does not explain edit-overwrite semantics (whether omitted fields are cleared) or the replayed/idempotency behavior, which are the remaining gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the create-vs-edit rule is front-loaded ahead of the permission caveat. Every clause carries information an agent needs before calling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description only needs to cover mode selection and permission gating, which it does. For a 12-parameter mutation tool it is close to complete, though it says nothing about how edits treat unspecified fields or how autoPublishPosts interacts with connectionIds.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 92%, so the schema already carries parameter meaning, including the autoPublishPosts danger note and the detailed idempotencyKey guidance. The description's mentions of id and autoPublishPosts largely restate what the schema says, adding scope requirements but little else beyond it. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource and splits the two operating modes by an observable signal: no id means create, an id means edit. That discriminator is stated up front, so an agent knows which behavior it will get before opening the schema, and no sibling (agents_list, agents_wake) offers competing create/edit semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing logic between the two modes and states the prerequisite scopes (publish scope for autoPublishPosts, write for everything else). It stops short of naming alternatives or when not to use this tool, which keeps it out of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agents_wakeWake an agentADestructiveInspect
PUBLISH-SCOPED: wake an agent now; it plans and proposes (or with auto-publish, posts) immediately. Returns the conversation it woke into and its web url. Needs the publish scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The agent id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| runId | Yes | |
| conversationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true and readOnlyHint=false, so the agent knows this is a mutating, external-facing operation. The description adds genuinely non-redundant context: it is publish-scoped, requires the publish scope, and may post automatically with auto-publish. What actually gets destroyed/altered by a wake is not detailed, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the 'PUBLISH-SCOPED' constraint, then behavior, then return. Every clause carries information and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description needn't detail return values, yet it still sketches the key result (the conversation and web url). Combined with the scope requirement and immediate-effect warning, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema fully documents the agent id. The description adds no extra meaning about the id (e.g. format or where to find it), so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('wake an agent now') and adds what the wake actually does (plans and proposes, or posts with auto-publish). This is far more than a restatement of the name. It doesn't explicitly contrast with a sibling, but no sibling tool performs a wake, so there is little to distinguish.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: use it to wake an agent immediately, and it requires the publish scope. The auto-publish branch explains a conditional behavior. It stops short of naming when NOT to use it or a preferred alternative (e.g. agents_save for configuration).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assets_listMedia libraryARead-onlyInspect
The media library: brand uploads and generated media. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| uploads | Yes | |
| generated | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety behavior is covered. The description adds a non-obvious operational fact beyond that: the call requires the read scope, which the agent would otherwise have to discover through a failed call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the resource identity front-loaded and the auth constraint second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and the auth scope is disclosed. What remains unstated is scale or ordering behavior (e.g., pagination or sort), a minor gap for a zero-parameter list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which establishes the baseline of 4 per the rubric. There is nothing for the description to compensate for, and it does not misdescribe any input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely ("the media library: brand uploads and generated media"), making it clear this is the assets collection distinct from posts_list or connections_list. The listing verb itself is only implied by the name, so it stops short of a full verb+resource statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no conditions or exclusions, and no named alternatives among the many *_list siblings. The one requirement mentioned (read scope) is an invocation prerequisite rather than a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brain_onboardingBrand Memory: what is still openARead-onlyInspect
What is still open in Brand Memory, as the questions a human answers, with hints. Ask the human, write the answers as markdown under the question headings with brain_write at the item's path, then call again until open is empty. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| how | No | |
| done | Yes | |
| open | Yes | |
| percent | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/destructiveHint annotations, it discloses an auth prerequisite ('Needs the read scope') and the iterative loop semantics with a clear exit condition (until open is empty). It correctly routes the mutation to brain_write rather than implying this tool writes, so it is consistent with readOnlyHint=true. Return shape detail is left to the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with what is returned and followed by the operational loop; no filler. Some phrases ('with hints', 'at the item's path') are telegraphic and would benefit from a touch more precision without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with an output schema, the description covers purpose, auth scope, and the expected human-in-the-loop cycle, which is what an agent needs to act. It does not describe pagination or list sizing, but with the output schema present and a clear 'until empty' condition, the gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing for the description to clarify and the baseline is 4. The mention of 'the item's path' usefully ties the response items to the brain_write call without adding undocumented inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete resource and scope: the open questions in Brand Memory returned as human-facing questions with hints, which is a specific onboarding surface rather than generic memory retrieval. The verb is implicit (returns/lists) and it never contrasts itself with brain_read or brain_tree, so an agent must infer the distinction from context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It prescribes the full workflow: ask the human, write answers as markdown under the question headings via brain_write at the item's path, then re-call until open is empty. This gives both the when (while open items remain) and the terminating condition, plus the partner tool, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brain_readRead Brand MemoryBRead-onlyInspect
Read one Brand Memory file. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The file path, like positioning.md. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| content | Yes | |
| updatedAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered by structured data. The description adds one genuinely non-redundant fact — the required read scope (auth requirement) — but says nothing about failure behavior for a missing path or what the read returns beyond the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse sentences with zero waste and the action front-loaded. It is efficient, though extremely minimal — there is no padding to trim, but also little structure to praise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not required, and annotations carry the safety profile. Still, for a memory-read tool the description omits what a Brand Memory file is (path resolution, allowed set) and what happens on a missing path, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single documented 'path' parameter including an example ('positioning.md'), so the description is not required to compensate. 'One Brand Memory file' adds no format or constraint 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (one Brand Memory file), which separates it from the mutating sibling brain_write. It does not, however, distinguish itself from brain_tree, which likely also surfaces memory content, so sibling differentiation is only partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no alternatives named. The only usage-adjacent statement is 'Needs the read scope,' which is an auth prerequisite rather than a condition for choosing this tool over brain_write or brain_tree.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brain_treeBrand Memory filesBRead-onlyInspect
Brand Memory's file list with the completion ring. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| files | Yes | |
| completion | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the read-scope auth requirement, which is useful, but the opaque 'completion ring' and lack of any note on what is returned or how the listing behaves leave the behavioral picture thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler and the resource named up front. It is concise, though the brevity shades into under-specification rather than crispness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, for a zero-param list tool sitting among many list/read siblings, the description should orient the agent on when this file tree is the right source; that routing context is absent, leaving it only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly adds nothing about parameters, and nothing is missing on this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys that this returns Brand Memory's file list, which is a recognizable resource, but the phrase 'with the completion ring' is undefined jargon that leaves the actual behavior ambiguous. It does not clearly differentiate from brain_read or assets_list, so an agent cannot route reliably 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Needs the read scope' states an authorization prerequisite but gives no when-to-use guidance and names no alternative. With siblings like brain_read and assets_list, the agent gets no help deciding when this file-tree listing is the right call versus those.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brain_writeWrite Brand MemoryBDestructiveInspect
Write one Brand Memory file (.md paths only) - the agent grounds future posts in it. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The file path, must end in .md. | |
| content | Yes | The full file content. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| content | Yes | |
| updatedAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is conveyed structurally. The description adds the auth requirement ('Needs the write scope') and the .md-only constraint, but does not explain what the destructive behavior actually means (overwrite? append? irreversibility), which is the key gap for a destructive write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the core constraint front-loaded; nothing is wasted. It is arguably too terse for a destructive write, but as pure structure it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations and an output schema present, the description needn't explain returns or safety, and it does cover auth and file-type constraints. However, for a destructiveHint=true write it omits whether an existing file is overwritten, which is material context an agent needs before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both params, so the baseline is 3. The description's '.md paths only' merely restates the schema's own 'must end in .md' constraint and adds no syntax, format, or content-size detail beyond the structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Write one Brand Memory file') and its purpose ('the agent grounds future posts in it'), which cleanly separates it from read-oriented siblings like brain_read and brain_tree. It doesn't explicitly name the alternates, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a precondition ('Needs the write scope') and hints at downstream use ('grounds future posts'), but offers no explicit when-to-use vs. when-not guidance, no mention of overwrite semantics versus siblings, and no exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brand_markFind a brand's logoAInspect
A company's or product's real logo, ready to place: pass the brand name, and its domain when known. Returns the brand: handle, which colour cuts exist and a PNG media key. Small brands are looked up on the web. Costs a fraction of a cent (about $0.007) from credit; budgetUsd (default 2, max 10) caps it and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| about | No | What the brand is, for a small one with no known domain: "AI model by TypeSafe AI". | |
| brand | Yes | The brand: a name ("NVIDIA"), a handle ("claude-code") or a domain ("typesafe.ai"). | |
| domain | No | The brand's own site when you know it ("typesafe.ai"). Preferred over a web lookup. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, openWorldHint=true and destructiveHint=false; the description reinforces and extends them with the write-scope requirement, an explicit cost (~$0.007 from credit), a budget cap with default 2 / max 10, chargedUsd as the actual spend, and the web-lookup fallback for unknown small brands. No contradiction, and it adds auth, cost and fallback behaviour that the annotations do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence establishes the deliverable and return shape before cost and auth details follow. It is dense but each clause (cost, budget cap, chargedUsd, write scope) earns its place; only the italicised cost figure feels slightly redundant with the budgetUsd sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not detail the return object, yet it still signals the handle, colour cuts and PNG key. Between annotations, the 100%-covered schema and the output schema, an agent has everything needed to call this correctly, including the billing and scope preconditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (including 'about' and 'domain') are already documented in the schema, including the 'preferred over a web lookup' note. The description quotes the same budgetUsd defaults and the domain-over-lookup preference, adding little semantic value beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete deliverable ('a company's or product's real logo, ready to place') and states what comes back (brand:<slug> handle, colour cuts, PNG media key). Against siblings like find_photo, find_footage and find_face, the agent immediately knows this is the brand-logo lookup rather than generic imagery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives implied usage (pass the brand name, provide domain when known, small brands fall back to a web lookup) but never states when to prefer this over find_photo, reference_search or web_search, nor any exclusion. The context is inferable but the routing decision against siblings is left to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capabilities_listWhat ShapelessAI can doARead-onlyInspect
Everything ShapelessAI can do, live or planned, with the REST routes, MCP tools and CLI lines for each and its page. A planned one says how to get the same outcome today and carries a want door; one with a route answers 501 there until it ships. Needs the read scope (over REST it needs no key).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| docs | Yes | |
| live | Yes | |
| planned | Yes | |
| capabilities | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so safety is covered. The description adds real context beyond that: it needs the read scope, needs no key over REST, planned routes return 501 until shipped, and planned entries carry a want door.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, and every sentence carries information about content, planned-entry behavior and auth. Minor deduction for insider jargon ('want door', '501 there') that assumes familiarity with the platform's vocabulary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. The description covers what the listing contains, how planned entries behave, the auth requirement, and the REST key exception — enough for an agent to call it correctly, though it omits how large the listing is or whether it is filtered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is empty with additionalProperties=false, so there is nothing for the description to clarify. Baseline 4 for a parameterless tool is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: an inventory of everything ShapelessAI can do, live or planned, including REST routes, MCP tools, CLI lines and page links. It implicitly distinguishes itself from the sibling capabilities_want by describing the 'want door' that a planned entry carries, but never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (use it to discover what the platform can do and how to reach each capability), and it does explain what happens with planned entries (route answers 501 until it ships). However, it gives no explicit when-to-use guidance versus other discovery tools such as tools_list or platforms_list, and no exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capabilities_wantTell me when it shipsAInspect
Ask to be told the day a planned capability ships. Bound to this account's sign-in email; add an email or https webhookUrl to tell somewhere else. Ask the human first. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The capability id from capabilities_list. | |
| note | No | Optional: what you wanted it for. We read these. | |
| No | Optional: another address to tell. | ||
| webhookUrl | No | Optional: an https URL that gets a POST when it ships. |
Output Schema
| Name | Required | Description |
|---|---|---|
| docs | No | |
| status | Yes | |
| capability | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true and destructiveHint=false, but the description adds real value beyond them: it discloses the default destination (the account's sign-in email), the alternative destinations (another email or an https webhook POST), and the read-scope requirement. It does not cover idempotency of repeat requests or behaviour on an unknown id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose, then destination rules, then the consent and scope caveats. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter subscription tool with full schema coverage and an output schema handling return values, the description supplies the missing operational context: default destination, redirect options, human-approval requirement and auth scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description earns above that by explaining the routing semantics of email and webhookUrl relative to the implicit default (the sign-in email) rather than merely restating the field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (subscribe to a ship notification) against a specific resource (a planned capability), phrased so it is unmistakably distinct from capabilities_list, which only enumerates them. An agent knows exactly what this tool accomplishes 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Ask the human first" and "Needs the read scope" give a clear consent and prerequisite condition, and "planned capability" implies the item is not yet shipped. It stops short of naming the alternative workflow (e.g. call capabilities_list first to obtain the id) or stating when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
caption_fileMake a subtitle fileAInspect
Transcribe a video or audio file in the media library (up to 20 minutes) into a word-timed .srt or .vtt. Filed next to the source; the text also comes back inline. Free: nothing is charged. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| names | No | Brand and product names to spell your way, comma-separated: "ShapelessAI, shapelessai.com". | |
| format | No | Default srt. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| media_key | Yes | The video or audio in your library, e.g. from an upload. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only tell the agent this is a non-read-only, non-destructive, closed-world write; the description adds real behavior on top: the artifact is filed next to the source, the text is also returned inline, and the write scope is required. It also declares cost behavior ("Free: nothing is charged"), but that sits awkwardly against the budgetUsd parameter with a default of 2 and max of 10, leaving the actual billing semantics ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences with the core action front-loaded, then side effects, then cost, then auth. Every clause carries information an agent would otherwise have to guess at, and nothing is repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to enumerate return fields, and it still usefully notes that the transcript comes back inline alongside the file. Coverage of scope, duration limit, side effect, and auth makes it complete for a four-parameter tool; only the unresolved free-versus-budget conflict keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so media_key, names, format, and budgetUsd are already documented in structured data, which sets the baseline at 3. The description's only parameter-adjacent contribution is restating the srt/vtt options, and it never reconciles the "free" claim with the budget parameter, so it adds no new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Transcribe a video or audio file in the media library ... into a word-timed .srt or .vtt" gives a specific verb, a specific input source, and concrete output artifacts. The 20-minute ceiling and the word-timing detail further pin down what this produces, so an agent can distinguish it from siblings like probe_media or edit_footage 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes the context of use (an existing item in the media library, capped at 20 minutes) and states the prerequisite "Needs the write scope," which is actionable pre-call guidance. It stops short of naming when-not-to-use or an alternative sibling for longer files, so it is clear but not fully routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_tweetCapture a post from XAInspect
Draw a public x.com post the way X shows it (avatar, name, text, media still, date, counts) as a 1080px-wide PNG media key, dark or light, optionally under the post it replies to. Free: nothing is charged. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The post URL (x.com/<handle>/status/<id>) or its numeric id. | |
| theme | No | The x.com theme to draw it in. Defaults to dark. | |
| thread | No | Also draw the post this one replies to, joined by the thread line. | |
| variant | No | wide for 16:9 and square frames, tall for 9:16. Defaults to wide. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, destructiveHint=false, so the description's job is to add context, and it does: it discloses the output artifact type and dimensions, the auth scope required (write), and that the call is free of charge. It does not cover failure modes (private/deleted posts, rate limits) or how the returned media key is later consumed, which keeps it below 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and output, followed by two short high-value sentences on cost and scope. The parenthetical field list is dense but efficiently conveys what the render contains. No filler sentences, though the phrasing is compressed to the point of being slightly cryptic ('media key').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description still helpfully characterizes the returned artifact, and annotations carry the safety profile, so the remaining burden is small. The agent knows the input format (confirmed by schema), the theme/thread options, the cost, and the required scope. Only edge-case behavior for private or unavailable posts is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaning for two parameters only ('dark or light' for theme, 'optionally under the post it replies to' for thread) and says nothing about variant or budgetUsd. It also asserts 'Free: nothing is charged' while a budgetUsd parameter with a $2 default and $10 cap exists, which is mildly confusing rather than contradictory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (draw/capture) and specific resource (a public x.com post), plus the concrete rendered output (1080px-wide PNG media key with avatar, name, text, media, date, counts). This clearly separates it from generic page capture siblings like screenshot_page or record_page, though those siblings are never named. Purpose is unambiguous 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: you reach for this when you want a rendered X post card as an image asset. There is no explicit 'use this instead of screenshot_page when...' guidance despite several capture-adjacent siblings, and no when-not-to-use condition. The prerequisites ('Needs the write scope') are stated, which partially compensates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
characters_listList actorsARead-onlyInspect
The account's actors: who they are, what their voice is, and which parts are locked. voiceDescription is the casting direction a designed voice was written from - read it before designing another one, and reuse the actor that already fits. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| characters | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered; the description adds the auth requirement ('Needs the read scope') and flags which attributes are meaningful (voice direction, locked parts). That is real context beyond the structured fields, though there is no detail on result size or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with what the resource is and then the workflow instruction. Every clause earns its place, though the em-dash sub-clause about `voiceDescription` makes the second sentence fairly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be restated, and the description supplies the remaining essentials: the read scope requirement and the key field to inspect. For a parameterless read tool this is close to complete, with only minor gaps around ordering or pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema cannot carry semantic weight and the baseline is 4. The description correctly implies a whole-account listing with no filtering argument, matching the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (the account's actors) and enumerates what each entry carries: identity, voice, and locked parts. It also names a concrete field (`voiceDescription`) the agent will encounter, which goes beyond a generic 'list actors' label. It doesn't explicitly disambiguate from the sibling `characters_voice`, though the nearby mention of 'designing another' voice implies the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives actionable when-to-use guidance: read `voiceDescription` before designing another voice and reuse the actor that already fits, which frames this as the lookup step preceding a voice-design action. It also states the prerequisite ('Needs the read scope'). No explicit when-not or named alternative tool, so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
characters_voiceGive an actor a voiceADestructiveInspect
SPENDS CREDIT: gives an actor a voice. description designs one from casting direction (kept on the character, so later runs can reuse the actor); sampleMediaKey clones a real voice and requires consent: true - the user's own attestation that they hold the rights. Returns the voice id, a preview clip and what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| consent | No | Required with sampleMediaKey: the user holds the rights to that voice. | |
| character | Yes | The actor's slug or id (characters_list). | |
| description | No | Casting direction to design the voice from, up to 1000 characters. | |
| sampleMediaKey | No | A 5-10s voice sample already in the account, to clone instead. |
Output Schema
| Name | Required | Description |
|---|---|---|
| costUsd | No | |
| character | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses that the call SPENDS CREDIT, requires the write scope (auth prerequisite), and returns the voice id, a preview clip and the cost. It also explains the persistence side effect that the design is kept on the character for reuse. These are exactly the behavioral facts 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the credit cost and scope, then the two modes, then the return shape. No filler; every clause carries a distinct fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values needn't be enumerated, but the description still summarizes them. Combined with cost, auth scope and the two parameter paths, an agent has everything needed to invoke this destructive, credit-consuming tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter documentation already exists. The description still adds meaning beyond it: consent is framed as the user's own attestation of rights (not just a flag), and description is explained as durable casting direction reused on later runs rather than a throwaway prompt.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('gives an actor a voice') and immediately distinguishes the two operating modes: designing a voice from casting direction versus cloning from a sample. An agent can also tell it apart from the read-only sibling characters_list, which is named for the character identifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly routes between the two paths ('description designs one...; sampleMediaKey clones a real voice and requires consent: true'), which is genuine when-to-use guidance. It stops short of stating when not to use the tool or naming a sibling alternative for voice work, so it is clear context but not full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clone_reelRemake a reel with the account ownerADestructiveInspect
Remake a reel at a URL with the account owner in the presenter's place: same cuts, shots, timing and captions. With recording_media_key (their own take of measure_reel's script) their footage and voice go in, compute only; with face_media_keys only, the likeness is generated, about $0.10 a presenter second, capped by max_usd and labelled AI-generated. Takes 10 to 60 minutes; only_segment is the cheap probe. Returns a media key. Only for a reel the user asked to copy, with their own face and voice. SPENDS CREDIT: about $9.3 of engine cost a default call, billed with the plan's margin; budgetUsd caps it (default 2, max 10) and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The reel to remake: a public post URL, or a mediaKey from this account's library. | |
| name | No | A 2-6 word filename for the clone in the library, e.g. "morning routine reel me". | |
| max_usd | No | The most the Omni edits may cost (default $9). The processor refuses a plan estimated above it before spending anything. A call is held at this plus an hour of compute, so through the API (at most $10 a call) stay at 9 or under. Ignored with a recording. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| resolution | No | 720p by default. 360p bills about a third as much: fine for a probe, too soft to post. | |
| resume_from | No | prefixUri of an earlier clone_reel result: its good pieces are reused and not paid for again. | |
| only_segment | No | A whole number. Edit only this piece of the plan (0 is the first): the cheap probe before a full clone. | |
| face_media_keys | No | 1 to 4 clear photos of the account owner's face, as mediaKeys from assets_list (GET /api/assets). Required unless recording_media_key is given. | |
| recording_media_key | No | The owner's own recorded take of the script, as a mediaKey. Replaces presenter and voice; no Omni cost. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare that this is a non-read-only, open-world, destructive operation, and the description adds substantial behavioral detail beyond them: it spends credit, costs about $9.3 of engine cost on a default call, bills face-only likeness at about $0.10 per presenter second, takes 10 to 60 minutes, requires the write scope, and returns a media key. It also explains budget capping, chargedUsd reporting, and that max_usd can make the processor refuse a plan before spending. This is exactly the operational context an agent needs before invoking an expensive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded: it starts with what the tool does, then modes, time, cost, and scope constraints. Every sentence carries useful information, though the cost discussion is repeated across the main description and multiple parameter notes. It is appropriately sized for a complex, expensive tool, but not maximally tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is high-complexity, high-cost, and potentially destructive, and the description covers the critical gaps: spend magnitude, budget caps, runtime, output media key, write scope, and mode-specific behavior. An output schema exists, so return values need not be explained further, and the annotations already carry the safety profile. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantic value: recording_media_key replaces the presenter and voice at no Omni cost, face_media_keys drives generated likeness, only_segment is the cheap probe, and max_usd/budgetUsd cap spend. It does not explain every parameter relationship, notably resume_from and name, but the cost and mode interactions it does explain go beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: remake a reel at a URL with the account owner as presenter, preserving cuts, shots, timing, and captions. It also distinguishes the two operating modes (recording versus face-only likeness generation) and names measure_reel as the script source for recordings. 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit conditions: only for a reel the user asked to copy, with their own face and voice, and recording_media_key required unless face_media_keys are provided. It also states that only_segment is the cheap probe before a full clone and that face-only generation is capped by max_usd and labelled AI-generated. Those constraints and exclusions make the correct use case unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
community_hotWhat a community upvotesARead-onlyInspect
The live top of Hacker News or of a subreddit's hot ranking, with scores. Free: nothing is charged. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| community | Yes | 'hackernews' or a subreddit name without the r/ prefix (e.g. 'SaaS'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds two things annotations do not: cost behavior ('nothing is charged') and an auth prerequisite ('Needs the write scope'), which is genuinely useful since a read-only call requiring write scope would otherwise surprise the caller. It omits rate limits and how many items the 'top' contains, keeping it off 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what the tool returns, then cost, then the auth requirement in the position an agent needs it. There is little waste, though 'Free: nothing is charged' restates the same idea twice and would read tighter as a single clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be explained, and the description covers the two things the schema cannot: that the call is free and that it requires write scope. For a two-parameter external-content read, that is close to sufficient; depth of the 'top' list and ranking semantics remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both community and budgetUsd fully documented inline, so the schema carries parameter semantics and baseline 3 applies. The description reinforces the community dimension ('Hacker News or of a subreddit') but adds nothing new about budgetUsd, and its 'nothing is charged' claim sits awkwardly against a parameter whose documented default is $2.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact resource and scope: the live top of Hacker News or a subreddit's hot ranking, and notes that scores are included. It is specific about what is returned at a glance. It stops short of distinguishing itself from plausibly similar siblings such as news_search, web_search, or related_trends, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no named alternative. The only selection signal is the implicit 'Free: nothing is charged', which hints this is a zero-cost option but never says to prefer it over a paid or broader search sibling. An agent choosing between this and news_search or web_search gets no routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
concept_searchSearch by meaningARead-onlyInspect
Semantic search for pages and LinkedIn or X posts that mean what you describe rather than match its words: describe a persona saying or feeling something and get real, dated posts and articles. Costs a fraction of a cent (about $0.007) from credit; budgetUsd (default 2, max 10) caps it and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | A concept or persona description, phrased as meaning, not keywords. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| within_days | No | Only results published within this many days. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint/openWorldHint) by disclosing the cost model (~$0.007 per call), the budget cap behavior (default 2, max 10), the chargedUsd cost readout, and an auth requirement ('Needs the write scope'). These are exactly the operational facts an agent needs before spending credit on a call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the opening clause, and each subsequent clause carries a distinct payload (semantic contrast, cost, budget, scope). The second sentence is dense and slightly run-on across cost/budget/auth, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the description still names chargedUsd as cost feedback. For a credit-consuming search tool it covers purpose, cost, budget, and auth scope adequately; only explicit sibling routing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents query, budgetUsd, and within_days; baseline is 3. The description adds color on the budget default/max and the chargedUsd cost feedback, but adds no semantics for within_days and repeats budget details already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Semantic search for pages and LinkedIn or X posts') and crisply distinguishes itself from keyword tools with 'mean what you describe rather than match its words.' It does not name a specific sibling (e.g., web_search) as the contrast point, so the differentiation is conceptual rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Conveys the usage mode well — 'describe a persona saying or feeling something' implies when this tool fits — but never states when to prefer it over keyword search siblings or when not to use it. Usage is implied rather than spelled out as an explicit condition/alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connections_linkConnect an account (link for the human)AInspect
The one URL the human clicks to connect a social account on a platform (connections_list already carries one per missing platform). Lasts 15 minutes, works only signed in as this account; the platform's own OAuth follows in the browser, then the account shows in connections_list. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | A platform id from platforms_list with oauth: true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| platform | Yes | |
| expiresAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: 15-minute expiry, session/identity constraint ('works only signed in as this account'), the write-scope requirement, and the post-click sequence (browser OAuth, then the account appears in connections_list). These are exactly the operational facts an agent needs and none are in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, all front-loaded: what the URL is, the sibling relationship, then the lifetime/auth/post-click facts. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. The description covers lifetime, auth precondition, permission scope, and the follow-on flow, which is everything needed to call a single-parameter URL-minting tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter and schema coverage is 100%; the schema already explains it is 'a platform id from platforms_list with oauth: true.' The description adds no parameter-level detail, so the baseline 3 applies when the schema carries the semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource purpose: producing 'the one URL the human clicks to connect a social account on a platform.' It explicitly distinguishes itself from connections_list by noting that tool already carries one link per missing platform, so an agent can route between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use: you call this to obtain the clickable connect URL for a human, and it works 'only signed in as this account.' The connections_list reference clarifies the relationship. It stops short of an explicit when-not-to-use or named alternative, so it lands at 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connections_listConnected accountsARead-onlyInspect
Connected social accounts (identity only, no tokens), plus connect: one clickable link per platform with no live account, and reconnect on an expired one. Hand the link to the human. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| connections | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, non-destructive and closed-world, so the safety bar is met structurally. The description adds substantive context beyond that: credentials are never returned ('identity only, no tokens') and the read-scope auth requirement. It omits nothing critical for a zero-param read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core resource, then the two special entry types, then the imperative and the scope requirement. Dense but every clause carries information; only the internal em-dash/colon nesting slightly slows parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value shape need not be restated, and the description covers the remaining agent-facing concerns: what kinds of entries appear, what to do with a link, and the required scope. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric this is the baseline 4. The description adds no parameter detail because none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource ('Connected social accounts') and enumerates what the listing contains: identity-only accounts plus `connect` links for platforms with no live account and `reconnect` entries for expired ones. It is specific enough to distinguish from connections_link, though the mixed-purpose wording ('plus connect/reconnect') takes a reading to parse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage instruction for the actionable case ('Hand the link to the human') and a prerequisite ('Needs the read scope'). It does not explicitly name connections_link as the alternative for the link-generation path, so routing between the two siblings is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
current_pulseMeasure talk on XADestructiveInspect
How much X is talking about 1 to 6 short phrases right now: 7-day volume, per-day counts, velocity and sample posts for the loudest, with a wave flag when one is big. Counts only, in seconds; to learn what people are saying, use x_pulse. SPENDS CREDIT: about $0.06 of engine cost a default call, billed with the plan's margin; budgetUsd caps it (default 2, max 10) and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| phrases | Yes | Short literal phrases (max 4 words) to measure, exact-match. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing cost (~$0.06 default call, billed with margin), the budgetUsd cap (default 2, max 10), the chargedUsd return field, and the write-scope requirement. It does not explain why the tool carries destructiveHint=true beyond spending credit, which is a minor remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose in the first clause, then layers scale limits and the alternative before the cost details. Dense but each clause carries information; slightly crammed into two long sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param tool with an output schema and annotations covering the safety profile, the description covers purpose, scale, cost, budget control, and alternative routing. The only omission is the rationale for the destructive/write flag.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented in structured form, including the budgetUsd default/max that the description repeats. The description adds the 'in seconds' timing nuance and the chargedUsd output hint, but adds little parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: measures how much X is talking about 1-6 phrases, and enumerates outputs (7-day volume, per-day counts, velocity, sample posts, wave flag). It explicitly distinguishes itself from the sibling x_pulse ('to learn what people are saying, use x_pulse').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative tool (x_pulse) and the exact condition that selects it (qualitative content vs. counts). Also bounds scope ('counts only, in seconds') so an agent knows what this tool will not return.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
demo_pageRecord a product demoAInspect
A real browser opens a URL and performs the steps you name (type, click, hover, scroll, wait); returns an MP4 media key drawn like a screen-recorded demo, with a cursor and camera that follow each action. A page behind a login demos as its login wall. Free: nothing is charged. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The absolute URL of the page to demo. | |
| name | Yes | A 2-6 word filename for the clip, e.g. "analyze flow demo". | |
| zoom | No | Ease the camera onto each element touched. On by default; off shows the whole page. | |
| steps | Yes | One step per line or semicolon: "type acme.com into the URL field; click Analyze; wait 2; hover the first result; scroll to Pricing". Add "for 2s" to hold a step longer. | |
| aspect | No | The clip's shape. 9:16 by default so it fills a reel behind a cutout speaker. | |
| viewport | No | Which screen to demo on. mobile by default for a 9:16 clip (the page fills the reel), desktop otherwise or when the reel shows the desktop product. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| browser_bar | No | Draw a browser bar with the address above the page. On by default. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false), the description discloses real-browser execution, the MP4 return type, the login-wall limitation, and the required write scope — meaningful context for a non-read-only, open-world tool. One flaw: it asserts "Free: nothing is charged" while the schema exposes budgetUsd with a default of 2 and a max of 10, a cost inconsistency the agent must resolve.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with the mechanism and the return artifact, with caveats after. Some phrasing is soft ("drawn like a screen-recorded demo", "Free: nothing is charged") but nothing is genuinely wasteful for a tool of this complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the return shape needs no prose, and the description covers execution model, auth scope, and the login-wall failure mode. The only real gap is the unresolved tension between "Free" and the budgetUsd parameter, plus no note on step-count or runtime limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including zoom, aspect, viewport, browser_bar, and budgetUsd is already documented in the schema. The description's step verb list (type, click, hover, scroll, wait) largely restates the steps parameter description rather than adding syntax or edge-case meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb+resource: a real browser opens a URL, executes named steps, and returns an MP4 media key. That output detail separates it from still-image siblings like screenshot_page or read_page. It never names record_page or other adjacent capture tools, so an agent must infer the boundary rather than read it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by the mechanism (a real browser driving a scripted flow) and the login-wall caveat tells the agent one situation where the result will be wrong. There is no explicit when-to-use versus record_page/screenshot_page/edit_footage guidance and no statement of when not to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_footageEdit a videoAInspect
Cut a video in the media library (an upload, a generated or found clip, a render) down to the moments that matter and get a new media key: keep beats or quoted words from probe_media's transcript (keep_text), or seconds (keep_ranges, remove_ranges). The same call reframes to 9:16, tightens pauses, burns in captions, lays music and places overlays, a logo and a look. Run probe_media first; plan: true reads the paper edit back before rendering. Free: nothing is charged. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| fit | No | cover (default) crops to fill the new shape; contain letterboxes onto pad_color, which keeps a whole slide readable. Needs reframe. | |
| sfx | No | Sounds you place, one per line or semicolon: "<window> <sound> [gain dB]", e.g. "@"the result" ding; @"but then" record scratch -3; 12.4 riser". The sound lands as the window opens. Name it by id or by a few words ("vinyl scratch", "whoosh deep"), or media:<mediaKey> for a sound in the library. A placed sound replaces an automatic one within 0.3 s; the automatic pops and whooshes stay everywhere else. Default gain -6 dB. A few per short land; a hit on every sentence is noise. Library ids: air-horn, among-us-role-reveal, anime-wow, applause, apple-pay, bell-ding, boing, bone-crack, bruh, camera-shutter, cash-register, censor-beep, crowd-gasp, deadpan-bruh, ding, discord-notification, drama-boom, dramatic-boomer, dramatic-sting, emotional-damage, error-buzzer, fah, glitch, illuminati-confirmed, keyboard-typing, loading-lag, mac-quack, mario-jump, metal-gear-alert, minecraft-hurt, mouse-click, nelly-ahh, oh-my-god-vine, omg-hell-nah, page-turn, pop, price-is-right-fail, record-scratch, riser, rizz, romance-meme, run-vine, sad-meow, sad-trombone, sad-violin, sanctuary-guardian-what, shocked, shutter-modern, shutter-old, skedaddle, snapchat-notification, spongebob-fail, sub-drop, swoosh-transition, ta-da, triggered, ui-switch, vine-boom, vinyl-scratch, whip, whoosh, whoosh-deep, whoosh-short, wilhelm-scream, windows-xp-error, yippee. | |
| card | No | The hook card: "<4 to 8 words> <window>", e.g. "Get customers for your product 0-5" or "... @"That's exactly"+4". The pops' dark pill in the upper third, popping in, gone when the window closes. The reels pin one from the first half second, with an icon row above the words: add "| brand:meta + <logo mediaKey> = emoji:🚀" (the same whats as pops, a brand in its real colours, joined by + and =), or one mark alone, "| brand:meta", each on its tile, popping in one after the other. | |
| logo | No | The brand lockup small in a corner the whole cut: "<mediaKey> <window> [anchor] [width%] [| Brand Name]" ("0-45" or @"ShapelessAI"..end), top-right and 14% of the frame wide by default, a margin off the edge, the name beside the mark when given (always give it). It fades in and out and steps aside on its own while a full picture, the hook card or a pop on the same corner is on screen. Use the exact logo asset from the brand kit; beside the hook words it goes in the card's icon row. | |
| look | No | Grade the picture, a choice for flat footage or a brand, not a default: clean lifts contrast, colour and sharpness a touch; film is softer with a warm tint and grain; noir is high-contrast black and white; warm is saturated and sunny. Unset keeps the camera's colour, which is right for most phone footage. | |
| name | Yes | A 2-6 word filename for the cut, e.g. "demo hero moments". The user sees it in Assets. | |
| plan | No | Resolve the whole call and render nothing: the paper edit comes back, every beat of the take kept or dropped, where each plays on the cut and what sits on it, with what an editor would send back (a bare beat, a picture that leaves before the thought ends or runs into the next one, the same picture twice). Plan with it until it reads right, then repeat the call without plan to render once. | |
| pops | No | The small things the reels pop beside the speaker ON the word, one per line or semicolon: "<what> <window> [anchor] [size%]". what: brand:nvidia (a company or product's real mark, its own app tile - tiktok, instagram, youtube, linkedin, x, meta, openai, claude, claude-code, gemini, cursor, or any handle brand_mark returned; a domain like jev.ai reaches the long tail), wordmark:claude (the name written the brand's way, on white paper, wider - for a brand the viewer must read, not just recognise), icon:rocket (lucide, a white glyph on a tile in the caption accent), emoji:🔥 or emoji:fire (animated; any other emoji draws as a still), "13,255 visits" (a few words on a dark pill, the last word in the caption accent, quoted), or a media key (a screenshot or logo on a white card). Anchor top by default; in cutout mode the free band is above the speaker, so top, top-left, top-right. One pop per product noun, on the word: @"TikTok". A named platform gets its mark: "TikTok, Reels and Shorts" is three marks in a row (brand:tiktok @"TikTok"..@"Shorts" top-left; brand:instagram @"Reels"..@"Shorts" top; brand:youtube @"Shorts" top-right). The CTA beat shows where to go: the domain in a pill ("shapelessai.com" @"check it out"..end top). | |
| focus | No | "face" finds the person in every kept segment and frames on them, eyes on the upper third - what a talking head wants. Or where the subject is in the SOURCE frame, as "x,y" percentages: "30,50" keeps the left third of a screen recording in a 9:16 crop. Centre by default. Works with or without reframe. | |
| music | No | A bed under the take: "<mediaKey> [gain dB] [duck dB]", e.g. "music/lofi-bed.mp3 -18 12". The voice stays; the bed loops to the cut's length, sits at the gain (-18 by default, under a voice) and is pulled down by the duck amount while the person speaks, back up in the gaps. The key is plan_music's mediaKey or any audio in the library. Masters the cut's sound like normalize_audio. | |
| names | No | The brand, product and domain names, spelled the owner's way, comma-separated: "ShapelessAI, shapelessai.com". A recogniser hears "shapeless AI"; the captions must not misspell the customer. Always pass them when a take names the product. | |
| speed | No | Play the cut faster or slower - 1.5 tightens a demo, 0.5 holds a detail. Audio keeps its pitch. 1 (unchanged) by default. | |
| cutout | No | Cutout mode, the shape the best founder reels run in: the speaker is lifted off their background (a real matte, hair and all) and shrunk to a corner, so the product takes the frame while the take keeps playing. Beats, each "<window> anchor [height%]", one per semicolon: "@"paste the URL"..@"analyze" bottom-right; 12-38 bottom-center 45". Anchors: bottom-left, bottom-center, bottom-right, top-left, top-right, center; the height is a share of the frame, 50 by default. Outside the beats the take is full frame. Put an overlay layer in every beat - a screenshot, a card, the product - or the person is small in front of nothing. A whoosh lands where the mode changes when studio_sound or normalize_audio is on. The reels run three quarters of their length in it: hook and CTA full frame, the demo in cutout. | |
| effects | No | Effects pinned to the person, one per line or semicolon: "<window> <lightning|sparks|glow> from <left|right|any> hand [index|palm|fingertips] [colour]", "<window> <kind> from face" or "<window> <kind> at x,y". The hand is found in every frame and the effect follows it, lightning shooting the way the finger points: @"watch this"+2 lightning from right hand; 4-6 sparks from any hand palm gold. left and right are the person's own hands; any is the safe pick. Colour: a hex or blue, purple, red, gold, green, white. The window must be where the hand is actually in view (look at the filmstrip); the result says how many frames it was found in. A strike lands with a sound when studio_sound or normalize_audio is on. | |
| reframe | No | Re-crop to this shape. Leave unset to keep the source framing. | |
| tighten | No | Transcript-first cut: pauses over 0.5s close to 0.3s (0.45s at a sentence end), dead air before the first word and after the last goes, fillers ("um", "uh") are lifted out, and a sentence said twice keeps its last saying (the founder's retake). Every other word stays. The first thing to do to any recorded take. | |
| captions | No | Word-by-word captions over the cut, timed by forced alignment to what is actually said. Default libass-burn - the cheap tier, which ffmpeg burns in during the same pass, no browser. A cut with no speech in it is left alone whatever this says. Pass "off" to draw nothing: a music-only clip, footage that already carries subtitles, or a cut a project will caption itself. tiktok-pop, brand-block, clean-line and mini-doc are drawn by the browser: pick one when the look matters. | |
| overlays | No | Pictures ON the cut, on the words or seconds named, one per line or semicolon: "<mediaKey> <window> [full|anchor] [width%]". full fills the frame (the demo_page clip or a screenshot behind a cutout speaker); an anchor (top, top-right, right, bottom-left, ...) places a white card in the safe area, 46% wide by default, popping in. A video key plays, an image is drawn. The window is the words it goes on (@"paste the URL"..@"analyze") or seconds of the CUT, after tighten and the ranges, so the picture lands on the noun. A video holds its last frame once it ends: give a clip a window its length, or a longer clip (demo_page: more steps, or "for 2s" holds); the result names a hold. Never fill a window with a still: end the cutout beat where the clip ends instead. | |
| punch_in | No | Frame every other segment closer, each cut by its own amount (7 to 22%, never the same twice in a row), so each cut reads as a change of shot. With focus "face" the closer framing stays on the person. The jump-cut convention of every talking-head short. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| keep_text | No | The moments to KEEP, one span per "|", as beats from probe_media's transcript ("b1 | b4-b7 | b12") or as the take's own words ("That's exactly what I did ... make some money | I advise you to check it out"), joined in the order given. A quoted span runs from its first phrase to the end of its last ("..." between them); one phrase alone keeps just those words; it must open and close on a thought or a clause. Quote words as probe_media spells them; a phrase said twice takes #2 ("check it out#2"). The cut lands on the words, with a breath of air either side, never mid-word. | |
| media_key | Yes | The clip to edit, as a mediaKey from assets_list (GET /api/assets), an upload, or find_footage. | |
| pad_color | No | The letterbox colour behind a 'contain' reframe, as hex. Default #000000. Match it to the clip or the brand - black bars on a light screen recording read as a broken export. Needs reframe. | |
| background | No | A media key drawn behind the matted speaker in every cutout beat, instead of the blur: a brand backdrop, a product shot, a gradient, or a video that loops (a rendered motion background, a find_footage b-roll). Overlays still sit on top of it. Needs cutout; replaces cutout_backdrop. | |
| keep_ranges | No | The moments to KEEP, in seconds of the source, joined in the order given: "12.5-18.2, 41-55.5". A timecode ("1:05-1:12") works too. For footage with no speech; a take is cut with keep_text. | |
| studio_sound | No | Studio sound for a recorded voice: rumble and room noise out, mud cut, presence lifted, sibilance tamed, then levelled to feed loudness. Use it on any take a person recorded; not on music or a produced mix. | |
| remove_ranges | No | The moments to DROP, same format; what remains is joined. Use instead of keep_ranges, never with it. | |
| caption_accent | No | Hex colour of the word being said in the captions - the karaoke highlight - and the cut's one accent: the pills' last word and the icon tiles wear it too. Match the brand; unset, the burned captions are plain white. | |
| caption_script | No | What is said in the cut, when you know it: aligning against a known script beats transcribing. Omit to transcribe the clip itself. Needs captions. | |
| cutout_backdrop | No | What fills the frame behind the cutout: "blur" (the media overlay on screen, enlarged to cover the frame and blurred, so the product's own colours bleed into the frame; the take itself when no media is on screen; the default) or a hex colour. Needs cutout. For a picture of your own there, use background instead. | |
| normalize_audio | No | Re-level the cut to broadcast loudness, keeping what was said, without the studio_sound cleaning. For a mix that was already produced. | |
| append_media_keys | No | Other clips joined on AFTER this cut, in the order given, as a comma-separated list of mediaKeys. Each is appended whole - trim it in its own edit first if you only want part of it. | |
| caption_foreground | No | Hex colour of the burned captions' other words. White by default. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: the result is a NEW media key (the source is not consumed), write scope is required, and plan mode performs no render. However, 'Free: nothing is charged' directly conflicts with the schema's budgetUsd ('default 2, max 10'), which will confuse an agent reasoning about cost; that internal inconsistency undercuts the transparency gain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose, then feature surface, then required workflow, then cost and auth. Given a 33-parameter tool this is tight; the only soft spot is the vague clause 'lays music and places overlays, a logo and a look', which gestures rather than names.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool this large, the description covers the four things an agent needs before calling: where the source comes from, the probe-first ordering, the plan-before-render loop, and the write scope. Return values need no explanation because an output schema exists, and nothing structural is missing — only the cost statement needs reconciling with budgetUsd.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description goes slightly further by naming the three mutually exclusive selection paths (keep_text as transcript beats vs keep_ranges/remove_ranges as seconds) in the header rather than leaving that discovery to a 33-param scan. It still adds no syntax or format detail beyond what the schema already carries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Cut a video in the media library') plus the outcome ('get a new media key'), and enumerates the source kinds (upload, generated, found clip, render). It also distinguishes itself from siblings by making probe_media the input supplier and assets_list/find_footage the key sources, so an agent can separate it from generate_footage or clone_reel 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit ordering rule ('Run probe_media first') and a two-step workflow ('plan: true reads the paper edit back before rendering' then repeat to render). It also states the access prerequisite ('Needs the write scope'). What it omits is when to prefer alternatives or when not to use this call at all — no mention of the other editing/render siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_assetImport a file from a URLAInspect
Pull an image, video, audio file or PDF at a public URL into the media library as a media key. A fetched file is reference material until you know you may republish it. Free: nothing is charged. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The absolute URL of the file itself, not the page around it. | |
| purpose | No | Why you want it. 'publish-candidate' commits you to stating the rights argument in the plan. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true), the description adds the write-scope requirement and a rights caveat that the import does not itself grant republishing rights. The statement 'Free: nothing is charged' sits awkwardly against the budgetUsd parameter (default 2, max 10), which implies a spend cap, creating mild ambiguity about cost behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences that front-load what the tool does, then the rights caveat, then cost and auth. Nothing is padded, though the 'Free: nothing is charged' line is potentially misleading given the budgetUsd parameter and would be better clarified or dropped.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation; the description still covers the artifact produced (a media key), the auth scope, the cost posture, and the rights caveat. For a three-parameter import tool that is sufficient for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so url, purpose, and budgetUsd are already documented, including the enum meaning. The description reinforces the 'media key' output but adds no new syntax, defaults, or format detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Pull an image, video, audio file or PDF at a public URL into the media library as a media key') and names the accepted file types plus the resulting artifact. It does not explicitly distinguish itself from near-neighbours such as find_photo, generate_image, or references_add, so an agent must infer the difference from the wording alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'A fetched file is reference material until you know you may republish it' gives real guidance on the consequences of importing, and 'Needs the write scope' sets a precondition. However, there is no explicit when-to-use versus alternatives guidance (e.g., fetch an existing URL vs. generate or search for media), leaving selection between siblings implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_evidenceFind research evidenceARead-onlyInspect
Semantic search over 322M scholarly works: a claim or topic in, works out with title, year, citation count, venue, url and abstract. Cite only what the abstract supports. Costs a fraction of a cent (about $0.001) from credit; budgetUsd (default 2, max 10) caps it and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The claim or topic in plain language, as you would say it out loud. | |
| min_year | No | Drop work published before this year. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| max_results | No | How many works to return (1-25, default 10). | |
| min_citations | No | Drop work cited fewer times than this. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, but the description adds substantial behavior beyond them: the per-call cost (~$0.001), the budgetUsd cap semantics, the chargedUsd return field, and an auth requirement ('Needs the write scope'). The write-scope note sits in mild tension with readOnlyHint but describes authorization, not mutation, so it is not a true contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with purpose and scale, then output shape, then cost/budget/auth. Every clause carries information; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with an output schema, full param coverage and rich annotations, the description supplies the remaining agent-relevant context: the citation-integrity caveat and the cost/budget model. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters with descriptions. The description restates budgetUsd defaults/max but adds no new parameter semantics (min_year, min_citations, max_results are untouched). Baseline 3 is appropriate when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — semantic search over 322M scholarly works — and describes the exact input ('a claim or topic in') and output shape ('title, year, citation count, venue, url and abstract'). This clearly distinguishes it from media-search siblings like find_photo/find_footage and from web_search, all 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the framing ('a claim or topic in, works out') and the downstream caveat 'Cite only what the abstract supports', but no alternative sibling is named and no explicit when-to-use/when-not condition is given (e.g. vs web_search or news_search). Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_faceFind a person's photoAInspect
Fetch a real photograph of a named person into the media library: their freely licensed Wikipedia portrait first, else the photo they publish themselves. Pass about (company or role) so a common name lands on the right person. Static use only; credit it when attributionRequired is true. Costs a fraction of a cent (about $0.007) from credit; budgetUsd (default 2, max 10) caps it and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| about | No | Who they are, e.g. 'founder of Instinct'. Tells namesakes apart on the web. | |
| person | Yes | The person's name as they spell it, e.g. 'Noah Shinn'. | |
| variant | No | Which of their photos, 0-based; wraps around what exists. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and openWorldHint=true; the description supplies far more: a sourcing preference order (Wikipedia free-license portrait, else self-published photo), a cost model (~$0.007, credit-funded), a budget cap with default and maximum, the chargedUsd reporting, licensing/attribution obligations, and a required write scope. This is exactly the context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the action and sourcing rule, then disambiguation, licensing, and cost. Every sentence carries information, though 'a fraction of a cent' is redundant next to the explicit '$0.007' and the cost/auth clauses are densely packed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need not be spelled out, yet the description still flags chargedUsd and attributionRequired as things to act on. Combined with auth scope, budget cap, licensing constraints, and the disambiguation rule, an agent has everything needed to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters, including defaults and max for budgetUsd and the 0-based wrapping of variant, are already documented in the schema. The description largely restates that (about for namesakes, budget default/max), adding only the per-call cost figure. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope baked in: fetch a real photograph of a named person into the media library. The 'named person' scope inherently separates it from sibling asset tools like find_photo, find_footage, and generate_image, which deal with non-person or synthetic imagery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage conditions: pass 'about' when the name is common so namesakes are disambiguated, and restrict output to static use with attribution when attributionRequired is true. It stops short of naming alternatives or stating when-not-to-use (e.g., for non-person imagery), so it is clear context without explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_footageFind stock footageAInspect
Fetch one licensed real video clip (stock, Pixabay, the Internet Archive, NASA, Wikimedia Commons, reaction GIFs) into the media library as a media key. Search in two to four concrete words. B-roll only: no recognizable faces, logos or branded property. Free: nothing is charged. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The subject on screen in two to four catalogue words - "rain window night", not a sentence describing the shot. | |
| source | No | Which library to search. "stock" by default. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| orientation | No | Shape of the slot the clip fills. Portrait (default) suits 9:16, and only "stock" can honour it - every other shelf returns what it has, so reframe those. | |
| min_duration_seconds | No | Reject clips shorter than this. Leave unset unless a beat needs the length. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations supplying the safety profile, the description still adds real value: it discloses the side effect (a clip is deposited into the media library under a media key), the licensing status, and the required write scope. The one flaw is "Free: nothing is charged," which sits awkwardly against the budgetUsd parameter (default 2, max 10), leaving the agent unsure whether a spend can occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and cardinality, then constraints, then cost, then auth. Every sentence carries information; no filler. It is a dense block rather than a structured list, which makes the exclusions and scope requirement slightly easy to skim past.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter, open-world fetch with an output schema and full annotation coverage, the description is nearly complete: action, constraints, licensing, side effect, and auth are all present. What is missing is behavior on empty results and clarification of the cost story given budgetUsd.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning: it enumerates the shelves behind the source enum and translates them into content types (stock, archival, NASA, reaction GIFs), and it reinforces the two-to-four-word constraint on query. The free-vs-budgetUsd tension is the only ambiguity introduced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource: "Fetch one licensed real video clip ... into the media library as a media key." It names the source shelves and, critically, the cardinality ("one"), which separates it from generate_footage, edit_footage and find_photo 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context for use: B-roll only, two-to-four-word queries, no recognizable faces/logos/branded property, free, write scope required. It does not explicitly name the alternatives (e.g. generate_footage for synthetic clips or find_photo for stills) or state when-not-to-use beyond the content exclusion, so routing still requires inference from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_photoFind a real photoAInspect
Fetch one licensed real photograph (stock or Pixabay) or a blank meme template into the media library as a media key. Every result carries its licence; credit it when attributionRequired is true. Free: nothing is charged. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What the photograph shows, concretely - subject, setting, mood. | |
| source | No | Which library to search. "stock" by default. | |
| variant | No | Which of the results for this query, 0-based; wraps around what the source has. 0 (the default) is the largest match, and the same photo every time. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| orientation | No | Shape of the slot the photo fills. Portrait suits 9:16 video. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false) the description discloses that a write scope is required, that every result carries a licence, and that attribution is mandatory when attributionRequired is true — exactly the kind of context annotations cannot express. Minor gap: 'Free: nothing is charged' sits awkwardly beside a budgetUsd parameter with a $2 default, leaving the agent unsure whether spending can occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with what is fetched and where it lands, followed by the licence/attribution obligation, cost, and auth scope. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations carry the safety profile; the description fills in licensing, attribution, cost and scope. The only unresolved point is the apparent conflict between 'nothing is charged' and the budgetUsd parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains query, source, variant, budgetUsd and orientation, and the description adds no syntax or selection detail for any of them. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Fetch') plus resource ('one licensed real photograph (stock or Pixabay) or a blank meme template') and a stated outcome ('into the media library as a media key'). The emphasis on 'real photograph' implicitly separates it from generate_image/find_footage, so an 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied rather than stated: the 'real photograph' framing and the licence/attribution note tell the agent this is for licensed real imagery, but no alternative tool is named and no when-not condition is given. 'Needs the write scope' is the only explicit precondition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_footageGenerate AI videoADestructiveInspect
Generate one short AI video clip from a prompt: one continuous camera move over one subject, silent unless with_audio (more per second). The dearest asset there is; try find_footage first. The clip carries a SynthID watermark and needs an AI-generated label where the platform asks. Returns a media key. SPENDS CREDIT: about $0.18 of engine cost a default call, billed with the plan's margin; budgetUsd caps it (default 2, max 10) and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | A 2-6 word filename for this clip, as you would describe it to a colleague - e.g. "rain on window neon". Becomes the file the user sees in their Assets. | |
| aspect | No | Shape of the generated frame. 9:16 by default. | |
| prompt | Yes | The shot as 1-3 sentences of flowing prose: subject, setting, light, and the ONE camera move. Say what the camera does, not what the story means. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| resolution | No | 720p by default and right for b-roll under a cut. 1080p costs $0.05/s against $0.03/s - worth it only when the clip fills the frame and holds. | |
| with_audio | No | Generate the clip's own sound too - $0.05/s at 720p against $0.03/s silent. Default false, because narration, music and sfx normally own the mix and a generated soundtrack fights them. Worth it when the clip sound IS the point: rain, a crowd, a machine, a diegetic moment that carries the shot. An unmuted clip is mixed into the master. | |
| duration_seconds | No | 4, 6, 8 (6 by default); anything else rounds up, and you are billed for the rounded length. You pay per second, and you will cut most of it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: exact credit cost (~$0.18 default), budgetUsd cap behavior, chargedUsd reporting, required write scope, SynthID watermark, and platform AI-labeling obligation. The destructiveHint=true annotation is corroborated by the explicit spend warning rather than contradicted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the core action, the cheaper alternative, and the spend warning all come before the parameter caveats. Slightly run-on in the cost/watermark run of sentences, but each sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, credit-spending, watermark-bearing generation tool, the description covers cost, cap mechanism, permissions, return handle ('Returns a media key'), and legal labeling. With an output schema present, it correctly avoids re-explaining the full return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description still adds value by tying parameters to aggregate economics ('about $0.18 of engine cost a default call', budgetUsd default 2/max 10) and by framing duration as something 'you will cut most of'. It largely echoes the schema's per-second pricing, so it does not reach a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource+scope: 'Generate one short AI video clip from a prompt: one continuous camera move over one subject, silent unless with_audio'. It is clearly distinguishable from sibling find_footage (which it explicitly names) and from generate_image/edit_footage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Routes explicitly: 'The dearest asset there is; try find_footage first', giving a when-not-this-tool condition. It also states when the with_audio variant is worth it ('when the clip sound IS the point: rain, a crowd, a machine').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageGenerate an imageADestructiveInspect
Make one image from a prompt written as a scene in prose, in the aspect ratio of the platform it is for, optionally conditioned on up to 6 reference_keys from the media library (a logo, a product shot, an earlier image). quality "premium" is the dearer model. Returns the image as a media key with a URL; put the key in posts_create mediaKeys. SPENDS CREDIT: about $0.016 of engine cost a default call, billed with the plan's margin; budgetUsd caps it (default 2, max 10) and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | A 2-6 word filename for this image, the way you would describe it to a colleague - e.g. "founder desk golden hour". Becomes the file the user sees in their Assets. | |
| size | No | 1K draft, 2K final. | |
| prompt | Yes | The full scene as 2-5 sentences of flowing prose, directing medium, subject, setting, light, and composition — YES "A photorealistic overhead shot of a cluttered founder desk at golden hour, one glowing laptop as the focal point, deep negative space on the right", NOT "desk, laptop, startup, 4k, trending, professional". When reference_keys are given, also say what each referenced object does in the scene. | |
| quality | No | standard = the default model (default). premium = the fidelity escalation, several times the price. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| aspectRatio | Yes | LinkedIn feed image: 4:5. Wide header: 16:9. | |
| reference_keys | No | Up to 6 media keys to condition on: brand-asset keys from the digest, mediaKeys of earlier generated images, or chat-upload keys. Omit for a purely imagined scene. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false, and the description goes well beyond them: it discloses the credit spend (~$0.016 per default call), that budgetUsd caps it (default 2, max 10), that chargedUsd reports actual cost, and that the write scope is required. This is exactly the cost/side-effect context an agent needs before invoking a paid mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and resource before the cost detail, and the credit/scope warnings are placed last where they belong. Slightly redundant with the schema on budgetUsd and the premium tier, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a seven-parameter paid generation tool the description covers medium, sizing input, budget ceiling, output key handoff, and auth scope, and an output schema exists so return values need not be explained. The only real gap is the absence of explicit when-to-use-this-vs-find_photo/generate_footage routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters, and the description largely restates it (budgetUsd default/max, premium as 'the dearer model'). It adds only marginal framing, e.g. that premium quality and reference_keys are discretionary, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Make one image from a prompt'), plus its key scope constraints (aspect ratio, up to 6 reference keys). An agent can tell it apart from generate_footage/render_thumbnail by the image medium and the prose-prompt requirement, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives operational context ('in the aspect ratio of the platform it is for', 'put the key in posts_create mediaKeys', 'omit [reference_keys] for a purely imagined scene') but never states when to choose this over siblings like generate_footage, find_photo, or render_thumbnail. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_estimatePrice an identity pullARead-onlyInspect
What identity_expand would cost before it runs, read from the price list and what the graph holds, never a vendor: estimateUsd, capUsd (the most it can spend at these settings), and for posts what the range already holds (alreadyHeld, coveredFrom, coveredTo) so only the gaps are paid for, its cadenceHours and nextRefreshAt, and sources: the vendor the pull asks first and every fallback behind it, each with its unit price and whether it reaches the range; for creators the priced steps. Engine USD: a paid plan is charged 3x, the free plan 1x. Free. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | A node id: person:<uuid>, account:<uuid>, organization:<uuid> or asset:<platform>:<postId>. identity_search finds one; a resolve's anchor is one. | |
| force | No | Pull even when fresh (profiles for a day, posts by the account's own posting rhythm, sponsors, ads, creators and labels for a week), and the whole posts range rather than only the unread gaps. | |
| since | No | posts only: oldest publish day, YYYY-MM-DD (default now minus sinceMonths). | |
| until | No | posts only: newest publish day, YYYY-MM-DD (default now). | |
| maxItems | No | posts only: the most posts one pull lands, 25 to 1000, default 300. | |
| budgetUsd | No | The budget the pull would run with, 0.01 to 2. | |
| expansion | Yes | profile: an account's profile, a person's accounts' profiles, an organization's site, accounts and logo. posts: an account's posts with metrics (since/until/sinceMonths/maxItems apply). sponsors: brands that paid an account. ads: an organization's ads from the ad libraries. creators: an organization's creators (paid, partners, and the ones its accounts feature), cheapest evidence first. metrics: a fresh snapshot of one post (asset). labels: what a person or organization is (category, niches), read by a model; also what identity_similar ranks by. | |
| sinceMonths | No | posts only: 1 to 36 months back, default 12. |
Output Schema
| Name | Required | Description |
|---|---|---|
| node | Yes | |
| note | Yes | |
| capUsd | Yes | |
| vendor | No | |
| sources | No | |
| coveredTo | No | |
| expansion | Yes | |
| alreadyHeld | No | |
| coveredFrom | No | |
| estimateUsd | Yes | |
| reachesRange | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), yet the description still adds real behavior: the call is free, it requires the read scope, and paid plans are billed at 3x versus 1x on the free plan. It also explains that already-held coverage means only gaps are paid for, which is genuinely non-obvious. No rate limits or cache lifetimes are mentioned, keeping it off 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the body is a single comma-spliced run-on that stacks five output concepts and a pricing multiplier into one sentence. Every clause is substantive, yet the lack of separation makes it slow to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values did not need spelling out, but the description covers them anyway and adds the auth requirement plus the pricing multiplier. For an 8-parameter estimator with a sibling dependency, that is sufficient to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 nevertheless adds interpretation: capUsd is 'the most it can spend at these settings', which ties budgetUsd to the returned cap, and it flags that posts estimates report coveredFrom/coveredTo so the agent understands range versus gaps. It does not walk the remaining parameters (force, sinceMonths, maxItems) beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with the exact role: it prices what identity_expand would cost before it runs, which separates it cleanly from the sibling it estimates for. The noun set (estimateUsd, capUsd, alreadyHeld, sources) makes clear it is a read-only estimator rather than a puller.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'before it runs' tells the agent this is the pre-flight step for identity_expand, and 'Free' removes any cost hesitation about calling it. It never states when not to bother (e.g. if a recent estimate exists) or names any other alternative, so it falls short of a full when/when-not treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_expandPull one more ring of a nodeADestructiveInspect
SPENDS CREDIT. Grow one node by one expansion: profile, posts, sponsors, ads, creators, metrics or labels. A fresh expansion answers costUsd 0 unless force. budgetUsd 0.01 to 2 engine USD (default 0.5) is held on the wallet first; only what the pull cost is charged. Price it first with identity_estimate. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | A node id: person:<uuid>, account:<uuid>, organization:<uuid> or asset:<platform>:<postId>. identity_search finds one; a resolve's anchor is one. | |
| force | No | Pull even when fresh (profiles for a day, posts by the account's own posting rhythm, sponsors, ads, creators and labels for a week), and the whole posts range rather than only the unread gaps. | |
| since | No | posts only: oldest publish day, YYYY-MM-DD (default now minus sinceMonths). | |
| until | No | posts only: newest publish day, YYYY-MM-DD (default now). | |
| maxItems | No | posts only: the most posts one pull lands, 25 to 1000, default 300. | |
| budgetUsd | No | Engine USD, 0.01 to 2, default 0.5. | |
| expansion | Yes | profile: an account's profile, a person's accounts' profiles, an organization's site, accounts and logo. posts: an account's posts with metrics (since/until/sinceMonths/maxItems apply). sponsors: brands that paid an account. ads: an organization's ads from the ad libraries. creators: an organization's creators (paid, partners, and the ones its accounts feature), cheapest evidence first. metrics: a fresh snapshot of one post (asset). labels: what a person or organization is (category, niches), read by a model; also what identity_similar ranks by. | |
| sinceMonths | No | posts only: 1 to 36 months back, default 12. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | Yes | |
| nodes | Yes | |
| pulls | Yes | |
| anchor | Yes | |
| status | No | |
| costUsd | Yes | |
| holdUsd | No | |
| summary | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a destructive, non-read-only, open-world write. The description adds substantial context beyond them: it spends credit, holds budgetUsd on the wallet first, charges only actual pull cost, gives fresh expansions cost 0 unless force, and states the write scope requirement. That is rich disclosure of cost, side effects, and auth preconditions for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The cost warning is front-loaded ('SPENDS CREDIT.') and most sentences are dense with useful distinctions. The freshness-window parenthetical is somewhat compressed, but every sentence carries operational information and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, credit-spending expansion tool with an output schema already defined, the description covers the critical unknowns: cost behavior, budget reservation, force semantics, auth scope, and expansion meanings. No essential calling information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description goes beyond the schema by explaining that fresh expansions cost 0 unless force, how the budget hold works, and that creators are ordered 'cheapest evidence first' – meaningful semantics not fully captured by the per-parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Grow one node by one expansion') and enumerates the seven expansion types, so an agent knows exactly what this tool produces. It also names the related pricing sibling (identity_estimate), distinguishing it from estimate/preview tools without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Price it first with identity_estimate' and 'Needs the write scope,' giving a clear precondition and alternative. It also implies the force/freshness condition for when a re-pull is needed, though it does not state explicit cases when this tool should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_libraryRead a person's or account's postsARead-onlyInspect
Every post held for a person or an account, sorted (multiplier is views against the account's own median) and faceted by platform and topic. Free; pull more with identity_expand posts. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Order, default newest. | |
| limit | No | 1 to 200, default 60. | |
| anchor | Yes | A person or account id. | |
| offset | No | Skip this many. | |
| platform | No | One platform id. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, and closed-world behavior. The description adds meaningful context beyond annotations: authentication requirement ('Needs the read scope'), cost ('Free'), and the meaning of the multiplier sort. Return format is covered by the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tightly packed sentences with no wasted words. Scope and sorting are front-loaded, followed by cost, expansion alternative, and auth requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full parameter descriptions, and annotations covering safety, the description supplies the remaining key context: auth scope, cost, sorting semantics, and pagination alternative. A minor gap is that it mentions topic faceting without a corresponding topic parameter, and it does not state its relationship to posts_list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. The description adds value by defining multiplier as 'views against the account's own median,' which the schema enum alone does not explain. It also clarifies the platform/topic faceting context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reads every post held for a person or account, with sorting and platform/topic facets. It distinguishes the expansion path via identity_expand, but does not explicitly differentiate from siblings like posts_list that may also return posts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful context: the tool is free, requires the read scope, and points to identity_expand for pulling more. It does not explicitly say when to choose this over posts_list or other identity siblings, so the guidance is helpful but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_nodeRead an identity nodeARead-onlyInspect
One node in full: its fields, its edges with evidence, the pulls that fed it (vendor, cost, when), when each expansion was last pulled, the posts date ranges held, and metric history. Free. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A node id: person:<uuid>, account:<uuid>, organization:<uuid> or asset:<platform>:<postId>. identity_search finds one; a resolve's anchor is one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| node | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, closed-world, so the bar is lower. The description still adds genuine value: it says the call is free and requires read scope, and it enumerates what the response contains (evidence attached to edges, vendor/cost/timestamp of pulls, last-pulled times, held date ranges, metric history). That's more than the annotations or the output schema's existence alone conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It's front-loaded with "One node in full" and then spends its words on the return contents. The long enumerated clause is dense but each item earns its place, and the two trailing sentences ("Free. Needs the read scope.") are clipped and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one required param, full schema coverage, an output schema, and read-only annotations, the description fills the remaining gaps an agent would care about: cost, required scope, and the kinds of data returned. It stops short of covering error behavior or what happens for a missing id, but nothing essential to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single id parameter is documented in detail, including the person:/account:/organization:/asset: formats. The description itself says nothing about the id, so baseline 3 is right – the schema does the work here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"One node in full" states a specific verb and resource, and the list of contents (fields, edges with evidence, pulls, expansions, date ranges, metric history) makes the scope concrete. It doesn't explicitly distinguish itself from siblings like identity_search or identity_expand, though the schema description mentions identity_search finds ids.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Free. Needs the read scope" gives cost and auth context, which implies it's safe to use liberally. But there's no explicit statement of when to use this versus identity_expand, identity_similar, or identity_search – the agent has to infer that from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_peopleList people in Shapeless IdentityARead-onlyInspect
Every person the graph holds, with labels, accounts and counts, sorted and filtered; scope mine is what this account tracks and the people one edge from them. Free. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Filter by name or handle. | |
| sort | No | Order, default updated. | |
| limit | No | 1 to 200, default 50. | |
| niche | No | Only people with this niche label. | |
| scope | No | global (default) or mine. | |
| category | No | Only people with this category label. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| people | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint=false, so safety is covered; the description adds two things annotations cannot express: it is free of cost and it requires the read scope. That auth/cost disclosure is genuinely useful. It does not mention pagination behaviour or result ordering beyond the sort parameter, keeping it out of the top band.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loads the resource, which is good, but the single run-on sentence spliced with semicolons and the 'Free.' fragment make it harder to parse than necessary. The scope explanation is buried mid-sentence rather than given its own clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the description needn't document return shape, and annotations cover the safety profile. What remains — cost, required scope, the meaning of scope=mine, and the filter/sort model — is all present, so an agent can call this correctly without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds meaning the schema does not: it explains that scope=mine narrows to what the account tracks plus first-degree neighbours, which is far more informative than the schema's bare 'global (default) or mine'. The phrase 'sorted and filtered' also signals that q, sort and the label filters combine.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (every person the graph holds) and what each record carries (labels, accounts, counts), which is enough to distinguish it from identity_search or identity_node on inspection. It stops short of explicitly naming which sibling to use for query-type lookups, so differentiation is implicit 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'scope mine is what this account tracks and the people one edge from them' is real guidance about which scope to pick, but it only addresses one of six parameters. There is no statement of when to prefer this over identity_search, identity_library, or identity_tracked, leaving the list-vs-search decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_resolveResolve who someone isADestructiveInspect
SPENDS CREDIT. Find who a seed is and land them in the identity graph: a person (handle, profile URL, personal site) or an organization (LinkedIn company URL, or a bare domain), then their accounts' profiles and labels. A seed already known opens for $0 unless force. budgetUsd 0.5 to 5 engine USD (default 2) is held on the wallet first; only what the pull cost is charged (holdUsd says what was held). Returns the anchor node, costUsd, the pulls and every node it showed. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Overrides the guess of what the seed is. | |
| seed | Yes | A handle, a profile URL, a personal site, a LinkedIn company URL or a bare domain. | |
| force | No | Resolve again even when the seed is known. | |
| budgetUsd | No | Engine USD, 0.5 to 5, default 2. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | Yes | |
| nodes | Yes | |
| pulls | Yes | |
| anchor | Yes | |
| status | No | |
| costUsd | Yes | |
| holdUsd | No | |
| summary | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: warns it 'SPENDS CREDIT', explains the hold-then-charge model (budget held first, only actual cost charged, `holdUsd` reports the hold), and states the write scope requirement. It does not say what happens to existing graph data when a node is re-resolved with `force`, which matters given destructiveHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The cost warning is front-loaded in the first two words, then purpose, then mechanics, then outputs. Dense but every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description still sketches the return shape (anchor node, costUsd, pulls, visited nodes), plus cost, auth scope and idempotency behavior. For a credit-spending, destructive, open-world tool, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters are already documented, and the description largely restates them (budget range/default, force, seed types). The only added meaning is the interplay that `force` is what makes a known seed cost money. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find who a seed is and land them in the identity graph') and enumerates the seed shapes it accepts (handle, profile URL, personal site, LinkedIn company URL, bare domain). This is clearly distinguishable from siblings like identity_search or identity_estimate, which read rather than resolve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete cost-driven usage condition: a known seed costs $0 unless `force` is set, which is exactly the decision an agent needs before calling. It does not name alternatives (e.g. identity_estimate for a cost preview, or identity_search for lookup without graph writes), so the routing guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_searchSearch Shapeless IdentityARead-onlyInspect
Find people, accounts and organizations the identity graph already knows, by name or handle, with their labels. Free. Use it before identity_resolve: a known node costs nothing to open. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | A name or handle; one letter answers nothing. | |
| limit | No | 1 to 50, default 12. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hits | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/non-destructive, so the description is free to add operational context instead. It does: 'Free' discloses cost, and 'Needs the read scope' discloses the auth prerequisite — both beyond annotations. No return-shape detail, which is fine given an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the verb and resource, then cost, then routing advice. No filler and no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, cost model, ordering relative to resolution, and auth scope for a two-parameter read tool with an output schema. Only the result-volume controls (limit range/default) are left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. 'By name or handle' in the description merely restates what the q parameter description already says; nothing is added about limit or the default of 12.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('find people, accounts and organizations the identity graph already knows') and narrows scope with 'by name or handle, with their labels'. An agent can distinguish it from identity_resolve and identity_expand 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes ordering against a named sibling: 'Use it before identity_resolve' with a cost rationale. It gives no when-not-to-use case or mention of other search-like siblings (concept_search, find_evidence), but the primary routing decision is covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_similarFind similar peopleARead-onlyInspect
People like one person, each with the niches and organizations they share and why in one line. basis embedding, or labels with a note when the person has no embedding yet (run identity_expand with labels first). Free. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 1 to 50, default 12. | |
| scope | No | global (default) or mine. | |
| anchor | Yes | A person id: person:<uuid>. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| basis | Yes | |
| anchor | Yes | |
| people | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover read-only and non-destructive behavior. The description adds meaningful extra context: the operation is free, requires read scope, and falls back to label-based similarity with a note when no embedding exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the core purpose. The clause 'basis embedding, or labels with a note...' is slightly awkward but still compact and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema, output schema, and annotations, the description is mostly complete for correct invocation. It covers prerequisites and fallback behavior, with only minor gaps around sibling differentiation and parameter details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents anchor, limit, and scope. The description reinforces that the anchor is one person and explains the embedding/label basis, but adds little about limit or scope beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this finds people similar to one person, with shared niches/organizations and reasons. It is specific about the resource, but does not explicitly differentiate itself from sibling identity tools such as identity_search or identity_people.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful usage context: the read scope is required and identity_expand with labels should be run first if the person lacks an embedding. These are explicit prerequisites and an alternative path, though it does not compare against sibling search/listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_trackedTrack people and organizationsADestructiveInspect
What this account tracks (me, competitor, reference, watch) and those nodes. With node and role it tracks one or changes its role; with node and remove it stops. A resolve or an expand tracks its node as watch by itself. Free. Needs the read scope to list, write to change.
| Name | Required | Description | Default |
|---|---|---|---|
| node | No | A person, account or organization id. | |
| note | No | Why, up to 500 characters. | |
| role | No | me, competitor, reference or watch. | |
| remove | No | Stop tracking node. |
Output Schema
| Name | Required | Description |
|---|---|---|
| nodes | Yes | |
| changed | Yes | |
| tracked | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=false; the description adds genuinely new context beyond them: cost ('Free') and required scopes (read to list, write to change). It also discloses the side effect that resolve/expand auto-create watch entries, which is behavior an agent could not infer from the annotations. It stops short of saying what happens when untracking a node that isn't tracked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short clauses, all load-bearing: mode semantics, sibling side effect, cost, and scopes. Slightly telegraphic phrasing ('it stops', 'by itself') costs a little readability but nothing is wasted or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema covering return values and 100% schema coverage on four optional parameters, the description supplies everything else an agent needs: mode selection, side effects from sibling tools, authorization requirements, and cost.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds combinatorial semantics the flat schema cannot express – which pairs of parameters activate which mode, and that remove is the inverse of tracking. The note parameter ('why, up to 500 characters') is left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states the resource (the tracked-node list scoped to this account) and the three roles, plus the mutation modes via node+role and node+remove. The opening clause is a noun phrase rather than a verb, so the fact that a bare call returns a list is only confirmed later by 'Needs the read scope to list'. Sibling differentiation is present through the explicit mention of resolve and expand.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear argument combinations are given: node+role changes role, node+remove stops tracking, and a bare call lists. It also flags an important interaction with siblings – identity_resolve and identity_expand implicitly add their node as watch – which tells an agent when this tool is unnecessary. No explicit 'do not use when' beyond that, keeping it at 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_page_styleRead a site's brand styleBRead-onlyInspect
A page's visual identity as design tokens: heading and body typefaces, the palette by role as hex, the button radius and its logo, measured as a visitor sees it. Free: nothing is charged. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The absolute URL of the page to read. | |
| viewport | No | Which layout to read. Defaults to desktop, the full identity. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, and the description usefully adds an auth requirement ('Needs the write scope'). However, 'Free: nothing is charged' conflicts with the schema's budgetUsd parameter (default 2, max 10), which is actively misleading about cost behavior, and the tension with readOnlyHint/write scope is left unexplained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the returned tokens rather than preamble. The only wasted (and harmful) clause is 'Free: nothing is charged', which occupies space and misinforms.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape detail is unnecessary, and all three params are documented in-schema. What's missing is the sibling-routing guidance an agent needs to choose between this and the many page/asset/render tools, plus an accurate statement about billing and scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description adds no meaning for 'url' or 'viewport' beyond the schema and does not touch the budget parameter. Worse, its 'Free: nothing is charged' line gives a false signal about budgetUsd, so it subtracts rather than adds for parameter interpretation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the concrete output set — typefaces, palette by role as hex, button radius, logo — so an agent knows this returns design tokens for a page's visual identity, distinct from screenshot_page or read_page. It lacks an explicit verb (the action is only implied by 'measured as a visitor sees it'), and it never contrasts itself with the visual-capture siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing says when to prefer this over screenshot_page, read_page, brand_mark, or identity_library. The phrase 'measured as a visitor sees it' faintly implies rendered-page extraction, but no alternative or exclusion is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_audio_searchFind an Instagram soundARead-onlyInspect
Music or original sounds an Instagram account may attach to a Reel, from Meta's Audio API (audio Meta authorized for third-party use; the in-app catalogue can differ). Empty query = trending. Pass a result's id as posts_create audio.audioId; the sound is attached by Instagram, never burned into the video. Prefer isAdsEligible: true for a business promoting itself. Needs the Instagram account connected through Facebook Login; otherwise a 409 carries the connect link. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | music (default) or another Reel's original_sound. | |
| query | No | What to search: a title, an artist, or both. Omit for trending. | |
| connectionId | No | The Instagram account (connections_list); omit for the account's first one connected through Facebook. |
Output Schema
| Name | Required | Description |
|---|---|---|
| handle | Yes | |
| sounds | Yes | |
| connectionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, it discloses meaningful behavior: a 409 with a connect link when the account isn't connected via Facebook Login, the required read scope, and that the sound is attached by Instagram and never burned into the video. Those are practical, non-obvious facts an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a dense, front-loaded paragraph with little waste; the caveats, usage hints, and prerequisites each carry information. The run-on packing of several ideas into one paragraph slightly reduces readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained. The description covers auth requirements, the 409 failure mode, scope, downstream id usage, and catalogue caveats, so an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds real value by explaining that a returned id is passed to posts_create audio.audioId, but it also references isAdsEligible which is not in the schema, which could confuse. Net it stays at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and scope: music or original sounds from Meta's Audio API that an Instagram account may attach to a Reel, with the caveat that the in-app catalogue differs. It clearly conveys a search over Instagram's sound catalogue. It stops short of naming a sibling for direct differentiation (e.g., plan_music), so it falls just 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete conditions: empty query returns trending, prefer isAdsEligible: true for a business promoting itself, and pass a result's id as posts_create audio.audioId. Prerequisites (Facebook Login connection, read scope) are spelled out too. It does not explicitly state when NOT to use it or name an alternative tool, so a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobs_briefJob briefARead-onlyInspect
Compact context for continuing a conversation: the last messages clipped, an artifact inventory, post statuses, and the web url. Use jobs_get for the full transcript, jobs_continue to reply. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The job id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| live | Yes | |
| title | Yes | |
| status | Yes | |
| outputs | Yes | |
| messages | Yes | |
| artifacts | Yes | |
| createdAt | Yes | |
| createdBy | Yes | |
| updatedAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false, so the safety profile is covered. The description adds a useful auth note ('Needs the read scope') and outlines the return content, but does not cover pagination, clipping thresholds, or error behavior. With annotations carrying the safety burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences: the return contents come first, then routing alternates and the scope requirement. No filler and nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained, and the description nonetheless previews the brief's contents. Combined with annotations covering safety and the routing to siblings, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is documented in the schema as 'The job id.' The description adds nothing about id format or sourcing beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Compact context for continuing a conversation') and enumerates exactly what the brief contains (clipped last messages, artifact inventory, post statuses, web url). It explicitly names the sibling tools jobs_get and jobs_continue, so an agent can distinguish it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Routes the agent directly: use jobs_get for the full transcript and jobs_continue to reply, which frames this tool as the compact middle-ground. It also states the prerequisite ('Needs the read scope'), covering both alternative selection and access requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobs_continueReply to a jobAInspect
Send another message to a job, optionally with files attached - also the way to resume a stuck or failed run with full history. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The job id. | |
| text | Yes | The message, up to 4000 characters. | |
| model | No | Brain for this run: claude-opus-5-5, claude-opus-5, claude-sonnet-5, claude-fable-5-1, gpt-5.6-sol or gpt-6-astra. Absent means the account's default. A model test runs the same goal once per model. | |
| autoRun | No | Execute the plan the moment it is ready instead of pausing for approval. Deliverables still land as proposed drafts. | |
| budgetUsd | No | Budget for this turn, in dollars. | |
| mediaKeys | No | Media keys already in the account (from assets_upload or assets_list) to attach. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| status | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true; the description adds the auth requirement (write scope) and clarifies that this appends a message and resumes with full history rather than starting over. It does not cover rate limits, approval/pausing behavior, or what happens to an in-flight run.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence plus a short dashed clause; the resume capability and auth requirement are packed in without any filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations supply the safety profile and an output schema exists, so return values need no explanation. The description covers purpose, resume semantics, and auth, but leaves the interaction between continuing and run-state (autoRun, pending approvals, budget on resume) to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters including model, autoRun, budgetUsd, and mediaKeys are already documented. The description only echoes the optional file attachment (mediaKeys) and adds no format or constraint detail beyond the schema, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("send another message to a job") and adds the distinct capability ("resume a stuck or failed run with full history"), which separates it from siblings like jobs_create, jobs_run, and jobs_stop. An agent can pick this tool 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one explicit when-to-use case (resuming a stuck or failed run with history preserving) plus a prerequisite ("Needs the write scope"). It stops short of naming alternatives or stating exclusions, so an agent must infer when to prefer jobs_run or jobs_brief.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobs_createStart a jobAInspect
Start a durable job from a goal, optionally with files attached. The run keeps going server-side; returns the job id and its web url to poll or continue. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | What to do, up to 4000 characters. | |
| mode | No | With referenceId: clone the reference, copy its format, or take it as inspiration (default). | |
| label | No | Job title, up to 80 characters. Defaults to the goal's first line. | |
| model | No | Brain for this run: claude-opus-5-5, claude-opus-5, claude-sonnet-5, claude-fable-5-1, gpt-5.6-sol or gpt-6-astra. Absent means the account's default. A model test runs the same goal once per model. | |
| autoRun | No | Execute the plan the moment it is ready instead of pausing for approval. Deliverables still land as proposed drafts. | |
| timezone | No | IANA timezone for scheduling language in the goal. | |
| budgetUsd | No | Budget for the run, in dollars. | |
| mediaKeys | No | Media keys already in the account (from assets_upload or assets_list) to attach. | |
| characters | No | Actors to star in this job, by slug or id (characters_list). The agent always sees the whole roster; these are the ones it must use. | |
| referenceId | No | A member id from references_list: the job works from that person. | |
| idempotencyKey | No | Any string unique to this one intended thing (a UUID you keep). A retry with the same key answers what the first call made, with replayed: true, and makes nothing new. Derive it from the thing, not the attempt, so every agent and every restarted run that means the same one sends the same key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| title | Yes | |
| status | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so safety is covered; the description adds the important non-obvious traits: the run is durable and continues server-side after the call returns, and the caller needs the write scope. It stops short of describing cost/budget implications or what a failed start returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and resource, then the async consequence, then the auth prerequisite. No redundant restatement of the title, no filler, and the opening clause is the one an agent needs first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, open-world mutation with an output schema, the description covers purpose, async lifecycle, and auth requirement without needing to re-document returns. It does not mention the autoRun/approval pause that the schema exposes, nor relative cost or rate implications, which keeps it just short of complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the field docs are unusually rich (idempotencyKey, mode, characters), so the schema carries the burden. The description only gestures at mediaKeys via "optionally with files attached" and adds no meaning for goal, mode, model, budgetUsd, or idempotency semantics — the 3 baseline is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — "Start a durable job from a goal" — and flags the optional file attachment path. It is clearly distinguishable from siblings like jobs_continue (resume) and jobs_get (poll) implicitly through the "returns the job id and its web url" phrasing, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"returns the job id and its web url to poll or continue" implies the follow-on tools without naming jobs_get, jobs_tail, jobs_continue or jobs_run, leaving the agent to infer which to call next. There are no explicit when-not-to-use conditions, and the "Needs the write scope" prerequisite is the only gating guidance given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobs_getRead a jobARead-onlyInspect
One job in full: transcript, running/idle status, outputs (posts with queue state, media) and its web url. Use jobs_brief when you only need enough to reply. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The job id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| job | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and a non-open-world scope, so the safety profile is covered. The description adds real value on top: it discloses the returned fields and the read-scope auth requirement. It doesn't mention size/cost or truncation behavior for large transcripts, which keeps it 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, each carrying distinct information: payload, routing alternative, prerequisite. Front-loaded with the result shape and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return values yet still summarizes them, and it covers the read-only nature, the auth prerequisite, and the sibling routing. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema documents the single 'id' parameter, so the description's job here is marginal. It doesn't add format, source, or lookup guidance for the job id (e.g., where ids come from), so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('One job in full') and enumerates the payload (transcript, running/idle status, outputs with queue state and media, web url), so the agent knows exactly what comes back. It explicitly differentiates itself from the sibling jobs_brief.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the alternative ('Use jobs_brief when you only need enough to reply') and the condition that selects it, plus a prerequisite ('Needs the read scope'). Nothing about when to pick this over jobs_brief 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.
jobs_listList jobsARead-onlyInspect
List jobs with liveness and the web url of each, 200 per page, newest first. A non-null nextCursor means older jobs exist: pass it back as before. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| before | No | Cursor from the previous page's nextCursor. Omit for the newest page. | |
| origin | No | Filter by who started the thread. |
Output Schema
| Name | Required | Description |
|---|---|---|
| jobs | Yes | |
| nextCursor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and non-destructive, so the safety profile is covered. The description adds real context beyond them: 200 items per page, newest-first ordering, the cursor lifecycle, and the required read scope (auth prerequisite).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the return shape and pagination contract, with no filler. Every clause corresponds to an operational decision the caller must make.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and paging, ordering, and scope are all covered. The one shortfall is silence on the `origin` filter, meaning an agent may not realize server-side filtering by starter is available.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are self-documenting; the description's restatement of the `before`/nextCursor relationship adds little beyond the schema text. The `origin` filter is not mentioned at all, so no extra meaning is supplied for the one parameter with enumerated choices.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List jobs') plus what each row carries (liveness and web url), which distinguishes it from jobs_get, jobs_tail and jobs_brief by scope. It never names a sibling explicitly, so differentiation is inferred 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The pagination workflow is spelled out clearly (nextCursor → `before`, omit for newest page), but there is no guidance on when to choose this over jobs_get or jobs_tail, nor any exclusion criteria. Usage is implied by the verb 'list' rather than taught.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobs_runRun a job's planAInspect
Press Run on the job's newest proposed plan - the approval click a headless caller has nobody to make. Use it after a turn ended with a plan waiting; deliverables still land as proposed drafts. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The job id. | |
| budgetUsd | No | Budget for the run, in dollars. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| status | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it a non-read-only, non-destructive, open-world operation. The description adds context annotations can't: it is an approval action a headless caller must supply, requires the write scope, and produces drafts rather than live deliverables. Only the failure/edge behavior (e.g., no pending plan) is unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the action and followed by the trigger and prerequisite. The 'approval click a headless caller has nobody to make' phrasing is evocative but still carries information about the intended caller.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers action, trigger, auth scope, and the draft nature of outputs. Missing only edge-case behavior such as what happens when no plan is pending.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so id and budgetUsd are already documented in the schema; baseline 3 applies. The description neither adds format guidance for the id nor explains the budget parameter's effect on the run.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource pair: approving/running the job's newest proposed plan, which is clearly distinct from siblings like jobs_continue (resume work) or posts_approve (approve a post). The 'newest proposed plan' narrowing tells the agent exactly which artifact is acted on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use it after a turn ended with a plan waiting" gives an explicit triggering condition, so the agent knows when to fire it. It does not name an alternative tool or state a when-not case, 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.
jobs_stopStop a jobADestructiveInspect
Stop a running job. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The job id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| stopped | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds the write-scope requirement, which is genuine value beyond annotations, but it omits what stopping does to the job's state, whether it is reversible, or whether partial results are preserved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse sentences with zero filler; the action and the auth requirement are both front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the write-scope note covers the main implicit prerequisite for this mutation. Only the behavioral consequences of stopping a job remain unstated, which is a minor gap for a simple action tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter 'id' that the schema fully documents at 100% coverage, so the description need not elaborate. It adds no meaning beyond the schema, which is the expected baseline for a fully-covered single-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource combination ('Stop a running job') that is instantly distinguishable from siblings like jobs_run or jobs_continue. It does not explicitly name those siblings, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Stop a running job' implies the usage condition, but there is no explicit when-to-use guidance, no mention of prerequisites such as the job actually being in a running state, and no reference to alternatives like jobs_continue for resuming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobs_tailWatch a jobARead-onlyInspect
Watch a job's run: replays its events from the cursor, then follows live until the run ends, 60 seconds pass, or 200 events. Returns {live, cursor, events} - resume with that cursor. {live: false} means no run stream to attach to; the job may still have finished work, so read jobs_get. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The job id. | |
| cursor | No | Resume from this cursor; omit to replay the run from its start. | |
| maxSeconds | No | How long to watch, 15 by default, 60 at most. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, non-destructive, closed-world behavior, but the description goes further by disclosing the replay-then-live flow, exact stop conditions (run end, 60 seconds, 200 events), the return shape, cursor-resume semantics, the meaning of live:false, and the required read scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tightly structured: core behavior first, then return/resume, then fallback, then prerequisite. Every sentence adds necessary information with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a live-streaming watcher with rich schema and an output schema already present, the description covers all an agent needs: trigger semantics, stop conditions, resume mechanics, failure fallback, and auth requirements. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description reinforces cursor behavior and the 60-second cap, but adds no new syntax, format, or constraints beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Watch a job's run', then immediately defines the scope as replaying events from a cursor and following live until termination. It distinguishes itself from jobs_get by explicitly stating when no live stream is available.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for use and names jobs_get as the fallback when {live: false}. However, it does not explicitly compare itself to other sibling tools like jobs_list or jobs_get for general live-run monitoring, leaving some alternative routing implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_org_lookupFind a LinkedIn company tagBRead-onlyInspect
The verified LinkedIn mention token for a large company, or the companies for a topic, like @Microsoft, ready to paste into a LinkedIn post. Tag only a company it returns. Free: nothing is charged. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Company name or topic keywords, e.g. "nvidia" or "developer tools". | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds useful context beyond the annotations: the tool is read-only in intent but requires the write scope, and output is post-ready markup. However, "Free: nothing is charged" directly conflicts with the schema's budgetUsd parameter (default $2, max $10), leaving the agent unsure whether a call can incur cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the return value and a concrete example, with no filler. The "Free: nothing is charged" sentence is the weakest link because it duplicates and muddles the cost story rather than clarifying it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be spelled out, and the example covers the token format. What is missing is how the same query parameter switches between company-name and topic modes, and how budgetUsd interacts with the stated free usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both query and budgetUsd are already documented in the schema. The description adds no syntax or semantics for either parameter and does not reconcile budgetUsd with its "free" claim.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb-plus-resource: resolves a verified LinkedIn mention token for a large company, or companies for a topic, with a literal example URN. No sibling tool in the list does anything similar, so no disambiguation is required, but the dual company-or-topic mode is described loosely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one real constraint ("Tag only a company it returns") and context that the token is paste-ready for a post, which implies when to use it. There is no explicit when-not-to-use guidance, no mention of what to do when the lookup misses, and no stated alternative for other entity types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_page_assetsList a page's images and videosARead-onlyInspect
The media a page renders (images, videos, logos, the social preview card), largest first, with real pixel sizes and what each is for. fetch_asset the one you want. Free: nothing is charged. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The absolute URL of the page to scan. | |
| viewport | No | Which layout to load. Defaults to desktop, which loads the largest imagery. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| max_assets | No | How many entries to return (default 40). |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, openWorld, and non-destructive behavior, while the description adds useful context: largest-first ordering, real pixel sizes, item purpose, a no-charge claim, and a write-scope requirement. The 'Free' statement is somewhat inconsistent with the schema's budgetUsd parameter, so cost behavior is not fully coherent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is short and front-loads the resource and key return traits before the fetch_asset routing note and auth/cost notes. 'Free: nothing is charged' is redundant and the closing scope note is abrupt, but there is little wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter read tool with an output schema and annotations, the description covers what is returned, ordering, cost, auth needs, and the next-step fetch_asset call. It could better distinguish sibling page-inspection tools and reconcile the budget parameter, but it is broadly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3 even without parameter explanation in the description. The description does not clarify url, viewport, max_assets, or budgetUsd semantics, and its 'Free' claim actively conflicts with budgetUsd.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names the resource precisely: page media including images, videos, logos, and the social preview card, with largest-first ordering and pixel/purpose details. It also distinguishes the follow-up from fetch_asset, though it does not use an explicit verb like 'list' and does not differentiate from assets_list or probe_media.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a workflow: use this tool to see page media, then call fetch_asset for the item you want. It does not state when to choose this over screenshot_page, read_page, assets_list, or probe_media, and it gives no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meWho am IARead-onlyInspect
Who this credential belongs to: email, plan, credit balance. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| next | No | |
| plan | No | |
| user | Yes | |
| entitled | Yes | |
| accountId | No | |
| balanceUsd | Yes | |
| engineLive | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false. The description adds useful context beyond annotations: it lists the returned fields and names the required auth scope, which is genuinely helpful for an agent deciding whether it can call this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no wasted words, and the core purpose is front-loaded before the auth-scope note. It is appropriately sized for a zero-parameter read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has no parameters, an output schema, and safety annotations, the description covers the essentials: what it returns and the required scope. The only minor gap is that it does not compare itself to related account or identity tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics burden. The description does not need to explain inputs and correctly focuses on output and auth scope, though it could note that no inputs are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource: it returns the identity associated with the credential (email, plan, credit balance). That is a specific and useful resource, though it does not explicitly distinguish itself from related account-ish siblings such as capabilities_list or identity_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a prerequisite ('Needs the read scope') but does not state when to prefer this tool over alternatives or when not to use it. For a simple identity endpoint the implied usage is fairly obvious, but no explicit guidance or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_reelMeasure a reference reelADestructiveInspect
Measure a reel at a URL the way an editor would: every cut and shot, every spoken word with its time, burned-in captions and on-screen text, the music actually heard, loudness and pacing, plus the spoken words as a teleprompter script. Takes 2 to 6 minutes. Read it before clone_reel, or to make a reel like it. SPENDS CREDIT: about $0.053 of engine cost a default call, billed with the plan's margin; budgetUsd caps it (default 2, max 10) and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The reel: a public Instagram, TikTok, YouTube Shorts or X post URL, or a mediaKey from this account's media library. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing runtime (2–6 minutes), real cost (~$0.053 of engine cost plus plan margin), the budget cap semantics, and the required write scope. These are exactly the operational facts an agent needs before committing to an expensive, slow, write-scoped call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then duration, then routing advice, with the cost warning capitalized for salience. The output enumeration is long but every item is a distinct capability an agent would want to know about, so it earns its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an expensive, slow, destructive-hinted, open-world tool with an output schema already covering return shape, the description supplies everything else: latency, cost, budget behavior, auth requirement, and the sibling workflow. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 an extra point by framing budgetUsd as a cost ceiling and tying it to chargedUsd, giving the agent a cost-control mental model rather than just a type. It does not add syntax for the url parameter that isn't already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Measure') plus resource ('a reel at a URL') with an enumeration of exactly what is extracted: cuts, spoken words with timing, captions, music, loudness, pacing, teleprompter script. It also explicitly positions itself against clone_reel, so an agent can distinguish it from siblings without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States when to use it in concrete terms: 'Read it before clone_reel, or to make a reel like it.' That names the alternative and the condition that selects this tool, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
news_searchSearch the newsADestructiveInspect
Fresh, dated journalism on a query from a curated news index, press-release wires filtered out. within_days narrows the window. SPENDS CREDIT: about $0.01 of engine cost a default call, billed with the plan's margin; budgetUsd caps it (default 2, max 10) and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | A specific news query. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| within_days | No | Freshness window in days (1, 7 or 30; default 7). |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the cost model (~$0.01 engine cost per default call, margin-billed), that budgetUsd caps spend (default 2, max 10), that chargedUsd reports actual cost, and that write scope is required. This explains why a search carries readOnlyHint=false and destructiveHint=true, resolving potential confusion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what the tool returns, then the freshness knob, then a prominently flagged cost/auth block. Efficient and well-ordered, though the mid-sentence cost clause is slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return format need not be spelled out, and the description covers cost, scope, and the freshness parameter adequately. Nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are already documented by the schema. The description restates within_days (window narrowing) and budgetUsd (default/max) plus adds chargedUsd context, but adds no syntax or format detail beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — fresh, dated journalism on a query — and scopes the source precisely: a curated news index with press-release wires filtered out. This distinguishes it from generic siblings like web_search or current_pulse without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope note ('press-release wires filtered out') implies its niche versus other search tools, and 'Needs the write scope' flags a prerequisite. But it never explicitly names when to prefer this over web_search, current_pulse, or concept_search, so the agent must infer the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panel_askAsk the person to pick an optionAInspect
Asks the person a question they answer with one press: two or more options (a hook, a thumbnail, a time slot), shown on the panel; with wait_seconds it waits for the press. The panel is the document beside the chat on the ShapelessAI Ask page (shapelessai.com/studio): tabs the person looks at while you talk, and the place they answer a question with a press or edit a plan's node by hand. The browser, the chat's own agent and you (from a terminal) share one panel per conversation. The page draws it for the founder's account today (it is being rolled out); every account holds and can read its panel through these tools and the API. Returns {conversation_id, id, picked: {optionId, label, at} | null, panel_rev}; null means not answered yet, so call panel_watch with after_rev to keep waiting. Asking again with the same id replaces the question and clears its answer. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Stable id for this question. Omit it and one is made from the title. | |
| title | Yes | A short name for the tab. | |
| options | Yes | Two or more options; media shows an image or a video on the option. | |
| question | Yes | What the person decides, in one line. | |
| wait_seconds | No | Seconds to wait, 25 at most. Call again to keep waiting. | |
| conversation_id | No | The conversation (job) id whose panel to use. Omit it to use the conversation the person opened last in the browser, which is the one they are most likely looking at. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| picked | Yes | |
| panel_rev | Yes | |
| conversation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, closed-world write, and the description adds real behavior beyond that: it needs the write scope, re-asking with the same id replaces the question and clears its answer, and a null pick means unanswered. The remaining gap is minor since the output shape is documented separately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core ask-and-wait instruction is front-loaded, but a large middle block explains what the panel is, who shares it, and that the page rendering is still rolling out to the founder's account — context that does not change how the tool is invoked. Roughly half the text could be cut without losing invocation guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter write tool with an output schema, the description covers the decision-relevant behavior: waiting, continuation via panel_watch, replacement semantics, and required scope. The panel-infrastructure prose is surplus rather than missing information, so nothing an agent needs to call it is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema lacks for id — that reusing an id replaces the prior question and clears its answer, which changes how an agent should pick ids. Other parameter behavior (wait_seconds cap, conversation_id default) is only restated from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb and resource (ask the person a question, answered with one press, with two or more options) and scopes it to the panel. It also implicitly separates this from panel_watch (which it names) and from panel_open/panel_update by focusing on a question with options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete when-to guidance: pass wait_seconds to wait for the press, call panel_watch with after_rev when the result is null, and omit conversation_id to target the conversation the person last opened. It does not explicitly contrast with panel_update or panel_open, so the sibling boundary is left partly implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panel_closeClose a panel tabBInspect
The panel is the document beside the chat on the ShapelessAI Ask page (shapelessai.com/studio): tabs the person looks at while you talk, and the place they answer a question with a press or edit a plan's node by hand. The browser, the chat's own agent and you (from a terminal) share one panel per conversation. The page draws it for the founder's account today (it is being rolled out); every account holds and can read its panel through these tools and the API. Closes one tab. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The tab's id. | |
| conversation_id | No | The conversation (job) id whose panel to use. Omit it to use the conversation the person opened last in the browser, which is the one they are most likely looking at. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | |
| panel | Yes | |
| conversation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real context beyond the annotations by disclosing the auth prerequisite (write scope) and the fact that the panel is shared across the browser, the chat agent, and a terminal — implying a close is visible to other actors. It does not say whether closing is reversible, whether the tab's state is destroyed, or what happens to a tab re-opened later, which are the questions an agent most needs answered for a close operation marked 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly four sentences of panel exposition precede the one sentence that states what the tool does, so the payload is not front-loaded. Sentences like the rollout note ("it is being rolled out") and the mixed entitlement/API clause are muddled and cost more than they return for a two-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations, a complete input schema, and an output schema already present, the description's job is the shared-state mental model, and it delivers that: one panel per conversation, multiple actors, write scope required. The remaining gaps — reversibility of a close and effect on other participants' views — keep it short of full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented there, including the useful fallback rule for omitting conversation_id. The description adds nothing about id format, what happens if the id is unknown, or the consequences of targeting the wrong conversation, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The operative statement is "Closes one tab," a specific verb plus resource, and the surrounding text makes clear the tab lives in a conversation's shared panel. It does not explicitly differentiate from panel_update/panel_open (e.g., closing vs. removing content), but the panel mental model makes the distinction inferable. The defect is placement: the actual purpose is buried in the fifth sentence behind framing prose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the reader learns the panel is what the person looks at while talking, so closing removes a tab from that view, and learns a prerequisite ("Needs the write scope"). There is no explicit when-to-use, when-not-to-use, or routing versus panel_update, and no statement of when closing is preferable to just leaving a tab in place.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panel_openOpen a panel tabAInspect
The panel is the document beside the chat on the ShapelessAI Ask page (shapelessai.com/studio): tabs the person looks at while you talk, and the place they answer a question with a press or edit a plan's node by hand. The browser, the chat's own agent and you (from a terminal) share one panel per conversation. The page draws it for the founder's account today (it is being rolled out); every account holds and can read its panel through these tools and the API. Opens one tab and brings it to the front; the same id replaces that tab in place, so re-open to refresh it rather than piling up copies. Kinds and their fields: node: a graph node (person, account, organization, post) with its connections: node (a node id like person:). people: the account's people graph: no fields. plan: a chat turn's plan cards: messageId, blockIds. calendar: the post queue as a calendar: ids? (post ids, none = whole queue), highlight? (post ids to point at), from?, to?, mode? (week | month | list). performance: how posts performed: post? (one post id), days?. agent: a standing agent and its runs: strategyId?. choices: a question the person answers with one press: question, options [{id, label, sub?, media? {kind: image|video, src}}]; use panel_ask, which also waits for the pick. prompter: a teleprompter for recording: sections [{text, kind?, seconds?, cue?, wpm? (this section's pace, 60..260), tone? (warm, urgent, dry...)}], wordsPerMinute?; text may carry delivery marks: words land harder, / a breath, // a full stop, ^word lifts. search: search results the person can group and sort: query, hits [{id, title, sub?, kind?, node?, url?, thumb?, group? {facet: value}, metrics? {name: number}}], groupBy?, orderBy?. brain: the account's Brand Memory: no fields. media: images, videos or audio to look at: items [{kind: image|video|audio, src, title?}]. custom: your own HTML in a sandboxed frame, when no kind fits: html (at most 200 KB), height?. flow: a plan as a graph, one node per choice made for the person: nodes [{id, kind, title, sub?, status? (planned | new | changed | running | done | failed | waiting), costUsd?, text?, refs? [{title, url?, node?, why?}], media? {kind: image|video|audio, src, title?}, options? [string], was?}] (1 to 40, unique ids), edges [{from, to, label?}], estimateUsd?, approve? (the sentence the Approve press sends to the chat). Returns {conversation_id, id, panel, text}; text is one plain line per tab. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Stable id for this tab. Omit it and one is made from kind and title. | |
| to | No | calendar: last day, YYYY-MM-DD. | |
| ids | No | calendar: post ids to show; none shows the whole queue. | |
| days | No | performance: how many days back. | |
| from | No | calendar: first day, YYYY-MM-DD. | |
| hits | No | search: the results. | |
| html | No | custom: the HTML, drawn in a sandboxed frame with our design tokens; at most 200 KB. | |
| kind | Yes | What the tab shows (see the kinds above). | |
| mode | No | calendar: the view. | |
| node | No | node: a graph node id (person:<uuid>, account:<uuid>, organization:<uuid>, asset:<platform>:<postId>). | |
| post | No | performance: one post id. | |
| edges | No | flow: how the nodes connect; an edge naming no node is dropped. | |
| focus | No | Bring it to the front (default true). false opens it behind the current tab. | |
| items | No | media: what to show. | |
| nodes | No | flow: the plan's steps, 1 to 40, unique ids. | |
| query | No | search: the words searched. | |
| title | Yes | A short name for the tab. | |
| height | No | custom: frame height in pixels. | |
| approve | No | flow: the sentence the Approve press sends to the chat; absent means no button. Never run a paid node before it arrives. | |
| groupBy | No | search: a facet name from the hits' group. | |
| options | No | choices: two or more options. | |
| orderBy | No | search: a metric name from the hits' metrics. | |
| blockIds | No | plan: the plan blocks to show. | |
| question | No | choices: what the person decides. Prefer panel_ask, which also waits for the pick. | |
| sections | No | prompter: the script, in order. | |
| highlight | No | calendar: post ids to draw attention to (the ones you just proposed). | |
| messageId | No | plan: the chat message whose plan to show. | |
| strategyId | No | agent: the standing agent's id (agents_list). | |
| estimateUsd | No | flow: the total the run bills, shown before Approve. | |
| wordsPerMinute | No | prompter: scroll speed. | |
| conversation_id | No | The conversation (job) id whose panel to use. Omit it to use the conversation the person opened last in the browser, which is the one they are most likely looking at. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| text | Yes | |
| panel | Yes | |
| conversation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavior beyond the annotations: the panel is shared across the browser, chat agent, and terminal; there is one panel per conversation; accounts can read their panel through the API; opening brings the tab to the front; the same id replaces the tab in place; and the call needs the write scope. It also states the return shape and that text is one plain line per tab. The annotations already declare non-read-only, non-destructive, non-open-world behavior, and the description is consistent with them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but the tool is genuinely complex: 13 kinds and 31 parameters. It front-loads the panel concept and the opening behavior before listing kind-specific fields, which is the right structure. Some of the kind/field listing duplicates the schema, but it remains useful as a compact selection guide.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description is complete enough for correct invocation. It covers sharing semantics, id-based replacement, required write scope, return values, and kind-specific behavior. An output schema exists, and the description still explains the return shape and text summary, so an agent has what it needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents each parameter. The description still adds meaningful cross-parameter semantics by mapping each kind to the fields it uses and giving kind-specific constraints, such as 1 to 40 unique flow node ids, 200 KB custom HTML, and prompter pace of 60 to 260 wpm. It also clarifies that custom is for cases where no kind fits and that choices should generally be handled through panel_ask.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it opens one panel tab and brings it to the front. It also explains the panel itself as the document beside the chat and distinguishes opening from replacing an existing tab by id. This is enough for an agent to understand exactly what the 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage guidance is clear in several places: re-open with the same id to refresh rather than piling up copies, and use panel_ask instead of the choices kind because panel_ask also waits for the pick. However, it does not explicitly compare panel_open with sibling tools such as panel_update or panel_close, so the when-not-to-use boundary is only partially covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panel_updateUpdate a panel tabAInspect
The panel is the document beside the chat on the ShapelessAI Ask page (shapelessai.com/studio): tabs the person looks at while you talk, and the place they answer a question with a press or edit a plan's node by hand. The browser, the chat's own agent and you (from a terminal) share one panel per conversation. The page draws it for the founder's account today (it is being rolled out); every account holds and can read its panel through these tools and the API. Changes fields of an open tab (a new title, more search hits, the calendar's highlight); its kind never changes. An id not on the panel changes nothing. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The tab's id (panel_open returned it; panel_watch lists them). | |
| focus | No | Also bring it to the front. | |
| patch | Yes | The fields to replace, as panel_open takes them, e.g. {"title": "Next week", "highlight": ["p1"]}. | |
| conversation_id | No | The conversation (job) id whose panel to use. Omit it to use the conversation the person opened last in the browser, which is the one they are most likely looking at. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | |
| panel | Yes | |
| conversation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which already declare this is a non-read-only but non-destructive, closed-world write), the description adds real behavioral facts: an unknown id is a silent no-op, a tab's kind is immutable, and the write scope is required. That is meaningful context an agent cannot get from readOnlyHint/destructiveHint alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action is not front-loaded: three sentences describe what a panel is, who shares it, and rollout status before the tool's actual behavior appears. Much of that preamble is product context rather than invocation-relevant guidance, and the useful constraints (immutable kind, no-op on unknown id, write scope) are compressed into the final two clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full parameter descriptions, the description needn't explain returns. It covers the mutation contract (kind fixed, unknown id no-op, write scope) and orients an agent unfamiliar with the panel concept, leaving only minor gaps around focus behavior and how patch fields are replaced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters including the conversation_id default and the focus flag. The description adds only illustrative patch content ('a new title, more search hits, the calendar's highlight'), which largely duplicates the schema's own patch example. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The operative sentence — 'Changes fields of an open tab (a new title, more search hits, the calendar's highlight); its kind never changes' — names a specific verb, resource, and mutation boundary. This implicitly separates it from panel_open (creates) and panel_close (removes). However, that sentence is buried behind three sentences of world-building, so an agent scanning the first line gets context rather than the action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'an open tab' and 'An id not on the panel changes nothing' suggest panel_open must run first, but no sibling is named and no explicit when-not guidance is given. An agent must infer the open-before-update ordering and the choice against panel_open/panel_watch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panel_watchRead the panelARead-onlyInspect
The panel is the document beside the chat on the ShapelessAI Ask page (shapelessai.com/studio): tabs the person looks at while you talk, and the place they answer a question with a press or edit a plan's node by hand. The browser, the chat's own agent and you (from a terminal) share one panel per conversation. The page draws it for the founder's account today (it is being rolled out); every account holds and can read its panel through these tools and the API. Reads the panel: every tab, which one is in front, and every answered question in picks. With after_rev (the panel.rev you last saw) and wait_seconds it waits until something changes, the way to hear the person's press. Returns {conversation_id, panel, text, picks: [{id, optionId, label, at}]}. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| after_rev | No | Wait for a panel newer than this rev (panel.rev from your last read). | |
| wait_seconds | No | Seconds to wait, 25 at most. Call again to keep waiting. | |
| conversation_id | No | The conversation (job) id whose panel to use. Omit it to use the conversation the person opened last in the browser, which is the one they are most likely looking at. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | |
| panel | Yes | |
| picks | Yes | |
| conversation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, it discloses the shared-state model (browser, chat agent, and terminal all share one panel per conversation), the auth requirement ('Needs the read scope'), the long-poll cap of 25 seconds with re-call guidance, and the rollout caveat. These are exactly the traits structured fields 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long and front-loads conceptual lore about what a panel is rather than the action itself. The rollout sentence ('The page draws it for the founder's account today...') and the shared-state sentence consume space without helping an agent decide to call the tool, though the final return-shape and scope sentence is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a read-only tool with a full output schema, documented parameters, and noted auth scope, the description covers the important gaps (waiting semantics, default conversation selection). What remains under-explained is the internal structure of 'tabs' and what a panel looks like when empty, though the output schema largely covers the return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description still adds semantic value by explaining that after_rev is the panel.rev from a prior read and that wait_seconds is the mechanism for hearing a person's press, and by clarifying that omitting conversation_id targets the conversation most recently opened in the browser. This goes modestly beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb+resource ('Reads the panel: every tab, which one is in front, and every answered question in picks') after defining what the panel is, so an agent knows exactly what it retrieves. It does not explicitly differentiate itself from siblings like panel_ask, panel_update, or panel_close, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly explains the long-poll pattern: passing after_rev plus wait_seconds makes the call wait until something changes, framed as 'the way to hear the person's press.' That is real usage guidance for the polling case, though it never says when to use panel_ask/panel_open/panel_update instead, nor when a plain one-shot read is preferable to waiting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_musicGenerate a music bedADestructiveInspect
Generate an instrumental music bed from a style (genre, mood, instruments, tempo; never an artist) and get its media key with its beat grid (bpm, beat times), so a video can be cut on the beat. Pass the key as edit_footage's music. SPENDS CREDIT: about $0.06 of engine cost a default call, billed with the plan's margin; budgetUsd caps it (default 2, max 10) and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| style | Yes | Genre, mood, instrumentation and tempo - what the generator is given, near-verbatim. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| allow_vocals | No | Lets the bed sing. Default false, because a voice under a narrator fights it - set it true when the track IS the post (a silent video, a music-led piece, a hook that wants a topline). | |
| duration_seconds | No | How long the video runs. The grid comes back covering that length, repeating as the bed loops - so a beat time is usable anywhere in the video, not just in the first loop. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare write/destructive/openWorld, but the description discloses the credit spend magnitude (~$0.06 engine cost, billed with plan margin), the budgetUsd cap semantics (default 2, max 10), the chargedUsd feedback field, and the required write scope. That is exactly the operational context an agent needs before committing to an irreversible spend.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then integration, then cost/scope in a compact three-sentence block with no filler. The first sentence is densely packed with parentheticals, but every clause carries signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain returns, yet it still names the key artifacts (media key, beat grid, chargedUsd) and covers cost, budget, and auth scope. For a paid, mutating, world-generating media tool, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already spells out budgetUsd's default/max, allow_vocals' rationale, and duration_seconds' loop-repeating grid behavior. The description largely restates those same points (budget cap, style-as-input, beat-grid length), so it adds little beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('generate an instrumental music bed') and immediately constrains it ('from a style ... never an artist'), which sharply distinguishes it from generate_image and generate_footage. The downstream artifact (media key plus beat grid) reinforces what the tool actually produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent what to do with the result ('Pass the key as edit_footage's music') and names the required write scope, which is real routing guidance. It lacks any explicit when-not-to-use or cost-alternative guidance (e.g. prefer find_footage when a free existing track suffices), so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
platforms_listPlatform limits and settingsARead-onlyInspect
Every platform the rail posts to: text limit, media rules, whether documentTitle is required, first-comment support, and the JSON Schema for its settings. Read it before posts_create. Works with any key (read scope or none).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| platforms | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint false, and openWorldHint false. The description adds useful behavioral context beyond annotations by stating that it works with any key, including no scope, which addresses authentication requirements for the read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences with no wasted words. The most important content, what the tool returns, is front-loaded, followed by when to use it and an auth caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list tool with an output schema, the description is complete enough. It explains the returned platform properties, provides the key usage prerequisite, and notes auth behavior, leaving no critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly does not waste space describing input parameters, and the empty schema fully covers the required input semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool returns: every platform the rail posts to, with text limits, media rules, documentTitle requirements, first-comment support, and settings JSON Schema. It is specific and distinguishes itself from the sibling posts_create by telling the agent to read it beforehand.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: 'Read it before posts_create' and notes that it works with any key (read scope or none). This is strong guidance, though it does not explicitly name when not to use it or contrast with unrelated siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
posts_approveApprove postsADestructiveInspect
PUBLISHES CONTENT: approving moves proposals to the schedule, and they will go out. Needs the publish scope.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Post ids to approve. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the mutation profile is covered. The description adds value beyond them by stating the concrete consequence (content goes out) and the auth requirement ('Needs the publish scope'), which an agent could not infer from 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, zero waste, and the irreversible consequence is placed first for maximum salience. Nothing needs trimming and nothing important is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and the auth scope plus publication consequence are covered. The only gap is absence of routing guidance relative to the closely named posts_publish sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema description coverage is 100% ('Post ids to approve'), so the schema already carries the meaning. The description adds no extra semantics about id format, how many ids are accepted, or behavior of unknown ids, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and effect: approving moves proposals to the schedule and they will be published. The uppercase 'PUBLISHES CONTENT' front-loads the outcome clearly. It does not distinguish itself from the sibling posts_publish, which a reader may confuse with approval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the tool applies (turning proposals into scheduled, outgoing content), which is useful context. But it names no alternatives such as posts_publish or posts_dismiss, and gives no explicit condition for choosing approval over dismissal or direct publishing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
posts_createWrite and schedule a postADestructiveInspect
PUBLISHES CONTENT: puts a post you wrote on the rail for one connected account (connections_list), at a time, in the account's next free queue slot, or now. Read platforms_list first for the platform's limits and settings schema. Free plan: 10 posts a day, and X only once a day without links, because X bills per post (402 free_daily_cap / free_x_daily_cap / free_x_link carry the reset time, a one-line pitch and a checkout URL to hand the human). Needs the publish scope.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The post text. | |
| audio | No | Instagram Reels only (exactly one video): a platform sound Instagram attaches at publish, by id from instagram_audio_search. Needs the Instagram account connected through Facebook Login; otherwise a 409 carries the connect link. | |
| queue | No | Instead of scheduledAt: the account's next free queue slot. | |
| title | No | The title; YouTube requires one. | |
| settings | No | Per-platform settings; the schema is platforms_list[].settingsSchema (TikTok privacyLevel, Reddit subreddit, YouTube privacyStatus, tags, defaultLanguage). | |
| mediaKeys | No | Media already in the account (assets_upload returns keys). | |
| inspiration | No | What the post was made from: {kind: format-card|topical-story|reference-post|brand, id, url?, mode?: clone|format|inspiration, memberId?}. For a copy of a reference, kind reference-post with the member id from references_list. | |
| scheduledAt | No | ISO time it goes out. Omit for now. | |
| connectionId | Yes | The account to post as (connections_list). | |
| firstComment | No | Posted as the post's own first reply the moment it is live. LinkedIn (1250), X (280), Bluesky (300). | |
| idempotencyKey | No | Any string unique to this one intended thing (a UUID you keep). A retry with the same key answers what the first call made, with replayed: true, and makes nothing new. Derive it from the thing, not the attempt, so every agent and every restarted run that means the same one sends the same key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| error | No | |
| status | Yes | |
| handoffNote | No | |
| scheduledAt | No | |
| publishedLocation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say this is a non-read-only, open-world, destructive write; the description goes much further. It discloses free-plan caps, per-post billing on X, the specific 402 codes (free_daily_cap / free_x_daily_cap / free_x_link) with their reset time and checkout URL, and the 409 connect link for Instagram audio — exactly the failure behavior an agent must handle.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action in caps, then prerequisites, then limits, then error handling — a sensible order. It is extremely dense with nested parentheticals, which slows parsing, but nearly every clause carries operational information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, nested-object, open-world mutation with an output schema, this covers what the description must: auth scope, platform prerequisites, plan quotas, and the error codes with recovery payloads. Return values are left to the output schema, appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter meaning: queue applies instead of scheduledAt, and scheduling is relative to the account's next free slot. It reinforces dependencies (connectionId comes from connections_list, settings schema from platforms_list) without restating the field docs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"PUBLISHES CONTENT: puts a post you wrote on the rail for one connected account" names the verb, the resource, and the scope (one account per call) up front. It also clarifies the timing modes (next free queue slot, or now), which separates it from read-side siblings like posts_list/posts_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real prerequisites: read platforms_list first for limits and settings schema, and the publish scope must be granted. It also states plan-level exclusions (10 posts/day, X once a day without links) and tells the agent to omit scheduledAt for immediate posting. The one gap is that posts_publish exists as a sibling and the description never says how 'or now' here differs from that tool, leaving a routing ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
posts_dismissDismiss postsADestructiveInspect
Cancel posts: proposed, scheduled, failed or handed-off. Nothing already publishing or published is touched. Pass the user's reason when they gave one; it teaches the agent their taste. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Post ids to dismiss. | |
| reason | No | Why the user skipped them, if they said. |
Output Schema
| Name | Required | Description |
|---|---|---|
| resolved | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds real value beyond them: exactly which states are affected vs. spared, and that write scope is required. It doesn't cover reversibility or rate/confirmation behavior, but with annotations carrying the destructive profile this is solid extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded sentences. The eligible-state scope comes first, followed by the exclusion, the reason guidance, and the auth requirement. No sentence is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with an output schema, the description covers scope, exclusion, auth, and optional-parameter intent, so an agent can call it correctly. Return values are handled by the output schema, leaving little missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented. The note 'Pass the user's reason when they gave one' reinforces the optionality of reason but adds little syntax or meaning beyond the schema's own 'if they said' description. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (cancel/dismiss) and resource (posts) and enumerates the eligible states (proposed, scheduled, failed, handed-off). It implicitly differentiates from posts_publish by stating 'Nothing already publishing or published is touched,' but never names a sibling tool to route the agent between them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when the tool applies (cancel posts in the four pre-publish states) and an exclusion ('nothing already publishing or published'). It stops short of naming alternatives like posts_publish or posts_approve or stating any explicit when-not-to-use beyond the state filter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
posts_getRead a postARead-onlyInspect
One post's live state, with the url that opens it in the calendar for the human. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The post id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| post | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description still adds real value by disclosing that the response is the post's *live* (fresh) state, that it includes a human-facing calendar url, and that a read scope is required — none of which is encoded in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core purpose and followed by the return/auth detail. Nothing is padded and no sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description is not obligated to document return values, and it nonetheless flags the notable one (the calendar url). Purpose, auth requirement, and freshness are all covered; only the routing relative to posts_list is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and schema description coverage is 100%, so the schema already fully documents 'id'. The description adds no format, example, or sourcing detail for the id beyond what the schema provides, making the baseline 3 the correct score here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('One post's live state') and even names what comes back (the opening url). It implicitly distinguishes itself from posts_list by scoping to a single post, though it never names a sibling explicitly, so it falls just 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — 'One post's live state' tells the agent this is the single-post read path, but no alternatives (posts_list, posts_approve, posts_dismiss) are named and no when-not condition is given. 'Needs the read scope' supplies the one prerequisite, which lifts it above a bare 2.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
posts_listList postsARead-onlyInspect
The post queue: proposed drafts, scheduled posts, published history, newest first. For "my best posts": sort views ranks every published post by views (metrics.latest.impressions) across the whole history, narrowed by platform, connectionId, minViews and since. Each reading carries its fetchedAt; fresh re-reads the listed posts' numbers older than 6h from the platforms first (slower, up to ~30s). Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | recent (default) or views: published posts, most viewed first. | |
| fresh | No | Re-read stale numbers from the platforms before answering. | |
| limit | No | How many posts, 1-200. Default 50. | |
| since | No | With sort views: keep posts published at or after this ISO time. | |
| status | No | Keep only posts in this state. | |
| minViews | No | With sort views: keep posts with at least this many views. | |
| platform | No | With sort views: one platform (platforms_list ids). | |
| connectionId | No | With sort views: one connected account (connections_list). |
Output Schema
| Name | Required | Description |
|---|---|---|
| posts | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/non-destructive, yet the description adds real behavior: a fetchedAt per reading, that fresh re-reads numbers older than 6h from the platforms first, that this is slower (up to ~30s), and that the read scope is required. These authentication and latency traits go well beyond the structured safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the queue definition, then the alternate ranking mode, then the behavioral caveats. Dense and slightly run-on but every clause carries information; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description still covers modes, filtering semantics, refresh behavior, latency and the required scope. For an 8-parameter read tool this is complete enough to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds the 6h staleness threshold that qualifies fresh and explains that platform/connectionId/minViews/since only narrow the sort=views ranking. That is genuine meaning beyond the schema's own text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (the post queue spanning proposed drafts, scheduled posts, published history) and exposes a distinct mode ('my best posts' via sort=views). An agent can position it against posts_get, posts_create and the other posts_* siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly frames the two usage modes – the default newest-first queue versus sort=views for ranking published posts by impressions – and names the scoping inputs (platform, connectionId, minViews, since). It does not name an alternative sibling or state a when-not, so it stops short of a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
posts_publishPublish nowADestructiveInspect
PUBLISHES CONTENT NOW: pushes a queued post to the platform immediately. Needs the publish scope.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The post id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| error | No | |
| status | Yes | |
| handoffNote | No | |
| publishedLocation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the description is not the sole carrier of the safety profile. It still adds real value by disclosing the required authorization scope and the immediacy of the push ('NOW'), which the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action and timing front-loaded in caps and the requirement appended. Every clause carries information; nothing is redundant padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the auth scope plus the immediate, mutating nature are covered. It could note irreversibility or what happens to the queue state on failure, but the essentials for correct invocation are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter (id) and schema description coverage is 100%, so the schema fully documents it. The description adds no format, constraint, or sourcing detail for the id, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('pushes a queued post to the platform immediately'), and the word 'queued' implies the post already exists in a pre-publish state, which helps separate it from posts_create. It never names a sibling tool explicitly, so differentiation from posts_approve and posts_create is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The precondition 'Needs the publish scope' and 'queued post' imply the tool applies to already-approved posts, giving usable context. However, there is no explicit when-to-use vs. when-not guidance and no mention of alternatives such as posts_approve or posts_create.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
probe_mediaInspect a video or audio fileARead-onlyInspect
Look at a video or audio file in the media library: duration, size, frame rate, loudness, a filmstrip of timestamped frames, frames at chosen seconds, the waveform, and for speech every word with its time and the same words as numbered beats. Read it before edit_footage. Free: nothing is charged. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| names | No | The brand, product and domain names the transcript must spell the owner's way, comma-separated: "ShapelessAI, shapelessai.com". | |
| frames | No | Specific seconds to see, comma separated: "0, 4.5, 12". Up to 16. Omit for the filmstrip across the whole clip, which is usually what you want first. | |
| waveform | No | Also attach the audio as a waveform image with a second-ruler along it. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| media_key | Yes | The item to look at, as a mediaKey from assets_list (GET /api/assets) or any tool that returned one. | |
| transcript | No | Time the words (on by default for anything with sound under eight minutes). false skips it - a music track, a clip you have already read. | |
| frame_count | No | How many frames the filmstrip holds. 12 by default. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered; the description adds useful context about scope requirements ('Needs the write scope') and cost. However, 'Free: nothing is charged' directly conflicts with the schema's budgetUsd parameter (default 2, max 10), leaving the agent with a muddled cost model. It also does not disclose runtime or whether the call is slow for long clips.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is a long run-on list, but every clause maps to a return type or parameter, and the short trailing sentences (precondition, cost, scope) are front-loaded and waste-free. Slightly denser than ideal, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With seven parameters, a full output schema, and rich schema descriptions, the definition covers intent, precondition, auth scope, and cost. The remaining gap is the unresolved cost message — an agent cannot tell whether a default call bills the default $2 budget or is genuinely free.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does implicitly map its enumerations to parameters (filmstrip→frame_count, chosen seconds→frames, waveform→waveform, words→transcript, spelling→names), but it adds no syntax, defaults, or constraints beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Look at a video or audio file in the media library') and then enumerates exactly what is returned: duration, size, frame rate, loudness, filmstrip, chosen frames, waveform, and timestamped words. It is clearly distinguishable from neighboring tools such as edit_footage, find_footage, and generate_footage by being the read/inspection step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit sequencing rule — 'Read it before edit_footage' — which tells the agent when this tool is the correct precursor. It does not state when not to use it (e.g. versus find_footage for locating an asset first), so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_pageRead a web pageARead-onlyInspect
The full clean text of a URL, from a cached copy when the live page blocks robots. Costs a fraction of a cent (about $0.006) from credit; budgetUsd (default 2, max 10) caps it and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The absolute URL to read. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| max_characters | No | Truncate the text beyond this (default 12000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly, openWorld, non-destructive), yet the description goes further: exact cost (~$0.006), budget cap semantics with defaults, that chargedUsd reports actual spend, the robots-block caching fallback, and the required write scope. That is rich behavioral disclosure beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with what is returned and only then cost and auth. Every sentence carries distinct information, though the cost/budget/chargedUsd clause is slightly compressed and takes a re-read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values needn't be detailed, and the description covers cost, auth, and fallback behavior. The only missing piece is explicit sibling routing, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds value by tying budgetUsd to a cost model and an output field (chargedUsd) not visible in the input schema, giving the agent reason to set a budget rather than treat it as a bare number.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('full clean text of a URL') and distinguishes itself from text-free siblings like screenshot_page and record_page by emphasizing extracted text. The cached-copy qualifier adds scope precision that an agent can act on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied — fetch readable text of a known URL — and the caching fallback hints at a robustness behavior, but no sibling is named and there is no explicit when/when-not guidance versus web_search, reference_read, or screenshot_page. Adequate but with a clear routing gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_pageFilm a web pageAInspect
A real browser opens a URL and scrolls it smoothly top to bottom; returns an MP4 media key plus its first frame. 8 to 15 seconds reads as one shot. Free: nothing is charged. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The absolute URL of the page to film. | |
| scroll | No | Ease down the page across the take. Defaults to true; false holds still. | |
| viewport | No | Which screen to film it on. Defaults to desktop. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| duration_seconds | No | How long to film, 1-30. Defaults to 12. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare openWorldHint=true and readOnlyHint=false, so the open-web, write-side nature is known. The description usefully adds the auth requirement (write scope) and output shape, but its claim 'Free: nothing is charged' directly conflicts with the budgetUsd parameter that defaults to 2 with a max of 10, leaving real cost behavior ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and return value, and each short sentence covers a distinct fact (output, duration heuristic, cost, scope). The cost sentence is the one weak link because it is misleading rather than merely extra.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and full annotation coverage, the description only needs to carry the action, the auth requirement, and call-shaping hints — all present. The remaining gap is routing guidance against the many sibling capture/read tools and the unresolved cost statement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds one genuinely useful heuristic — 8 to 15 seconds reads as one shot — that guides duration_seconds, but the 'nothing is charged' line muddies rather than clarifies budgetUsd.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete verb and resource — a real browser opens a URL and scrolls it top to bottom — and states the produced artifact (an MP4 media key plus its first frame). That framing clearly separates it from read_page, screenshot_page, and demo_page without needing the schema opened.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an implicit usage tip (8-15 seconds reads as one shot) and a prerequisite (needs the write scope), which helps an agent call it correctly. But it never says when to choose this over screenshot_page/read_page/demo_page, and gives no when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reference_readRead a post that performedARead-onlyInspect
Read 1 to 3 exemplars from reference_search in full: why they worked, their structure and beats, the transcript and on-screen text, and the recipe to rebuild the format for another brand. Free: nothing is charged. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | The ids exactly as reference_search returned them (1-3). | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Useful disclosures beyond annotations: it is read-only in effect, costs nothing, and requires the write scope (a non-obvious auth requirement worth stating for a read tool). But "Free: nothing is charged" directly conflicts with the schema's budgetUsd parameter (default 2, max 10), so an agent cannot tell whether this call can spend money — a misleading behavioral claim on the one dimension that matters most here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what the tool does, with no filler. Slightly loose ordering puts the cost/auth notes after the content list rather than up front, where they would prevent a budget misread.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so enumerating return contents is bonus rather than necessity, and the auth requirement is a good addition. However, the unaddressed budgetUsd/cost ambiguity leaves a real gap for a tool that accepts a spend cap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents ids and budgetUsd fully; the description only echoes the 1-3 count that maxItems/minItems encode. It says nothing about budgetUsd, which is precisely the parameter most in tension with its "Free" claim.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (exemplars from reference_search) and enumerates what comes back: why they worked, structure and beats, transcript and on-screen text, rebuild recipe. This is clearly distinguishable from the sibling reference_search, which locates exemplars rather than reading them in full.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Read 1 to 3 exemplars from reference_search" makes the prerequisite call explicit and implies this is a second step after search. It gives no when-not-to-use guidance or alternatives (e.g. references_browse, references_list), so it falls short of full routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
references_addAdd a referenceAInspect
Add one person to the account's reference set: a handle and platform, or a profile URL, tagged creator, competitor or peer ("creators like me"). Pass suggestionId to accept a references_suggest suggestion. Adding someone already there answers the member with created: false. Picks stay private to the account. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A profile URL; enough on its own for the major platforms. | |
| kind | No | Default creator. peer = creators like me. | |
| setId | No | A set id from references_list. Absent = the default set, made on first use. | |
| handle | No | The account's handle, with or without @. | |
| platform | No | Platform id (platforms_list): instagram, tiktok, x, youtube, linkedin, threads... Read from url when absent. | |
| personName | No | The person's name, if you know it. | |
| suggestionId | No | Accept this suggestion from references_suggest instead of naming the person. |
Output Schema
| Name | Required | Description |
|---|---|---|
| member | Yes | |
| created | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish it is a non-destructive write with no open-world access; the description goes beyond them by disclosing idempotent-like behavior ('created: false' for duplicates), account-level privacy ('picks stay private'), the required write scope, and that a default set is created on first use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences with zero filler, front-loading the accepted input shapes and following with the suggestion and duplicate behaviors. The telegraphic style ('Picks stay private to the account') is efficient rather than confusing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape needn't be explained, yet the description still flags the 'created: false' duplicate signal. With all seven parameters optional, it conveys that at least one identifying input (handle+platform, URL, or suggestionId) is needed, though error behavior for insufficient input is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter already has a description, including url-alone sufficiency, platform inference from url, and the kind default. The description restates the handle+platform vs URL choice but adds little syntax or precedence 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add one person to the account's reference set') and immediately distinguishes the accepted inputs (handle+platform, profile URL, or suggestionId). It is clearly separable from siblings like references_suggest, references_remove, and references_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the suggestionId acceptance path and points to references_suggest as its source, and implies setId comes from references_list. It gives clear usage context but does not explicitly say when to prefer references_browse or reference_read over adding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
references_browseBrowse referencesARead-onlyInspect
Search the reference graph: the account's own members matching q, how many other workspaces picked a matching handle (counts of at least k = 3, never who), and with platform plus an exact handle, what those workspaces picked beside it ("people who pick X also pick"). Counted per UTC day: Free 5, Spark 50, Growth 500, Studio unlimited; remaining says what is left, a 402 carries the upgrade links. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | A handle or part of one, or a name. | |
| limit | No | 1 to 50, default 20. | |
| platform | No | Narrow to one platform id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| k | Yes | |
| own | Yes | |
| picked | Yes | |
| resetsAt | No | |
| remaining | Yes | |
| alsoPicked | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnly/destructive/openWorld annotations: it discloses the k=3 anonymization floor with "never who", per-UTC-day quotas by plan tier (Free 5, Spark 50, Growth 500, Studio unlimited), how `remaining` behaves, and that a 402 response carries upgrade links. It also states the required read scope, which an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, and the quota/error sentence earns its space by preventing wasted calls. The middle clause is a dense run-on with nested parentheses that takes effort to parse, costing it the top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be restated, and the description still covers auth scope, quotas, and error signaling. The remaining hole is sibling disambiguation against reference_search/references_list, which matters given how crowded that namespace is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantics: q is described as a handle, partial handle, or name, and crucially platform combined with an exact handle changes the result shape to co-pick analysis — meaning the schema's bland "Narrow to one platform id" understates. Only `limit` is left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ("Search the reference graph") and enumerates the three distinct result modes it can produce. It never distinguishes itself from the similarly named siblings reference_search, references_list, or reference_read, so an agent cannot tell from the text alone which of those to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the agent can infer that supplying platform plus an exact handle unlocks the co-pick view, and that omitting them yields match/count modes. There is no explicit when-to-use, when-not, or naming of reference_search/references_list as the alternatives for plain lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reference_searchSearch posts that performedARead-onlyInspect
Search our judged library of real posts and videos that already performed: give the intent (topic and angle) and get a ranked shortlist with numbers, hook and format. Read the ones you want with reference_read. Costs a fraction of a cent (about $0.00001) from credit; budgetUsd (default 2, max 10) caps it and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Ranking when no intent is given: engagement = most reach; likes = most reactions; velocity = fastest-growing; outlier = punched above the author's following; signal = strongest in its own lane (the only fair one for ads); recency = newest. Default engagement. | |
| limit | No | How many candidates (1-8, default 5). | |
| intent | No | What the post or video is FOR - its topic and angle in a short phrase. Semantic: related exemplars match without shared words. Omit for the top of the shelf. | |
| platform | No | Which platform to study. Default any. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| mediaType | No | Which kind of post to study. Default video - what this run makes. | |
| sourceKind | No | organic = a post that earned its reach; ad = paid creative somebody kept running, which is its own evidence. Default any: you get both, interleaved. | |
| minJudgment | No | Only exemplars we rated at least this good (1-5). Unrated ones drop out. | |
| makeableOnly | No | Default true: only formats this engine can actually produce. A format needing a live audience, a dance, a stunt, lip-sync or a platform trending sound is dropped. Set false only to survey the field, never to pick something to build. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint/destructiveHint annotations: it discloses cost (~$0.00001, charged per call), the spending cap semantics (budgetUsd default 2, max 10) and that chargedUsd reports actual cost, plus a non-obvious auth requirement ('Needs the write scope'). The write-scope note does not contradict readOnlyHint — it is an auth quirk, not a mutation claim — and is exactly the kind of context an agent cannot infer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core capability in the first clause, then batches the practical constraints (follow-up tool, cost, budget, auth) into short trailing sentences. Dense but every sentence carries information an agent needs before calling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, enum-heavy search tool with an output schema already covering return shape, the description supplies the missing pieces: when to use intent vs sort, cost and budget behavior, the follow-up read step, and the auth scope. Nothing required to invoke it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so a baseline of 3 applies, but the description adds real meaning on top: it explains what 'intent' represents (topic and angle, semantically matched) and how budgetUsd/chargedUsd interact as cap and receipt. The remaining parameters (sort, platform, mediaType, sourceKind, minJudgment, makeableOnly) are left entirely to the already-thorough schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search our judged library of real posts and videos that already performed') and describes exactly what comes back (ranked shortlist with numbers, hook, format). It also distinguishes itself from the natural follow-up sibling, reference_read, so an agent can separate the search and read steps without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: supply an intent (topic and angle) to get exemplars, or omit it and rank by 'sort' for the top of the shelf, with the destination for follow-up explicitly named ('Read the ones you want with reference_read'). It does not explicitly rule out the near-neighbours references_browse/references_list/references_suggest, so the exclusion side is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
references_listReference setsARead-onlyInspect
The creators, competitors and peers ("creators like me") this account works from, by set, each with its member id, platform, handle and profile url. Pass a member id to jobs_create as referenceId to make a post from that person. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| sets | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint and destructiveHint already declare the safety profile, so the description earns credit for adding what annotations cannot: the required "read scope" for authorization and the fact that each set carries member ids usable in another tool. It does not cover ordering or set-size behavior, but the gaps are minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what is returned, then the actionable use of the output, then the auth requirement. Nothing is repeated from the title or annotations and no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, and a zero-parameter tool has little else to document; the auth scope note closes the main practical gap. Ordering of the returned sets is unaddressed, which is the only real omission for an agent deciding how to consume the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero input parameters the baseline is 4, and the description goes slightly beyond by explaining what the member ids in the response are for. The referenceId advice refers to jobs_create's parameter rather than this tool's, so it informs output semantics more than input semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely ("the creators, competitors and peers this account works from, by set") and enumerates the returned fields, so an agent knows exactly what comes back. It does not, however, distinguish itself from close siblings such as references_browse, reference_search or reference_read, so the verb+resource is clear but the boundary is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete downstream usage (pass a member id as referenceId to jobs_create), which is genuinely useful routing context. But it never says when to pick this over references_browse / reference_search / reference_read, leaving the main selection decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
references_removeRemove a referenceADestructiveInspect
Remove a member from the reference set (memberId), or dismiss a suggestion (suggestionId). The reason (not_similar, not_relevant, low_quality, other) teaches the next suggestions. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Why, for a member. | |
| memberId | No | A member id from references_list. | |
| suggestionId | No | Instead: a suggestion id from references_suggest to dismiss. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| removed | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds genuinely new context: the two operational modes, the required write scope, and — most valuably — that the reason feedback loop influences future suggestions. It does not restate reversibility or confirm what a successful removal returns, but output schema covers the latter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The dual-mode branching is front-loaded, with the auth prerequisite and the reason's effect trailing in priority order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given annotations cover the destructive profile and an output schema exists, the description supplies modes, scope, and consequence. It is slightly under-specified on the fact that no parameters are required, leaving an agent to infer that at least one of memberId/suggestionId must be supplied for the call to be meaningful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description adds real semantics: memberId and suggestionId are mutually exclusive entry points selecting different behaviors, and reason is feedback that trains subsequent suggestions rather than a log annotation. That is meaning the schema's terse 'Why, for a member.' does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (remove/dismiss) against two concrete resources (reference set member, suggestion), keyed to the parameter that selects each mode. An agent can distinguish it from references_add and references_suggest 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the selection rule explicit: use memberId to remove a set member, suggestionId to dismiss a suggestion. It also states the precondition ('Needs the write scope'). It lacks an explicit 'do not use for X' exclusion against siblings like posts_dismiss, but the framing is clear enough to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
references_suggestSuggested referencesARead-onlyInspect
People we suggest the account follow as references, best first, each with reasons [{code, evidence}] (same_niche, beats_baseline, co_selected, links_to_you, same_format...) to show the human. Accept with references_add {suggestionId}, dismiss with references_remove {suggestionId}. Empty with a note until the reference-suggest job has run for the account. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Default any. | |
| limit | No | 1 to 20, default 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| suggestions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-destructive, closed-world profile, and the description adds genuinely new behavior: the empty-state response ('Empty with a note until the reference-suggest job has run'), the ordering guarantee, and the required scope. It does not say how fresh suggestions are or whether the list mutates as suggestions are accepted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, then follow-up actions, then the empty-state caveat and auth note — a sensible ordering. It is dense but every sentence carries operational information; only the parenthetical reason-code list is slightly bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-optional-param read tool with an output schema and full annotation coverage, this covers the decision-relevant facts: what comes back, how to act on it, and the empty case. Only the refresh/lifecycle of suggestions after acceptance is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with kind (enum) and limit documented in-schema, so the schema carries the parameter burden. The description adds nothing about kind or limit — the enumerated tokens it lists ('same_niche, beats_baseline...') are reason codes in the response, not inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (suggested references for the account to follow), the ordering ('best first'), and the payload shape ('each with reasons [{code, evidence}]'). It is distinguishable from references_list (existing followees) though it never explicitly contrasts with references_browse or reference_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit downstream workflow ('Accept with references_add {suggestionId}, dismiss with references_remove {suggestionId}') and a precondition ('Needs the read scope'), which is clear usage context. It stops short of saying when to prefer this over references_browse or reference_search when looking for candidates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_carouselRender a carouselADestructiveInspect
Render your own HTML and CSS slides to a PDF (a LinkedIn document post) plus one PNG per slide (an Instagram carousel), each a media key. Slides are 1080x1350 unless you pass page; self-contained HTML only, no scripts or external URLs; src="media:" places a library image. A render with clipped or unreadable text is refused with a per-element audit. SPENDS CREDIT: about $0.02 of engine cost a default call, billed with the plan's margin; budgetUsd caps it (default 2, max 10) and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| css | Yes | The deck's one shared stylesheet: palette, type scale, layout classes. Scope everything under .slide-canvas. | |
| page | No | The canvas every slide is drawn on, in pixels. Default 1080x1350. Pick the shape the post will live in: 1080x1350 4:5 portrait (LinkedIn documents, Instagram portrait); 1080x1080 1:1 square; 1920x1080 16:9 landscape (slides, X, YouTube thumbnails). Anything between 480 and 2560px per side works; design your type scale for the canvas you chose, not for this default. | |
| title | Yes | Short deck title (file naming and accessibility; render it yourself if you want it visible). | |
| slides | Yes | 1-12 slides in order. Multi-slide: slide 1 is the hook read at thumbnail size; the last slide carries ONE call to action. Exactly 1 slide = a single-page infographic: the rendered PNG is the deliverable, designed to be fully read in-feed without a swipe. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only declaring destructiveHint/readOnlyHint, the description carries real behavioral payload: credit spend (~$0.02), budgetUsd cap semantics (default 2, max 10), chargedUsd as the cost readout, the required write scope, and the refusal behavior with a per-element audit when text is clipped or unreadable. That is exactly the destructive/paid context an agent needs before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the deliverable and its outputs, then constraints, then cost. Dense and semicolon-heavy, but every clause carries information (sizing, HTML restrictions, media keys, audit refusal, credit, scope) that the schema does not duplicate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, nested, credit-spending, non-read-only tool, it covers the risk profile (cost, cap, write scope), input constraints (static HTML, media: keys), sizing defaults, and failure mode. An output schema exists, so it correctly avoids restating return values while still noting chargedUsd.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema: the default 1080x1350 slide size, the 'src="media:<key>"' convention for embedding a library image (absent from the html property description), and the self-contained-HTML/no-scripts/no-external-URLs constraint that governs what html may contain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Render') and resource ('your own HTML and CSS slides') plus the exact outputs: a PDF for a LinkedIn document post and one PNG per slide for an Instagram carousel. This is clearly distinguishable from siblings like render_thumbnail or generate_image, which produce single raster assets rather than an HTML/CSS-driven multi-slide deck.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong usage context: multi-slide decks (hook first, single CTA last) versus a single slide as a standalone infographic, and how canvas shape maps to destination platforms. It does not explicitly name alternatives (e.g. render_thumbnail) or state when NOT to use this 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.
render_thumbnailRender a video thumbnailAInspect
Package a finished video with its cover: one frame of it (frame_at, in seconds), three to five words, at most one picture. Filed beside the video as -thumbnail.jpg, so a post that carries the video key gets the cover. Free: nothing is charged. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| accent | No | Hex colour of the starred words. Defaults to the cut's accent. | |
| outline | No | Hex colour of the contour and the scrim behind the words. Default near-black. | |
| frame_at | Yes | Seconds into the video (or into frame_key) to take the face from. | |
| headline | Yes | Three to five words, not the title. *Stars* mark the accent words: "I hired *an AI*". | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| frame_key | No | A clip to take the frame from instead, at its own resolution: the take behind the cut. frame_at then counts on it. | |
| video_key | Yes | The finished video (mediaKey from edit_footage or videoKey from a video job (jobs_create)). | |
| foreground | No | Hex colour of the words. Default white. | |
| picture_key | No | One picture at most (an image media key): the product, the post, the number, the company's mark or the face of the person the video is about. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this is a non-read-only, non-destructive, closed-world operation, and the description usefully adds the write-scope requirement, the output file naming and placement beside the source video, and input constraints (one frame, three to five words, at most one picture). However, "Free: nothing is charged" directly conflicts with the budgetUsd parameter documented as defaulting to 2 with a max of 10, which muddies the cost model for the agent. That internal inconsistency keeps this at a 3 rather than higher.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each carrying distinct information: composition inputs, artifact location, cost, and authorization. The key output convention is front-loaded among the constraints. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be described, and the description covers the artifact naming, required scope, and input limits well. Gaps remain for a nine-parameter mutation tool: whether rendering is synchronous or job-based, what happens when a thumbnail already exists for the video, and a cost model that reconciles the "free" claim with budgetUsd.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains all nine parameters including frame_at semantics, headline star-marking, frame_key, and the colour fields. The description restates the headline word count and the single-picture limit, which duplicates rather than extends the schema. The cost claim it adds is misleading rather than clarifying, so no credit above the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific action and artifact: composing a cover image for a finished video from one frame, a short headline, and optionally a picture, saved as <video>-thumbnail.jpg. The phrasing is deliberately stylized ("Package a finished video with its cover"), which is slightly less direct than a plain verb+resource statement, but an agent can still identify the operation immediately. It does not explicitly contrast with render_carousel or generate_image, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: it is for videos you intend to publish ("so a post that carries the video key gets the cover") and it requires write scope. There is no explicit when-not guidance and no named alternative for adjacent tasks such as carousel covers or standalone image generation. Adequate but the agent must infer the boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshot_pageScreenshot a web pageAInspect
A real browser renders a URL (JavaScript runs, fonts load) and returns the picture as a media key: the viewport, the full page, or one element by CSS selector, on a phone or laptop viewport. Free: nothing is charged. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The absolute URL of the page to open. | |
| selector | No | CSS selector of one element to shoot instead of the page. | |
| viewport | No | Which screen to shoot it on. Defaults to desktop. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| full_page | No | Capture the whole scroll height instead of the first fold. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare openWorldHint=true, destructiveHint=false, and readOnlyHint=false, but the description adds genuinely new context: a real browser executes JavaScript and loads fonts, the call requires the write scope, and nothing is charged. The stated zero cost sits slightly oddly beside an optional budgetUsd parameter (default 2, max 10), leaving the spending semantics ambiguous. It says nothing about timeouts or what happens when a selector matches nothing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core capability and the return type, followed by cost and scope facts. The only friction is the repeated word 'viewport' in two different senses within the first sentence ('the viewport, the full page... on a phone or laptop viewport'), which mildly muddies an otherwise efficient lead.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, and the description still names the return as a media key. Auth scope and cost are covered, and all capture variants are accounted for. What is missing is operational detail relevant to a browser-automation tool: page-load waiting behavior, handling of private or gated URLs, and failure modes for invalid selectors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters, including the mobile/desktop enum and the budget bounds. The description maps its three capture modes onto selector, viewport, and full_page, but that is largely a restatement of what the individual property descriptions say. The one useful addition is that 'free / nothing is charged' frames cost expectations, though it is not reconciled with budgetUsd.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb and resource: a real browser renders a URL and returns the picture as a media key, with three capture modes (viewport, full page, single element by CSS selector) and two device viewports. That is far more specific than a name restatement. It does not, however, contrast itself with adjacent tools such as render_thumbnail, record_page, or inspect_page_style, so an agent must infer the boundary from the resource alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent can infer this is for visual capture when the HTML alone is insufficient (JavaScript runs, fonts load). There is no explicit when-to-use, when-not-to-use, or named alternative among the many sibling render/read tools. The only hard guidance is the 'Needs the write scope' prerequisite and the free-cost note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
speakTurn text into speechADestructiveInspect
Read up to 2000 characters aloud into a WAV in the media library, in a preset voice (Sulafat, Charon, Kore, Achird, Erinome, Schedar) or a character's own voice id from characters_list, with an energy and a style line. Returns its media key. SPENDS CREDIT: about $0.03 of engine cost a default call, billed with the plan's margin; budgetUsd caps it (default 2, max 10) and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | File name stem. Default: the voice name. | |
| text | Yes | What to say, exactly as it should be read. At most 2000 characters. | |
| style | No | Extra direction in plain words, e.g. "smile on the last line". Gemini voices only. | |
| voice | No | A roster name or a character voice id. Default Charon. | |
| energy | No | How the read moves: calm (measured and reassuring - explainers, anything serious or reflective); confident (the default: brisk, warm, matter-of-fact - product and brand video); energetic (bright and driving - launches, feature reveals, anything with momentum); hype (creator-loud - short-form hooks, reaction and meme-adjacent posts). Default confident. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only carry readOnly=false, destructive=true, openWorld=false. The description goes well beyond them by disclosing that the call SPENDS CREDIT (~$0.03 engine cost plus margin), that budgetUsd caps it (default 2, max 10), that chargedUsd reports actual cost, and that a write scope is required — exactly the extra operational context an agent needs before a billable mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense block, but it is front-loaded with purpose, then capability, then cost/scope. Every clause (character limit, presets, cost, budget, scope) carries information, though the run-on construction slightly hurts scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return format need not be spelled out, and the description still notes it returns a media key. Cost, budget behavior, scope requirement, and voice sourcing are all covered; only explicit sibling routing is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description adds real value the schema lacks: the concrete preset voice roster (Sulafat, Charon, Kore, Achird, Erinome, Schedar) and the note that style is a free-text direction line. It clarifies rather than repeats the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: read text aloud into a WAV in the media library, with an explicit 2000-char limit. It enumerates the preset voice roster and the character-voice path from characters_list, letting an agent distinguish this from siblings like characters_voice without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage by listing voice options and the write-scope requirement, and points to characters_list for voice ids, but never states when to prefer this over alternatives such as characters_voice or caption_file. Guidance is context-rich but not comparative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tools_listShapelessAI toolsARead-onlyInspect
The live catalog of the ShapelessAI studio agent's tools, each with its JSON Schema input and default price. Every one is also its own MCP tool here (generate_image, generate_footage, edit_footage, render_carousel, web_search, x_pulse and the rest); this is the read for what the deployment serves right now. Needs the read scope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| tools | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds genuinely new operational context: it discloses the authorization requirement ("Needs the read scope") and that the catalog is live/current rather than cached, both of which are not in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the resource and the returned payload, with the sibling-tool clarification packed into a single parenthetical. Slight redundancy in restating the catalog twice ("live catalog" / "the read for what the deployment serves right now"), but no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description is not obligated to explain return values, and it still previews the payload shape (input JSON Schema plus default price). Combined with the stated read-scope requirement, an agent has enough to call this correctly; only the relationship to other *_list tools is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. It correctly avoids inventing filter/pagination semantics for a no-arg call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (the ShapelessAI studio agent's tool catalog) and what it returns (JSON Schema input plus default price). It also explicitly distinguishes itself from siblings by naming the individual MCP tools it shadows (generate_image, generate_footage, web_search, x_pulse, etc.), so an agent can tell this read apart from the per-tool entries 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"this is the read for what the deployment serves right now" implies the use case (inspect the currently-served catalog) but gives no explicit when-not guidance. It does not address adjacent listing tools in the sibling set such as capabilities_list or agents_list, so an agent must infer which registry it actually wants.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_searchSearch the webADestructiveInspect
Search the web for current facts, stats or trends. Returns hits (title, url, snippet) and, when available, a synthesized answer grounded in them. SPENDS CREDIT: about $0.015 of engine cost a default call, billed with the plan's margin; budgetUsd caps it (default 2, max 10) and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | A specific search query. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| max_results | No | How many hits to return (1-10, default 5). |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag readOnlyHint=false, destructiveHint=true and openWorldHint=true, which tells the agent nothing about cost. The description adds the price per default call (~$0.015), the billing model, the budgetUsd cap semantics, the chargedUsd report, and the required write scope — exactly the behavioral context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return shape, then cost and auth in one dense paragraph with no filler. Slightly crowded — the budget/billing clause could be tightened — but every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter search tool with an output schema, the description covers purpose, return shape, cost, budget behavior and auth scope, which is close to complete. The only meaningful gap is that it does not position the tool against its many search siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description's budget details ('default 2, max 10') merely restate what the schema already says for budgetUsd. It adds no syntax, format or interaction detail for query or max_results, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search the web') plus the content class it targets ('current facts, stats or trends'), and describes the return shape. However, it never distinguishes itself from several obvious siblings such as news_search, current_pulse, reference_search or find_evidence, so an agent must guess which search surface applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'current facts, stats or trends' implies when this tool is appropriate, but there is no explicit when-to-use/when-not statement and no sibling is named as an alternative. With roughly eight search-adjacent siblings, this omission leaves real routing ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_songWrite a song with vocalsADestructiveInspect
Sing lyrics you wrote ([Verse] and [Chorus] marked) in a style you describe (genre, mood, tempo, voice; never a real artist) as an original one to three minute MP3 in the media library. Returns its media key and the lyrics as sung. For a bed under narration use plan_music. SPENDS CREDIT: about $0.08 of engine cost a default call, billed with the plan's margin; budgetUsd caps it (default 2, max 10) and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| style | Yes | Genre, mood, tempo and voice, near-verbatim to the model. | |
| title | No | A short title; names the file. | |
| lyrics | Yes | The words to sing, with [Verse] and [Chorus] markers. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. | |
| duration_seconds | No | A length hint (the model decides within it). |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Strong disclosure beyond annotations: it is a paid operation (~$0.08 default engine cost, budgetUsd caps it, chargedUsd reports actual), requires the write scope, and writes an MP3 into the media library. It does not address what destructiveHint=true implies (whether an existing asset is overwritten or whether a failed/aborted generation still bills), which is the one 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what gets produced, then cost, then permissions — the highest-risk facts come early. The cost clause is dense and stacks several numbers into one sentence, which reads slightly run-on but every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the full decision surface for a paid generative write: input semantics, duration bounds, cost cap and reporting, scope requirement, and an alternative tool. Return values are already covered by the output schema, so their omission from the description is not a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so baseline is 3; the description earns a bump by adding constraints the schema lacks — style must never name a real artist, lyrics must carry [Verse]/[Chorus] markers, and budgetUsd's default/max are surfaced inline as spend semantics rather than just types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and output: sing supplied lyrics in a described style, producing a 1–3 minute MP3 in the media library, returning media key plus sung lyrics. It also explicitly separates itself from the sibling plan_music (music bed under narration), so an agent can choose without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the routing rule directly ('For a bed under narration use plan_music'), states the prohibition on real artists, and bounds the artifact (1–3 minutes). When to use, when not to, and the alternative are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x_pulseAsk what X is sayingADestructiveInspect
An agent searches X live and answers what practitioners are saying about a topic right now, with per-claim citations and engagement evidence. Use it to learn what people say; to learn how much they say it, use current_pulse. Slow (about 60 seconds) and the dearest search: ask one sharp question. SPENDS CREDIT: about $0.25 of engine cost a default call, billed with the plan's margin; budgetUsd caps it (default 2, max 10) and chargedUsd says what it cost. Needs the write scope.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The topic or question to sense the live X conversation on. | |
| budgetUsd | No | Optional: the most this call may spend, in dollars, default 2, max 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| media | Yes | |
| output | No | The tool's own result, shaped by the tool. |
| chargedUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: roughly 60-second latency, ~$0.25 default engine cost, margin billing, budget cap semantics, and the write-scope requirement. These are exactly the traits an agent needs before committing to a slow, credit-spending call. Nothing here contradicts readOnlyHint=false / destructiveHint=true / openWorldHint=true — spending irreversible credit is consistent with a non-read-only, destructive-hinted tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what it does and the sibling routing, then layers cost, latency, and scope. Dense semicolon-packed sentences make it efficient but slightly harder to scan; nothing is gratuitous, but the cost paragraph could be split for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, and the description still covers the things structured fields can't: latency, cost model, budget cap, auth scope, and the sibling alternative. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: budgetUsd's default of 2 and max of 10 are restated with the spending rationale ('budgetUsd caps it'), and chargedUsd is surfaced as the cost-reporting counterpart. The 'one sharp question' framing also shapes how query should be composed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('searches X live and answers what practitioners are saying') plus the output shape ('per-claim citations and engagement evidence'). It explicitly distinguishes itself from the sibling current_pulse, so an agent can pick between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('learn what people say') and when-to-use-the-other ('to learn how much they say it, use current_pulse'), plus a usage constraint ('ask one sharp question') driven by its slowness and cost. Exclusions and the alternative are both named.
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 tool update
- Changed
posts_create1 field changed- changed
Input schema / properties / settings / descriptionPrevious value: -"Per-platform settings; the schema is platforms_list[].settingsSchema (TikTok privacyLevel, Reddit subreddit, YouTube privacyStatus)."New value: +"Per-platform settings; the schema is platforms_list[].settingsSchema (TikTok privacyLevel, Reddit subreddit, YouTube privacyStatus, tags, defaultLanguage)."
3 tool updates
- Changed
agents_save1 field changed- added
Input schema / properties / idempotencyKeyAdded value: +{ + "description": "On a create: Any string unique to this one intended thing (a UUID you keep). A retry with the same key answers what the first call made, with replayed: true, and makes nothing new. Derive it from the thing, not the attempt, so every agent and every restarted run that means the same one sends the same key.", + "type": "string" +}
- Changed
jobs_create1 field changed- added
Input schema / properties / idempotencyKeyAdded value: +{ + "description": "Any string unique to this one intended thing (a UUID you keep). A retry with the same key answers what the first call made, with replayed: true, and makes nothing new. Derive it from the thing, not the attempt, so every agent and every restarted run that means the same one sends the same key.", + "type": "string" +}
- Changed
posts_create1 field changed- added
Input schema / properties / idempotencyKeyAdded value: +{ + "description": "Any string unique to this one intended thing (a UUID you keep). A retry with the same key answers what the first call made, with replayed: true, and makes nothing new. Derive it from the thing, not the attempt, so every agent and every restarted run that means the same one sends the same key.", + "type": "string" +}
4 tool updates
- Changed
clone_reel1 field changed- changed
Input schema / properties / face_media_keys / descriptionPrevious value: -"1 to 4 clear photos of the account owner's face, as mediaKeys from media_library. Required unless recording_media_key is given."New value: +"1 to 4 clear photos of the account owner's face, as mediaKeys from assets_list (GET /api/assets). Required unless recording_media_key is given."
- Changed
edit_footage1 field changed- changed
Input schema / properties / media_key / descriptionPrevious value: -"The clip to edit, as a mediaKey from media_library, an upload, or find_footage."New value: +"The clip to edit, as a mediaKey from assets_list (GET /api/assets), an upload, or find_footage."
- Changed
probe_media1 field changed- changed
Input schema / properties / media_key / descriptionPrevious value: -"The item to look at, as a mediaKey from media_library or any tool that returned one."New value: +"The item to look at, as a mediaKey from assets_list (GET /api/assets) or any tool that returned one."
- Changed
render_thumbnail1 field changed- changed
Input schema / properties / video_key / descriptionPrevious value: -"The finished video (mediaKey from edit_footage or videoKey from render_video_project)."New value: +"The finished video (mediaKey from edit_footage or videoKey from a video job (jobs_create))."
6 tool updates
- Changed
me1 field changed- added
Output schema / properties / nextAdded value: +{ + "additionalProperties": true, + "properties": { + "docs": { + "type": "string" + }, + "moves": { + "items": { + "type": "string" + }, + "type": "array" + }, + "skill": { + "type": "string" + } + }, + "required": [ + "moves", + "skill", + "docs" + ], + "type": "object" +}
- Added
panel_ask - Added
panel_close - Added
panel_open - Added
panel_update - Added
panel_watch
2 tool updates
- Changed
reference_search1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "youtube", - "instagram", - "tiktok", - "linkedin", - "x", - "reddit", - "hackernews", - "threads", - "meta", - "google-ads", - "any" -]New value: +[ + "youtube", + "instagram", + "tiktok", + "linkedin", + "x", + "reddit", + "hackernews", + "threads", + "facebook", + "bluesky", + "meta", + "google-ads", + "any" +]
- Added
write_song
1 tool update
- Changed
identity_estimate1 field changed- added
Output schema / properties / sourcesAdded value: +{ + "items": { + "additionalProperties": true, + "properties": { + "endpoint": { + "type": "string" + }, + "perUnitUsd": { + "type": "number" + }, + "reachNote": { + "type": [ + "string", + "null" + ] + }, + "reachesRange": { + "type": "boolean" + }, + "unit": { + "type": "string" + }, + "vendor": { + "type": "string" + } + }, + "required": [ + "vendor", + "endpoint", + "unit", + "perUnitUsd", + "reachesRange" + ], + "type": "object" + }, + "type": "array" +}
1 tool update
- Changed
jobs_list1 field changed- changed
Input schema / properties / origin / enumPrevious value: -[ - "job", - "chat", - "agent" -]New value: +[ + "job", + "chat", + "agent", + "identity" +]
2 tool updates
- Changed
identity_estimate2 fields changed- changed
Input schema / properties / expansion / descriptionPrevious value: -"profile: an account's profile, a person's accounts' profiles, an organization's site, accounts and logo. posts: an account's posts with metrics (since/until/sinceMonths/maxItems apply). sponsors: brands that paid an account. ads: an organization's ads from the ad libraries. creators: every creator an organization paid. metrics: a fresh snapshot of one post (asset). labels: what a person or organization is (category, niches), read by a model; also what identity_similar ranks by."New value: +"profile: an account's profile, a person's accounts' profiles, an organization's site, accounts and logo. posts: an account's posts with metrics (since/until/sinceMonths/maxItems apply). sponsors: brands that paid an account. ads: an organization's ads from the ad libraries. creators: an organization's creators (paid, partners, and the ones its accounts feature), cheapest evidence first. metrics: a fresh snapshot of one post (asset). labels: what a person or organization is (category, niches), read by a model; also what identity_similar ranks by." - changed
Input schema / properties / force / descriptionPrevious value: -"Pull even when fresh (profiles and posts are fresh for a day, sponsors, ads, creators and labels for a week), and the whole posts range rather than only the unread gaps."New value: +"Pull even when fresh (profiles for a day, posts by the account's own posting rhythm, sponsors, ads, creators and labels for a week), and the whole posts range rather than only the unread gaps."
- Changed
identity_expand2 fields changed- changed
Input schema / properties / expansion / descriptionPrevious value: -"profile: an account's profile, a person's accounts' profiles, an organization's site, accounts and logo. posts: an account's posts with metrics (since/until/sinceMonths/maxItems apply). sponsors: brands that paid an account. ads: an organization's ads from the ad libraries. creators: every creator an organization paid. metrics: a fresh snapshot of one post (asset). labels: what a person or organization is (category, niches), read by a model; also what identity_similar ranks by."New value: +"profile: an account's profile, a person's accounts' profiles, an organization's site, accounts and logo. posts: an account's posts with metrics (since/until/sinceMonths/maxItems apply). sponsors: brands that paid an account. ads: an organization's ads from the ad libraries. creators: an organization's creators (paid, partners, and the ones its accounts feature), cheapest evidence first. metrics: a fresh snapshot of one post (asset). labels: what a person or organization is (category, niches), read by a model; also what identity_similar ranks by." - changed
Input schema / properties / force / descriptionPrevious value: -"Pull even when fresh (profiles and posts are fresh for a day, sponsors, ads, creators and labels for a week), and the whole posts range rather than only the unread gaps."New value: +"Pull even when fresh (profiles for a day, posts by the account's own posting rhythm, sponsors, ads, creators and labels for a week), and the whole posts range rather than only the unread gaps."
11 tool updates
- Added
clone_reel - Added
identity_estimate - Added
identity_expand - Added
identity_library - Added
identity_node - Added
identity_people - Added
identity_resolve - Added
identity_search - Added
identity_similar - Added
identity_tracked - Added
measure_reel
8 tool updates
- Added
instagram_audio_search - Changed
jobs_create2 fields changed- added
Input schema / properties / modeAdded value: +{ + "description": "With referenceId: clone the reference, copy its format, or take it as inspiration (default).", + "enum": [ + "clone", + "format", + "inspiration" + ], + "type": "string" +} - added
Input schema / properties / referenceIdAdded value: +{ + "description": "A member id from references_list: the job works from that person.", + "type": "string" +}
- Changed
posts_create2 fields changed- added
Input schema / properties / audioAdded value: +{ + "additionalProperties": false, + "description": "Instagram Reels only (exactly one video): a platform sound Instagram attaches at publish, by id from instagram_audio_search. Needs the Instagram account connected through Facebook Login; otherwise a 409 carries the connect link.", + "properties": { + "audioId": { + "description": "The sound's id.", + "type": "string" + }, + "audioVolume": { + "description": "The sound's level, default 100.", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "videoVolume": { + "description": "The video's own soundtrack under it, default 100.", + "maximum": 100, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "audioId" + ], + "type": "object" +} - added
Input schema / properties / inspirationAdded value: +{ + "description": "What the post was made from: {kind: format-card|topical-story|reference-post|brand, id, url?, mode?: clone|format|inspiration, memberId?}. For a copy of a reference, kind reference-post with the member id from references_list.", + "type": "object" +}
- Added
references_add - Added
references_browse - Added
references_list - Added
references_remove - Added
references_suggest
1 tool update
- Changed
reference_search1 field changed- changed
Input schema / properties / platform / enumPrevious value: -[ - "youtube", - "instagram", - "tiktok", - "linkedin", - "x", - "reddit", - "hackernews", - "meta", - "google-ads", - "any" -]New value: +[ + "youtube", + "instagram", + "tiktok", + "linkedin", + "x", + "reddit", + "hackernews", + "threads", + "meta", + "google-ads", + "any" +]
1 tool update
- Changed
posts_list7 fields changed- added
Input schema / properties / connectionIdAdded value: +{ + "description": "With sort views: one connected account (connections_list).", + "type": "string" +} - added
Input schema / properties / freshAdded value: +{ + "description": "Re-read stale numbers from the platforms before answering.", + "type": "boolean" +} - added
Input schema / properties / limitAdded value: +{ + "description": "How many posts, 1-200. Default 50.", + "type": "number" +} - added
Input schema / properties / minViewsAdded value: +{ + "description": "With sort views: keep posts with at least this many views.", + "type": "number" +} - added
Input schema / properties / platformAdded value: +{ + "description": "With sort views: one platform (platforms_list ids).", + "type": "string" +} - added
Input schema / properties / sinceAdded value: +{ + "description": "With sort views: keep posts published at or after this ISO time.", + "type": "string" +} - added
Input schema / properties / sortAdded value: +{ + "description": "recent (default) or views: published posts, most viewed first.", + "enum": [ + "recent", + "views" + ], + "type": "string" +}
33 tool updates
- Added
brand_mark - Added
caption_file - Added
capture_tweet - Added
community_hot - Added
concept_search - Added
current_pulse - Added
demo_page - Added
edit_footage - Added
fetch_asset - Added
find_evidence - Added
find_face - Added
find_footage - Added
find_photo - Added
generate_footage - Added
generate_image - Added
inspect_page_style - Added
linkedin_org_lookup - Added
list_page_assets - Added
news_search - Added
plan_music - Added
probe_media - Added
read_page - Added
record_page - Added
reference_read - Added
reference_search - Added
related_trends - Added
render_carousel - Added
render_thumbnail - Added
screenshot_page - Added
speak - Removed
tools_run - Added
web_search - Added
x_pulse
Publisher details
- Operator
- ShapelessAI · Publisher source
- Operator website
- https://shapelessai.com · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://shapelessai.com/docs/mcp · Publisher source
- Trust center
- Not available
- Restrictions
- Not applicable
Related MCP Connectors
AI marketing agent for social: post, schedule and answer comments and DMs across 15 channels.
Let AI agents draft, schedule and publish posts to 17 social platforms, read analytics and reply.
AI marketing agent for small teams: publishes social posts after you approve and reads ad reports.
The agentic social media scheduler. Write, schedule and publish to all top social platforms.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to write, schedule, publish, and measure social media posts across LinkedIn, Bluesky, Mastodon, and YouTube, plus manage media and queue slots, through one OAuth URL with no install or API key. It also covers retrying, cancelling, restoring posts and reading analytics, with reversibility safeguards around irreversible publishing.MIT
- AlicenseAqualityDmaintenanceAI-powered social media posting across 14 platforms. Post to Twitter, Instagram, TikTok, Facebook, LinkedIn, YouTube and more with one command. AI adapts content per platform, schedules posts, and generates 30-day content calendars.6MIT
- AlicenseAqualityBmaintenanceOne prompt, a native post per network, published or scheduled by your agent: TikTok, Instagram, Facebook, YouTube, LinkedIn, Bluesky, Mastodon, Telegram, Discord, Slack, Nostr, X, WordPress, Dev.to, Hashnode. 22 tools incl. plan_week, bulk_schedule, analytics and TikTok video quality check. Priced per brand, not per channel; API + MCP on the free plan. Hosted: postwire.io/api/mcp2284 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to write social posts in a brand's voice for up to four platforms, schedule or cancel them, list brands and channels, and read results, all with human approval before anything is published. Connects via OAuth or API key so posts can be planned and managed from Claude, ChatGPT, Cursor, and other MCP clients.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.