Approve or reject an improvement
decide_article_improvementApprove or reject an improvement that is waiting for approval.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| siteId | Yes | ||
| decision | Yes | ||
| projectId | Yes | ||
| improvementId | Yes |
decide_article_improvementApprove or reject an improvement that is waiting for approval.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| siteId | Yes | ||
| decision | Yes | ||
| projectId | Yes | ||
| improvementId | Yes |
Changes observed during successful MCP inspections.
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), so the description only needed to add mutation-specific context. It adds none: nothing about whether the decision is reversible, whether approving triggers the improvement to be applied, what happens to the reason field, or any permission requirements. For a write/decision tool this is a real 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?
A single front-loaded sentence with zero padding or redundancy. It is efficient, though its brevity is a symptom of under-specification rather than disciplined concision.
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 5-parameter mutation tool with no output schema, no parameter descriptions, and no meaningful annotation beyond safety flags. The description leaves the agent without the field semantics, side effects, or state transitions it needs to invoke this confidently, especially versus its many look-alike siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description carries the full burden of explaining projectId, siteId, improvementId, decision, and reason. It mentions none of them, including whether reason is optional or what the approved/rejected enum implies operationally. Only the schema's own enum and required list give the agent anything to work with.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete verb pair (approve/reject) and the resource (an improvement), so the action is unambiguous. However, it never differentiates itself from the dense sibling set of near-identical decision tools (decide_article, decide_content_brief, decide_content_plan) or from dismiss_article_improvement and apply_article_improvement, which also act on improvements. Clear but not sibling-distinguishing.
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 only usage signal is the state condition 'waiting for approval', which is close to restating the tool's purpose rather than guidance. There is no indication of when to choose this over dismiss_article_improvement, apply_article_improvement, or the other decide_* tools, and no prerequisites or ordering information. Essentially no routing guidance despite a crowded sibling namespace.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.