Skip to main content
Glama

SelieeAI

Set Customer Contract Status

set_customer_contract_status
DestructiveIdempotent

[write] Move a contract (contract_id or contract_uuid) on the board: DRAFT | SENT | REVISION | ACCEPTED | REJECTED. Use ACCEPTED / REJECTED / REVISION only when the customer said so in the conversation; put what they said in note.

Input Schema

NameRequiredDescriptionDefault
noteNo
statusYes
contract_idNo
contract_uuidNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already disclose write/destructive/idempotent semantics, but the description adds genuine context beyond them: the leading [write] tag, the required note-provenance discipline, and the state-change constraints. It stops short of saying whether a status change fires notifications or how invalid transitions behave.

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

Conciseness5/5

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

Two sentences, front-loaded with the write tag and the resource, then the status vocabulary, then the usage constraint. No filler and nothing buried.

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

Completeness4/5

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

For a 4-param mutation tool with no output schema and no parameter descriptions, the description covers targeting, valid values, and note semantics well. Minor gaps remain: what happens when no contract id is supplied, and whether a note is mandatory for REVISION/REJECTED.

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

Parameters5/5

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

Schema coverage is 0% and there are no enums in the schema, so the description carries the full burden — and it does: it spells out the five legal status values, names contract_id or contract_uuid as the target identifiers, and explains note's purpose ('put what they said in note'). All four parameters gain meaning beyond the bare schema.

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

Purpose5/5

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

States a concrete verb-plus-resource ('Move a contract ... on the board') and enumerates the exact board states (DRAFT | SENT | REVISION | ACCEPTED | REJECTED). Those contract-specific states make it clearly distinct from sibling status setters like set_customer_invoice_status and set_customer_proposal_status without needing to name them.

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

Usage Guidelines4/5

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

Gives an explicit decision rule: use ACCEPTED / REJECTED / REVISION only when the customer actually said so in the conversation, and record it in note. That tells the agent when to pick those states versus the others. It does not name an alternative tool or an exclusion case, so it falls just short of the top bar.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.