Skip to main content
Glama

Server Details

AI social media team for founders: make and publish posts, carousels and short video to LinkedIn, X, Instagram, TikTok, YouTube, Facebook, Threads, Reddit and Bluesky, from any agent. OAuth sign-in, no API key; every draft waits for approval.

Ownership verified
Status
Healthy
Uptime
99.9% over 21 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
FirstClassTree/shapelessai
GitHub Stars
1
Server Listing
shapeless

TDQS

A3.7/5.0

Scored across 63 tools

Disambiguation4/5

Tools are largely distinct, but there is notable overlap in search/retrieval tools (web_search, x_pulse, news_search, community_hot, related_trends, concept_search, find_evidence) and media generation versus sourcing (generate_footage vs find_footage, generate_image). Descriptions distinguish them well enough (e.g. real clips vs AI clips, news index vs live X), but an agent could still misselect among the many search-like tools.

Naming Consistency5/5

Every tool follows a clean snake_case verb_noun or noun_verb pattern (agents_list, posts_create, generate_image, brain_read). No camelCase mixing or ad-hoc names; the convention is highly predictable across all 63 tools.

Tool Count2/5

With 63 tools, this is far beyond a well-scoped surface and well past the 25-tool threshold for a coherent set. Even for a broad social-media studio, the count suggests many overlapping capabilities that would benefit from consolidation.

Completeness4/5

The surface covers a very wide lifecycle: brand memory, agents, characters, posts (create/approve/publish/dismiss/list), media generation and editing, and analytics. Minor gaps exist (no explicit post update/edit of content, no delete for assets), but most workflows are fully supported.

Available Tools

63 tools
agents_listList agentsA
Read-only
Inspect

The agent roster (the API calls them strategies). Needs the read scope.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
strategiesYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 agentA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoThe agent id to edit; omit to create.
nameNoName, up to 60 characters.
promptNoThe standing brief, up to 4000 characters.
statusNo
planDaysNoWake days, 0=Sunday.
timezoneNoIANA timezone.
planHoursNoWake hours.
subredditsNoUp to 5 subreddits.
connectionIdsNoAccounts to post through; null means all.
monthlyCapCentsNoMonthly spend cap in cents; null = no cap. The studio shows it in credits.
autoPublishPostsNoDANGEROUS: publish with no human approval. Needs the publish scope.

Output Schema

ParametersJSON Schema
NameRequiredDescription
strategyYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, and the description adds the highest-value behavioral fact beyond them: autoPublishPosts arms publishing with no human approval and requires an elevated scope. It does not disclose edit semantics for omitted fields on a mutation tool where nothing is required, which is the one remaining behavioral gap.

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

Conciseness5/5

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

Two compact sentences with zero filler, and the create/edit rule is front-loaded ahead of the permission caveats so the reader gets the decision rule first.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and modes plus scope requirements are covered. The missing piece is patch semantics on edit (whether an omitted field is cleared or preserved) for a tool with zero required parameters.

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

Parameters4/5

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

Schema coverage is 91%, so the baseline is 3 and the schema already carries most parameter meaning. The description goes beyond it by attaching mode semantics to 'id' and a consequence/scope warning to 'autoPublishPosts', which the schema alone conveys only partially.

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

Purpose5/5

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

The opening clause gives a precise verb+resource pair and resolves the upsert ambiguity outright: create when 'no id', edit 'with id'. That distinguishes it cleanly from agents_list and agents_wake without the agent needing to open a schema.

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

Usage Guidelines4/5

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

It states the condition that selects each mode (id present or absent) and the permission prerequisites ('publish scope' for autoPublishPosts, 'write' for everything else), which is real when-to-use guidance. It stops short of naming sibling tools for listing or waking agents as alternatives.

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

agents_wakeWake an agentA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe agent id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
runIdYes
conversationIdYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 libraryA
Read-only
Inspect

The media library: brand uploads and generated media. Needs the read scope.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
uploadsYes
generatedYes

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 openA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
howNo
doneYes
openYes
percentYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines5/5

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 MemoryB
Read-only
Inspect

Read one Brand Memory file. Needs the read scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe file path, like positioning.md.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
contentYes
updatedAtYes

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 filesB
Read-only
Inspect

Brand Memory's file list with the completion ring. Needs the read scope.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
filesYes
completionYes

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 MemoryB
Destructive
Inspect

Write one Brand Memory file (.md paths only) - the agent grounds future posts in it. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe file path, must end in .md.
contentYesThe full file content.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
contentYes
updatedAtYes

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aboutNoWhat the brand is, for a small one with no known domain: "AI model by TypeSafe AI".
brandYesThe brand: a name ("NVIDIA"), a handle ("claude-code") or a domain ("typesafe.ai").
domainNoThe brand's own site when you know it ("typesafe.ai"). Preferred over a web lookup.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A4.2/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 doA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
docsYes
liveYes
plannedYes
capabilitiesYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe capability id from capabilities_list.
noteNoOptional: what you wanted it for. We read these.
emailNoOptional: another address to tell.
webhookUrlNoOptional: an https URL that gets a POST when it ships.

Output Schema

ParametersJSON Schema
NameRequiredDescription
docsNo
statusYes
capabilityYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, 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.

Purpose5/5

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.

Usage Guidelines4/5

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: budgetUsd (default 2, max 10) is held while it runs and released. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
namesNoBrand and product names to spell your way, comma-separated: "ShapelessAI, shapelessai.com".
formatNoDefault srt.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.
media_keyYesThe video or audio in your library, e.g. from an upload.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A4.6/5.0
Behavior5/5

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

Goes well past the annotations: it discloses the duration limit, the required write scope, where the artifact lands (next to the source) versus what streams back inline, and the budget hold/release lifecycle including that it is free. Annotations only supply readOnlyHint=false and destructiveHint=false, so the description carries the meaningful operational detail.

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

Conciseness4/5

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

Four sentences, purpose front-loaded, each carrying distinct information (what, where it lands, cost mechanics, permission requirement). The telegraphic 'Free:' clause is slightly compressed but is immediately unpacked by the following sentence, so nothing is wasted.

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

Completeness5/5

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

For a write-producing tool with an output schema already present, the description supplies everything an agent needs: scope requirement, size limit, cost ceiling and hold behavior, output location, and inline return. Return-value details are correctly left to the output schema.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds semantics the schema does not state: the budget is held during execution and released (i.e., not necessarily consumed), and the media_key is scoped to media 'in the media library' from an upload. The 'names' parameter is left entirely to the schema.

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

Purpose5/5

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

States a precise verb and resource ('Transcribe a video or audio file in the media library') plus the concrete output artifact ('word-timed .srt or .vtt'), which no sibling tool produces. An agent can distinguish this from probe_media or generate_* tools without opening any schema.

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

Usage Guidelines4/5

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

Gives real eligibility constraints — 20-minute cap, requires the write scope, budget must be within default 2 / max 10 — which tells the agent when this call can succeed. There is no sibling transcription alternative to route against, so the absence of explicit when-not guidance is a minor gap rather than an omission.

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: budgetUsd (default 2, max 10) is held while it runs and released. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe post URL (x.com/<handle>/status/<id>) or its numeric id.
themeNoThe x.com theme to draw it in. Defaults to dark.
threadNoAlso draw the post this one replies to, joined by the thread line.
variantNowide for 16:9 and square frames, tall for 9:16. Defaults to wide.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A4/5.0
Behavior4/5

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

Annotations only declare write-capable, non-destructive, and open-world. The description adds real behavioral context the annotations cannot carry: the budget is held during the run and released, default 2/max 10 USD, and a write scope is required. It stops short of saying where the resulting media key lives or whether it persists.

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

Conciseness5/5

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

One tight paragraph that front-loads what gets drawn and the output format before the cost/scope caveats. Every clause earns its place despite the parenthetical density.

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

Completeness4/5

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

With an output schema present, return values need not be described, and the definition covers output format, cost model, scope requirement, and the reply-thread option. Minor gap: no mention of failure modes or what happens if the post is private/deleted.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents url, theme, thread, variant, and budgetUsd. The description restates theme (dark/light), thread (draw the replied-to post), and the budget default/max without adding syntax or format detail beyond the schema; baseline 3 applies.

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

Purpose5/5

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

States a specific verb (Draw/capture) plus resource (a public x.com post) and the exact output artifact (1080px-wide PNG media key), listing the rendered elements. This clearly distinguishes it from rendering siblings like screenshot_page or render_carousel.

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

Usage Guidelines3/5

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

Implies usage context (public posts, needs the write scope, free budget model) but never states when to pick this over screenshot_page or render_thumbnail. The 'Needs the write scope' line is useful gating info, yet no explicit alternatives or exclusions are given.

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

characters_listList actorsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
charactersYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 voiceA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
consentNoRequired with sampleMediaKey: the user holds the rights to that voice.
characterYesThe actor's slug or id (characters_list).
descriptionNoCasting direction to design the voice from, up to 1000 characters.
sampleMediaKeyNoA 5-10s voice sample already in the account, to clone instead.

Output Schema

ParametersJSON Schema
NameRequiredDescription
costUsdNo
characterYes

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

community_hotWhat a community upvotesA
Read-only
Inspect

The live top of Hacker News or of a subreddit's hot ranking, with scores. Free: budgetUsd (default 2, max 10) is held while it runs and released. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.
communityYes'hackernews' or a subreddit name without the r/ prefix (e.g. 'SaaS').

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description usefully adds a cost model (budgetUsd held during the run then released) and an auth prerequisite ('Needs the write scope'), but it leaves the tension between a read-only tool and a write-scope requirement unexplained, which can mislead an agent about whether anything is mutated.

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

Conciseness4/5

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

Three short sentences with the return content front-loaded, and the cost/scope caveats placed after. The staccato 'Free: ...' fragment is slightly awkward but nothing is wasteful or padded.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile; the description fills the remaining gaps (cost mechanics, credential scope). What is missing is routing guidance against sibling trending tools, 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.

Parameters3/5

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

Schema description coverage is 100%, so both parameters (budgetUsd default/max, community values) are already fully documented in the schema. The description repeats the budget default and max without adding syntax or format detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

The description names a specific resource and scope ('the live top of Hacker News or of a subreddit's hot ranking, with scores'), which is unique among siblings like x_pulse and news_search and lets an agent tell what it returns. The verb is only implicit (a fetch/list), and no sibling is named for contrast, so it falls short of a 5.

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

Usage Guidelines3/5

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

Usage is implied by the domain ('what a community upvotes'), but there is no explicit when-to-use, when-not, or pointer to an alternative (e.g. x_pulse/current_pulse for other trend sources). The agent must infer that this is the tool for HN/subreddit rankings rather than being told.

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

connections_listConnected accountsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
connectionsYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 XA
Destructive
Inspect

How much X is talking about 2 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. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
phrasesYesShort literal phrases (max 4 words) to measure, exact-match.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A3.6/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: explicit credit spend (~$0.06 engine cost plus plan margin), the budgetUsd cap and its default/max, and the chargedUsd reporting of actual cost, plus the write-scope requirement — all reconciling with readOnlyHint=false. The destructiveHint=true is left unexplained (nothing here indicates what, if anything, is mutated or lost), 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.

Conciseness4/5

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

Front-loads the operation and flags the cost warning early with 'SPENDS CREDIT:', and every clause carries information. It is dense to the point of being hard to parse in the first sentence ('How much X is talking about 2 to 6 short phrases right now: …'), and 'billed with the plan's margin' is marginal detail, but nothing is padding.

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

Completeness3/5

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

With an output schema present and 100% parameter coverage, the description only needs to cover invocation context — and it covers cost, budget and auth scope well. The remaining critical gap is tool selection: an agent choosing between current_pulse and x_pulse gets no signal here, and the '2 to 6' phrase count conflicts with the schema.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3; the description restates budgetUsd's default/max (matching the schema, so little added value) and mentions the non-parameter chargedUsd output. It also claims '2 to 6 short phrases', which conflicts with the schema's minItems: 1 — a mismatch that could mislead rather than clarify.

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

Purpose4/5

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

Names a specific verb/resource combination ('measure how much X is talking about phrases right now') and enumerates the concrete outputs (7-day volume, per-day counts, velocity, sample posts, wave flag), so the agent knows exactly what it produces. However, it never distinguishes itself from the near-identical sibling x_pulse (nor community_hot/related_trends), which is exactly the differentiation a 5 requires.

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

Usage Guidelines3/5

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

Prerequisites are stated ('Needs the write scope') and operational bounds are given (budgetUsd default 2, max 10), which tells the agent how to call it safely. But there is no 'use this when…' / 'use x_pulse instead when…' routing or any exclusion, so the choice between this and the sibling x_pulse is left entirely to inference.

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: budgetUsd (default 2, max 10) is held while it runs and released. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe absolute URL of the page to demo.
nameYesA 2-6 word filename for the clip, e.g. "analyze flow demo".
zoomNoEase the camera onto each element touched. On by default; off shows the whole page.
stepsYesOne 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.
aspectNoThe clip's shape. 9:16 by default so it fills a reel behind a cutout speaker.
viewportNoWhich 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.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.
browser_barNoDraw a browser bar with the address above the page. On by default.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A3.9/5.0
Behavior5/5

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

Annotations only declare readOnly=false, openWorld=true, destructive=false; the description goes well beyond them by disclosing cost semantics (budgetUsd held while it runs and released), the required write scope, login-wall capture behavior, and the rendered output (MP4 with following cursor and camera). This is exactly the kind of behavioral detail annotations cannot convey.

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

Conciseness4/5

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

The description is front-loaded with the core mechanism before the caveats, and each clause carries distinct information (mechanism, output, login behavior, cost, auth). It is a bit dense and could break the budget/scope sentence out, but there is no filler.

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

Completeness4/5

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

With an output schema present the description needn't explain return values yet it still characterizes the MP4 output, and it covers auth scope, cost mechanics, and the login-wall edge case. The only gap is the missing differentiation from the record_page/screenshot_page siblings, which matters for correct selection.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented, establishing a baseline of 3. The description echoes the budgetUsd default/max and the action vocabulary (type, click, hover, scroll, wait) but adds little syntax or format detail beyond what the schema already provides.

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

Purpose4/5

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

The description names a specific verb and resource ('A real browser opens a URL and performs the steps you name... returns an MP4 media key'), which clearly distinguishes it from a static screenshot tool. However, it never references its close siblings record_page or screenshot_page, so the agent must infer the boundary rather than being told.

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

Usage Guidelines3/5

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

It gives a useful caveat ('A page behind a login demos as its login wall') and states the write-scope requirement, which implicitly signals when it is callable. But there is no explicit when-to-use-vs-alternatives guidance against the overlapping record_page/screenshot_page siblings, leaving the choice to inference.

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: budgetUsd (default 2, max 10) is held while it runs and released. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
fitNocover (default) crops to fill the new shape; contain letterboxes onto pad_color, which keeps a whole slide readable. Needs reframe.
sfxNoSounds 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.
cardNoThe 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.
logoNoThe 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.
lookNoGrade 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.
nameYesA 2-6 word filename for the cut, e.g. "demo hero moments". The user sees it in Assets.
planNoResolve 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.
popsNoThe 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).
focusNo"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.
musicNoA 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.
namesNoThe 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.
speedNoPlay the cut faster or slower - 1.5 tightens a demo, 0.5 holds a detail. Audio keeps its pitch. 1 (unchanged) by default.
cutoutNoCutout 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.
effectsNoEffects 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.
reframeNoRe-crop to this shape. Leave unset to keep the source framing.
tightenNoTranscript-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.
captionsNoWord-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.
overlaysNoPictures 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_inNoFrame 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.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.
keep_textNoThe 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_keyYesThe clip to edit, as a mediaKey from media_library, an upload, or find_footage.
pad_colorNoThe 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.
backgroundNoA 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_rangesNoThe 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_soundNoStudio 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_rangesNoThe moments to DROP, same format; what remains is joined. Use instead of keep_ranges, never with it.
caption_accentNoHex 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_scriptNoWhat 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_backdropNoWhat 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_audioNoRe-level the cut to broadcast loudness, keeping what was said, without the studio_sound cleaning. For a mix that was already produced.
append_media_keysNoOther 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_foregroundNoHex colour of the burned captions' other words. White by default.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses the auth requirement ('Needs the write scope'), the cost behavior ('budgetUsd ... is held while it runs and released'), and that plan: true performs a dry read without rendering. It also signals the operation is non-destructive by producing a new media key rather than altering the source, which corroborates destructiveHint=false.

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

Conciseness4/5

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

Front-loads the core action and output, then layers capability, prerequisites, and cost. Every sentence conveys information, but the long feature list ('reframes to 9:16, tightens pauses, burns in captions, lays music and places overlays, a logo and a look') makes it dense and slightly sprawling for an opening paragraph.

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

Completeness4/5

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

For a 33-parameter mutation with an output schema, the description supplies the essential operator context: probe_media first, plan-then-render loop, write scope, and budget semantics. Return values need not be explained since an output schema exists. It does not hint at which parameter families are mutually exclusive or ordering, but the exhaustive schema covers those.

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

Parameters3/5

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

Schema description coverage is 100% and the 33 parameters are exhaustively documented in the schema, so the schema does the heavy lifting. The description only references a few names (keep_text, keep_ranges, remove_ranges, budgetUsd, plan) at a high level without adding syntax or constraints beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Cut a video in the media library') and enumerates the concrete forms it accepts (an upload, a generated or found clip, a render), then names the output ('a new media key'). This is clearly distinguishable from siblings like generate_footage, render_thumbnail, 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.

Usage Guidelines4/5

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

Gives a strong prerequisite and workflow: 'Run probe_media first' and 'plan: true reads the paper edit back before rendering.' It also frames the two edit modes (keep_text from the transcript vs keep_ranges/remove_ranges for seconds), so context is clear. It stops short of naming an explicit sibling alternative or a when-not-to-use condition for the tool itself.

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: budgetUsd (default 2, max 10) is held while it runs and released. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe absolute URL of the file itself, not the page around it.
purposeNoWhy you want it. 'publish-candidate' commits you to stating the rights argument in the plan.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, openWorldHint=true and destructiveHint=false, so the description doesn't need to restate the write/safety profile. It adds genuine non-obvious behavior instead: that a budget is held while the call runs and released afterward, and that the fetched asset stays reference material by default. It doesn't describe failure/refund behavior if the fetch fails, which keeps it from a 5.

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

Conciseness4/5

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

Three sentences, front-loaded with the action and media types, then scope/cost facts. Every sentence carries information; no filler. Slightly terse on routing, but well structured.

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

Completeness4/5

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

An output schema exists, so return values need not be explained. Combined with annotations covering safety and the schema covering params, the description supplies the remaining context an agent needs: cost handling, access scope, and the reference-vs-publish stance. Only the sibling-routing guidance is missing.

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

Parameters3/5

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

Schema coverage is 100%, so all three parameters are already documented, including the budget default/max and the enum semantics for 'purpose'. The description mostly restates those (the budget hold, the reference-material default). Baseline 3 is correct when the schema carries the parameter documentation.

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

Purpose4/5

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

States a specific verb and resource: pull an image, video, audio file or PDF at a public URL into the media library as a media key. The media types and the resulting artifact ('media key') make the operation unambiguous. It does not explicitly name or contrast a sibling (e.g. assets_upload), so it falls short of a 5.

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

Usage Guidelines3/5

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 useful framing about intent, and 'Needs the write scope' is a real precondition. However, it never says when to pick this over the nearby siblings assets_upload, reference_search, or list_page_assets, leaving the routing decision implied.

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

find_evidenceFind research evidenceA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe claim or topic in plain language, as you would say it out loud.
min_yearNoDrop work published before this year.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.
max_resultsNoHow many works to return (1-25, default 10).
min_citationsNoDrop work cited fewer times than this.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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

Schema coverage is 100%, so the schema already documents 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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aboutNoWho they are, e.g. 'founder of Instinct'. Tells namesakes apart on the web.
personYesThe person's name as they spell it, e.g. 'Noah Shinn'.
variantNoWhich of their photos, 0-based; wraps around what exists.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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

States a specific verb and resource with 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.

Usage Guidelines4/5

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: budgetUsd (default 2, max 10) is held while it runs and released. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe subject on screen in two to four catalogue words - "rain window night", not a sentence describing the shot.
sourceNoWhich library to search. "stock" by default.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.
orientationNoShape 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_secondsNoReject clips shorter than this. Leave unset unless a beat needs the length.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A3.9/5.0
Behavior4/5

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: the budgetUsd hold-and-release mechanic, the explicit 'Needs the write scope' auth requirement, and the B-roll restriction. It says less about failure/refund behavior or what happens on partial matches, 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.

Conciseness4/5

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

Terse, front-loaded with the action, then constraints, then cost/auth. Every clause carries information, though the long parenthetical source list makes the opening sentence dense.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and the annotations plus description cover the write/scope and cost profile. For a mutation tool with an external budget, it is nearly complete, missing only explicit routing to sibling generation tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters including source enums and orientation behavior. The description largely restates budgetUsd's default/max and the query word-count guidance already in the schema, adding no new syntax or edge-case meaning, so the 3 baseline holds.

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

Purpose5/5

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

States a specific verb (fetch one licensed video clip) and resource, enumerates the source libraries, and notes the destination (media library as a media key). An agent can distinguish this from generate_footage or edit_footage without reading the schema.

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

Usage Guidelines3/5

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

Provides concrete constraints (B-roll only, no faces/logos/branded property; search in two to four words) that imply appropriate usage, but never names an alternative such as generate_footage, edit_footage or find_photo or states when to prefer them. Usage is implied, not routed.

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: budgetUsd (default 2, max 10) is held while it runs and released. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesWhat the photograph shows, concretely - subject, setting, mood.
sourceNoWhich library to search. "stock" by default.
variantNoWhich 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.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.
orientationNoShape of the slot the photo fills. Portrait suits 9:16 video.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A4.1/5.0
Behavior5/5

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

Adds substantial behavior beyond annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false): the write-scope auth requirement, the budget hold-and-release cost semantics, and the licensing/attribution obligation ('credit it when attributionRequired is true'). These are exactly the operational facts an agent needs and are not derivable from structured fields.

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

Conciseness4/5

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

Three dense sentences, front-loaded with the core action and value, then licensing, then cost/scope. No filler, though the 'Free:' lead-in to the budget sentence reads awkwardly and forces a re-read of the pricing claim.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and the description covers auth scope, cost behavior, and licensing. The main omission is explicit routing guidance versus generate_image/find_footage, which is the one thing an agent still has to guess.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents query, source, variant, budgetUsd, and orientation in detail. The description only restates the budget default/max already in the schema and adds no new syntax or format guidance, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Fetch one licensed real photograph ... or a blank meme template into the media library as a media key'), naming the value produced. It is clearly distinguishable from generation siblings (generate_image, generate_footage) and video siblings (find_footage) by the 'real, licensed' qualifier.

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

Usage Guidelines3/5

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

Implied usage is present: this is for real licensed stock/Pixabay photos or meme templates rather than generated content, and the source enum contextualizes the choice. However, it never explicitly says when to choose this over generate_image or find_footage, nor any exclusion conditions, so the agent must infer the routing.

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

generate_footageGenerate AI videoA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA 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.
aspectNoShape of the generated frame. 9:16 by default.
promptYesThe 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.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.
resolutionNo720p 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_audioNoGenerate 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_secondsNo4, 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

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 imageA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA 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.
sizeNo1K draft, 2K final.
promptYesThe 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.
qualityNostandard = the default model (default). premium = the fidelity escalation, several times the price.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.
aspectRatioYesLinkedIn feed image: 4:5. Wide header: 16:9.
reference_keysNoUp 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

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A4.1/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

inspect_page_styleRead a site's brand styleA
Read-only
Inspect

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: budgetUsd (default 2, max 10) is held while it runs and released. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe absolute URL of the page to read.
viewportNoWhich layout to read. Defaults to desktop, the full identity.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A4.3/5.0
Behavior4/5

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

Goes beyond annotations by disclosing the cost mechanism (budgetUsd held while running, then released, making the call free) and an auth requirement ('Needs the write scope'). Annotations already cover the read-only/open-world safety profile, so this supplementary context is a genuine add.

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

Conciseness5/5

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

Two dense sentences with the output inventory front-loaded, followed by the operational cost/scope notes. No filler; every clause carries information.

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

Completeness5/5

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

With an output schema present and 100% schema coverage for the three params (including the viewport enum), the description need not restate return shapes or param syntax. It covers what is read, cost, and auth, which is everything an agent needs to invoke correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3, but the description adds real meaning: it clarifies budgetUsd is held and released (net free), not a charge, and that the read reflects the visitor's view. Defaults and max repeat the schema but the semantics do not.

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

Purpose5/5

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

States a specific verb+resource (read a page's visual identity) and enumerates the concrete outputs: heading/body typefaces, palette by role as hex, button radius, logo. This distinguishes it cleanly from siblings like read_page, screenshot_page, and list_page_assets.

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

Usage Guidelines3/5

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

Implied context is present ('measured as a visitor sees it', free with a budget cap), but no explicit when-to-use vs alternatives. It never names read_page or screenshot_page as the alternative for the non-style case, leaving selection to inference.

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

jobs_briefJob briefA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe job id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
liveYes
titleYes
statusYes
outputsYes
messagesYes
artifactsYes
createdAtYes
createdByYes
updatedAtYes

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe job id.
textYesThe message, up to 4000 characters.
modelNoBrain 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.
autoRunNoExecute the plan the moment it is ready instead of pausing for approval. Deliverables still land as proposed drafts.
budgetUsdNoBudget for this turn, in dollars.
mediaKeysNoMedia keys already in the account (from assets_upload or assets_list) to attach.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
statusYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark this as a non-read-only, non-destructive, closed-world mutation, so the safety profile is covered. The description adds genuinely useful context beyond them: it requires the write scope (auth prerequisite) and that resuming carries full history. It stops short of saying whether the message re-triggers execution or what the budget/pause interactions are.

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

Conciseness5/5

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

Two tight sentences, no filler, with the core action front-loaded and the resume use case plus the auth requirement trailing. 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.

Completeness4/5

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 write scope, resume semantics and attachment capability are stated. Minor gaps remain around side effects of continuing a run (whether it consumes budget or resets state), but the definition is sufficient for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (id, text, model, autoRun, budgetUsd, mediaKeys) is already documented in the schema, including the 4000-char limit and model list. The description only alludes to 'files attached' (mediaKeys) and adds nothing further, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Send another message to a job') and adds a second distinct purpose ('resume a stuck or failed run with full history'), which an agent could not infer from the name alone. It does not name the sibling it is not (jobs_run / jobs_create), so it falls short of the 5-level sibling differentiation.

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

Usage Guidelines4/5

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

Gives a clear usage condition: this is the tool for resuming a stuck or failed run with full history preserved. However, it never contrasts with jobs_run (start a fresh run) or jobs_create, and states no when-not-to-use or prerequisite checks beyond the write scope.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYesWhat to do, up to 4000 characters.
labelNoJob title, up to 80 characters. Defaults to the goal's first line.
modelNoBrain 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.
autoRunNoExecute the plan the moment it is ready instead of pausing for approval. Deliverables still land as proposed drafts.
timezoneNoIANA timezone for scheduling language in the goal.
budgetUsdNoBudget for the run, in dollars.
mediaKeysNoMedia keys already in the account (from assets_upload or assets_list) to attach.
charactersNoActors 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
titleYes
statusYes

TDQS

A3.8/5.0
Behavior4/5

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 partly covered. The description still adds real value: the run persists server-side after the call returns, it yields a job id and web url for polling, and it requires the write scope. It does not mention rate limits, budget enforcement, or what happens when the run fails.

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

Conciseness5/5

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

Three tight sentences with zero waste. The core action is front-loaded, the persistence behavior follows, and the scope requirement closes it out.

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

Completeness4/5

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

An output schema exists, so return values need not be spelled out, and annotations cover the safety profile. The description supplies the async persistence model and auth scope, leaving only minor gaps around failure behavior and cost/budget semantics.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description only adds that files may be attached, which loosely maps to mediaKeys; it says nothing about goal, model, autoRun, budgetUsd, or characters beyond what the schema already explains in detail.

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

Purpose4/5

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

States a specific verb and resource ("Start a durable job from a goal") plus the optional attachment capability, which is enough to identify the operation. It hints at the async lifecycle ("the run keeps going server-side") but never names the sibling tools that consume the returned job id (jobs_get, jobs_continue, jobs_run), so it stops short of full sibling differentiation.

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

Usage Guidelines3/5

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

"Needs the write scope" gives a clear prerequisite, and the durable/server-side framing implies this is the async entry point. But there is no explicit when-to-use versus jobs_run, jobs_continue, or jobs_brief, and no when-not-to-use guidance for an 8-parameter tool with a rich sibling set.

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

jobs_getRead a jobA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe job id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 jobsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
beforeNoCursor from the previous page's nextCursor. Omit for the newest page.
originNoFilter by who started the thread.

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobsYes
nextCursorYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true/openWorldHint=false, so the safety profile is covered; the description adds real context beyond them: 200-per-page size, newest-first ordering, the cursor contract (non-null nextCursor means older jobs exist), and the required read scope. It stops short of return-shape or rate-limit detail, which the output schema partially covers.

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

Conciseness5/5

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

Three tight clauses, front-loaded with purpose and pagination contract, zero filler. Every sentence carries usable information.

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

Completeness4/5

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

With an output schema present, return values need not be explained, and the description still covers ordering, page size, pagination mechanics, and auth scope. Only the `origin` filter goes unmentioned, which the schema handles.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both params; baseline 3 applies. The description reinforces the `before` cursor's origin from nextCursor but says nothing about the `origin` filter, adding only marginal value over the schema.

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

Purpose4/5

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

Clear specific verb+resource ("List jobs") with extra scope detail: liveness, web url, page size, ordering. However, it never distinguishes itself from sibling listing/reading tools such as jobs_get, jobs_tail, or jobs_brief, so the 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.

Usage Guidelines3/5

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

Usage is implied by the listing semantics and the description gives operational guidance (pass nextCursor back as `before`, needs the read scope), but it offers no explicit when-to-use vs alternatives or when-not-to-use conditions relative to jobs_tail/jobs_get/jobs_brief.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe job id.
budgetUsdNoBudget for the run, in dollars.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
statusYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 jobA
Destructive
Inspect

Stop a running job. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe job id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
stoppedYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 jobA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe job id.
cursorNoResume from this cursor; omit to replay the run from its start.
maxSecondsNoHow long to watch, 15 by default, 60 at most.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 tagA
Read-only
Inspect

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: budgetUsd (default 2, max 10) is held while it runs and released. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesCompany name or topic keywords, e.g. "nvidia" or "developer tools".
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A3.8/5.0
Behavior4/5

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

Beyond the annotations, the description discloses real behavioral traits: the tool is free, the budgetUsd amount is held while it runs and released, the result is a verified token safe to paste, and it requires a write OAuth scope. The 'Needs the write scope' note sits in mild tension with readOnlyHint=true, but it describes an auth requirement rather than a state mutation, so it is not a direct contradiction.

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

Conciseness4/5

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

Three compact sentences with no filler; the output artifact is front-loaded and the cost/auth caveats follow. The first sentence is dense with an inline URN example but remains readable.

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

Completeness4/5

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

For a two-parameter lookup with an output schema and read-only annotations, the definition covers purpose, cost behavior, auth scope, and usage constraint. Return-format detail is not required since an output schema exists, so the description is nearly complete; the only soft spot is the unexplained 'write scope' requirement.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaning beyond the schema by explaining that budgetUsd is held while the call runs and then released, and by characterizing what the query accepts (a large company name or topic keywords), which goes past the schema's example strings.

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

Purpose4/5

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

The description states a specific resource and output: the verified LinkedIn mention token (e.g. @[Microsoft](urn:li:organization:1035)) for a company, or companies for a topic. It is clearly distinguishable from siblings like posts_publish or find_photo. It leads with the noun/return artifact rather than a verb ('Look up X'), which slightly weakens the action framing.

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

Usage Guidelines3/5

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

'Ready to paste into a LinkedIn post' implies the context of use, and 'Tag only a company it returns' constrains how results may be used. However, there is no explicit when-to-use vs when-not guidance and no alternative tool is named among the many siblings, so the agent must infer the scenario.

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 videosA
Read-only
Inspect

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: budgetUsd (default 2, max 10) is held while it runs and released. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe absolute URL of the page to scan.
viewportNoWhich layout to load. Defaults to desktop, which loads the largest imagery.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.
max_assetsNoHow many entries to return (default 40).

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered; the description adds genuinely non-redundant behavior: the cost model ('Free', budgetUsd held while it runs and released) and the auth requirement ('Needs the write scope'). The write-scope note sits in tension with readOnlyHint and the 'Free' framing next to a held budget is slightly ambiguous, which keeps it from a 5.

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

Conciseness4/5

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

Roughly 45 words, front-loaded with the resource and scope, then the handoff, then cost and auth. Nothing is padding, though the clipped telegraphic fragments ('fetch_asset the one you want', 'Free: ...') require a beat of parsing rather than reading cleanly.

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

Completeness4/5

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

With an output schema present the description needn't explain return encoding, and it still adds useful output context (ordering, pixel sizes, per-asset purpose). Required param, cost behavior and auth scope are all covered, leaving only pagination/truncation (>40 entries) unaddressed.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents url, viewport, budgetUsd and max_assets in full. The description only restates the budgetUsd default/max, and output-ordering facts like 'largest first' are not a parameter at all, so it adds little beyond the schema — the baseline 3 applies.

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

Purpose4/5

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

The description names the concrete resource returned (images, videos, logos, social preview card) plus its scope and ordering ('largest first, with real pixel sizes'), so an agent knows exactly what comes back. The verb 'list' is carried by the title rather than the description, and there is no explicit differentiation from near-neighbours like probe_media or screenshot_page, which keeps it just below a 5.

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

Usage Guidelines4/5

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

'fetch_asset the one you want' gives a clear follow-on action and effectively routes the agent to the correct sibling once the list is in hand. It states the intended workflow context but gives no exclusions or conditions for choosing this over probe_media or screenshot_page when the goal is merely to know what media exists.

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

meWho am IA
Read-only
Inspect

Who this credential belongs to: email, plan, credit balance. Needs the read scope.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
planNo
userYes
entitledYes
accountIdNo
balanceUsdYes
engineLiveNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds a real behavioral constraint the annotations do not capture: 'Needs the read scope,' i.e., an auth prerequisite. It stops short of saying what happens on a missing scope, but that is a minor gap.

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

Conciseness5/5

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

Two short clauses, no filler: the identity/return summary is front-loaded and the auth requirement follows. Every clause carries information.

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

Completeness4/5

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

An output schema exists, so the description needn't enumerate return structure in detail; naming email, plan, and credit balance is sufficient orientation. The auth-scope caveat plus the safety annotations make this complete enough for a zero-parameter identity call, though a note on failure behavior when the scope is absent would close the last gap.

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

Parameters4/5

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

The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly avoids inventing parameter detail and instead spends its words on the returned fields, which is the appropriate emphasis for a parameterless call.

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

Purpose5/5

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

Names the exact resource (the credential's identity) and enumerates the concrete return fields: email, plan, credit balance. No sibling tool in the list does identity resolution, so the agent can distinguish it immediately without opening the schema.

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

Usage Guidelines3/5

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

The description implies the usage context (inspecting who the current credential is), but never states when to call it versus alternatives or under what conditions — e.g., as a preflight check before other calls. With no real sibling competitor, the absence of exclusions is less costly, but the guidance is only implied.

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 bedA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleYesGenre, mood, instrumentation and tempo - what the generator is given, near-verbatim.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.
allow_vocalsNoLets 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_secondsNoHow 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

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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

Schema description coverage is 100% and the schema already 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.

Purpose5/5

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.

Usage Guidelines4/5

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 settingsA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
platformsYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 postsA
Destructive
Inspect

PUBLISHES CONTENT: approving moves proposals to the schedule, and they will go out. Needs the publish scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesPost ids to approve.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 postA
Destructive
Inspect

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 (402 free_daily_cap says when the day resets). Needs the publish scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe post text.
queueNoInstead of scheduledAt: the account's next free queue slot.
titleNoThe title; YouTube requires one.
settingsNoPer-platform settings; the schema is platforms_list[].settingsSchema (TikTok privacyLevel, Reddit subreddit, YouTube privacyStatus).
mediaKeysNoMedia already in the account (assets_upload returns keys).
scheduledAtNoISO time it goes out. Omit for now.
connectionIdYesThe account to post as (connections_list).
firstCommentNoPosted as the post's own first reply the moment it is live. LinkedIn (1250), X (280), Bluesky (300).

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
errorNo
statusYes
handoffNoteNo
scheduledAtNo
publishedLocationNo

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the free-plan rate limit (10 posts/day), the 402 free_daily_cap reset behavior, the required 'publish' scope, and that the post lands in the account's next free queue slot. These are operationally critical facts the schema and 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.

Conciseness4/5

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

Dense and front-loaded with the core action first, then preconditions, then limits. The telegraphic style is efficient, though a few clauses ('at a time, in the account's next free queue slot, or now') are slightly compressed.

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

Completeness4/5

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

An output schema exists and annotations cover safety, so return format is not needed. The description supplies the missing prerequisites and rate-limit context; only the routing versus posts_publish/posts_approve is left unaddressed.

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

Parameters3/5

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

Schema coverage is 100% and the field descriptions are already rich, so the baseline is 3. The description mostly restates schema content (queue vs scheduledAt, settings via platforms_list) and adds only cross-tool references rather than new parameter semantics.

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

Purpose4/5

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

Opens with a specific verb+resource ('PUBLISHES CONTENT: puts a post you wrote on the rail') and names scope ('one connected account'). It is clear what it does, but it never differentiates itself from the sibling 'posts_publish' (or 'posts_approve'), which an agent must disambiguate against.

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

Usage Guidelines4/5

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

Gives real preconditions: read platforms_list first for limits/settings schema, needs the publish scope, and describes the queue-vs-now-vs-scheduledAt selection. Lacks any explicit exclusion or contrast against sibling publishing tools.

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

posts_dismissDismiss postsA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesPost ids to dismiss.
reasonNoWhy the user skipped them, if they said.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resolvedYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a destructive mutation with 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 postA
Read-only
Inspect

One post's live state, with the url that opens it in the calendar for the human. Needs the read scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe post id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
postYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 postsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNorecent (default) or views: published posts, most viewed first.
freshNoRe-read stale numbers from the platforms before answering.
limitNoHow many posts, 1-200. Default 50.
sinceNoWith sort views: keep posts published at or after this ISO time.
statusNoKeep only posts in this state.
minViewsNoWith sort views: keep posts with at least this many views.
platformNoWith sort views: one platform (platforms_list ids).
connectionIdNoWith sort views: one connected account (connections_list).

Output Schema

ParametersJSON Schema
NameRequiredDescription
postsYes

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 nowA
Destructive
Inspect

PUBLISHES CONTENT NOW: pushes a queued post to the platform immediately. Needs the publish scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe post id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
errorNo
statusYes
handoffNoteNo
publishedLocationNo

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 fileA
Read-only
Inspect

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: budgetUsd (default 2, max 10) is held while it runs and released. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
namesNoThe brand, product and domain names the transcript must spell the owner's way, comma-separated: "ShapelessAI, shapelessai.com".
framesNoSpecific 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.
waveformNoAlso attach the audio as a waveform image with a second-ruler along it.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.
media_keyYesThe item to look at, as a mediaKey from media_library or any tool that returned one.
transcriptNoTime 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_countNoHow many frames the filmstrip holds. 12 by default.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/non-destructive/non-openWorld, so the bar is lower, yet the description adds real value: the budgetUsd hold-and-release cost mechanic (default 2, max 10), the write-scope auth requirement, and the fact that it returns an actual filmstrip and timestamped words. The "needs the write scope" note sits oddly beside readOnlyHint but is an auth disclosure rather than a behavioral contradiction.

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

Conciseness5/5

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

Purpose is front-loaded, the capability enumeration is dense but each item is distinct and useful, and the closing sentences carry the sequencing, cost, and auth facts with zero filler. Appropriately sized for a seven-parameter tool.

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

Completeness4/5

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

With an output schema present the description need not explain return values, yet it still covers purpose, sequencing, cost, and auth. The only friction is the write-scope note against a readOnly annotation, which a caller might read as ambiguous but not contradictory.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters including defaults and the max:24 frame_count bound. The description restates budgetUsd's default/max and hints at the filmstrip-vs-frames tradeoff, adding only marginal meaning beyond the structured fields.

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

Purpose5/5

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

Specific verb plus resource (look at / inspect a video or audio file in the media library) followed by an explicit enumeration of what it exposes: duration, size, frame rate, loudness, filmstrip, chosen frames, waveform, and time-aligned transcript. It is clearly distinguishable from sibling write tools like edit_footage, which it explicitly references.

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

Usage Guidelines4/5

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

"Read it before edit_footage" gives concrete sequencing guidance against a named sibling, and media_key's schema text points at media_library as the source of the key. There is no explicit when-not guidance (e.g., for still images or already-transcribed clips beyond the transcript flag), 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 pageA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe absolute URL to read.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.
max_charactersNoTruncate the text beyond this (default 12000).

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, 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.

Purpose5/5

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.

Usage Guidelines3/5

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: budgetUsd (default 2, max 10) is held while it runs and released. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe absolute URL of the page to film.
scrollNoEase down the page across the take. Defaults to true; false holds still.
viewportNoWhich screen to film it on. Defaults to desktop.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.
duration_secondsNoHow long to film, 1-30. Defaults to 12.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and openWorldHint=true, so safety profile is partly covered. The description adds real behavioral context beyond them: the budget is 'held while it runs and released' (reservation semantics), and 'Needs the write scope' names the auth requirement. It omits failure behavior and any rate/queue characteristics.

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

Conciseness4/5

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

Four tight sentences, front-loaded with what happens (browser opens and scrolls) before cost and scope details. Slightly telegraphic phrasing ('Free: budgetUsd ... is held while it runs and released') costs a little readability but wastes no words.

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

Completeness4/5

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

The tool is moderately complex (5 params, open-world, spends money) and the description covers the mechanism, the return artifact, the cost model, and the required scope. An output schema exists so return values need no more detail, though the absence of any failure/timeout guidance is a minor gap.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description earns a bump: it explains that budgetUsd is a hold-and-release reservation rather than a cap that is simply checked, and it gives practical guidance on duration ('8 to 15 seconds reads as one shot') that the schema's bare '1-30' does not convey.

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

Purpose4/5

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

States a concrete verb+resource: a real browser opens a URL, scrolls it, and returns an MP4 media key plus a first frame. That is far more specific than the title 'Film a web page' alone. It does not, however, distinguish itself from near-neighbors like screenshot_page, demo_page, or read_page, which an agent must disambiguate on its own.

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

Usage Guidelines3/5

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

The line '8 to 15 seconds reads as one shot' implicitly tells the agent when the output is usable, and 'Free' signals the cost posture. But there is no explicit when-to-use/when-not and no named alternative (screenshot_page, demo_page) despite several plausible siblings in the list.

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 performedA
Read-only
Inspect

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: budgetUsd (default 2, max 10) is held while it runs and released. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesThe ids exactly as reference_search returned them (1-3).
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/non-destructive/closed-world, and the description adds context beyond them: the cost model (budgetUsd default 2, max 10, held and released, hence free) and the auth requirement ('needs the write scope'). The write-scope note is slightly at odds with the read framing and could confuse, but the added cost/auth behavior is genuine value.

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

Conciseness4/5

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

A dense single paragraph that front-loads purpose, then enumerates returned content, then cost and scope. Every clause carries information, though the budget sentence partially duplicates the schema.

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

Completeness4/5

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

An output schema exists, so return structure needn't be explained; the description instead covers what conceptually comes back, the workflow linkage, cost behavior, and auth scope. Coverage is solid, with only the write-scope/read-only tension left ambiguous for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (ids, budgetUsd) are already fully documented in the schema. The description only restates the same facts (budget default/max, ids count), adding no syntax or meaning beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb (read) and resource (1-3 exemplars from reference_search) plus exactly what the read yields: why they worked, structure/beats, transcript, on-screen text, and a rebuild recipe. It is clearly distinguishable from the sibling reference_search (search vs. full fetch).

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

Usage Guidelines4/5

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

It names the source flow explicitly ('from reference_search') and how many to pass (1-3), so an agent knows this follows a search and consumes its ids. It stops short of stating when NOT to use it or naming edge alternatives, so it is context-rich but not exclusion-complete.

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: budgetUsd (default 2, max 10) is held while it runs and released. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
accentNoHex colour of the starred words. Defaults to the cut's accent.
outlineNoHex colour of the contour and the scrim behind the words. Default near-black.
frame_atYesSeconds into the video (or into frame_key) to take the face from.
headlineYesThree to five words, not the title. *Stars* mark the accent words: "I hired *an AI*".
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.
frame_keyNoA clip to take the frame from instead, at its own resolution: the take behind the cut. frame_at then counts on it.
video_keyYesThe finished video (mediaKey from edit_footage or videoKey from render_video_project).
foregroundNoHex colour of the words. Default white.
picture_keyNoOne 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

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only declare the write/no-destroy profile; the description goes further by disclosing the budget hold-and-release semantics ('budgetUsd ... is held while it runs and released'), the max of 10, the write-scope requirement, and the output file location beside the video. It does not cover failure modes or what happens if the job is cancelled, but the added cost and auth context is substantive.

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

Conciseness5/5

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

A single tight paragraph: core action first, then output artifact/location, then cost, then scope requirement. Every clause carries information and there is no filler.

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

Completeness4/5

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

With an output schema present, return values need not be explained, and the description covers the artifact name, its relationship to posts, cost, and auth scope. Remaining gaps — what 'Free' precisely means when a budget is held, and error/retry behavior — are modest for this complexity level.

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

Parameters3/5

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

Schema coverage is 100%, so every parameter is already documented, and the description largely repeats it (frame_at in seconds, three-to-five-word headline, one picture). The only marginal additions — 'at most one picture' and the post-key consumption behavior — are minor, so the schema is doing the heavy lifting.

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

Purpose4/5

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

The description names a concrete verb and artifact: it packages a finished video with a cover frame, a short headline, and at most one picture, and files the result as <video>-thumbnail.jpg. That is clearly distinct from siblings like generate_image, render_carousel, or brand_mark, though it never explicitly contrasts itself with them.

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

Usage Guidelines3/5

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

It gives implied usage context — 'a post that carries the video key gets the cover' — which tells the agent what the output is for. However, it offers no explicit when-to-use versus when-not-to-use guidance and never names an alternative thumbnail/cover route, so the agent must infer the trigger conditions.

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: budgetUsd (default 2, max 10) is held while it runs and released. Needs the write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe absolute URL of the page to open.
selectorNoCSS selector of one element to shoot instead of the page.
viewportNoWhich screen to shoot it on. Defaults to desktop.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.
full_pageNoCapture the whole scroll height instead of the first fold.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A3.8/5.0
Behavior4/5

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

Adds real behavioral context beyond annotations: budgetUsd 'is held while it runs and released' and 'Needs the write scope' — auth requirement and cost-hold mechanics the agent would not otherwise know. Annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false) cover the safety surface, so this extras layer earns credit. No detail on failure/timeout behavior or media key expiry.

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

Conciseness4/5

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

Two tight sentences, front-loaded with the rendering behavior and capture modes, with cost/scope constraints following. Every clause carries information; no filler. Slightly dense, but no wasted sentences.

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

Completeness5/5

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

For a screenshot tool with an output schema (so return format need not be explained), the description covers rendering model, capture options, cost mechanics, and the required write scope. Nothing essential to correct invocation is missing.

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

Parameters3/5

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

Schema coverage is 100%, so all five parameters are already documented in the schema. The description restates budgetUsd's default/max and viewport options without adding syntax or format info beyond the schema. Baseline 3 is correct 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.

Purpose4/5

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

Specific verb+resource: 'A real browser renders a URL ... returns the picture as a media key', with the three capture scopes (viewport, full page, one element) spelled out. It implicitly differentiates from text-oriented siblings like read_page by noting JavaScript runs and fonts load, but never names a sibling to route against. Clear purpose, no explicit sibling differentiation.

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

Usage Guidelines3/5

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

Usage is implied by the JS-rendering framing (use when you need a real render rather than parsed text), but there is no explicit when-to-use/when-not or named alternative among the many page/render siblings (render_thumbnail, demo_page, inspect_page_style, capture_tweet). Adequate context, no routing guidance.

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

speakTurn text into speechA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFile name stem. Default: the voice name.
textYesWhat to say, exactly as it should be read. At most 2000 characters.
styleNoExtra direction in plain words, e.g. "smile on the last line". Gemini voices only.
voiceNoA roster name or a character voice id. Default Charon.
energyNoHow 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.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 toolsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolsYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

x_pulseAsk what X is sayingA
Destructive
Inspect

An agent searches X live and answers what practitioners are saying about a topic right now, with per-claim citations and engagement evidence. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe topic or question to sense the live X conversation on.
budgetUsdNoOptional: the most this call may spend, in dollars, default 2, max 10.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
mediaYes
outputNoThe tool's own result, shaped by the tool.
chargedUsdYes

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: ~60s latency, ~$0.25 engine cost, billing with plan margin, budgetUsd capping behavior, chargedUsd as the cost report, and the required write scope. These are exactly the operational facts an agent needs before committing to an expensive call and align with readOnlyHint=false.

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

Conciseness4/5

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

Front-loaded with purpose before cost and latency caveats; every sentence carries operational weight. Slightly dense with billing detail, but nothing is wasted.

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

Completeness5/5

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

For a credit-spending, open-world search with an output schema already covering returns, the description supplies the missing pieces — latency, cost, budget cap, auth scope. An agent has everything needed to decide and invoke correctly.

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

Parameters4/5

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

Schema coverage is already 100%, but the description reinforces budget semantics ('budgetUsd caps it, default 2, max 10') and introduces chargedUsd as the returned cost value, which the input schema does not cover. Marginal but genuine added meaning over the structured fields.

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

Purpose5/5

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

States a specific verb and resource: 'An agent searches X live and answers what practitioners are saying about a topic right now.' It names the differentiators (per-claim citations, engagement evidence) that distinguish it from siblings like current_pulse, news_search, or web_search.

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

Usage Guidelines4/5

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

Gives clear context for use: 'Slow (about 60 seconds) and the dearest search: ask one sharp question,' which implicitly steers agents toward economical, targeted queries. It stops short of naming a cheaper alternative sibling (e.g. current_pulse, web_search), so the when-not-to-use routing is inferred rather than explicit.

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. 1 tool update
    • Changedposts_list7 fields changed
      • addedInput schema / properties / connectionId
        Added value: +{
        +  "description": "With sort views: one connected account (connections_list).",
        +  "type": "string"
        +}
      • addedInput schema / properties / fresh
        Added value: +{
        +  "description": "Re-read stale numbers from the platforms before answering.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "How many posts, 1-200. Default 50.",
        +  "type": "number"
        +}
      • addedInput schema / properties / minViews
        Added value: +{
        +  "description": "With sort views: keep posts with at least this many views.",
        +  "type": "number"
        +}
      • addedInput schema / properties / platform
        Added value: +{
        +  "description": "With sort views: one platform (platforms_list ids).",
        +  "type": "string"
        +}
      • addedInput schema / properties / since
        Added value: +{
        +  "description": "With sort views: keep posts published at or after this ISO time.",
        +  "type": "string"
        +}
      • addedInput schema / properties / sort
        Added value: +{
        +  "description": "recent (default) or views: published posts, most viewed first.",
        +  "enum": [
        +    "recent",
        +    "views"
        +  ],
        +  "type": "string"
        +}
  2. 33 tool updates
    • Addedbrand_mark
    • Addedcaption_file
    • Addedcapture_tweet
    • Addedcommunity_hot
    • Addedconcept_search
    • Addedcurrent_pulse
    • Addeddemo_page
    • Addededit_footage
    • Addedfetch_asset
    • Addedfind_evidence
    • Addedfind_face
    • Addedfind_footage
    • Addedfind_photo
    • Addedgenerate_footage
    • Addedgenerate_image
    • Addedinspect_page_style
    • Addedlinkedin_org_lookup
    • Addedlist_page_assets
    • Addednews_search
    • Addedplan_music
    • Addedprobe_media
    • Addedread_page
    • Addedrecord_page
    • Addedreference_read
    • Addedreference_search
    • Addedrelated_trends
    • Addedrender_carousel
    • Addedrender_thumbnail
    • Addedscreenshot_page
    • Addedspeak
    • Removedtools_run
    • Addedweb_search
    • Addedx_pulse
  3. 6 tool updates
    • Addedbrain_onboarding
    • Addedcapabilities_list
    • Addedcapabilities_want
    • Addedconnections_link
    • Addedtools_list
    • Addedtools_run
  4. 26 tool updates
    • Changedagents_list1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "strategies": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "autoPublishPosts": {
        +            "type": "boolean"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "monthlyCapCents": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "planDays": {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          "planHours": {
        +            "items": {
        +              "type": "number"
        +            },
        +            "type": "array"
        +          },
        +          "prompt": {
        +            "type": "string"
        +          },
        +          "spentThisMonthCents": {
        +            "type": "number"
        +          },
        +          "status": {
        +            "type": "string"
        +          },
        +          "timezone": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "strategies"
        +  ],
        +  "type": "object"
        +}
    • Changedagents_save1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "strategy": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "autoPublishPosts": {
        +          "type": "boolean"
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "monthlyCapCents": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "planDays": {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "planHours": {
        +          "items": {
        +            "type": "number"
        +          },
        +          "type": "array"
        +        },
        +        "prompt": {
        +          "type": "string"
        +        },
        +        "spentThisMonthCents": {
        +          "type": "number"
        +        },
        +        "status": {
        +          "type": "string"
        +        },
        +        "timezone": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "strategy"
        +  ],
        +  "type": "object"
        +}
    • Changedagents_wake1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "conversationId": {
        +      "type": "string"
        +    },
        +    "runId": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "runId",
        +    "conversationId",
        +    "url"
        +  ],
        +  "type": "object"
        +}
    • Changedassets_list1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "generated": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "contentType": {
        +            "type": "string"
        +          },
        +          "mediaKey": {
        +            "type": "string"
        +          },
        +          "sizeBytes": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "mediaKey",
        +          "sizeBytes",
        +          "contentType"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "uploads": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "contentType": {
        +            "type": "string"
        +          },
        +          "filename": {
        +            "type": "string"
        +          },
        +          "mediaKey": {
        +            "type": "string"
        +          },
        +          "sizeBytes": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "mediaKey",
        +          "sizeBytes",
        +          "contentType",
        +          "filename"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "generated",
        +    "uploads"
        +  ],
        +  "type": "object"
        +}
    • Changedbrain_read1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "content": {
        +      "type": "string"
        +    },
        +    "path": {
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "path",
        +    "content",
        +    "updatedAt"
        +  ],
        +  "type": "object"
        +}
    • Changedbrain_tree1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "completion": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "missingSections": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "percent": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "percent",
        +        "missingSections"
        +      ],
        +      "type": "object"
        +    },
        +    "files": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "path": {
        +            "type": "string"
        +          },
        +          "sizeBytes": {
        +            "type": "number"
        +          },
        +          "updatedAt": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "path",
        +          "sizeBytes",
        +          "updatedAt"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "files",
        +    "completion"
        +  ],
        +  "type": "object"
        +}
    • Changedbrain_write1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "content": {
        +      "type": "string"
        +    },
        +    "path": {
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "path",
        +    "content",
        +    "updatedAt"
        +  ],
        +  "type": "object"
        +}
    • Changedcharacters_list1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "characters": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "bio": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "faceLocked": {
        +            "type": "boolean"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "isUser": {
        +            "type": "boolean"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "styleLocked": {
        +            "type": "boolean"
        +          },
        +          "voiceDescription": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "voiceId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "voiceKind": {
        +            "enum": [
        +              "cloned",
        +              "designed",
        +              "preset",
        +              null
        +            ]
        +          },
        +          "voiceLocked": {
        +            "type": "boolean"
        +          },
        +          "voicePreviewMediaKey": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "voiceProvider": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "slug",
        +          "name",
        +          "voiceKind"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "characters"
        +  ],
        +  "type": "object"
        +}
    • Changedcharacters_voice1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "character": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "bio": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "faceLocked": {
        +          "type": "boolean"
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "isUser": {
        +          "type": "boolean"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "slug": {
        +          "type": "string"
        +        },
        +        "styleLocked": {
        +          "type": "boolean"
        +        },
        +        "voiceDescription": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "voiceId": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "voiceLocked": {
        +          "type": "boolean"
        +        },
        +        "voicePreviewMediaKey": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "voiceProvider": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "id"
        +      ],
        +      "type": "object"
        +    },
        +    "costUsd": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "character"
        +  ],
        +  "type": "object"
        +}
    • Changedconnections_list1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "connections": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "avatarUrl": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "displayName": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "followers": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "handle": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "mode": {
        +            "type": "string"
        +          },
        +          "platform": {
        +            "type": "string"
        +          },
        +          "status": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "platform"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "connections"
        +  ],
        +  "type": "object"
        +}
    • Changedjobs_brief1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "artifacts": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          },
        +          "mediaType": {
        +            "type": "string"
        +          },
        +          "text": {
        +            "type": "string"
        +          },
        +          "type": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "type"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "createdAt": {
        +      "type": "string"
        +    },
        +    "createdBy": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "live": {
        +      "type": "boolean"
        +    },
        +    "messages": {
        +      "items": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": true,
        +            "properties": {
        +              "id": {
        +                "type": "string"
        +              },
        +              "role": {
        +                "type": "string"
        +              },
        +              "text": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "role",
        +              "text"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "additionalProperties": true,
        +            "properties": {
        +              "omitted": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "omitted"
        +            ],
        +            "type": "object"
        +          }
        +        ]
        +      },
        +      "type": "array"
        +    },
        +    "outputs": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "posts": {
        +          "additionalProperties": {
        +            "type": "number"
        +          },
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "posts"
        +      ],
        +      "type": "object"
        +    },
        +    "status": {
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "title",
        +    "url",
        +    "status",
        +    "live",
        +    "createdBy",
        +    "createdAt",
        +    "updatedAt",
        +    "messages",
        +    "artifacts",
        +    "outputs"
        +  ],
        +  "type": "object"
        +}
    • Changedjobs_continue1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "id": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "status"
        +  ],
        +  "type": "object"
        +}
    • Changedjobs_create1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "id": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "title",
        +    "status",
        +    "url"
        +  ],
        +  "type": "object"
        +}
    • Changedjobs_get1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "job": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "activeRunAt": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "createdAt": {
        +          "type": "string"
        +        },
        +        "createdBy": {
        +          "type": "string"
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "live": {
        +          "type": "boolean"
        +        },
        +        "messages": {
        +          "items": {
        +            "additionalProperties": true,
        +            "properties": {
        +              "artifacts": {
        +                "items": {
        +                  "additionalProperties": true,
        +                  "properties": {
        +                    "id": {
        +                      "type": "string"
        +                    },
        +                    "mediaType": {
        +                      "type": "string"
        +                    },
        +                    "text": {
        +                      "type": "string"
        +                    },
        +                    "type": {
        +                      "type": "string"
        +                    },
        +                    "url": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "id",
        +                    "type"
        +                  ],
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "blocks": {
        +                "items": {
        +                  "additionalProperties": true,
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "id": {
        +                "type": "string"
        +              },
        +              "parts": {
        +                "items": {
        +                  "additionalProperties": true,
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "role": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "role",
        +              "parts",
        +              "blocks",
        +              "artifacts"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "outputs": {
        +          "additionalProperties": true,
        +          "properties": {
        +            "media": {
        +              "items": {
        +                "additionalProperties": true,
        +                "properties": {
        +                  "id": {
        +                    "type": "string"
        +                  },
        +                  "type": {
        +                    "type": "string"
        +                  },
        +                  "url": {
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "id",
        +                  "type",
        +                  "url"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "posts": {
        +              "items": {
        +                "additionalProperties": true,
        +                "properties": {
        +                  "id": {
        +                    "type": "string"
        +                  },
        +                  "mediaType": {
        +                    "type": "string"
        +                  },
        +                  "text": {
        +                    "type": "string"
        +                  },
        +                  "type": {
        +                    "type": "string"
        +                  },
        +                  "url": {
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "id",
        +                  "type"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "posts",
        +            "media"
        +          ],
        +          "type": "object"
        +        },
        +        "status": {
        +          "type": "string"
        +        },
        +        "strategyId": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "title": {
        +          "type": "string"
        +        },
        +        "updatedAt": {
        +          "type": "string"
        +        },
        +        "url": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "title",
        +        "status",
        +        "url",
        +        "live",
        +        "messages",
        +        "outputs"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "job"
        +  ],
        +  "type": "object"
        +}
    • Changedjobs_list1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "jobs": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "activeRunAt": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "createdAt": {
        +            "type": "string"
        +          },
        +          "createdBy": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "status": {
        +            "type": "string"
        +          },
        +          "strategyId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "updatedAt": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "status",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "nextCursor": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "jobs",
        +    "nextCursor"
        +  ],
        +  "type": "object"
        +}
    • Changedjobs_run1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "id": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "status"
        +  ],
        +  "type": "object"
        +}
    • Changedjobs_stop1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "stopped": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "stopped"
        +  ],
        +  "type": "object"
        +}
    • Changedjobs_tail1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "properties": {
        +        "cursor": {
        +          "type": "number"
        +        },
        +        "events": {
        +          "items": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "live": {
        +          "const": true
        +        }
        +      },
        +      "required": [
        +        "live",
        +        "events"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "additionalProperties": true,
        +      "properties": {
        +        "hint": {
        +          "type": "string"
        +        },
        +        "live": {
        +          "const": false
        +        }
        +      },
        +      "required": [
        +        "live",
        +        "hint"
        +      ],
        +      "type": "object"
        +    }
        +  ],
        +  "type": "object"
        +}
    • Changedme1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "accountId": {
        +      "type": "string"
        +    },
        +    "balanceUsd": {
        +      "type": "number"
        +    },
        +    "engineLive": {
        +      "type": "boolean"
        +    },
        +    "entitled": {
        +      "type": "boolean"
        +    },
        +    "plan": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": true,
        +          "properties": {
        +            "name": {
        +              "type": "string"
        +            },
        +            "priceUsd": {
        +              "type": "number"
        +            },
        +            "renewsAt": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "status": {
        +              "type": "string"
        +            },
        +            "tier": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "tier",
        +            "name",
        +            "priceUsd",
        +            "status",
        +            "renewsAt"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "user": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": true,
        +          "properties": {
        +            "email": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "pictureUrl": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "required": [
        +            "email"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "required": [
        +    "user",
        +    "entitled",
        +    "balanceUsd"
        +  ],
        +  "type": "object"
        +}
    • Changedplatforms_list1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "platforms": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "connectPath": {
        +            "type": "string"
        +          },
        +          "firstComment": {
        +            "additionalProperties": true,
        +            "properties": {
        +              "maxChars": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "supported": {
        +                "type": "boolean"
        +              }
        +            },
        +            "required": [
        +              "supported",
        +              "maxChars"
        +            ],
        +            "type": "object"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "live": {
        +            "type": "boolean"
        +          },
        +          "media": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "oauth": {
        +            "type": "boolean"
        +          },
        +          "settingsSchema": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "text": {
        +            "additionalProperties": true,
        +            "properties": {
        +              "maxChars": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "maxChars"
        +            ],
        +            "type": "object"
        +          },
        +          "titleRequired": {
        +            "type": "boolean"
        +          },
        +          "waitingOn": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "label",
        +          "oauth",
        +          "live",
        +          "waitingOn",
        +          "text",
        +          "media",
        +          "titleRequired",
        +          "firstComment",
        +          "settingsSchema",
        +          "connectPath"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "platforms"
        +  ],
        +  "type": "object"
        +}
    • Changedposts_approve1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "properties": {
        +        "connectionId": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "scheduledAt": {
        +          "type": "string"
        +        },
        +        "status": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "status",
        +        "scheduledAt",
        +        "connectionId"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "additionalProperties": true,
        +      "properties": {
        +        "resolved": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "resolved"
        +      ],
        +      "type": "object"
        +    }
        +  ],
        +  "type": "object"
        +}
    • Changedposts_create1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "error": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "handoffNote": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "publishedLocation": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "scheduledAt": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "status",
        +    "url"
        +  ],
        +  "type": "object"
        +}
    • Changedposts_dismiss2 fields changed
      • addedInput schema / properties / reason
        Added value: +{
        +  "description": "Why the user skipped them, if they said.",
        +  "enum": [
        +    "off-voice",
        +    "wrong-topic",
        +    "weak",
        +    "not-now"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "resolved": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "resolved"
        +  ],
        +  "type": "object"
        +}
    • Changedposts_get1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "post": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "connectionId": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "error": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "handoffNote": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "mediaKeys": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "platform": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "postText": {
        +          "type": "string"
        +        },
        +        "publishedLocation": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "scheduledAt": {
        +          "type": "string"
        +        },
        +        "status": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "status"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "post"
        +  ],
        +  "type": "object"
        +}
    • Changedposts_list1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "posts": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "connectionId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "error": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "handoffNote": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "mediaKeys": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "platform": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "postText": {
        +            "type": "string"
        +          },
        +          "publishedLocation": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "scheduledAt": {
        +            "type": "string"
        +          },
        +          "status": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "posts"
        +  ],
        +  "type": "object"
        +}
    • Changedposts_publish1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "error": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "handoffNote": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "publishedLocation": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "status"
        +  ],
        +  "type": "object"
        +}
  5. 26 tool updates
    • First observedagents_list
    • First observedagents_save
    • First observedagents_wake
    • First observedassets_list
    • First observedbrain_read
    • First observedbrain_tree
    • First observedbrain_write
    • First observedcharacters_list
    • First observedcharacters_voice
    • First observedconnections_list
    • First observedjobs_brief
    • First observedjobs_continue
    • First observedjobs_create
    • First observedjobs_get
    • First observedjobs_list
    • First observedjobs_run
    • First observedjobs_stop
    • First observedjobs_tail
    • First observedme
    • First observedplatforms_list
    • First observedposts_approve
    • First observedposts_create
    • First observedposts_dismiss
    • First observedposts_get
    • First observedposts_list
    • First observedposts_publish

Publisher details

Operator
ShapelessAI · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Not available
Restrictions
Not applicable

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Social media scheduling and publishing for AI agents. 17 validation-first tools to post to X, LinkedIn, Instagram, TikTok, YouTube, Reddit, Discord, Telegram, and more through one connected workspace.
    111 npm
    96
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Lets any AI agent post to TikTok, Instagram, YouTube, X, LinkedIn, Bluesky, Telegram, Mastodon and Discord through a single post_to_social tool. Connect an account once, then publish everywhere.
    2
    43 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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
  • A
    license
    A
    quality
    D
    maintenance
    AI-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.
    6
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.