Pizza Developer
Server Details
Coding agents are fast, but they forget the plan when a session ends. Pizza Developer keeps it for them.
You write down Ideas. Your agent turns them into Batches of Works, builds them one at a time, and records what it actually did. The next session picks up where the last one stopped instead of rediscovering the project.
You stay in charge of how the work happens. Instructions tell the agent how you want things built. Workflows set the route each kind of request takes. Rules refuse a write that breaks them. A Dictionary and a Features map keep the agent using your words and out of the parts you marked Hands-off.
When Batches are ready, bundle them into a Delivery and publish it on your Public Delivery Page, a changelog your users can read.
- Status
- Healthy
- Uptime
- 72.8% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 64 tools
Most tools target a clearly distinct entity+action pair, and descriptions actively cross-reference each other (e.g. archive vs delete_* vs decline_idea/restore_idea for ideas, update_workflow vs start/resume/cancel_workflow). A few boundaries require careful reading: the polymorphic get/archive/unarchive/reorder tools overlap conceptually with per-entity list/update/delete tools, and get(kind=project) vs get_project_state must be distinguished by prose alone. Overall an agent can reliably pick the right tool, but not effortlessly at this density.
The surface is overwhelmingly consistent snake_case verb_noun (create_idea, update_work, delete_delivery, list_rulesets, start_workflow, begin_work). Deviations are the four polymorphic bare-verb tools (get, archive, unarchive, reorder), which is a deliberate kind-parameterized pattern rather than chaos. No camelCase/snake_case mixing.
At ~64 tools this is far above a comfortable surface, though the domain is genuinely broad (projects, ideas, batches, works, deliveries, workflows, rulesets/rules, instructions, info, dictionary, features) with full CRUD each, so most tools earn their place. The count is inflated by a per-entity create/update/delete convention while read/mutate operations are consolidated polymorphically, so a more uniform design could shrink it substantially. Heavy but not gratuitous.
Coverage is deep: create/read/update/delete/archive across nearly every entity, plus workflow run lifecycle (start, resume, cancel, step reporting), rules/rulesets, feature tree mutation, delivery presentations, handoff notes, and ordering. Minor gaps exist (no dedicated delete/cancel of a workflow run record, features are created only via update_features, works are listed via search_works rather than a list_works), but these are workable.
Available Tools
64 toolsarchiveArchive recordAIdempotentInspect
Archive one record by kind and id. It leaves its active list and keeps its content; unarchive brings it back.
project: hidden from the default dashboard view but still reachable (list_projects and search still find it).
idea: for a completed idea; it leaves the active planning order and stays available through list_ideas with state archived.
delivery: keeps its record and batches but leaves the Deliveries page, the Public Delivery Page, and the showcase; readable through list_deliveries with archived=true.
dictionary_term: leaves the active dictionary; readable through list_dictionary_terms with archived=true. Only archived terms can be deleted.
info: leaves the active list and get_project_state; keeps its text and revision history. Only archived pages can be deleted.
instruction: leaves the active list and the listed instruction resources; keeps its content and revision history. Only archived instructions can be deleted. During an active workflow run, accepted only in its self-improvement stage.
workflow: for a workflow the vibe coder no longer uses; it stops being offered for new runs, an open run of it continues, and its history stays.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the record. | |
| kind | Yes | Kind of record to archive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which only say non-readOnly, non-destructive, idempotent, open-world) by disclosing per-kind side effects: what surfaces the record disappears from, what content/revision history survives, and that an in-flight workflow run continues while new runs are blocked. The reversible-via-unarchive behavior is consistent with destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with a one-sentence summary and the reversibility guarantee before the per-kind bullets. The length is justified because archiving genuinely differs per kind, though seven bullets is a lot to absorb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, it covers reversibility, retained content, and visibility changes for every supported kind. It omits error/permission cases (e.g. what happens if the id does not exist or the record is already archived) and does not describe the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by unpacking each of the seven kind enum values into concrete per-kind behavior. The id parameter is covered only generically, keeping this from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (archive) and resource (one record, keyed by kind and id), plus the core behavioral promise: it leaves the active list but keeps its content, and unarchive reverses it. This clearly separates it from the delete_* siblings and from unarchive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Strong implied guidance: archiving is the reversible alternative to deletion, and multiple bullets note that 'only archived X can be deleted', which tells the agent archive is a prerequisite step. It lacks an explicit when-not-to-use or direct naming of the delete siblings, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
begin_workBegin workAInspect
Begin repository implementation in one boundary call. Pass workId to claim that Work, or projectId to resume the active Work or claim the next ordered one. Each open workflow run builds its own Batch; pass runId to work in a specific run when several are open. If nothing is developing there, the next planned batch is started automatically when it contains implementable work. Returns the Work brief and the project's own instruction documents that apply to it.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | Workflow run to work in, when several are open. | |
| workId | No | Work to claim. | |
| projectId | No | Project whose active or next Work to begin. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=false and destructiveHint=false, and the description adds real behavioral detail beyond them: it claims/consumes Work, may auto-start the next planned batch, and returns the Work brief plus the project's own instruction documents. The disclosed implicit side effect (automatic batch start) is the kind of trait annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the core action before the claiming/run details. Some jargon ('boundary call', 'developing there', 'implementable work') is slightly opaque but overall efficient with little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and all parameters described, the description covers invocation paths and even what is returned (brief + instruction documents). It does not mention permissions/auth requirements or failure behavior, a minor gap given the annotations already cover the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3), but the description adds meaning beyond the schema field blurbs: projectId specifically resumes the active Work or claims the next ordered one, and runId only matters when several runs are open. This relationship logic is not present in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Begin repository implementation' by claiming, resuming, или kicking off a Work/Batch. The mechanics (claim by workId, resume/claim-next by projectId) distinguish it clearly from siblings like create_work, get_work, and finish_work, though it never names an alternative tool explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains request intent well: pass workId to claim, projectId to resume/claim the next ordered Work, runId when multiple runs are open. This tells the agent when each path applies. It lacks explicit 'use X instead' routing against siblings such as get_work or resume_workflow, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_workflowCancel workflow runADestructiveInspect
Cancel an open workflow run without deleting its recorded route or measurements. A truthful reason is required.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Id of the Workflow run. | |
| reason | Yes | Truthful reason for cancelling the run. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the destructive profile (destructiveHint=true, readOnlyHint=false), so the bar is lower; the description still adds real value by scoping what is NOT destroyed (recorded route and measurements survive) and what the caller must supply (a truthful reason). It stops short of saying whether cancellation is reversible or who may cancel.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler, and the key differentiator (preservation of route/measurements) is front-loaded before the input requirement. Nothing could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no output schema and full annotation coverage, the description supplies the essential contract: what gets cancelled, what survives, and that a reason is mandatory. It omits post-cancellation state and any permission requirement, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with only two parameters, so the schema already documents runId and reason fully. The description only echoes the reason requirement with added emphasis on truthfulness, adding little beyond the structured fields; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Cancel) and resource (workflow run) with an explicit scope qualifier: only an open run, and the route/measurements are preserved. That implicitly separates it from delete_workflow and resume_workflow, though no sibling is named outright, so it falls just short of the top band.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'open workflow run' implies the precondition that the run must still be in progress, and 'A truthful reason is required' signals a mandatory input. But there is no explicit when-to-use vs. when-not guidance and no pointer to delete_workflow for permanent removal, so usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_rulesCheck rulesARead-onlyInspect
Check a draft against the rulesets on the current step of an open workflow run, without saving it and without refusing. Rules are checked by TypeSafe, a separate provider: a check sends it the draft record, the text of each Rule, and the project context a Rule refers to, such as Dictionary terms, Features, and declined Ideas, and never the account name, email address, or identifier. Rules run only inside workflow runs: runId names the run, and record.kind picks idea, batch, work, or delivery, which must be the kind of write that step's connection checks. Pass a record's id to start from the saved record; any fields you pass override the saved values. Batch rules check the plan, so a saved Batch can be rechecked only until one of its Works is done. Returns passed and failed rules, each with its probability (a rule passes at 0.75 or above), any rules that could not be checked with the reason, and how many rules were sent to TypeSafe (sentToTypeSafe) or answered from saved verdicts (fromSavedVerdicts). Unchanged records reuse earlier verdicts.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Id of the Workflow run. | |
| record | Yes | Draft to check; kind is idea, batch, work, or delivery. | |
| projectId | Yes | Id of the Project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations: it discloses that checking is done by TypeSafe, exactly what data is transmitted and what is explicitly never sent (account name, email, identifier), the 0.75 pass threshold, and that unchanged records reuse earlier verdicts. This is unusually rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and dense with useful detail; every sentence (privacy disclosure, kind constraint, id override, return values, saved-verdict reuse) earns its place. It is a single long paragraph that would read better with structure, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of the return shape and does so: passed/failed rules with probability, unchecked rules with reasons, and the sentToTypeSafe/fromSavedVerdicts counts. Combined with the workflow and kind constraints, an agent has what it needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3), but the description adds real semantics: record.kind must match the kind of write checked by that step's connection, and passing a record id starts from the saved record while any supplied fields override it. That clarifies the id-vs-fields interaction the schema does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check a draft against the rulesets') and immediately scopes it ('on the current step of an open workflow run, without saving it and without refusing'). This clearly distinguishes it from write siblings like update_rule, create_rule, or list_rulesets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong conditions: rules run only inside workflow runs, runId names the run, and record.kind must match the kind the step's connection checks. It also notes batch recheck limits ('only until one of its Works is done'). It stops short of naming an explicit alternative for a non-workflow check, but the 'without saving' framing effectively separates it from update tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_batch_planPlan batchAInspect
Create a planned batch and its planned works in one call. This is the normal way to plan a batch once its scope is agreed. The batch name is 1 to 3 lowercase words joined by single hyphens, like dark-mode-toggle. The batch takes the next sequential number and queue position; works start planned in the order given, and the result carries each work's batch-scoped reference (like 4-1), ready for commit messages. create_work adds a Work to an existing Batch. When several workflow runs wait for a Batch, pass runId to plan it for that run. In a workflow run, this completes the planning step (and an open Evaluate-the-idea step), and edgeId can name the Batch stage route so no separate resume_workflow call is needed.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Batch name: 1 to 3 lowercase words joined by single hyphens. | |
| runId | No | Workflow run this plan belongs to. | |
| works | Yes | Planned Works in order. | |
| edgeId | No | Id of the Workflow connection to take. | |
| metrics | No | Optional client measurements, stored on the workflow step this call completes. | |
| projectId | Yes | Id of the Project. | |
| requestId | No | Optional unique ID for this create. After a timeout, retry with the same requestId and arguments: the record already created is returned instead of a duplicate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations give the safety profile (readOnly=false, destructive=false, openWorld=false), and the description adds real behavioral detail: the batch takes the next sequential number and queue position, works start planned in the order given, the result carries batch-scoped references like `4-1`, and the call can complete a workflow planning step. It doesn't disclose retry/idempotency behavior in prose, but requestId is covered in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose leads, followed by naming rules, resulting behavior, and workflow interactions, so it is well front-loaded. It is dense and the final sentence packs multiple workflow conditions, but each sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description explains what the call returns (batch-scoped work references ready for commit messages), the numbering/queue side effects, and the workflow-step and edgeId interactions. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: edgeId 'can name the Batch stage route so no separate resume_workflow call is needed' and works are created 'in the order given' with resulting batch-scoped refs. The name format is restated from the schema pattern rather than extended, so it is not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a planned batch and its planned works in one call') and immediately distinguishes itself from the sibling create_work, which the description says adds a Work to an existing Batch. An agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames this as 'the normal way to plan a batch once its scope is agreed' and names the alternative (create_work) with its distinct use case. It adds conditional guidance for runId when multiple runs wait on a Batch and for edgeId to avoid a separate resume_workflow call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_deliveryCreate deliveryAInspect
Create a shipped public delivery from selected undelivered batches: batches no other delivery carries, including ready Batches of several finished workflow runs. Supply its name (a free-form label; a release number like 2.4.0 is common but not required) and a factual summary. To record a release that shipped before the project used Pizza Developer, omit batchIds and pass shippedAt, the real past ship date (ISO date or date-time); without shippedAt it ships now. A delivery without batches never completes a workflow run's Delivery stage. In a run of a workflow that starts at Delivery, any ready Batches no delivery carries can go in, and the call completes the run's Delivery stage. When the project has a workflow that starts at Delivery, create_delivery outside a workflow run is refused and the refusal names that workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Delivery name, a free-form label such as 2.4.0. | |
| metrics | No | Optional client measurements, stored on the workflow step this call completes. | |
| summary | Yes | Factual summary of what shipped. | |
| batchIds | No | Undelivered Batches to include. | |
| projectId | Yes | Id of the Project. | |
| requestId | No | Optional unique ID for this create. After a timeout, retry with the same requestId and arguments: the record already created is returned instead of a duplicate. | |
| shippedAt | No | Ship date, as an ISO date or date-time. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark it as a non-destructive, open-world write, and the description goes well beyond that: it explains workflow-stage completion semantics ('completes the run's Delivery stage'), that a batch-less delivery never completes that stage, the refusal behavior, and the backfill mode. It doesn't cover post-creation visibility/permissions of the public page, but the mutation semantics are richly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and each sentence carries a distinct rule (backfill, default ship-now, stage completion, refusal). It is dense with long, clause-heavy sentences that could be split for readability, but little is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex seven-parameter mutation with nested metrics and no output schema, the description supplies the conditional behaviors that determine correctness: stage-completion coupling with workflows, the refusal case, and backfill semantics. Nothing essential to a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: name is a free-form label (release number common but optional), summary must be factual, and critically the shippedAt/batchIds interaction (omit batchIds + pass real past shippedAt for pre-toolship releases). metrics and requestId are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+scope: 'Create a shipped public delivery from selected undelivered batches.' It is immediately distinguishable from siblings like update_delivery, delete_delivery, create_batch_plan, and start_workflow, and clarifies that batches must be undelivered and unclaimed by another delivery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names explicit modes and exclusions: normal creation from batchIds, the historical-backfill path (omit batchIds and pass shippedAt), the default 'ships now' behavior, and the refusal condition when the project has a Delivery-starting workflow and the call is made outside a run. An agent can pick the right invocation path without inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_dictionary_termCreate dictionary termAInspect
Create a project-scoped dictionary term: a word, its aliases, and its definition.
| Name | Required | Description | Default |
|---|---|---|---|
| word | Yes | The Dictionary word. | |
| aliases | No | Other words that mean the same. | |
| projectId | Yes | Id of the Project. | |
| requestId | No | Optional unique ID for this create. After a timeout, retry with the same requestId and arguments: the record already created is returned instead of a duplicate. | |
| definition | Yes | The approved meaning of the word, with no tables. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the useful scope qualifier 'project-scoped' but says nothing about duplicate-word behavior, conflict handling, or the idempotent-retry behavior (that detail is carried entirely by the schema's requestId).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the verb and scope front-loaded and no filler. The trailing field list ('a word, its aliases, and its definition') largely restates the schema properties, which slightly dilutes the value of the sentence but costs little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter create tool with full schema coverage, annotations, and no output schema, the definition is nearly sufficient. The remaining gap is behavioral: uniqueness/conflict semantics for the dictionary term are not stated anywhere an agent would look before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so word, aliases, definition, projectId and requestId are all documented in the schema itself. The description echoes three of the five field names without adding format, constraint, or interaction detail beyond what the schema already states, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (Create), a specific resource (dictionary term), its scope (project-scoped), and the payload fields it carries (word, aliases, definition). An agent can tell it apart from update_dictionary_term, but the description does not distinguish it from the many other create_* siblings (create_rule, create_info), relying on the resource name alone to do that work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers it should call this when it needs a new project glossary term. There is no explicit when-to-use statement, no mention of the update_dictionary_term alternative, and no note about preconditions such as whether the word must be unique within the project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ideaCreate ideaAInspect
Create a project idea with a required short name of at most 20 characters. Summary and content are optional and are never generated. Impact is semantic product scope, not priority. A new idea joins at the back of the order; move it forward with reorder. A name matching a declined idea is refused.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Short name, at most 20 characters. | |
| impact | No | Product scope of the Idea: minor or major. | |
| content | No | Full detail, with lists instead of tables. | |
| summary | No | Short summary. | |
| projectId | Yes | Id of the Project. | |
| requestId | No | Optional unique ID for this create. After a timeout, retry with the same requestId and arguments: the record already created is returned instead of a duplicate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (not readOnly, not destructive, closed-world), so the description only needs to add context. It does: newly created ideas land at the back of the ordering, and a title colliding with a declined idea is rejected. Auth requirements and side effects on existing ideas are unstated, keeping it at 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences with the core action and constraint front-loaded and no filler. Minor redundancy in restating the 20-character title limit already in the schema keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries more of the burden, and it does not state what is returned on success. It otherwise covers constraints, optionality, ordering behavior, and a failure case adequately for a 6-parameter create tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description goes beyond the schema by clarifying that impact is product scope rather than priority, and that summary/content are optional and never auto-generated — real semantic additions the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a project idea') and adds distinguishing behavior — declined-name refusal and back-of-order placement — that separates it from update_idea/get_idea. It does not explicitly contrast with the update/restore siblings, so it falls short of a full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides one routing hint ('move it forward with reorder') and one precondition ('A name matching a declined idea is refused'), which is useful context. However there is no explicit when-to-use guidance versus update_idea or restore_idea, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_infoCreate Info pageAInspect
Create an Info page: a titled page of facts about the project that are not rules or features, such as where it is listed, how its marketing is done, or which outside accounts it depends on. Titles are unique within the project. Write only what is true now, and keep the page current with update_info. Info is never attached to a workflow connection and can change at any stage of a run. Rules for how to work belong in an instruction instead.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Info page title, unique in the Project. | |
| content | No | Full text of the page, with lists instead of tables. | |
| summary | No | One line saying what the page holds. | |
| projectId | Yes | Id of the Project. | |
| requestId | No | Optional unique ID for this create. After a timeout, retry with the same requestId and arguments: the record already created is returned instead of a duplicate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply the generic readOnlyHint=false / destructiveHint=false / openWorldHint=false profile, so the description must add real behavior and it does: titles are unique within the project, Info is never attached to a workflow connection, and it can change at any stage of a run. It omits what happens on a duplicate title and any permission requirements, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, then the disambiguation sentence. It is slightly long and the 'such as where it is listed, how its marketing is done...' list is illustrative filler, but each sentence carries a distinct constraint (uniqueness, currency, lifecycle, instruction redirect).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter create tool with no output schema and only generic annotations, the description covers what the resource is, uniqueness, lifecycle, and the sibling boundary. The remaining gap is the failure mode for a duplicate title and what the create returns, which the agent would have to discover empirically.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (including requestId's idempotent-retry semantics and the unique-title constraint) are already documented in the schema. The description reinforces uniqueness for title but adds no format, syntax, or validation detail beyond that baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (Info page) and then defines the resource by example: 'a titled page of facts about the project that are not rules or features'. It also carves out the boundary against the sibling concept, telling the agent that rules for how to work belong in an instruction, so create_instruction vs create_info is separable without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use (facts about listing, marketing, outside accounts) and an explicit redirect for the adjacent case ('Rules for how to work belong in an instruction instead'). It also names update_info for keeping the page current. It stops short of stating exclusions like when an idea, rule, or feature should be created instead, so it is 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.
create_instructionCreate instructionAInspect
Create an instruction document on a project, freely titled (there is no fixed set), with its full text when known. Titles are unique within the project. During an active workflow run, instruction changes are accepted only in its self-improvement stage. Returns its id for update_instruction.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Instruction title, unique in the Project. | |
| content | No | Full Instruction text, with lists instead of tables. | |
| projectId | Yes | Id of the Project. | |
| requestId | No | Optional unique ID for this create. After a timeout, retry with the same requestId and arguments: the record already created is returned instead of a duplicate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-destructive write (readOnlyHint=false, destructiveHint=false, openWorldHint=false), and the description adds meaningful behavior beyond that: title uniqueness within the project, the workflow-stage gating rule, and the returned id. It does not say what happens on a duplicate title (error vs. merge) or whether the create is idempotent, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with the core action and followed by constraints and the return pointer. Little waste; each sentence carries distinct information, though the phrasing is slightly terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description compensates by stating what is returned (its id) and how it is used (for update_instruction). Combined with 100% schema coverage and explicit annotations, the definition is sufficient to call the tool correctly; only duplicate-title and idempotency behavior are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including the requestId retry semantics. The description only loosely restates title ("freely titled") and content ("full text when known") without adding format or constraint detail, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create an instruction document on a project") and adds a differentiator ("freely titled (there is no fixed set)") that separates it from structured-schema siblings like create_dictionary_term or create_rule. It does not name any sibling directly, but an agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides one real usage constraint — during an active workflow run, instruction changes are accepted only in its self-improvement stage — and points to the follow-up tool (update_instruction) via the returned id. It never states when to choose create_instruction over create_info or similar document-creating siblings, so guidance is partial and implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectCreate projectAInspect
Create a project from its details, with any Ideas the vibe coder supplied. Only the name is required; Ideas, Batches, Works, Deliveries, a Workflow, a repository, and a live URL can all be added later. Supplied Ideas keep their order, and up to the first two become planning input. Everything is validated before anything is written.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Project name. | |
| tags | No | Project tags. | |
| ideas | No | Ideas to create with the Project, in order. | |
| liveUrl | No | Live URL of the Project. | |
| repoUrl | No | Repository URL of the Project. | |
| requestId | No | Optional unique ID for this create. After a timeout, retry with the same requestId and arguments: the record already created is returned instead of a duplicate. | |
| description | No | What the Project is. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds non-obvious behavior: Ideas are order-preserving, only the first two become planning input, and 'everything is validated before anything is written' discloses atomic all-or-nothing semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and the required-vs-optional split. Dense with useful behavior and no filler, though the list of later-addable entities is slightly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with annotations covering safety and no output schema, the description covers required fields, optional additions, validation behavior and the special semantics of ideas. The requestId retry behavior is documented in the schema, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description goes beyond the terse schema descriptions by explaining that Ideas retain order and that up to the first two feed planning input, clarifying the semantic role of the ideas parameter rather than just restating it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a project') and clarifies that supplied Ideas come along, so the agent knows this is the project-creation entry point with optional nested ideas. It does not explicitly contrast with siblings like create_idea or create_work, but the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent only the name is required and that Ideas, Batches, Works, Deliveries, a Workflow, repo and live URL can be added later, which implies the minimal call. However it offers no explicit when-to-use-vs-alternative guidance (e.g. create this vs create_idea standalone).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ruleCreate ruleAInspect
Add a rule to the end of a ruleset: one narrow statement and level must (default) or should. Rules run only inside workflow runs, where the judge is given the connection's Dictionary and Features context and the run's Idea automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The Rule as one narrow statement. | |
| level | No | must refuses a failing write; should only reports it. | |
| requestId | No | Optional unique ID for this create. After a timeout, retry with the same requestId and arguments: the record already created is returned instead of a duplicate. | |
| rulesetId | Yes | Id of the Ruleset. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuine runtime context the annotations cannot convey: rules are evaluated only during workflow runs, and the judge receives the connection's Dictionary and Features plus the run's Idea. It stops short of describing validation failures, effect on in-flight runs, or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, purpose front-loaded before the runtime explanation. The second sentence is dense and slightly convoluted ('where the judge is given ... automatically') but every clause carries information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and four fully documented parameters, the description covers what is created, where it lands, its default severity, and when it is enforced. It could say more about failure behavior and whether new rules affect existing runs, but nothing essential for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description goes one step further by stating that 'must' is the default level, a fact the schema does not encode (the enum lists both values with no default). Its 'one narrow statement' phrasing duplicates the schema's wording for text, adding nothing there.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a rule') plus placement semantics ('to the end of a ruleset'), which cleanly separates it from update_rule, delete_rule, and create_ruleset. It also notes the default level, so an agent knows the shape of the created record without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies meaningful usage context ('Rules run only inside workflow runs') which tells the agent when rules actually take effect. However, it never routes the agent between alternatives (update_rule for edits, create_ruleset for containers) and gives no explicit when-not-to-use condition, so guidance remains implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_rulesetCreate rulesetAInspect
Create a ruleset with a name and optionally its rules. Write each rule as one narrow statement the record either meets or not. Rules run only inside workflow runs: a ruleset is checked when it is attached to a workflow connection (rulesetIds in update_workflow) and the write that completes that step happens.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Ruleset name. | |
| rules | No | Rules to create with the Ruleset, in order. | |
| projectId | Yes | Id of the Project. | |
| requestId | No | Optional unique ID for this create. After a timeout, retry with the same requestId and arguments: the record already created is returned instead of a duplicate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive, closed-world mutation. The description adds valuable behavioral context: rules run only inside workflow runs and are checked when a ruleset is attached to a workflow connection and the step's write occurs. It does not cover auth requirements, rate limits, or response behavior, but the workflow-trigger disclosure is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then adds two concise sentences of operational context. The final sentence is somewhat dense but still earns its place by explaining the workflow-run trigger.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a rich 100%-covered schema and clear annotations, the description is largely complete. It covers creation, rule phrasing, and workflow-run behavior; the absence of explicit return-value discussion is acceptable since no output schema exists, though mentioning the created ruleset would have improved completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already well documented in the schema. The description names projectId/requestId only indirectly and largely repeats the schema's explanation of rule text as a narrow statement, adding no major semantic detail beyond what structured fields provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb and resource: creating a ruleset with a name and optional rules. It distinguishes the tool from create_rule by focusing on a ruleset rather than a single rule, but does not explicitly name or contrast itself with siblings like create_rule or update_ruleset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when rules actually run (inside workflow runs, when attached via rulesetIds in update_workflow), which implies the tool's broader context. However, it does not give explicit guidance on when to call create_ruleset versus alternatives such as create_rule, update_ruleset, or update_workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_workCreate workAInspect
Create a Work in a Batch that is not ready. It always starts planned; begin_work starts it. In a workflow run, the Batch plan with the new Work is checked against the rulesets on the connection the run entered Batch on, until one of its Works is done; a Must rule that does not pass refuses the write.
| Name | Required | Description | Default |
|---|---|---|---|
| size | Yes | Work size. | |
| title | Yes | Work title. | |
| labels | No | Labels on the Work. | |
| batchId | Yes | Id of the Batch. | |
| projectId | Yes | Id of the Project. | |
| requestId | No | Optional unique ID for this create. After a timeout, retry with the same requestId and arguments: the record already created is returned instead of a duplicate. | |
| description | No | What changes and where. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-destructive write. The description adds substantial beyond-annotation detail: the created Work starts in 'planned' state, begin_work transitions it, and workflow-run ruleset validation can refuse the write. This is rich, actionable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficient and front-loaded: creation is stated first, then state lifecycle, then validation rules. Two sentences, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given annotations cover safety and schema covers parameters, the description completes the picture with lifecycle and validation context. It is sufficient for an agent to call correctly, though it could more explicitly route away from sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents all parameters thoroughly. The description does not add further parameter semantics beyond what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it creates a Work in a Batch, and adds useful nuance ('that is not ready', 'always starts planned'). However, it does not explicitly differentiate from the sibling begin_work or update_work beyond mentioning begin_work starts it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage by mentioning begin_work as the follow-up step, but does not explicitly state when to use create_work vs. alternatives like update_work or search_works. Usage context is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_workflowCreate workflowAInspect
Create a named workflow: a route of stages that requests in the project follow. name is unique in the project; description says which requests it handles. Nodes are Start, optional Idea, Batch, optional Delivery, optional Workflow (the step that improves the Workflow itself after a run), and Finish. Start can connect to an existing Batch without Idea, and Batch can connect to Workflow or Finish without Delivery. Start can also connect to Delivery, for a workflow that only creates or adds to a Delivery: Start to Delivery to Finish, or Start to Delivery to Workflow to Finish, with no Batch node. Each edge.data must contain instructionDocumentIds (existing project document IDs) and contextKinds (features and/or dictionary; each adds only a short outline, top-level feature names or dictionary words, that the agent expands with the read tools). edge.data may also carry rulesetIds, an ordered list of the project's ruleset IDs attached to that connection; leaving it out attaches none. Select documents on connections; do not create Instructions, Dictionary, or Features nodes or put text on lines. Projects work without a Workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Workflow name, unique in the Project. | |
| edges | Yes | Connections between stages, each with its Instructions, context kinds, and Rulesets. | |
| nodes | Yes | Workflow stages. | |
| projectId | Yes | Id of the Project. | |
| requestId | No | Optional unique ID for this create. After a timeout, retry with the same requestId and arguments: the record already created is returned instead of a duplicate. | |
| description | Yes | Which requests this Workflow handles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only tell the agent this is a non-read, non-destructive write. The description goes well beyond that, disclosing what gets created, the semantics of omitted fields ('leaving it out attaches none'), and how context is materialized ('each adds only a short outline... that the agent expands with the read tools'). This is rich behavioral context the annotations cannot supply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and organized from general concept to node kinds to edge rules. Dense but every sentence carries structural information; a few long compound sentences could be trimmed, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex graph-construction tool with no output schema, the description covers the valid stage topologies, required edge payloads, and prohibitions thoroughly. It does not describe the return value or idempotency behavior (left to the schema's requestId), but the calling contract is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description nonetheless adds semantic depth, explaining that edge.data must carry instructionDocumentIds and contextKinds, that rulesetIds is an ordered per-connection list, and that contextKinds only add outlines — meaning beyond the terse schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a named workflow') and immediately defines what a workflow is ('a route of stages that requests in the project follow'), so an agent understands the artifact rather than just the operation. The detail on node kinds and edge contents further distinguishes it from generic create_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides strong construction guidance ('do not create Instructions, Dictionary, or Features nodes', 'Select documents on connections') and notes that 'Projects work without a Workflow', implying optionality. However, it never states when to reach for this versus update_workflow/start_workflow or list_workflows, leaving the tool-selection decision implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decline_ideaDecline ideaADestructiveIdempotentInspect
Decline an idea the vibe coder decided against, with their reason in their own words. It leaves the planning order and is listed with declined ideas. Declining an already declined idea replaces its reason.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Idea. | |
| reason | Yes | The vibe coder's reason, in their own words. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true and idempotent=true, so the safety profile is covered. The description adds real state-transition detail beyond the annotations: the idea leaves the planning order, is listed among declined ideas, and a repeat decline overwrites the reason rather than failing. That is exactly the kind of context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and then the consequences. Each sentence contributes something (action, post-state, repeat behavior) with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only two well-documented parameters, the description covers what an agent needs: what the call does, what happens to the idea, and how repeats behave. It does not mention any return value or error condition, but nothing critical is missing for a small mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both id and reason are documented, including the max length and 'in their own words' phrasing), so the schema already carries the parameter meaning. The description's mention of the reason adds no syntax or format detail beyond it, making 3 the correct baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (decline) and resource (idea), and goes beyond the name by describing the resulting state: the idea leaves the planning order and appears with declined ideas. It does not explicitly contrast with delete_idea, archive_idea, or restore_idea, so the sibling boundary is only implied by the state-change description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives context for the action ('the vibe coder decided against') and notes that re-declining replaces the previous reason, which is useful behavioral guidance. However it never says when to prefer decline over delete_idea or archive_idea, leaving the agent to infer the choice from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_batchDelete batchADestructiveInspect
Delete a batch. Batches that still have works can't be deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Batch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds the blocking rule about batches containing works, which is useful context. It omits whether the deletion is permanent/reversible and what happens to dependent works or deliveries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, verb first, then the precondition. No filler, no restatement of the title, and every sentence carries a distinct fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive single-parameter delete with annotations covering safety, the description is nearly sufficient. The main gap is the absence of routing to revert_batch as the non-destructive alternative and any statement about permanence of the deletion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (id) with 100% schema description coverage, so the schema already documents it fully. The description adds no syntax, format, or constraint detail about the id beyond what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Delete a batch") with a clear precondition. It doesn't differentiate itself from the sibling revert_batch, which is a non-destructive alternative for batches, so sibling routing is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The precondition "Batches that still have works can't be deleted" is a real usage constraint that prevents wasted calls. However, there is no guidance on when to delete versus revert an existing batch, nor on whether the id must first be archived or in a particular state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_deliveryDelete deliveryADestructiveInspect
Delete a delivery. Its batches come out of it unassigned, ready to go into another one; they are not deleted. Its release presentation is deleted with it. Deleting a shipped delivery rewrites public history on the Public Delivery Page. confirmName must equal the delivery's exact name, the free-form label it was created with. archive with kind delivery hides a delivery and keeps it.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Delivery. | |
| confirmName | Yes | The Delivery's exact name, to confirm deletion. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds genuinely new behavioral detail beyond that: batches are unassigned (not deleted), the release presentation is deleted, and shipped deliveries rewrite public history. It also explains the confirmName safety mechanism and the idempotency-relevant archive alternative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the core action and its key side effect come first, followed by confirmation mechanics and the archive alternative. Every sentence carries information, though it packs several distinct facts into a single paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the mutation's consequences, the confirmName requirement, and the archive alternative. Missing an explicit statement about reversibility or permissions, but for a delete tool with full annotation coverage this is notably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds real value by clarifying that confirmName must equal the delivery's exact name – 'the free-form label it was created with' – which goes beyond the schema's terse 'to confirm deletion' description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource and immediately clarifies the crucial side-effect (batches are unassigned, not deleted), which distinguishes this from a naive destructive delete. An agent can tell exactly what this does versus siblings like delete_batch or archive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative ('archive with kind delivery hides a delivery and keeps it'), giving the agent a clear when-to-use-this vs when-to-use-that decision. The confirmName requirement is also stated as a precondition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_delivery_presentationDelete delivery presentationADestructiveInspect
Delete a delivery's current release presentation, so the Public Delivery Page shows none. It stays restorable from the presentation history in the app.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Delivery. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation/safety profile is covered. The description adds genuine value beyond that: the observable consequence (the Public Delivery Page shows none) and the reversibility guarantee (restorable from presentation history). It stops short of stating failure behavior when no presentation exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, with the primary effect front-loaded and the reversibility note second. No filler, no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param destructive tool with annotations and no output schema, the description covers what is destroyed and that it is recoverable, which is the key context an agent needs. Edge cases like deleting when no presentation exists are unaddressed, keeping it just under a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (id) exists and schema coverage is 100%, so the schema already documents it fully. The description adds no extra meaning about the id beyond 'delivery', making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and a precisely scoped resource (a delivery's current release presentation), and distinguishes itself from delete_delivery (which removes the delivery itself) by targeting only the presentation. An agent can tell exactly what is removed without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys intent (remove the current release presentation) but never states when to choose this over update_delivery_presentation or get_delivery_presentation, nor any prerequisite such as the delivery actually having a presentation. Usage is implied rather than specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_dictionary_termDelete dictionary termADestructiveInspect
Permanently delete an archived dictionary term. Active terms must be archived first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Dictionary term. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds the genuinely non-obvious behavioral rule that only archived terms are deletable and that the delete is permanent, which the annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the permanence and the archive precondition front-loaded. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no output schema, the description supplies the one thing the structured data omits: the archive prerequisite and irreversibility. It could note what happens on failure or whether deletion cascades, but nothing essential to calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One required 'id' parameter with 100% schema description coverage, so the schema already carries parameter meaning. The description adds nothing about the id format or lookup, which is acceptable and matches the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) plus resource (dictionary term) and the scope qualifier 'archived'. It cleanly separates itself from the sibling archive_dictionary_term by making clear deletion is the terminal, archive-then-delete operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Active terms must be archived first' is an explicit precondition that routes the agent to archive_dictionary_term before retrying. It stops short of naming that sibling directly, but the when-to-use condition is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_ideaDelete ideaADestructiveInspect
Permanently delete an archived or declined idea. Active ideas must be archived or declined first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Idea. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false; the description adds the crucial nuance that the deletion is permanent (no undo) and is gated on idea state. It still doesn't mention cascade effects on related records or permission requirements, so it falls short of fully supplementing the structured safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the permanent-delete semantics and the state precondition front-loaded. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema mutation, the description covers permanence and the state gate, and the annotations cover the safety profile. Minor gaps remain around post-deletion behavior and permissions, but an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, fully described in the schema (100% coverage: 'Id of the Idea'). The description adds no format, sourcing, or validity constraints beyond what the schema already says, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('delete') plus resource ('idea'), with the additional qualifier 'permanently' that separates it from archive_idea and decline_idea. It stops short of naming the siblings it supersedes, so an agent still has to infer the workflow relationship from the precondition alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the eligibility gate ('archived or declined') and the prerequisite ('Active ideas must be archived or declined first'), which effectively routes the agent to archive_idea or decline_idea as a prior step. It does not name those alternatives or state what to do instead for an active idea beyond the ordering constraint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_infoDelete Info pageADestructiveInspect
Permanently delete an archived Info page, together with its revision history. Active pages must be archived first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Info page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds real value beyond them: deletion is permanent, it also destroys the revision history, and there is a precondition state. It does not mention any confirmation flow or whether the id must reference an existing archived page, which 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the irreversible nature and the archive precondition front-loaded before any optional detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no output schema, the description covers the essential facts an agent needs: permanence, scope inclusion (revision history), and the required prior state. Missing only failure-mode details, which the annotations partially signal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100%, so the schema already documents "id" fully; the description adds no format, type, or lookup detail beyond it. Baseline 3 for a fully documented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Permanently delete an archived Info page") with the scope qualifier "archived" that separates it from the sibling archive_info/unarchive_info/delete_* tools. The added clause about revision history makes the effect unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the prerequisite: "Active pages must be archived first," which tells the agent when this tool will fail and routes it to archive_info first. It stops short of naming archive_info or unarchive_info as alternatives by name, so it is clear context rather than a full when/when-not map.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_instructionDelete instructionADestructiveInspect
Permanently delete an archived instruction document, together with its revision history. Active instructions must be archived first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Instruction. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered structurally. The description adds real value beyond them by disclosing that the revision history is deleted along with the document and that only archived items are eligible — a cascading/permanent effect the annotations alone do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero filler, with the destructive nature and the precondition front-loaded in that order. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with no output schema and annotations covering safety, the description supplies everything an agent needs: what is destroyed, the cascading effect, and the required prior state. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single 'id' parameter with 100% schema description coverage, so the schema carries the semantics and baseline 3 applies. The description adds nothing about the id format or how to obtain it beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Permanently delete') and resource ('an archived instruction document'), and scopes it to the archived state so an agent can distinguish it from archive_instruction/unarchive_instruction and from non-destructive delete siblings. No ambiguity about what the tool acts on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition: 'Active instructions must be archived first,' which effectively routes the agent to the archive step before deletion. It stops short of naming the sibling tool or stating post-deletion state, but the when/when-not is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_projectDelete projectADestructiveInspect
Permanently delete a project and everything under it: Ideas, Batches, Works, Deliveries, Workflows, Rulesets, Instructions, Info, Dictionary, Features, and its Public Delivery Page. confirmName must equal the project's exact name. archive with kind project hides a project and keeps its records.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Project. | |
| confirmName | Yes | The Project's exact name, to confirm deletion. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds substantive context beyond them: the full cascade of destroyed dependent entities (Ideas, Batches, Works, Deliveries, Workflows, etc.), the permanence, and the confirmName equality requirement. That is exactly the extra behavioral detail a destructive tool benefits from.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the highest-consequence fact (permanent delete), then cascading scope, then the confirmation guard, then the alternative. The long entity list is justified by the destructive nature and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the annotations cover the safety profile; the description fills the remaining gaps (what is destroyed, the confirmation guard, the archive alternative) fully for a two-parameter destructive call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are already documented ('Id of the Project', 'exact name, to confirm deletion'). The description's restatement of the confirmName constraint is redundant with the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Permanently delete a project') with an explicit enumeration of the scope of destruction. It distinguishes itself from the 'archive' sibling rather than from the delete_* family, which are all child-resource deletions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative ('archive with kind project hides a project and keeps its records') and the condition that selects it, so the agent can route between permanently deleting vs. hiding. It stops short of a fully directive 'use X when...' phrasing, but the contrast is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_ruleDelete ruleBDestructiveInspect
Permanently delete one rule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Rule. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The word 'Permanently' adds real value by signaling a hard delete as opposed to the archive_* soft-delete pattern in this server, but nothing is said about effects on rules referenced by rulebooks or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is arguably under-specified rather than verbose, which is a completeness issue, not a conciseness one.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete tool whose annotations already carry the destructive/read-only profile and whose schema fully documents the id, the description is nearly sufficient. The main gap is the absence of any note about consequences for rule references elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter, so the schema already documents it fully. The description adds no syntax, format, or constraint information beyond what the schema provides, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (rule) with a clear scope ('one rule'), which is enough to separate it from update_rule and create_rule. It does not, however, differentiate itself from the parallel archive_* / delete_* family beyond the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to delete a rule versus archiving or updating it, no prerequisites, and no mention of alternatives such as update_rule or delete_rulebook. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_rulesetDelete rulesetADestructiveInspect
Permanently delete a ruleset and its rules, and detach it from every workflow connection.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Ruleset. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds real blast-radius context the annotations do not carry: rules are deleted with the ruleset and workflow connections are detached. It stops short of stating what happens on a repeat call or whether any rollback exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the destructive nature and packs the cascade scope in without a wasted word.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no output schema, the description plus annotations cover the essentials: what it destroys and what it detaches. Missing only edge-case behavior, such as deleting a ruleset still referenced by active workflows or an already-deleted id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and the schema already documents it at 100% coverage ('Id of the Ruleset.'). The description adds no format or sourcing detail for the id, so the baseline 3 for high-coverage schemas applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Permanently delete a ruleset') and adds scope detail: it also removes the ruleset's rules and detaches it from every workflow connection. That cascade scope distinguishes it from delete_rule and update_ruleset, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of the reversible 'archive' sibling as an alternative, and no prerequisites. The word 'Permanently' implies irreversibility in contrast to archive, but the agent must infer that routing on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_workDelete workCDestructiveInspect
Delete a work item.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Work. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered structurally. The description adds nothing beyond that — no statement of irreversibility, no note on whether dependent records (workflow steps, reports) are removed, and no permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with zero filler, which is appropriately sized for a one-parameter tool. However, brevity here is achieved through under-specification rather than economy, so it earns only a minimal-viable score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with no output schema, the description omits any warning about permanence, recovery options (no restore tool exists for work, unlike restore_idea/unarchive_*), or side effects. An agent cannot tell what deleting a work item actually entails.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single `id` parameter is fully documented in the schema (100% coverage) as 'Id of the Work.', so no description compensation is required. Baseline 3 applies since the description adds no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a work item' is essentially a restatement of the tool name and title, adding no specificity about scope, cascade behaviour, or how it differs from delete_project, delete_idea, delete_info and the other delete_* siblings. Only the resource is identifiable, and that comes from the name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as archive_* (reversible hiding) or the other delete_* tools. No prerequisites or exclusions are given; the agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_workflowDelete workflowADestructiveInspect
Permanently delete a workflow together with all of its runs, step reports, and revisions. Batches, Deliveries, and tool calls it touched stay. confirmName must equal the workflow's exact name. archive with kind workflow hides a workflow and keeps its history.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Id of the Project. | |
| workflowId | Yes | Id of the Workflow. | |
| confirmName | Yes | The Workflow's exact name, to confirm deletion. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint annotation by enumerating exactly what is destroyed (runs, step reports, revisions) and, crucially, what survives (Batches, Deliveries, tool calls). It also discloses the confirmName safety guard, which is precisely the kind of consequence detail annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the destructive action and scope, then retention, then the safety requirement, then the alternative. No filler; every clause carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully carries the needed context: cascade effects, retained entities, the confirmation requirement, and the archiving alternative. Nothing an agent needs to invoke this destructively and safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantics: confirmName must equal the workflow's exact name, clarifying the confirmation guard beyond the schema's terse 'to confirm deletion'. projectId/workflowId semantics are left to the schema, which is acceptable given full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Permanently delete a workflow') and immediately scopes the cascade ('together with all of its runs, step reports, and revisions'). It also names the contrasting sibling behavior ('archive with kind workflow hides a workflow and keeps its history'), so an agent can distinguish destructive from non-destructive removal without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative path (archive with kind workflow) and its key property (keeps history), giving a clear steer between permanent deletion and archiving. It stops short of an explicit 'use this when… / don't use this when…' framing, so the selection condition is strong but slightly inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finish_workFinish workADestructiveInspect
Record completed repository implementation in one boundary call. Replaces the Work description with the factual implementedSummary and marks it done. If this closes the batch, batchSummary closes it in the same call; otherwise the response asks only for that missing summary. Calling it again on a done Work with batchSummary closes a Batch left open. A Work left planned or in progress inside a ready Batch is finished here too. Use it once implementation is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Work. | |
| metrics | No | Optional client measurements, stored on the workflow step this call completes. | |
| batchSummary | No | What the Batch changed; needed when this closes the Batch. | |
| implementedSummary | Yes | What was actually implemented; replaces the Work description. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, and the description explains exactly what the destruction does ('Replaces the Work description with the factual implementedSummary'). It also discloses non-obvious behaviors: batch closing in the same call, the response asking only for the missing summary, re-invocation semantics, and finishing planned/in-progress works — all far beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, purpose front-loaded first. Each sentence carries distinct behavioral content (replacement, batch closing, response contract, re-invocation, scope). Slightly dense, but little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param mutation tool with no output schema and complex Work/Batch lifecycle semantics, the description covers the tricky cases (conditional batch closing, re-invocation to close an open Batch, finishing planned/in-progress works). It lacks any note on auth/permissions or error conditions, but is otherwise sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds conditional meaning the schema only implies: batchSummary is required specifically when this closes the Batch, and implementedSummary replaces the existing description. This raises it above the schema-only baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Record completed repository implementation') and immediately distinguishes the operation from siblings by naming the boundary behavior it performs (replaces description, marks done). An agent can differentiate it from update_work, delete_work, and begin_work from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('Use it once implementation is complete') and describes the conditional batch-closing invocation. It doesn't name the obvious alternatives (e.g. update_work, begin_work) or state when not to use it, so it falls just 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.
getGet recordARead-onlyInspect
Get one record by kind and id:
project: its own details: name, description, links, tags, Public Delivery Page settings (deliveryPageSettings, socials, publicDeliveryPage, showcase listing), and archived state. For next steps call get_project_state; for records use list_batches, search_works, list_ideas, and list_deliveries; instruction documents are the pizzadeveloper://projects/{projectId}/instructions/{documentId} resources.
batch: number, name, status, rationale, and summary.
work: the work item;
referenceis the batch-scoped name it is known by outside this app:1-2is work 2 of batch 1, the same reference a commit message carries.delivery: shipped date, rationale, summary, assigned batches, work progress, and archived state.
delivery_presentation: the delivery's current release presentation document, or null when it has none; id is the delivery's id.
idea: full summary and content.
dictionary_term: word, aliases, and definition.
info: title, summary, and full text.
instruction: title, full text, and archived state; during an open workflow run, the text that run uses.
workflow: name, description, nodes, connections, and the instruction and ruleset IDs attached to each connection.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the record; for delivery_presentation, the Delivery's id. | |
| kind | Yes | Kind of record to read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false, so the safety profile is covered. The description adds behavioral nuance beyond that: delivery_presentation returns 'null when it has none', and instruction returns 'the text that run uses' during an open workflow run — useful state-dependent context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb/resource before the per-kind bullets, so the essential intent is immediate. The list is long but each bullet justifies itself by documenting a distinct return shape; the project bullet is dense with routing links and markdown resource syntax, which slightly hurts scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so for every kind, including the null case and the run-dependent instruction text. Combined with sibling routing, an agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the enum's own description is one line ('Kind of record to read.'), so the description meaningfully extends it by explaining what each of the ten kind values retrieves. It also clarifies the id semantics for delivery_presentation, adding value over the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get one record by kind and id') and then enumerates every accepted `kind` with the fields each returns. It also names siblings (get_project_state, list_batches, search_works, list_ideas, list_deliveries) so an agent can distinguish this point-lookup from list/search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear routing for follow-up actions ('For next steps call get_project_state; for records use list_batches, search_works...'), which tells the agent when to leave this tool. It does not explicitly state the precondition of already holding an id, but the 'by kind and id' framing and sibling routing make the use context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_featuresGet featuresARead-onlyInspect
Get a project's features as a compact tree. The project name and description are the fixed root; each feature carries id, name, description, and children, with handsOff: true on protected features, which also covers every feature under them. Pass featureId to read just that feature and the features under it. Hands-off features cannot be changed. update_features needs the returned revision.
| Name | Required | Description | Default |
|---|---|---|---|
| featureId | No | Read only this feature and the features under it. | |
| projectId | Yes | Id of the Project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the returned node shape (id, name, description, children), the handsOff flag and its inheritance to descendants, and the constraint that hands-off features cannot be changed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly four sentences, front-loaded with purpose before return shape and parameters. Every sentence carries information, though the featureId sentence partially duplicates the schema and the revision note is slightly detached from the listed return fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly takes on the burden of describing the returned tree, including the root and the handsOff inheritance rule. It also notes the cross-tool revision dependency. Minor gap: it never states where 'revision' lives in the response, given the field list omitted it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, including featureId's 'read only this feature and the features under it'. The description restates that scoping behavior almost verbatim and adds no format, id-source, or default guidance, so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a project's features') and immediately narrows the shape with 'as a compact tree', plus names the sibling that consumes the result (update_features). An agent can distinguish this from get_project or list_projects without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: use the default call for the whole project tree, or 'Pass featureId to read just that feature and the features under it.' It also flags the downstream dependency ('update_features needs the returned revision'), which tells the agent when this call is a prerequisite. No explicit when-not-to-use exclusion, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_stateGet project stateARead-onlyInspect
Get the planning state needed to resume work on one project. nextAction names the tool to call next. When the project has workflows, it lists them with their open runs and nextAction is start_workflow; resume_workflow continues an open run that already covers the request. Otherwise nextAction is begin_work (resume the active Work, claim the next one, or start the next planned Batch), finish_work (close a Batch whose Works are all done, with batchSummary, on developing.finishWorkId), create_work (add a Work to a developing Batch that has none), create_batch_plan (plan from the listed Ideas), or project_complete when nothing is left. It reports only Pizza Developer records, never repository, runtime, Git, deployment, or agent presence state.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Id of the Project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description goes beyond them by disclosing the nextAction contract, the developing.finishWorkId field, and an explicit scope exclusion ('reports only Pizza Developer records, never repository, runtime, Git, deployment, or agent presence state'). It does not describe pagination, size limits, or error behavior, but with annotations covering safety this is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the nextAction routing rule are front-loaded, and the scope disclaimer closes it out. The middle enumeration of possible nextAction values is a long run-on sentence, but each branch carries actionable information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description conveys the return contract in usable detail: nextAction, listed workflows with their open runs, batchSummary, and finishWorkId. For a read-only state tool with a single required parameter, an agent has everything needed to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single projectId parameter, so the schema already carries the semantics. The description only implies 'one project' and adds no format or sourcing detail beyond it; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the planning state needed to resume work on one project') and immediately distinguishes itself from get_project by scoping to resumable planning state rather than project metadata. An agent can tell what it returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: nextAction is start_workflow when workflows exist, resume_workflow to continue an open run that already covers the request, otherwise begin_work / finish_work / create_work / create_batch_plan / project_complete with the condition for each. This is a near-complete when-to-use-which-sibling map.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_batchesList batchesARead-onlyInspect
List a project's batches as bounded summaries (id, number, name, status, and queue position). Call get with kind batch for rationale and summary. Batches are numbered sequentially per project (1,2,3…).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. | |
| offset | No | Rows to skip before the first one returned. | |
| projectId | Yes | Id of the Project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint=false/destructiveHint=false, so safety is covered. The description adds genuinely useful behavioral context by noting output is 'bounded summaries' and listing exactly which fields come back, which the schema/annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and return shape, followed by the alternative and a domain note. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields and notes boundedness, plus numbering semantics, giving an agent everything needed to call and interpret the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit/offset/projectId are already documented. The note that batches are 'numbered sequentially per project (1,2,3…)' gives domain meaning useful for interpreting results, but adds nothing about parameter syntax. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (a project's batches) and enumerates the returned summary fields (id, number, name, status, queue position). It clearly differentiates itself from get by framing output as 'bounded summaries'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to `get` with kind batch when rationale/summary detail is needed, which cleanly separates the list mode from the detail mode. It does not, however, state any exclusion (e.g., when NOT to list, or pagination advice).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_deliveriesList deliveriesARead-onlyInspect
List a project's deliveries, newest shipped first, as bounded summaries: id, name, shipped date, batch and Work counts, and whether it has a presentation. Lists active deliveries; pass archived=true for archived ones. Call get with kind delivery for rationale, summary, and assigned batches.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. | |
| offset | No | Rows to skip before the first one returned. | |
| archived | No | True to list archived records instead of active ones. | |
| projectId | Yes | Id of the Project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds real behavioral context beyond the schema: the ordering (newest shipped first), the bounded summary field set, and the active-vs-archived default. It stops short of describing pagination defaults for limit/offset.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler, front-loaded with the core action and result shape before the archived behavior and the pointer to the alternative tool. Every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields and their ordering, and it covers scope (active vs archived) and where to go for richer detail. Nothing an agent needs in order to select and call this list tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema, which sets the baseline at 3. The description reinforces the archived semantics but adds no syntax or format detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List a project's deliveries') and immediately characterizes the result shape ('newest shipped first, as bounded summaries: id, name, shipped date, batch and Work counts, and whether it has a presentation'). This clearly distinguishes it from list-type siblings like list_batches and from the detail-oriented get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the default scope ('Lists active deliveries; pass archived=true for archived ones') and routes the agent to an alternative when more detail is needed ('Call get with kind delivery for rationale, summary, and assigned batches'). The when-to-use-this vs when-to-use-get boundary is spelled out rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dictionary_termsList dictionary termsARead-onlyInspect
List a project's active dictionary terms as bounded summaries (id, word, and aliases) in the vibe coder's own order. Pass archived=true to read archived terms instead. Call get with kind dictionary_term for the approved definition.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. | |
| offset | No | Rows to skip before the first one returned. | |
| archived | No | True to list archived records instead of active ones. | |
| projectId | Yes | Id of the Project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds non-annotation context: results are 'bounded summaries' containing only id/word/aliases (not full definitions) and are returned in the vibe coder's own order. It does not mention pagination defaults or total counts, which keeps it short of 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, and the primary action plus scope is front-loaded before the archived flag and the alternative-tool pointer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully specifies the returned fields (id, word, aliases) and ordering, and annotations cover safety. It omits any note on paging behavior or what the boundary values mean, which is a minor but real gap for a paginated list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with limit, offset, archived, and projectId all documented in the schema, so the baseline is 3. The description's only parameter insight is the archived toggle, which the schema already states ('True to list archived records instead of active ones'); it adds no syntax or default-value meaning beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (a project's dictionary terms), and disambiguates scope by naming the active-vs-archived variants. It also names the exact return shape (id, word, aliases) and routes the agent to `get` with kind dictionary_term for definitions, so an agent can separate it from `get` and from the other list_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing: pass archived=true to read archived terms, and use `get` with kind dictionary_term for the approved definition. Both the alternative tool and the condition that selects it are named, 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.
list_ideasList ideasARead-onlyInspect
List a project's ideas in one state as bounded summaries in the vibe coder's own order, front first. state is active by default; archived ideas were completed; declined ideas were decided against and carry the reason. Only active ideas are planning input; their first two positions are the planning ideas. Call get with kind idea for full content.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. | |
| state | No | Which Ideas to list; active by default. | |
| offset | No | Rows to skip before the first one returned. | |
| projectId | Yes | Id of the Project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: results are summaries rather than full content, and they follow the coder's own ordering with front-first priority. It does not mention pagination behavior, though limit/offset exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, and each subsequent sentence carries distinct information (state semantics, planning relevance, alternative tool). Slightly dense with several ideas packed in, but no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description responsibly characterizes the return (bounded summaries, defined ordering) and covers the state parameter fully. Annotations handle safety, and all parameters are documented. Only pagination/limit semantics are left unexplained, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning to the state enum by explaining what archived and declined actually represent (completed vs. decided against with a reason) — going beyond the schema's terse 'Which Ideas to list.' The other three parameters are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (List ideas) scoped to 'a project's ideas in one state,' and clarifies the output shape as 'bounded summaries in the vibe coder's own order.' An agent can distinguish this from get, search_works, and list_projects without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the state selector semantics (active is default, archived were completed, declined were decided against) and identifies which subset feeds planning. It also names the alternative explicitly: 'Call get with kind idea for full content,' giving a clear condition for switching tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_infoList Info pagesARead-onlyInspect
List a project's Info pages as id, title, and one-line summary, in the vibe coder's own order. Info holds facts about the project that are not rules or features: where it is listed, how its marketing is done, which outside accounts it depends on. Lists active pages; pass archived=true for archived ones. Call get with kind info for a page's text.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. | |
| offset | No | Rows to skip before the first one returned. | |
| archived | No | True to list archived records instead of active ones. | |
| projectId | Yes | Id of the Project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds useful context: the output shape (id, title, one-line summary), the ordering (vibe coder's own order), and default vs archived listing behavior. It doesn't mention pagination semantics despite limit/offset params, which 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences: purpose, domain definition, filtering behavior, and a routing pointer. Front-loaded with the output shape and scope, no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a read-only list tool: purpose, output fields, ordering, archived switch, and escalation path to get are all present. Only pagination behavior is left to the schema, which is acceptable given readOnly annotations and full schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters including limit/offset are documented in the schema. The description reinforces the archived parameter but adds no syntax or format detail beyond the schema. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (Info pages) and even defines what 'Info' contains, distinguishing it from rules/features. An agent can tell this apart from siblings like list_rulesets or get without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly covers the archived variant ('pass archived=true for archived ones') and routes to the alternative tool for page text ('Call get with kind info'). Both the state selector and the read-depth alternative are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsList projectsARead-onlyInspect
List every project the signed-in user owns or that has been shared with them.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. | |
| offset | No | Rows to skip before the first one returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the useful access-scope detail (owned or shared) but says nothing about result ordering, pagination, or default limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, and no filler whatsoever.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A simple, non-destructive read tool with a fully documented two-parameter schema and safety annotations. The description is complete enough for correct invocation, with only ordering/default-limit details left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — limit and offset are fully documented in the schema. The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (List) plus resource (projects) with a scope qualifier — owned or shared with the signed-in user. This clearly separates it from get_project, though it does not name any sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope statement implies when to use it (browse all accessible projects rather than fetch one), but there is no explicit guidance on when-not to use it or on paginating through results. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rulesetsList rulesetsARead-onlyInspect
List the project's rulesets with their rules and, in attachedTo, the workflows and connections each one is attached to. A ruleset is a name and ordered rules; each rule is one statement at level must (a failure refuses the write) or should (a failure is reported). Rules run only inside workflow runs: a ruleset is checked when it is attached to a workflow connection (rulesetIds in update_workflow) and the write that completes that step happens.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Id of the Project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: it discloses the shape of the returned data (rules plus an attachedTo map of workflows and connections), which matters since there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first sentence, but the remaining text drifts into domain exposition (must/should semantics, when rules execute) and references another tool's parameter. For a one-parameter list operation, some of this narrative is tangential rather than load-bearing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description responsibly describes what comes back (each ruleset's rules and its attachedTo workflows/connections), so an agent knows what to expect. For a simple single-param read tool this is close to complete, though pagination or ordering behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single projectId parameter has 100% schema description coverage ('Id of the Project'), so the schema does the heavy lifting and baseline 3 applies. The description adds no format or constraint detail for the parameter; its mention of rulesetIds refers to update_workflow, not this tool's input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource ('List the project's rulesets') and immediately scopes the output ('with their rules and, in attachedTo, the workflows and connections'). This is clearly distinguishable from create_ruleset, update_ruleset, delete_ruleset, and create_rule without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the domain model (what a ruleset is, when rules run) but never says when to call this tool versus siblings like check_rules, get, or list_workflows, nor any exclusion or precondition. The only routing-like hint is that rules are checked inside workflow runs, which is context about rulesets generally, not guidance for invoking this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workflowsList workflowsARead-onlyInspect
List the project's workflows with each one's name, description, entry points (idea, batch, and/or delivery), whether it can run, and its graph. A project can have several workflows, each described by the kind of request it handles. Archived workflows are left out unless includeArchived is true.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Id of the Project. | |
| includeArchived | No | True to include archived Workflows. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: archived workflows are omitted by default and only surfaced when includeArchived is true, and it lists the entry-point types. It stops short of mentioning pagination or result size, which would be the remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and result shape, then the scoping rule. The middle sentence about a project having several workflows is slightly filler but still earns its place by clarifying the plural result.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of describing return contents and does so by enumerating the per-workflow fields. Combined with the archived-filter rule, an agent has enough to call this correctly; only pagination/ordering details are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both projectId and includeArchived, setting the baseline at 3. The description restates includeArchived's effect but adds no format, default, or interaction detail beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('List the project's workflows') and scopes it to a project, which distinguishes it cleanly from the singular sibling get_workflow. It even enumerates the fields returned (name, description, entry points, runnability, graph), so an agent knows exactly what it gets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the plural 'list' versus the sibling get_workflow's singular fetch is left for the agent to infer. The one explicit routing rule is the includeArchived behavior, which is useful but narrow; there is no stated when-to-use/when-not guidance relative to list_projects or get_workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorderReorder recordsADestructiveIdempotentInspect
Set the manual order of one kind of record, first shown first. orderedIds lists the records; parentId names where they live:
project: your own projects on the dashboard; no parentId; a subset keeps every other project in place.
idea: every active Idea; parentId is the project; the first two are planning input.
batch: every planned Batch; parentId is the project; developing and ready Batches keep their place.
work: every Work in the Batch; parentId is that Batch, which must not be ready.
instruction: every active instruction; parentId is the project; during a workflow run, accepted only in its self-improvement stage.
info: every active Info page; parentId is the project.
dictionary_term: every active term; parentId is the project.
ruleset: every ruleset; parentId is the project.
rule: every rule in one ruleset; parentId is that ruleset.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Kind of record to order. | |
| parentId | No | Where the records live; the tool description says what each kind takes. | |
| orderedIds | Yes | Record ids in the wanted order, first shown first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds real substance on top: the subset-versus-complete-set rule per kind implicitly warns that unlisted records can be displaced, and it states hard preconditions (parentId 'must not be ready' for work; instructions accepted only in the self-improvement stage). It does not describe failure modes or whether reordering is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with a single-sentence statement of the operation, then a bulleted list where each bullet carries distinct kind-specific semantics rather than filler. It is long, but the length is dictated by nine enum variants that each behave differently. Minor repetition of the 'parentId is the project' pattern across bullets is the only slack.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nine-variant mutation tool with no output schema, the description covers what an agent needs to construct a valid call: the orderedIds contract, per-kind parentId, completeness expectations, and the workflow-stage restriction. Return values are not needed since the agent only needs to know the resulting order, which is implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning beyond it. The schema for parentId explicitly defers to the description ('the tool description says what each kind takes'), and the description discharges that with a kind-by-kind mapping; it also clarifies orderedIds as a first-shown-first sequence with subset semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource plus the ordering semantics: 'Set the manual order of one kind of record, first shown first.' No sibling tool does ordering, so the agent can immediately distinguish it from the update_*/delete_* family. The 'one kind of record' framing scopes it precisely to the enum in the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The per-kind bullets give strong conditional guidance: which kinds need a parentId, which must be an exhaustive set ('every active Idea', 'every planned Batch') versus which tolerate a subset ('a subset keeps every other project in place'), and the stage constraint on 'instruction' during a workflow run. It never names an alternative tool or states when not to reorder, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_problemReport a problemAInspect
Report a problem with Pizza Developer itself (the app, not a project tracked inside it) on behalf of the signed-in vibe coder. Never send one on your own initiative: first show the vibe coder the exact message and path, and call only after they explicitly confirm that report, passing userConfirmed: true. A report cannot be read back, edited, or withdrawn once sent. Pass path when it is about a particular page (/projects/{id}), and say plainly in message what went wrong and what was expected. Docs: https://pizzadeveloper.com/docs/report-a-problem
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | App path the report is about. | |
| message | Yes | The problem, exactly as shown to the vibe coder. | |
| userConfirmed | Yes | True only after the vibe coder approved this exact report. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds traits the annotations do not convey: 'A report cannot be read back, edited, or withdrawn once sent' discloses irreversibility, and 'on behalf of the signed-in vibe coder' discloses the auth/identity context. The mandatory human-confirmation gate is behavioral context well beyond readOnlyHint=false and idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with scope and the negative constraint, then the confirmation protocol, then path/message guidance, then docs. Every sentence earns its place; slightly long, but no filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with no output schema and three fully documented parameters, the description covers everything an agent needs: scope, consent protocol, irreversibility, path semantics, message expectations, and a docs link. Nothing required to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description still adds meaning over the schema: when to supply path ('when it is about a particular page (/projects/{id})') and how to phrase message ('say plainly what went wrong and what was expected'), plus the sequencing rule that userConfirmed must reflect approval of that exact report.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Report a problem with Pizza Developer itself') and immediately carves out the boundary that distinguishes it: the app, not a project tracked inside it. An agent can tell this apart from report_workflow_step and the project-scoped 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when/when-not: 'Never send one on your own initiative', requires showing the vibe coder the exact message and path first, and gating the call on explicit confirmation via userConfirmed: true. It also names the condition for using path (a particular page like /projects/{id}), 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.
report_workflow_stepReport workflow stepAInspect
Report the agent client's outcome and optional measured costs for a workflow step that has no expected lifecycle tool, a failure, the self-improvement step, or the client score. A step with an expected lifecycle tool is completed by that tool, which also accepts the client metrics, so it needs no report; failed blocks a step for another attempt. Optional stages are bypassed only by choosing a configured available edge with resume_workflow before entering them; once entered, every step is required. A completed self-improvement report closes that step and its reason describes what changed and why, or why nothing did. Research content is never stored. When one route follows, the response carries the next step's instructions; when several do, choose one with resume_workflow and its instructions arrive then.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Id of the Workflow run. | |
| reason | No | What happened and why. | |
| status | Yes | completed, or failed to block the step for another attempt. | |
| stepId | Yes | Id of the step being reported. | |
| metrics | No | Optional client measurements for the step. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false with destructiveHint=false, so mutation-but-safe is known. The description adds real behavioral context beyond that: 'failed' blocks the step for another attempt, a completed self-improvement report closes the step, research content is never stored, and the response mechanism (instructions carried when one route follows, resume_workflow when several). It stops short of mentioning auth or error behavior, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, and every clause carries information, but the body is a dense run-on of semicolon-joined conditionals that is hard to parse on first read. Information density is high but structure is weak; a short bulleted when/when-not split would have served better.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by explaining what the response carries (the next step's instructions, or instructions arriving after resume_workflow). Combined with the lifecycle/failure semantics, an agent has enough to call this correctly, though error and idempotency behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, which sets a baseline of 3. The description earns above that by explaining the semantic weight of the fields beyond their schema text: 'failed blocks a step for another attempt' and the reason field 'describes what changed and why, or why nothing did,' which is richer than the schema's 'What happened and why.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — reporting a workflow step's outcome and optional costs — and immediately scopes it against the lifecycle tools that would otherwise complete a step. An agent can tell it apart from resume_workflow or the lifecycle tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use cases are enumerated (no expected lifecycle tool, failure, self-improvement step, client score) and a when-not case is stated (a step with an expected lifecycle tool needs no report). The alternative for routing, resume_workflow, is named with its triggering condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_ideaRestore ideaAIdempotentInspect
Restore a declined idea to the back of the active planning order. An archived idea returns with unarchive.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Idea. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readOnly, idempotent, non-destructive, so safety is covered. The description adds real behavioral context beyond them: the restored idea lands at the BACK of the active planning order, which an agent cannot infer from the schema or annotations. It stops short of describing permissions or a response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the core action is front-loaded and the disambiguation note follows immediately. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema and annotations covering the safety profile, the description supplies the key missing context (where the idea returns to, and the unarchive alternative). A brief note on the source state (declined) or permissions would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (id), and schema coverage is 100% with its own description, so the schema does the work. The description adds no syntax, format, or validation detail beyond that, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (restore) and resource (declined idea) and adds the placement outcome (back of the active planning order). It also names the sibling that handles a different case (unarchive for archived ideas), letting an agent distinguish the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives a clear routing rule: archived ideas are restored with 'unarchive', implying this tool is for declined ideas. That is a genuine when/when-not signal, though it doesn't mention the counterpart action (decline_idea) that puts an idea into this state or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_workflowResume workflow runAInspect
Reconcile and read an open workflow run, then deliver its current step. Each workflow has at most one open run; name it with runId or workflowId when several are open. Pass an available edgeId before reporting to choose a configured branch, including one that names the optional stages it bypasses. Without an edgeId, a step already delivered is re-sent in full, which is how a new session recovers its instructions; other calls return only the step's instruction titles after its first delivery.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | Workflow run to resume, when several are open. | |
| edgeId | No | Available connection to choose before reporting. | |
| projectId | Yes | Id of the Project. | |
| workflowId | No | Workflow whose open run to resume. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only declaring readOnlyHint=false and destructiveHint=false, the description carries real behavioral weight: at most one open run per workflow, re-delivery semantics when no edgeId is supplied, and that later calls return only instruction titles after first delivery. These stateful/side-effect traits are not derivable from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action before the disambiguation and branch/delivery caveats. Dense and slightly clause-heavy, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description partly covers return shape — full step re-send versus instruction titles only. For a 4-param stateful tool with annotations only covering safety, this is largely sufficient, though auth/permission prerequisites go unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: edgeId selects a configured branch (including one that names bypassed optional stages), and runId/workflowId are framed as alternative disambiguators for open runs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb pair and resource: 'Reconcile and read an open workflow run, then deliver its current step.' That is enough to separate it from get_workflow (pure read) and start_workflow (new run), though it never names those siblings directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete selection rules — 'name it with runId or workflowId when several are open' and 'Pass an available edgeId before reporting to choose a configured branch' — plus the no-edgeId fallback. It stops short of naming an alternative tool for when resume is the wrong choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revert_batchRevert batchAInspect
Move a batch one step back as an undo: developing → planned, and only while every work inside it is still planned. Ready batches are frozen history and can't be reverted.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Batch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the mutation/safety profile is known; the description adds the non-obvious constraint that only one step is undone and that revertibility depends on the state of contained work. It does not say what happens when the precondition fails (error vs. silent no-op), which is the remaining behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and its direction, followed by the precondition and the exclusion clause. Every clause carries distinct information; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with annotations covering safety and no output schema, the description supplies the state machine and preconditions an agent needs. It is slightly short of complete because failure behavior and idempotency are unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter, so the schema already documents it fully. The description only implies that the id refers to a batch and adds no format or lookup guidance beyond that, which is the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'Move a batch one step back as an undo: developing → planned' states a specific verb, resource, and the exact state transition, which distinguishes it from update_batch and delete_batch without opening any schema. An agent immediately knows this is a reverse transition, not a generic edit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states an explicit precondition ('only while every work inside it is still planned') and an explicit exclusion ('Ready batches are frozen history and can't be reverted'). Both the when and the when-not are spelled out, so the agent can decide before calling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_worksSearch worksARead-onlyInspect
List or find Works, newest-updated first, as trimmed rows (id, reference, title, size, status, batchId, projectId; call get with kind work for full detail). Pass projectId to list one project's Works; query searches title and description across every project you can reach, or inside that project. status is planned, in-progress, or done. reference is the batch-scoped name a Work is known by outside this app: 1-2 is work 2 of batch 1.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. | |
| query | No | Text to find in Work titles and descriptions. | |
| offset | No | Rows to skip before the first one returned. | |
| status | No | Limit to one Work status. | |
| batchId | No | Limit to one Batch. | |
| projectId | No | Limit to one Project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint=false, so the description doesn't need to restate safety. It adds real behavioral context beyond that: default sort order, the trimmed-column return shape, and the batch-scoped meaning of `reference` (`1-2` = work 2 of batch 1) — a non-obvious domain rule.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly four sentences, front-loaded with purpose, ordering and return shape before the parameter guidance. Dense but every clause carries information; the parenthetical on `reference` could arguably be trimmed, but it clarifies a genuinely confusing identifier.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly carries the return contract by enumerating the trimmed fields and showing the escape hatch (`get` with kind work). Ordering, scoping, filtering, and the reference format are all covered — nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3, but the description adds interaction semantics the schema can't: `query` searches across every reachable project unless `projectId` is supplied, in which case it searches inside that project. It also elaborates `status` and `reference` beyond the enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list/find) and resource (Works), specifies the default ordering (newest-updated first) and the exact return projection (id, reference, title, size, status, batchId, projectId). It also distinguishes itself from the sibling `get` by pointing there for full detail, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the two usage modes clearly: pass projectId to scope to one project, and query searches titles/descriptions either globally or within that project. It names the alternative (`get` with kind work) for full detail. No explicit when-not-to-use case, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_workflowStart workflow runAInspect
Start a run of one workflow from an Idea, a planned existing Batch whose Work has not begun, or a new batch plan (name and ordered works, as in create_batch_plan). A workflow that starts at Delivery takes none of them: the run begins on its Start to Delivery connection, and create_delivery, or update_delivery adding a Batch, completes it. With batch, the Batch is planned and the run started in one call, its review step is skipped, and edgeId can name the Batch stage route; a retry while that run is open returns the same run. A Batch run governs that Batch's Work queue until it is ready. The run is pinned to the workflow's current revision and returns its current step. Each instruction body is sent once per run; a document already sent earlier in the run comes back as a uri reference.
| Name | Required | Description | Default |
|---|---|---|---|
| batch | No | New Batch plan to create and start the run from. | |
| edgeId | No | Batch stage route to take when the run starts from a Batch. | |
| ideaId | No | Idea to start the run from. | |
| batchId | No | Planned Batch to start the run from. | |
| projectId | Yes | Id of the Project. | |
| workflowId | Yes | Id of the Workflow. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare it is not read-only and not destructive; the description adds the real behavioral payload: the run is pinned to the workflow's current revision, it returns its current step, a batch start skips the review step, edgeId can name the Batch stage route, retries against an open run return the same run, and a Batch run governs that Batch's Work queue. It even discloses the document dedup rule (re-sent documents return as uri references).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and main input branches are front-loaded, and nearly every sentence carries distinct edge-case information. The single dense paragraph packs a lot of conditional clauses together, which slightly hurts scannability but wastes little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters, nested objects, and no output schema, the description carries the return-value burden and does state what comes back (the current step) along with side effects on the Work queue and revision pinning. Error conditions and the precise shape of the returned step are not covered, which is the main residual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds semantics the schema does not: it explains how the batch object is used (planned and run started in one call, review step skipped) and what edgeId means (the Batch stage route). It does not explain the batch name pattern constraint, leaving that to the referenced create_batch_plan.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (start a run of one workflow) and enumerates the three valid starting points: an Idea, a planned existing Batch whose Work has not begun, or a new batch plan. It also names the contrast case (a workflow that starts at Delivery takes none of them) and the sibling tools that complete that path, so an agent can pick it apart from create_batch_plan and create_delivery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear selection logic across the mutually exclusive inputs and points to create_delivery/update_delivery for the Delivery-start variant, plus a retry-idempotency note. It stops short of explicitly contrasting with resume_workflow, cancel_workflow, or begin_work, so the when-not-to-use side 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.
unarchiveUnarchive recordAIdempotentInspect
Unarchive one record by kind and id.
project: returns to the default dashboard view.
idea: an archived idea returns to the back of the active planning order; restore_idea restores a declined one.
delivery: returns to the Deliveries page and the public surfaces it was listed on.
dictionary_term: returns to the back of the active dictionary.
info: returns to the back of the active list.
instruction: returns to the back of the active list. During an active workflow run, accepted only in its self-improvement stage.
workflow: can be edited and run again.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the record. | |
| kind | Yes | Kind of record to unarchive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false and readOnlyHint=false, so safety is covered. The description adds substantive state-change semantics the annotations cannot express: where each kind reappears (default dashboard, back of active planning order, Deliveries page plus public surfaces) and the workflow-run restriction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action is front-loaded in the first line and the bullets are one line each, matching the seven-value enum without filler. No sentence is redundant with the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of outcome disclosure and does so per kind. Minor gaps remain around failure cases (record not archived, unknown id) and permission requirements, but an agent can invoke it correctly as written.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the enum is documented generically in the schema, but the description goes further by mapping each of the seven enum values to its distinct post-unarchive behavior, which is exactly the information needed to choose the right kind. The only untouched parameter, id, is self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb and resource ('Unarchive one record by kind and id') and the per-kind bullets make the scope concrete. It also explicitly distinguishes itself from the sibling restore_idea, which handles declined ideas rather than archived ones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The bullets give the condition under which each kind applies and route the declined-idea case to restore_idea, plus a real usage constraint ('During an active workflow run, accepted only in its self-improvement stage'). It stops short of stating general when-not-to-use cases (e.g. record not currently archived) or error behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_batchUpdate batchADestructiveInspect
Edit a batch's name, rationale, or change summary; only supplied fields change, and an empty string clears rationale or summary. A name is 1 to 3 lowercase words joined by single hyphens, like dark-mode-toggle. Rationale is the vibe coder's stated reason for building the batch, in one or two plain sentences. Summary is what the batch changed, drafted from its recorded work, in two or three factual sentences. A ready batch refuses rationale and summary edits. Status moves through begin_work, finish_work, and revert_batch, and batch numbers are immutable.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Batch. | |
| name | No | New Batch name. | |
| summary | No | What the Batch changed; an empty string clears it. | |
| rationale | No | The vibe coder's reason for the Batch; an empty string clears it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag destructiveHint=true; the description adds the far more useful behavioral facts: partial-update semantics, empty-string-clears behavior, the ready-state rejection rule, and the immutability of batch numbers. These are exactly the mutation behaviors an agent needs and none are derivable from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core mutation contract, which is good, but the tail drifts into tangential material (status flow via other tools, immutable batch numbers) that dilutes the edit-focused message. The prose is dense but several clauses don't serve this tool's invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param mutation tool with no output schema, the description covers the destructive/partial-update profile, per-field rules, and the key state precondition. It doesn't state the return value, but without an output schema the caller may want to know what a successful update yields; that is the only notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds real semantic constraints: the exact name grammar (1-3 lowercase hyphen-joined words with an example), the content rules for rationale and summary, and the empty-string-clears contract. This meaningfully exceeds what the schema's one-line descriptions convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb (Edit) and enumerates the exact mutable fields (name, rationale, change summary), which immediately distinguishes it from siblings like update_work or update_delivery. The agent knows exactly what this tool mutates without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use signal (only supplied fields change) plus a critical exclusion: a ready batch refuses rationale and summary edits. It also points the agent toward begin_work, finish_work, and revert_batch for status changes, routing correctly away from this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_deliveryUpdate deliveryADestructiveInspect
Edit a delivery's own record (name, rationale, summary, ship date) and add or remove its batches. Only supplied fields change; pass an empty string to clear a text field. addBatchIds puts ready batches that no delivery carries into this one, and removeBatchIds takes batches out of it; every other batch stays. Take a batch out of its current delivery before adding it to another. shippedAt corrects when it shipped (ISO date or date-time, not in the future). The name is a free-form label and must stay non-empty and unique within its project. Returns the delivery's resulting batches. At a workflow run's Delivery stage, adding every ready Batch of the run to one existing Delivery completes the stage instead of create_delivery. In a run of a workflow that starts at Delivery, adding any ready Batch no delivery carries to an existing Delivery completes the stage.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Delivery. | |
| name | No | New Delivery name, a free-form label. | |
| metrics | No | Optional client measurements, stored on the workflow step this call completes. | |
| summary | No | What shipped; an empty string clears it. | |
| rationale | No | Why the Delivery exists; an empty string clears it. | |
| shippedAt | No | Ship date, as an ISO date or date-time. | |
| addBatchIds | No | Ready Batches to add. | |
| removeBatchIds | No | Batches to take out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, but the description adds substantial context beyond them: partial-update semantics ('Only supplied fields change; pass an empty string to clear a text field'), the invariant that other batches stay put, the uniqueness/non-empty constraint on name, the no-future-date rule for shippedAt, and the return value ('Returns the delivery's resulting batches'). This is rich behavioral disclosure that the annotations alone do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and update semantics are front-loaded, and the later sentences about workflow-stage behavior earn their place by disambiguating a non-obvious side effect. It is dense but each sentence carries distinct information; only the workflow-stage sentences feel slightly long-winded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation tool with nested objects and no output schema, the description covers mutation semantics, constraints, batch-movement rules, and the return value, which is a lot. The only shortfall is the unmentioned metrics parameter, whose behavior (stored on the workflow step) is left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: empty-string-clears semantics for text fields, name uniqueness within a project, ISO format and not-in-the-future constraint for shippedAt, and that addBatchIds only accepts ready batches no other delivery carries. The one gap is that the metrics object is never mentioned in the description, though the schema documents it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Edit a delivery's own record (name, rationale, summary, ship date) and add or remove its batches'), which immediately distinguishes it from the sibling create_delivery, delete_delivery, and list_deliveries tools. An agent can tell exactly what record is touched and what sub-operations are included.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit preconditions and alternatives: 'Take a batch out of its current delivery before adding it to another', and it names create_delivery as the alternative along with the exact condition that selects update_delivery instead ('adding every ready Batch of the run to one existing Delivery completes the stage instead of create_delivery'). This is more than implied usage — it routes the agent between sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_delivery_presentationUpdate delivery presentationADestructiveInspect
Save a delivery's release presentation: scenes built only from the listed elements, played on the Public Delivery Page in the brand's style. The story comes from the delivery summary and real product copy; brand colors, radius, and font come from the product's own logo and styles. The logo uploaded on the project's public page is the only brand mark shown, and the presentation holds no source code. Release notes lead with the changes element for the delivery's headlines and show what moved with before-after or navigation. Every scene lasts at least its reading time, about 1.5 seconds plus one second per three words shown, and at least 3 seconds. Scenes last whole seconds, at most 60 seconds in total. Replaces the current presentation; earlier versions stay restorable in the app. An invalid presentation returns field-level errors to fix.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Delivery. | |
| presentation | Yes | Presentation document: brand and scenes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true, so the safety profile is known. The description adds valuable behavioral context: it replaces the current presentation while earlier versions remain restorable, invalid presentations return field-level errors, and it explains brand sourcing rules and that no source code is included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but front-loaded with the core purpose and each sentence adds relevant information about content sourcing, timing, replacement, and validation. It could be more scannable with structure, but given the schema's complexity the length is largely justified and there is little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex nested schema and the absence of an output schema, the description covers the key behaviors an agent needs: destructive replacement with restorable history, brand derivation, scene timing constraints, and validation errors. It does not discuss permissions or id requirements, but those are minor omissions for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents all field structures. The description nonetheless adds semantic meaning beyond the schema: it defines the timing rule for 'seconds' (at least reading time, about 1.5 seconds plus one second per three words, minimum 3 seconds, whole seconds, 60-second total cap) and explains that brand colors, radius, and font come from the product's own logo and styles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Save') and resource ('a delivery's release presentation'), then details the content and presentation rules. An agent can immediately tell this is the write tool for a delivery's presentation, distinct from get/delete siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does and its constraints but never states when to use this tool versus alternatives such as update_delivery, get_delivery_presentation, or delete_delivery_presentation. No explicit when-to-use or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_dictionary_termUpdate dictionary termBDestructiveInspect
Update a dictionary term. Only the fields you provide change.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Dictionary term. | |
| word | No | The Dictionary word. | |
| aliases | No | Other words that mean the same. | |
| definition | No | The approved meaning of the word, with no tables. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the mutation profile is covered. The description adds genuinely useful patch semantics ('only the fields you provide change'), which tells the agent that omitted fields are preserved. It does not explain what makes the operation destructive, whether clearing a field is possible, or any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the core action is front-loaded and the patch semantic follows immediately. Nothing could be removed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation tool with full schema coverage and annotations covering the safety profile, the description is minimally adequate. It could do more for a destructiveHint=true update: explaining whether fields can be cleared, what happens to aliases when omitted, and how failures are surfaced. No output schema exists, so return values would be helpful context but are not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (id, word, aliases, definition) are already documented in the schema, making 3 the baseline. The partial-update sentence mildly informs how optional parameters behave but adds no format or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Update) and resource (dictionary term), so an agent can distinguish it from create_dictionary_term, get_dictionary_term, and delete_dictionary_term. It does not, however, explicitly differentiate itself from archive/unarchive or state what updating accomplishes beyond the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus siblings like archive_dictionary_term, delete_dictionary_term, or create_dictionary_term. The only guidance offered is the partial-update clause, which is a behavioral detail rather than a usage condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_featuresUpdate featuresADestructiveInspect
Change a project's features by id: add (a feature, with optional children, under parentId or null for top level), update (name and/or description), move (to parentId, optional position), remove (the feature and every feature under it). Every feature needs a concise name and description. Changes apply in order as one atomic write against baseRevision from get_features; split a large restructure into several calls, each with the revision the previous one returned. Hands-off marks belong to the vibe coder: hands-off features and every feature under them cannot be changed, moved, removed, or added to. Stale writes are refused, as is a change to a feature the vibe coder has open for editing in the browser.
| Name | Required | Description | Default |
|---|---|---|---|
| changes | Yes | Changes to apply in order: add, update, move, or remove; descriptions hold no tables. | |
| projectId | Yes | Id of the Project. | |
| baseRevision | Yes | Revision returned by get_features. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint/readOnlyHint annotations: it discloses atomic in-order application, optimistic-concurrency refusal of stale writes, cascade deletion for remove, the hands-off protection rule (features and descendants), and the browser-editing lock. This is exactly the behavioral context a mutation tool needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core operations and packs constraints into a dense paragraph with no filler. It is a single long run-on rather than clearly separated bullets, which slightly hurts scanability, but every clause carries required information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex no-output-schema mutation tool, the description covers atomicity, revision semantics (including the returned revision for chaining), protection rules, and concurrency refusals. Nothing an agent needs in order to call it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: parentId null means top level, remove deletes the entire subtree, update accepts name and/or description, and move takes an optional position. These are real semantics layered on the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Change) and resource (a project's features) and enumerates the four supported operations (add, update, move, remove) with their sub-semantics. An agent can immediately distinguish this from the read-side sibling get_features and from the update_* family for other resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains how to use it contextually: changes must be based on baseRevision from get_features, and large restructures should be split into several calls each using the revision the previous one returned. It does not name a competing alternative tool, but no sibling offers feature editing, so the guidance is effectively complete for routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_handoff_noteUpdate handoff noteADestructiveInspect
Replace the handoff note on the Work being implemented, so another session can continue it: what is done, what remains, files touched, and whether changes are uncommitted. begin_work returns it to whoever resumes the Work; finish_work clears it. Pass an empty note to clear it.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | The Handoff note text. | |
| workId | Yes | Work being implemented. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false; the description confirms the destructive 'replace' semantics and explains that an empty note clears the handoff. It adds what the write representatives know: overwriting existing content and how to intentionally clear it. It doesn't mention permissions or failure behavior, but goes well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences: the first defines the action and content, the second covers lifecycle relationships and the empty-note rule. Every clause earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter write tool with destructive hint annotations and no output schema, the description covers action, content expectations, lifecycle interaction, and the clearing behavior. It omits any note about return value or confirmation, but annotations and schema cover the remaining structured detail adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description goes further by defining what the 'note' parameter should contain and that an empty string is a valid way to clear the note, adding real meaning beyond the schema's maxLength limit. It does not expand on workId, which the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Replace the handoff note on the Work') plus scope ('so another session can continue it'). It clearly distinguishes itself from sibling tools begin_work and finish_work by describing their differing roles, so an agent can recognize what it does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the note's intended content (done, remains, files touched, uncommitted changes) and names the related lifecycle tools begin_work (returns it) and finish_work (clears it). It also gives an operational rule: pass an empty note to clear it. There is no explicit 'use this when...' trigger, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ideaUpdate ideaADestructiveInspect
Update an idea's short name of at most 20 characters, optional detail, or impact. Nothing is generated. Only supplied fields change. Order is separate: move an idea with reorder. Archiving, declining, and restoring Ideas don't run rules.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Idea. | |
| title | No | New short name, at most 20 characters. | |
| impact | No | Product scope of the Idea: minor or major. | |
| content | No | New full detail, with lists instead of tables. | |
| summary | No | New summary. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=false and destructiveHint=true already declared, the description usefully adds partial-update semantics ('Only supplied fields change') and clarifies that nothing downstream is generated. However, it never states reversibility or whether an update triggers rules, and the trailing sentence about archiving/declining/restoring not running rules creates ambiguity about the update path itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the scope and mutation semantics in short, terse sentences with no filler. The final sentence about archiving/declining/restoring not running rules is tangential to this tool's purpose and slightly muddies an otherwise tight block.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a partial-update mutation tool with no output schema and full schema documentation, the description covers the essentials: which fields change, that unspecified fields are untouched, and where ordering belongs. Nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents id, title (<=20 chars), impact enum, content, and summary. The description repeats the 20-character title constraint but omits the 'summary' parameter entirely, adding little beyond the structured fields. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource (update an idea) and enumerates the mutable fields (short name <=20 chars, detail, impact). It also actively distinguishes itself from the sibling 'reorder' for ordering and from the archive/decline/restore family, so an agent can route without opening other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing for one alternative: 'Order is separate: move an idea with reorder,' which is exactly the kind of disambiguation an agent needs. It does not cover other nearby choices (delete_idea, archive_idea, restore_idea as the actual update targets), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_infoUpdate Info pageADestructiveInspect
Rename an Info page, change its summary, or rewrite its text whole. Only supplied fields change; content replaces the entire text, and an empty string clears content or summary. Earlier text stays in the page's revision history. Read the current text with get, kind info, first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Info page. | |
| title | No | New title. | |
| content | No | Full replacement text, with lists instead of tables; an empty string clears it. | |
| summary | No | New one-line summary; an empty string clears it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations flag destructiveHint=true, but the description goes further and explains the actual destruction semantics: only supplied fields change, content replaces the entire text rather than appending, and an empty string clears content or summary. It also discloses that prior text survives in revision history, giving the agent a recoverability signal the annotations do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each carrying distinct information: what can be changed, how partial updates behave, what clearing does, and what the read-first prerequisite is. The scope statement is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers the important gaps: mutation scope, replacement vs. merge behavior, clearing semantics, and recoverability via revision history. It is slightly thin on what the call returns or whether the updated page is echoed back, but that is a minor omission given the schema documents all four inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description adds genuine meaning on top: the partial-update rule ('Only supplied fields change'), full-replacement semantics for content, and the empty-string clearing convention for both content and summary. It does not, however, restate the id parameter's role or the 200-char summary cap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Rename an Info page, change its summary, or rewrite its text whole') and enumerates exactly which fields are editable, which distinguishes it from create_info/delete_info and from the update_* siblings for other resource types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes a prerequisite workflow: 'Read the current text with get, kind info, first,' naming a concrete sibling and parameter. It gives clear when-to-use context but offers no when-not guidance (e.g., use create_info if no page exists yet, or update_* for other resource kinds).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_instructionUpdate instructionADestructiveInspect
Rename an instruction document or rewrite its text whole. Only supplied fields change; content replaces the entire text, and an empty string clears it. Earlier text stays in the document's revision history. Read current text with get, kind instruction, first. During an active workflow run, instruction changes are accepted only in its self-improvement stage.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Instruction. | |
| title | No | New title. | |
| content | No | Full replacement text, with lists instead of tables; an empty string clears it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations by disclosing that only supplied fields change, that content wholesale replaces the text, that an empty string clears it, that prior text survives in revision history, and that workflow runs gate edits to a specific stage. This is exactly the destructive-mutation context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, each carrying distinct information, with the rename/rewrite purpose front-loaded and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation tool with no output schema, it covers purpose, mutation semantics, prerequisites, history behavior, and workflow-stage gating; nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond it: the partial-update contract ('only supplied fields change') and the full-replacement/clear semantics of content are not spelled out in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource: 'Rename an instruction document or rewrite its text whole.' It is clearly distinct from update_rule/update_info/update_work by naming the resource, but it never explicitly contrasts itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete prerequisite ('Read current text with get, kind instruction, first') and a conditional constraint ('instruction changes are accepted only in its self-improvement stage'). No explicit when-not or named alternative (e.g., delete_instruction), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_projectUpdate projectADestructiveInspect
Update a project's own details. Only the fields you provide change. Owner-only. Instruction documents change through update_instruction.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Project. | |
| name | No | New Project name. | |
| tags | No | Project tags. | |
| liveUrl | No | Live URL of the Project. | |
| repoUrl | No | Repository URL of the Project. | |
| description | No | New Project description. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a non-read-only, destructive mutation, and the description adds genuine context beyond them: partial-update semantics ("Only the fields you provide change") and an authorization requirement ("Owner-only"). It doesn't describe failure modes or response shape, but these additions exceed what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler; the identity of the tool comes first, followed by the mutation contract, the permission gate, and the sibling routing. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation with full schema coverage but no output schema, the description covers what changes, who may call it, and where adjacent data is edited elsewhere. Missing only return behavior and error conditions, which are minor given the schema and annotations cover the rest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; however the description adds real meaning the schema lacks by stating that only supplied fields are modified, clarifying that omitted optional fields are preserved rather than cleared. That partial-update contract is not derivable from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Update a project's own details"), and the phrase "own details" signals it operates on the project entity itself rather than its children. It partially differentiates from a sibling by routing instruction documents to update_instruction, though it doesn't distinguish from update_batch/update_work/etc. Clear but not fully sibling-aware.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Owner-only" gives a permission precondition and "Only the fields you provide change" implies patch semantics, and it names update_instruction as the route for instruction docs. However there is no guidance on when to choose update_project over archive_project/delete_project or when it should not be used. Implied but not explicit usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_public_delivery_pageUpdate Public Delivery PageADestructiveInspect
Set whether the project's Public Delivery Page shows dates, whether its uploaded logo is also the project icon, and configure supported social profiles: YouTube, X, Discord, LinkedIn, Instagram, TikTok, Bluesky, Threads, Twitch, Spotify and Apple Music. Owner-only. Read current values with get, kind project. Omitted fields stay unchanged; empty strings remove profiles. Custom links are not supported. Logo and cover images are uploaded or removed only in the app (PNG/JPG, 4 MB); this tool takes no image fields. Does not publish the Public Delivery Page.
| Name | Required | Description | Default |
|---|---|---|---|
| xUrl | No | X profile URL. | |
| profile | No | Other page settings: showDates, logoAsIcon, and social profile URLs. | |
| projectId | Yes | Id of the Project. | |
| youtubeUrl | No | YouTube profile URL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and openWorldHint=true, and the description adds the operational context an agent needs: 'Owner-only', patch semantics ('Omitted fields stay unchanged'), the destructive mechanic ('empty strings remove profiles'), and the explicit boundary that images are handled in the app, not here. It also clarifies the tool does not publish, preventing a false expectation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then constraints and prerequisites in descending priority. Every sentence carries information (owner-only, patch behavior, exclusions, image boundary), though the density makes it longer than strictly minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-object mutation tool with no output schema, the description covers the action, auth requirement, patch semantics, destructive edge case, unsupported inputs, and what it deliberately does not do. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema by explaining the empty-string removal semantics and by preempting the misleading 'logoAsIcon' field with 'this tool takes no image fields'. It lists the social profile set the nested object maps to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb+resource ('Set whether the project's Public Delivery Page shows dates...') and enumerates exactly which settings are configurable, including the full list of supported social profiles. An agent can distinguish this from update_delivery_presentation or update_project without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes reads to the sibling tool ('Read current values with get, kind project') and rules out adjacent actions ('Does not publish the Public Delivery Page', 'Custom links are not supported'). It does not, however, contrast itself against other update_* siblings that might touch overlapping page settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ruleUpdate ruleBDestructiveInspect
Edit a rule's text or level. Only supplied fields change.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Rule. | |
| text | No | The Rule as one narrow statement. | |
| level | No | must refuses a failing write; should only reports it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=false, so the mutation profile is covered. The description adds genuine behavioral value with partial-update semantics ('Only supplied fields change'), though it omits the consequences of editing a 'must' level rule, permission requirements, and whether prior text is recoverable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two very short sentences with zero waste; the mutation scope is front-loaded and the patch rule follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter update with full schema coverage and annotations that supply the safety profile, the description is nearly sufficient. It would be complete with a note on side effects of level changes on rule evaluation, but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the meaningful enum semantics for level ('must refuses a failing write; should only reports it'), so the schema carries the burden. The description restates which fields are editable but adds no syntax or format detail beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Edit) and resource (a rule) and enumerates the mutable surface (text or level), so the agent knows precisely what the tool mutates. It doesn't explicitly contrast with siblings like update_rulebook or create_rule/delete_rule, which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus create_rule, delete_rule, update_rulebook, or check_rules, and no prerequisites (e.g., that the rule must exist, or that editing a 'must' rule changes write-time enforcement). The only usage-adjacent content is the patch semantics note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_rulesetUpdate rulesetADestructiveInspect
Rename a ruleset. Attach or detach it with rulesetIds on a workflow connection in update_workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Ruleset. | |
| name | Yes | New Ruleset name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the mutation/safety profile is covered. The description adds the scoping boundary (this tool only renames and does not attach/detach), which is real behavioral context, but it does not explain what happens to an attached ruleset on rename or anything beyond the schema. Adequate for the lowered bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded and no filler, which is well-sized for this tool. The second sentence's phrasing ('Attach or detach it with rulesetIds on a workflow connection in update_workflow') is slightly cryptic about what 'it' refers to, costing a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter mutation with full schema coverage and annotations covering the safety profile, the description supplies the needed scope and cross-tool routing. No output schema exists, and none is expected for a rename, so nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with both parameters (id, name) documented in the schema, so the schema does the heavy lifting. The description adds no format, constraint, or syntax detail beyond what the schema already provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation on a specific resource ('Rename a ruleset'), which usefully narrows the broad 'update' name to its true effect, and it explicitly distinguishes this from the sibling update_workflow by naming it. The only wrinkle is that the second sentence is a redirection rather than a purpose statement, but it still sharpens the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear when-to-use (rename) and an explicit alternative for a related action (attach/detach rulesets via rulesetIds on update_workflow). There is no explicit 'do not use this for X' beyond the redirect, but the alternative is named concretely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_workUpdate workADestructiveInspect
Edit a Work's planning details. Only supplied fields change. batchId deliberately moves a planned Work. status accepts only planned, to send a started Work back to the queue; a Work starts only through begin_work and finishes only through finish_work. In a workflow run, a change to the title, description, labels, size, or Batch is checked as part of that Batch's plan against the rulesets on the connection the run entered Batch on, until one of its Works is done; a Must rule that does not pass refuses the write.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the Work. | |
| size | No | Work size. | |
| title | No | New title. | |
| labels | No | Labels on the Work. | |
| status | No | Only planned, to send a started Work back to the queue. | |
| batchId | No | Batch to move a planned Work to. | |
| description | No | New description. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint/readOnlyHint, but the description adds genuinely new behavioral facts: partial-update semantics ('Only supplied fields change'), that batchId is an intentional relocation, and that title/description/labels/size/Batch edits are validated against the Batch's ruleset with a failed Must rule refusing the write. That is substantial disclosure of mutation behavior and failure modes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and partial-update rule are front-loaded, and each sentence carries content. The final ruleset sentence is dense and syntactically convoluted ('the rulesets on the connection the run entered Batch on'), which slightly hurts readability but not substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no output schema and no nested objects, the description covers purpose, update granularity, parameter intent, the workflow-run validation gate, and the failure outcome. It is nearly complete, with only minor gaps such as behavior of non-Must rule failures and permission/auth requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds intent beyond the schema's terse field docs: batchId 'deliberately moves a planned Work' and status is constrained to a queue-return operation. It does not clarify the enum values for size or label semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Edit a Work's planning details") and immediately carves out scope against the lifecycle siblings by declaring that a Work starts only through begin_work and finishes only through finish_work. An agent can distinguish this from create_work, delete_work, begin_work and finish_work without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative tools (begin_work, finish_work) and the exact condition that selects them, and constrains the status parameter to the single legitimate value 'planned, to send a started Work back to the queue'. This is clear when-to-use and when-not-to-use guidance rather than implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_workflowUpdate workflowADestructiveInspect
Edit one workflow. Pass nodes and edges together to replace its graph, and name or description to change its details; omitted parts stay as they are. Nodes are Start, optional Idea, Batch, optional Delivery, optional Workflow (the step that improves the Workflow itself after a run), and Finish. Start can connect to an existing Batch without Idea, and Batch can connect to Workflow or Finish without Delivery. Start can also connect to Delivery, for a workflow that only creates or adds to a Delivery: Start to Delivery to Finish, or Start to Delivery to Workflow to Finish, with no Batch node. Each edge.data must contain instructionDocumentIds (existing project document IDs) and contextKinds (features and/or dictionary; each adds only a short outline, top-level feature names or dictionary words, that the agent expands with the read tools). edge.data may also carry rulesetIds, an ordered list of the project's ruleset IDs attached to that connection; leaving it out attaches none. Select documents on connections; do not create Instructions, Dictionary, or Features nodes or put text on lines. Updates made during a run's self-improvement stage are described in the report that closes that step. Open runs keep their frozen revision. Graph writes are refused while a vibe coder has the workflow open for editing in the browser, and archived workflows must be restored first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New Workflow name. | |
| edges | No | Replacement connections; pass together with nodes. | |
| nodes | No | Replacement stages; pass together with edges. | |
| projectId | Yes | Id of the Project. | |
| workflowId | Yes | Id of the Workflow. | |
| description | No | New description of the requests it handles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=true; the description adds substantial context beyond that: partial-update semantics (omitted parts stay as they are), the frozen-revision behavior of open runs, self-improvement updates being reported in the closing report, the browser-editing write lock, and the archived-workflow precondition. This is exactly the extra behavioral context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence is front-loaded and every subsequent sentence carries real information (valid connection patterns, edge requirements, preconditions), so it is not padded. It is a single dense block, though, and could be broken into clearer chunks for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex graph-mutating tool with no output schema, the description covers mutation semantics, valid graph shapes, edge data requirements, write-lock behavior, archived-state precondition, and run-revision behavior. An agent has what it needs to invoke this correctly without opening other tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds semantics the schema does not: the meaning of each node kind, which node-to-node connections are valid (e.g. Start to Batch without Idea, Start to Delivery with no Batch), that edge.data must carry instructionDocumentIds and contextKinds, and that rulesetIds is an ordered optional list. This materially shapes how the agent fills nodes/edges.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ("Edit one workflow") and immediately distinguishes this from creation/deletion siblings by describing the graph-replacement and detail-edit modes. An agent can tell what the tool does and how it differs from create_workflow/delete_workflow 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete operating rules: pass nodes and edges together to replace the graph, omit parts to leave them unchanged, and explicit preconditions (graph writes refused while a vibe coder has it open; archived workflows must be restored first). It also states what not to do (don't create Instructions/Dictionary/Features nodes or put text on lines). It stops short of naming specific sibling alternatives for narrower edits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
update_public_delivery_page2 fields changed- changed
Input schema / properties / profile / descriptionPrevious value: -"Other page settings: showDates and social profile URLs."New value: +"Other page settings: showDates, logoAsIcon, and social profile URLs." - added
Input schema / properties / profile / properties / logoAsIconAdded value: +{ + "type": "boolean" +}
2 tool updates
- Changed
create_project1 field changed- removed
Input schema / properties / templateIdRemoved value: -{ - "description": "Id of a project template from list_templates.", - "minLength": 1, - "type": "string" -}
- Removed
list_templates
2 tool updates
- Changed
create_project1 field changed- added
Input schema / properties / templateIdAdded value: +{ + "description": "Id of a project template from list_templates.", + "minLength": 1, + "type": "string" +}
- Added
list_templates
3 tool updates
- Changed
check_rules1 field changed- changed
Input schema / properties / record / oneOfPrevious value: -[ - { - "properties": { - "content": { - "maxLength": 40000, - "type": "string" - }, - "id": { - "minLength": 1, - "type": "string" - }, - "impact": { - "enum": [ - "minor", - "major" - ], - "type": "string" - }, - "kind": { - "const": "idea", - "type": "string" - }, - "summary": { - "maxLength": 2000, - "type": "string" - }, - "title": { - "maxLength": 20, - "type": "string" - } - }, - "required": [ - "kind" - ], - "type": "object" - }, - { - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "kind": { - "const": "batch", - "type": "string" - }, - "name": { - "type": "string" - }, - "works": { - "items": { - "properties": { - "description": { - "maxLength": 40000, - "type": "string" - }, - "labels": { - "items": { - "type": "string" - }, - "type": "array" - }, - "size": { - "enum": [ - "small", - "medium", - "large" - ], - "type": "string" - }, - "title": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "title", - "size" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "kind" - ], - "type": "object" - }, - { - "properties": { - "batchId": { - "minLength": 1, - "type": "string" - }, - "description": { - "maxLength": 40000, - "type": "string" - }, - "id": { - "minLength": 1, - "type": "string" - }, - "kind": { - "const": "work", - "type": "string" - }, - "labels": { - "items": { - "type": "string" - }, - "type": "array" - }, - "size": { - "enum": [ - "small", - "medium", - "large" - ], - "type": "string" - }, - "title": { - "type": "string" - } - }, - "required": [ - "kind" - ], - "type": "object" - }, - { - "properties": { - "batchIds": { - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "id": { - "minLength": 1, - "type": "string" - }, - "kind": { - "const": "delivery", - "type": "string" - }, - "rationale": { - "maxLength": 40000, - "type": "string" - }, - "summary": { - "maxLength": 40000, - "type": "string" - }, - "version": { - "type": "string" - } - }, - "required": [ - "kind" - ], - "type": "object" - } -]New value: +[ + { + "properties": { + "content": { + "maxLength": 40000, + "type": "string" + }, + "id": { + "minLength": 1, + "type": "string" + }, + "impact": { + "enum": [ + "minor", + "major" + ], + "type": "string" + }, + "kind": { + "const": "idea", + "type": "string" + }, + "summary": { + "maxLength": 2000, + "type": "string" + }, + "title": { + "maxLength": 20, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" + }, + { + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "kind": { + "const": "batch", + "type": "string" + }, + "name": { + "type": "string" + }, + "works": { + "items": { + "properties": { + "description": { + "maxLength": 40000, + "type": "string" + }, + "labels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "size": { + "enum": [ + "small", + "medium", + "large" + ], + "type": "string" + }, + "title": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "title", + "size" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "kind" + ], + "type": "object" + }, + { + "properties": { + "batchId": { + "minLength": 1, + "type": "string" + }, + "description": { + "maxLength": 40000, + "type": "string" + }, + "id": { + "minLength": 1, + "type": "string" + }, + "kind": { + "const": "work", + "type": "string" + }, + "labels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "size": { + "enum": [ + "small", + "medium", + "large" + ], + "type": "string" + }, + "title": { + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" + }, + { + "properties": { + "batchIds": { + "items": { + "minLength": 1, + "type": "string" + }, + "type": "array" + }, + "id": { + "minLength": 1, + "type": "string" + }, + "kind": { + "const": "delivery", + "type": "string" + }, + "name": { + "type": "string" + }, + "rationale": { + "maxLength": 40000, + "type": "string" + }, + "summary": { + "maxLength": 40000, + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" + } +]
- Changed
create_delivery3 fields changed- added
Input schema / properties / nameAdded value: +{ + "description": "Delivery name, a free-form label such as 2.4.0.", + "minLength": 1, + "type": "string" +} - removed
Input schema / properties / versionRemoved value: -{ - "description": "Version label, such as 2.4.0.", - "minLength": 1, - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "projectId", - "version", - "summary" -]New value: +[ + "projectId", + "name", + "summary" +]
- Changed
update_delivery2 fields changed- added
Input schema / properties / nameAdded value: +{ + "description": "New Delivery name, a free-form label.", + "minLength": 1, + "type": "string" +} - removed
Input schema / properties / versionRemoved value: -{ - "description": "Version label, such as 2.4.0.", - "minLength": 1, - "type": "string" -}
5 tool updates
- Changed
create_workflow10 fields changed- added
Input schema / properties / edges / items / additionalPropertiesAdded value: +{} - added
Input schema / properties / edges / items / propertiesAdded value: +{ + "data": { + "additionalProperties": {}, + "properties": { + "contextKinds": { + "description": "Outlines added on this connection.", + "items": { + "enum": [ + "features", + "dictionary" + ], + "type": "string" + }, + "type": "array" + }, + "instructionDocumentIds": { + "description": "Ids of the Project's Instructions sent on this connection.", + "items": { + "minLength": 1, + "type": "string" + }, + "type": "array" + }, + "rulesetIds": { + "description": "Ordered ids of the Rulesets checked on this connection.", + "items": { + "minLength": 1, + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "instructionDocumentIds", + "contextKinds" + ], + "type": "object" + }, + "id": { + "description": "Connection id, unique in the Workflow.", + "minLength": 1, + "type": "string" + }, + "source": { + "description": "Id of the node the connection leaves.", + "minLength": 1, + "type": "string" + }, + "target": { + "description": "Id of the node the connection enters.", + "minLength": 1, + "type": "string" + } +} - added
Input schema / properties / edges / items / requiredAdded value: +[ + "id", + "source", + "target", + "data" +] - added
Input schema / properties / edges / items / typeAdded value: +"object" - added
Input schema / properties / edges / maxItemsAdded value: +8 - added
Input schema / properties / nodes / items / additionalPropertiesAdded value: +{} - added
Input schema / properties / nodes / items / propertiesAdded value: +{ + "data": { + "additionalProperties": {}, + "properties": { + "resourceKind": { + "description": "Stage this node stands for.", + "enum": [ + "start", + "idea", + "batch", + "delivery", + "workflow", + "finish" + ], + "type": "string" + } + }, + "required": [ + "resourceKind" + ], + "type": "object" + }, + "id": { + "description": "Node id, unique in the Workflow.", + "minLength": 1, + "type": "string" + }, + "position": { + "description": "Position on the canvas.", + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + }, + "required": [ + "x", + "y" + ], + "type": "object" + } +} - added
Input schema / properties / nodes / items / requiredAdded value: +[ + "id", + "position", + "data" +] - added
Input schema / properties / nodes / items / typeAdded value: +"object" - added
Input schema / properties / nodes / maxItemsAdded value: +6
- Changed
delete_delivery2 fields changed- added
Input schema / properties / confirmNameAdded value: +{ + "description": "The Delivery's exact name, to confirm deletion.", + "minLength": 1, + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "id" -]New value: +[ + "id", + "confirmName" +]
- Changed
delete_project2 fields changed- added
Input schema / properties / confirmNameAdded value: +{ + "description": "The Project's exact name, to confirm deletion.", + "minLength": 1, + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "id" -]New value: +[ + "id", + "confirmName" +]
- Changed
update_public_delivery_page3 fields changed- changed
Input schema / properties / profile / descriptionPrevious value: -"Other page settings: images, dates, and social profile URLs."New value: +"Other page settings: showDates and social profile URLs." - removed
Input schema / properties / profile / properties / coverUrlRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / profile / properties / logoUrlRemoved value: -{ - "type": "string" -}
- Changed
update_workflow10 fields changed- added
Input schema / properties / edges / items / additionalPropertiesAdded value: +{} - added
Input schema / properties / edges / items / propertiesAdded value: +{ + "data": { + "additionalProperties": {}, + "properties": { + "contextKinds": { + "description": "Outlines added on this connection.", + "items": { + "enum": [ + "features", + "dictionary" + ], + "type": "string" + }, + "type": "array" + }, + "instructionDocumentIds": { + "description": "Ids of the Project's Instructions sent on this connection.", + "items": { + "minLength": 1, + "type": "string" + }, + "type": "array" + }, + "rulesetIds": { + "description": "Ordered ids of the Rulesets checked on this connection.", + "items": { + "minLength": 1, + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "instructionDocumentIds", + "contextKinds" + ], + "type": "object" + }, + "id": { + "description": "Connection id, unique in the Workflow.", + "minLength": 1, + "type": "string" + }, + "source": { + "description": "Id of the node the connection leaves.", + "minLength": 1, + "type": "string" + }, + "target": { + "description": "Id of the node the connection enters.", + "minLength": 1, + "type": "string" + } +} - added
Input schema / properties / edges / items / requiredAdded value: +[ + "id", + "source", + "target", + "data" +] - added
Input schema / properties / edges / items / typeAdded value: +"object" - added
Input schema / properties / edges / maxItemsAdded value: +8 - added
Input schema / properties / nodes / items / additionalPropertiesAdded value: +{} - added
Input schema / properties / nodes / items / propertiesAdded value: +{ + "data": { + "additionalProperties": {}, + "properties": { + "resourceKind": { + "description": "Stage this node stands for.", + "enum": [ + "start", + "idea", + "batch", + "delivery", + "workflow", + "finish" + ], + "type": "string" + } + }, + "required": [ + "resourceKind" + ], + "type": "object" + }, + "id": { + "description": "Node id, unique in the Workflow.", + "minLength": 1, + "type": "string" + }, + "position": { + "description": "Position on the canvas.", + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + }, + "required": [ + "x", + "y" + ], + "type": "object" + } +} - added
Input schema / properties / nodes / items / requiredAdded value: +[ + "id", + "position", + "data" +] - added
Input schema / properties / nodes / items / typeAdded value: +"object" - added
Input schema / properties / nodes / maxItemsAdded value: +6
13 tool updates
- Removed
assign_batch_to_delivery - Changed
create_rule3 fields changed- removed
Input schema / properties / rulebookIdRemoved value: -{ - "description": "Id of the Ruleset.", - "minLength": 1, - "type": "string" -} - added
Input schema / properties / rulesetIdAdded value: +{ + "description": "Id of the Ruleset.", + "minLength": 1, + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "rulebookId", - "text" -]New value: +[ + "rulesetId", + "text" +]
- Removed
create_rulebook - Added
create_ruleset - Removed
delete_rulebook - Added
delete_ruleset - Changed
get1 field changed- changed
Input schema / properties / kind / enumPrevious value: -[ - "project", - "batch", - "work", - "delivery", - "delivery_presentation", - "idea", - "dictionary_term", - "info", - "workflow" -]New value: +[ + "project", + "batch", + "work", + "delivery", + "delivery_presentation", + "idea", + "dictionary_term", + "info", + "instruction", + "workflow" +]
- Removed
list_rulebooks - Added
list_rulesets - Changed
reorder1 field changed- changed
Input schema / properties / kind / enumPrevious value: -[ - "project", - "idea", - "batch", - "work", - "instruction", - "info", - "dictionary_term", - "rulebook", - "rule" -]New value: +[ + "project", + "idea", + "batch", + "work", + "instruction", + "info", + "dictionary_term", + "ruleset", + "rule" +]
- Changed
update_delivery4 fields changed- added
Input schema / properties / addBatchIdsAdded value: +{ + "description": "Ready Batches to add.", + "items": { + "minLength": 1, + "type": "string" + }, + "type": "array" +} - removed
Input schema / properties / batchIdsRemoved value: -{ - "description": "Full replacement set of Batches.", - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" -} - added
Input schema / properties / metricsAdded value: +{ + "description": "Optional client measurements, stored on the workflow step this call completes.", + "properties": { + "durationMs": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "inputTokens": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "model": { + "maxLength": 120, + "type": "string" + }, + "outputTokens": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "retryCount": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "toolCallCount": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } + }, + "type": "object" +} - added
Input schema / properties / removeBatchIdsAdded value: +{ + "description": "Batches to take out.", + "items": { + "minLength": 1, + "type": "string" + }, + "type": "array" +}
- Removed
update_rulebook - Added
update_ruleset
25 tool updates
- Added
archive - Removed
archive_delivery - Removed
archive_dictionary_term - Removed
archive_idea - Removed
archive_info - Removed
archive_instruction - Removed
archive_project - Removed
archive_workflow - Added
get - Removed
get_batch - Removed
get_delivery - Removed
get_delivery_presentation - Removed
get_dictionary_term - Removed
get_idea - Removed
get_info - Removed
get_project - Removed
get_work - Removed
get_workflow - Added
unarchive - Removed
unarchive_delivery - Removed
unarchive_dictionary_term - Removed
unarchive_info - Removed
unarchive_instruction - Removed
unarchive_project - Removed
unarchive_workflow
9 tool updates
- Changed
create_dictionary_term1 field changed- changed
Input schema / properties / definition / descriptionPrevious value: -"The approved meaning of the word."New value: +"The approved meaning of the word, with no tables."
- Changed
create_idea1 field changed- changed
Input schema / properties / content / descriptionPrevious value: -"Full detail."New value: +"Full detail, with lists instead of tables."
- Changed
create_info1 field changed- changed
Input schema / properties / content / descriptionPrevious value: -"Full text of the page."New value: +"Full text of the page, with lists instead of tables."
- Changed
create_instruction1 field changed- changed
Input schema / properties / content / descriptionPrevious value: -"Full Instruction text."New value: +"Full Instruction text, with lists instead of tables."
- Changed
update_dictionary_term1 field changed- changed
Input schema / properties / definition / descriptionPrevious value: -"The approved meaning of the word."New value: +"The approved meaning of the word, with no tables."
- Changed
update_features1 field changed- changed
Input schema / properties / changes / descriptionPrevious value: -"Changes to apply in order: add, update, move, or remove."New value: +"Changes to apply in order: add, update, move, or remove; descriptions hold no tables."
- Changed
update_idea1 field changed- changed
Input schema / properties / content / descriptionPrevious value: -"New full detail."New value: +"New full detail, with lists instead of tables."
- Changed
update_info1 field changed- changed
Input schema / properties / content / descriptionPrevious value: -"Full replacement text; an empty string clears it."New value: +"Full replacement text, with lists instead of tables; an empty string clears it."
- Changed
update_instruction1 field changed- changed
Input schema / properties / content / descriptionPrevious value: -"Full replacement text; an empty string clears it."New value: +"Full replacement text, with lists instead of tables; an empty string clears it."
8 tool updates
- Added
archive_info - Added
create_info - Added
delete_info - Added
get_info - Added
list_info - Changed
reorder1 field changed- changed
Input schema / properties / kind / enumPrevious value: -[ - "project", - "idea", - "batch", - "work", - "instruction", - "dictionary_term", - "rulebook", - "rule" -]New value: +[ + "project", + "idea", + "batch", + "work", + "instruction", + "info", + "dictionary_term", + "rulebook", + "rule" +]
- Added
unarchive_info - Added
update_info
77 tool updates
- First observed
archive_delivery - First observed
archive_dictionary_term - First observed
archive_idea - First observed
archive_instruction - First observed
archive_project - First observed
archive_workflow - First observed
assign_batch_to_delivery - First observed
begin_work - First observed
cancel_workflow - First observed
check_rules - First observed
create_batch_plan - First observed
create_delivery - First observed
create_dictionary_term - First observed
create_idea - First observed
create_instruction - First observed
create_project - First observed
create_rule - First observed
create_rulebook - First observed
create_work - First observed
create_workflow - First observed
decline_idea - First observed
delete_batch - First observed
delete_delivery - First observed
delete_delivery_presentation - First observed
delete_dictionary_term - First observed
delete_idea - First observed
delete_instruction - First observed
delete_project - First observed
delete_rule - First observed
delete_rulebook - First observed
delete_work - First observed
delete_workflow - First observed
finish_work - First observed
get_batch - First observed
get_delivery - First observed
get_delivery_presentation - First observed
get_dictionary_term - First observed
get_features - First observed
get_idea - First observed
get_project - First observed
get_project_state - First observed
get_work - First observed
get_workflow - First observed
list_batches - First observed
list_deliveries - First observed
list_dictionary_terms - First observed
list_ideas - First observed
list_projects - First observed
list_rulebooks - First observed
list_workflows - First observed
reorder - First observed
report_problem - First observed
report_workflow_step - First observed
restore_idea - First observed
resume_workflow - First observed
revert_batch - First observed
search_works - First observed
start_workflow - First observed
unarchive_delivery - First observed
unarchive_dictionary_term - First observed
unarchive_instruction - First observed
unarchive_project - First observed
unarchive_workflow - First observed
update_batch - First observed
update_delivery - First observed
update_delivery_presentation - First observed
update_dictionary_term - First observed
update_features - First observed
update_handoff_note - First observed
update_idea - First observed
update_instruction - First observed
update_project - First observed
update_public_delivery_page - First observed
update_rule - First observed
update_rulebook - First observed
update_work - First observed
update_workflow
Publisher details
- Operator
- Pizza Developer
- Operator website
- https://pizzadeveloper.com · Publisher source
- Vendor relationship
- First-party
- Restrictions
- Requires a Pizza Developer account. Every account starts with a free trial, with no payment card needed.
Related MCP Connectors
Your agent ships the app. Alerts, logs, project memory and approval-gated deletes come with it.
Your team's coding agents from any vendor claim work, hand off and prove what shipped, in one room.
Hand tasks, bugs and finished work to AI coding agents, and get back a write-up with evidence.
One shared project for a team's coding agents: decisions, a task board and handoffs.
Related MCP Servers
- AlicenseAqualityAmaintenanceYOUR AGENTS COLLIDE. File a FlightPlan. Run multiple coding agents without them stepping on each other. FlightPlan gives each agent the same preflight picture, lets them coordinate while plans are still cheap to change, and leaves behind what changed and why for whichever agent comes next. Across sessions. Across people. Across providers. Across time. One shared picture.645 PyPI5Apache 2.0
- AlicenseNot gradedqualityBmaintenanceServes instructions and templates that make any AI coding tool plan before building, work through a project checklist in the right order, and hold a consistent standard, while all reading and writing of your code stays on your machine.MIT
- AlicenseNot gradedqualityBmaintenanceConnects Claude Code, Codex, Cursor, and other coding agents to a project's idea, feature topology, and ordered task queue over MCP, so they can answer planning jobs, claim, build, and tick off implementation tasks live in your repository, or assemble a shareable PRD.3 npmMIT
- AlicenseNot gradedqualityCmaintenanceGives AI coding agents native tools to pull their next prioritized, unblocked task with a full briefing (description, acceptance criteria, context files, conventions), comment and tick off criteria with evidence, ask the human decision-maker questions, and submit structured handoffs for review. It lets agents plan epics and sprints, report checks, create new tasks, and release work with checkpoints — all against a self-hosted board rather than files in the repo.4 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.