Skip to main content
Glama
Cuvara

game-art-mcp

by Cuvara

game-art-mcp

AI-driven pixel-art style system and MCP server for 2D RPG game art direction.

Purpose

This repository is the source of truth for the project's art direction. Any AI agent can enter this repository, query the project context via MCP, and understand exactly what "our art style" means — without relying on conversation history.

Related MCP server: Aseprite MCP Server

Architecture

game-art-mcp/
├── project.yaml              # Project config: which style is active
├── style/                    # Version-controlled style definitions
│   └── fantasy_pixel_v1/     # Style v1 (YAML rules + style bible)
├── registry/                 # Asset registry storage
│   ├── assets/               # One YAML file per registered asset
│   └── registry.yaml         # Auto-generated index of all assets
├── memory/                   # Art Memory storage (Phase 3)
│   ├── anchors/              # Style anchor YAML files
│   ├── references/           # Approved reference YAML files
│   ├── rejections/           # Rejection records
│   ├── decisions/            # Art decision records (ADR format)
│   ├── history.yaml          # Style version evolution log
│   └── memory.yaml           # Auto-generated memory index
├── src/
│   ├── style/                # Models, loader, validator
│   ├── assets/               # Asset registry (models + service)
│   │   ├── models/           # Zod schemas + TypeScript types
│   │   └── registry/         # AssetRegistry service (CRUD + query)
│   ├── memory/               # Art Memory (models, service, resolver)
│   │   ├── models/           # Zod schemas for anchors, references, rejections, decisions
│   │   ├── service/          # ArtMemoryService (CRUD + index)
│   │   └── resolver/         # ReferenceResolver (deterministic lookup)
│   ├── qa/                   # Art QA engine (Phase 4)
│   │   ├── models/           # QA types, report schema, rule interface
│   │   ├── rules/            # 13 deterministic rules (7 categories)
│   │   ├── runner/           # QARunner orchestrator
│   │   └── history/          # QA history persistence
│   ├── providers/            # Provider Adapters (Phase 5)
│   │   ├── models/           # ProviderAdapter interface, types, error codes
│   │   ├── adapters/         # Adapter implementations (mock-provider)
│   │   ├── registry/         # ProviderRegistry (adapter lookup + capabilities)
│   │   ├── gateway/          # ProviderGateway (dispatch + artifact storage)
│   │   └── artifacts/        # ArtifactStore (immutable provenance)
│   ├── production/           # Production Orchestrator (Phase 6)
│   │   ├── models/           # Types, state machine, error codes
│   │   ├── orchestrator/     # ProductionOrchestrator (coordinator)
│   │   └── store/            # ProductionStore (YAML manifest persistence)
│   ├── versioning/           # Versioning & Approval (Phase 7)
│   │   ├── models/           # Types, lifecycle states, error codes
│   │   └── services/         # VersioningService (approval, versioning, promotion, audit)
│   ├── context/              # ArtContextService
│   └── mcp/                  # MCP server + tools
│       └── tools/            # art-tools.ts, asset-tools.ts, memory-tools.ts, qa-tools.ts, provider-tools.ts, production-tools.ts, versioning-tools.ts
├── tests/                    # Unit + integration tests
└── docs/                     # Architecture, style system, phases

Quick Start

npm install
npm run build
npm test

Run MCP Server

npm start
# or with custom root:
ART_MCP_ROOT=/path/to/project npm start

Validate Style

npm run validate

MCP Tools

Style Tools (read-only)

Tool

Description

art.get_project_context

Full art context (project + style + all rules)

art.get_style

Active style definition

art.get_style_rules

Specific rule category (pixel_language, outline, etc.)

art.get_palette

Color palette with semantic roles

art.validate_style

Validate style configuration

Asset Tools (read + write)

Tool

Description

art.asset.get

Get asset by ID

art.asset.find

Search/filter assets (type, category, status, tags)

art.asset.exists

Check whether an asset ID is registered

art.asset.register

Register a new asset with full validation

art.asset.update

Update an existing asset (partial patch)

art.asset.deprecate

Mark an asset as deprecated

art.asset.archive

Archive an asset

art.asset.rebuild_index

Rebuild the registry index from asset files

Memory Tools (read + write)

Tool

Description

art.memory.get_summary

Memory overview: anchors, decisions, rejections, reference count

art.memory.explain_style

Full style explanation with rules, anchors, decisions, avoidances

art.memory.resolve_references

Deterministic reference lookup for a given context

art.memory.get_anchor

Get a style anchor by ID

art.memory.find_anchors

Search anchors (category, status, dimension filters)

art.memory.add_anchor

Add a new style anchor

art.memory.get_reference

Get an approved reference by ID

art.memory.find_references

Search references (role, status, asset_id filters)

art.memory.add_reference

Add a new approved reference

art.memory.get_rejection

Get a rejection record by ID

art.memory.find_rejections

Search rejections (type, status, reason filters)

art.memory.add_rejection

Add a new rejection record

art.memory.get_decision

Get an art decision by ID

art.memory.find_decisions

Search decisions (status filter)

art.memory.add_decision

Add a new art decision

art.memory.get_style_history

Get the full style evolution history

QA Tools (read-only)

Tool

Description

art.qa.asset

Run QA checks on a single asset (full report)

art.qa.batch

Run QA checks on multiple assets (batch report)

art.qa.gate

QA gate check — pass/fail verdict for approval workflows

art.qa.list_rules

List all available QA rules with definitions

art.qa.rule

Get the full definition of a specific QA rule by ID

art.qa.explain_failure

Explain why a specific rule failed for an asset

art.qa.history

Get QA run history, optionally filtered by asset ID

Provider Tools (read + write)

Tool

Description

art.provider.list

List all registered providers with metadata

art.provider.get

Get detailed metadata for a specific provider

art.provider.capabilities

Get provider capabilities (operations, formats, limits)

art.provider.health

Check provider health status

art.provider.execute

Execute an art generation operation via a provider

art.provider.cancel

Cancel a running provider operation

art.provider.operation

Get operation status by ID

art.provider.artifact

Get artifact details and provenance by ID

Production Tools (read + write)

Tool

Description

art.production.plan

Create a production plan (preview before executing)

art.production.create

Create a production job (plan + persist, does not start)

art.production.start

Start executing a production job

art.production.status

Get current job status (summary)

art.production.inspect

Get full job details (events, attempts, plan)

art.production.resume

Resume a failed job

art.production.cancel

Cancel a running job

art.production.attempts

Get attempt history for a job

art.production.approve

Approve a job awaiting approval

art.production.list

List all production job IDs

Versioning Tools (read + write)

Tool

Description

art.asset.current

Get the canonical (current) version of an asset

art.asset.inspect_version

Get details of a specific asset version

art.asset.history

Get the full version history of an asset

art.asset.compare

Compare two versions of the same asset

art.asset.provenance

Get version provenance including approval record

art.asset.approval.request

Request approval for a candidate asset

art.asset.approval.inspect

Get an approval record by ID

art.asset.approve

Approve a candidate asset

art.asset.reject

Reject a candidate asset

art.asset.request_changes

Request changes on a candidate asset

art.asset.promote

Promote an approved candidate to canonical version

art.asset.rollback

Rollback canonical to a previous version

art.asset.archive_version

Archive a canonical asset

Style and QA tools are read-only. Asset, memory, provider, production, and versioning tools support both reads and writes.

Asset Registry

The Asset Registry (Phase 2) tracks every art asset in the project with structured metadata. Assets are stored as individual YAML files in registry/assets/ and indexed in registry/registry.yaml.

Key features:

  • Semantic IDs — dot-separated lowercase (e.g. character.goblin.001)

  • Style linkage — every asset references a style ID + version

  • Relationshipsvariant_of, derived_from, animation_of, etc.

  • Status tracking — draft, approved, rejected, deprecated, archived

  • Full validation — schema, style reference, source file existence, relationships

See docs/ASSET-REGISTRY.md for full documentation and docs/ASSET-METADATA.md for the metadata schema.

Art Memory

The Art Memory system (Phase 3) gives the repository persistent visual knowledge. It remembers what was approved, what was rejected, and why — so agents don't need conversation history to understand the project's art direction.

Key concepts:

  • Style Anchors — canonical visual examples that define the style (see docs/STYLE-ANCHORS.md)

  • Approved References — trusted assets with roles and dimensions

  • Rejections — what does NOT fit, with controlled vocabulary of reasons

  • Art Decisions — ADR-format records of visual direction choices (see docs/ART-DECISIONS.md)

  • Reference Resolver — deterministic lookup returning relevant context for any creation task

See docs/ART-MEMORY.md for full documentation.

Art QA

The Art QA system (Phase 4) provides deterministic, reproducible quality gates for pixel-art assets. Every check is rule-based with expected/actual values and structured remediation — no AI vision, no embeddings, no auto-repair.

Key concepts:

  • 13 rules across 7 categories (technical, dimensions, palette, alpha, pixel, style, memory)

  • 3 profiles — strict (fail on warning), default (fail on error), lenient (fail on critical only)

  • Machine-readable reports — JSON with per-rule results, severity, remediation

  • Style integration — reads canvas sizes, palette limits, pixel rules from active style

  • Memory integration — checks rejected directions and accepted art decisions

  • QA Gate — pass/fail verdict for CI and approval workflows

  • QA History — persistent log of all runs per asset

See docs/ART-QA.md for full documentation.

Provider Adapters

The Provider Adapter system (Phase 5) adds a provider-agnostic interface to external art generation tools. Requests flow through a gateway that validates operations, delegates to registered adapters, and stores generated artifacts with immutable provenance.

Key concepts:

  • ProviderAdapter interface — metadata, capabilities, health, execute, cancel

  • Artifacts — raw provider output with immutable provenance (not yet assets)

  • Capabilities — per-operation detail (formats, max resolution)

  • Dry-run — validate requests without generating output

  • Mock Provider — built-in test adapter with failure/timeout modes

  • No automatic selection — agents must explicitly choose a provider

See docs/PROVIDERS.md for full documentation.

Production Orchestrator

The Production Orchestrator (Phase 6) coordinates the full art asset generation lifecycle: request validation, style/reference/provider resolution, execution, QA, retry, and approval gating.

Key concepts:

  • Coordinator, not source of truth — delegates to style, QA, providers, and registry

  • State machine — 9 statuses with validated transitions (created through completed/failed/cancelled)

  • 11 production stages — REQUEST_VALIDATION through APPROVAL_GATE

  • Bounded retry — configurable max_attempts (default 3) with repair plans on QA failure

  • Approval boundary — stops at awaiting_approval, never auto-approves

  • Plan staleness — detects style version drift before execution

  • YAML persistence — one manifest.yaml per job in production/<job_id>/

  • Event history — append-only log of all state changes per job

See docs/PRODUCTION.md for full documentation.

Versioning & Approval

The Versioning & Approval system (Phase 7) adds immutable asset versioning, explicit approval workflows, and a full audit trail. No version is ever deleted; no asset is ever auto-approved.

Key concepts:

  • Asset lifecycle — 8 states: draft, pending_approval, approved, rejected, changes_requested, promoted, superseded, archived

  • Approval workflow — request, approve, reject, request_changes with structured feedback

  • Approval policy — configurable: requires_qa_pass, allow_agent_approval, requires_human

  • Immutable versions — monotonic increment, parent tracking, full provenance per version

  • Canonical pointer — tracks which version is current; updated on promotion/rollback

  • Promotion — compare-and-swap with QA gate and approval gate

  • Rollback — repoints canonical to a previous version, never deletes history

  • Audit log — 9 event types, append-only, immutable

  • Actor identity — human, agent, system, provider tracked on every record

See docs/VERSIONING.md for full documentation.

Current Phase

Phase 7 — Versioning & Approval (complete)

See docs/PHASES.md for the full roadmap.

Style System

Styles are structured YAML files representing machine-readable art direction:

  • style.yaml — identity, canvas sizes, scaling

  • palette.yaml — colors with semantic roles

  • pixel-rules.yaml — pixel-art constraints

  • outline.yaml — outline rules

  • shape-language.yaml — visual language

  • lighting.yaml — light direction and rules

  • animation.yaml — frame counts, FPS, constraints

See docs/STYLE-SYSTEM.md for details.

Available Tools

126 tools
art.aseprite.exportB

Export a canvas session to Aseprite format. Saves the canvas as PNG and generates the Aseprite CLI command to convert it. Commands are returned for external execution.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesCanvas session ID
output_nameNoOutput file base name (default: session ID)

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description must disclose behavior, and it does add a key fact: the tool saves a canvas as PNG and returns a CLI command for external execution rather than performing the conversion itself. However, it does not describe side effects (where the PNG is saved, whether the session is modified), prerequisites, or failure modes, leaving significant 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.

Conciseness4/5

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

The description is short with no wasted words and front-loads the export purpose before the mechanism. The first and second sentences are slightly redundant in saying Aseprite conversion twice, but overall the structure is efficient.

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

Completeness2/5

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

There is no output schema, yet the description only says commands are returned without stating their format or how the agent should execute them. Given that external execution is the core behavior, an agent needs more detail about the returned command structure and expected follow-up actions.

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

Parameters3/5

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

Schema coverage is 100%, so session_id and output_name are already documented in the input schema. The description adds no additional meaning about these parameters, which is acceptable but means it earns only the baseline score.

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

Purpose4/5

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

The description names a concrete action and resource: exporting a canvas session to Aseprite format, and it clarifies the mechanism (saving PNG and producing an Aseprite CLI command). This makes it distinguishable from the other art.aseprite.* siblings (validate, spritesheet, layers). There is minor ambiguity because the first sentence implies a direct .aseprite export while the following sentence reveals the tool only returns a conversion command.

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

Usage Guidelines2/5

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

The description does not say when to choose this tool over art.aseprite.spritesheet, art.aseprite.layers, or the many asset/canvas export tools. It only implies usage via the purpose statement and the note that commands are returned for external execution, which is not enough guidance for an agent choosing among siblings.

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

art.aseprite.layersA

Generate a Lua script and Aseprite command to set up standard layer structure. Writes the script to disk and returns the command to execute it.

ParametersJSON Schema
NameRequiredDescriptionDefault
layersNoLayer names (bottom to top). Default: Outline, Base, Shadow, Detail, Effects
session_idYesCanvas session ID

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does disclose two important behaviors: it writes the script to disk and it only returns the command rather than executing it. It does not specify file paths, overwrite behavior, or permissions, which keeps it from a 5.

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

Conciseness5/5

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

Two sentences with no filler; the first names the deliverable and the second states side effect and return value. Every clause earns its place and key facts are front-loaded.

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 simple two-parameter tool with full schema coverage, the description covers purpose, side effect, and return behavior. It is slightly incomplete on usage context and the generated script's details, but nothing critical is missing for calling it.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents session_id and layers, including the defaults and bottom-to-top order. The description adds little parameter-specific meaning beyond tying layers to the 'standard layer structure'.

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

Purpose5/5

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

The description uses a specific verb ('Generate') and resource ('standard layer structure'), and states the output is a Lua script plus an Aseprite command. This clearly separates it from sibling Aseprite tools like export, spritesheet, and validate.

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

Usage Guidelines3/5

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

The intended use is implied by 'set up standard layer structure', but the description gives no explicit when-to-use guidance or alternatives. It does not mention when not to use it or distinguish it from canvas/layer setup siblings.

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

art.aseprite.spritesheetB

Generate a spritesheet export command for a canvas session. The canvas PNG is saved and a CLI command is returned to produce a packed spritesheet via Aseprite.

ParametersJSON Schema
NameRequiredDescriptionDefault
columnsNoNumber of columns in spritesheet (default: 4)
paddingNoPadding between cells in pixels (default: 0)
session_idYesCanvas session ID

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does disclose a side effect ('The canvas PNG is saved') and clarifies that a CLI command is returned rather than executed. However, it omits details such as where the PNG is saved, whether files are overwritten, whether the command must be run separately, and what the command actually looks like.

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

Conciseness5/5

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

The description is two concise sentences with no filler. The primary action and resource are front-loaded, and the most important behavioral detail—that this returns a CLI command—is included immediately.

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

Completeness3/5

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

The tool is relatively simple and the schema covers parameters, but there is no output schema and no annotations. The description explains the basic return concept ('a CLI command is returned') but not the command format, the relationship between the saved PNG and the command, or any prerequisites such as an existing canvas session. These are clear gaps for an agent trying to invoke the tool correctly.

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

Parameters3/5

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

The input schema already describes all three parameters with 100% coverage, including defaults, ranges, and descriptions. The tool description adds no additional parameter semantics beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action and resource: 'Generate a spritesheet export command for a canvas session.' It also explains the two key outcomes: the canvas PNG is saved and a CLI command is returned. It is distinct enough from siblings like art.aseprite.export because it emphasizes command generation rather than direct export, though it does not explicitly name alternatives.

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

Usage Guidelines2/5

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

The description gives no explicit guidance about when to use this tool versus art.aseprite.export, art.aseprite.layers, or other Aseprite-related tools. There are no stated prerequisites, exclusions, or alternative conditions. Usage context is only implied by the purpose statement, not explained.

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

art.aseprite.validateB

Generate a validation Lua script and Aseprite command to check sprite constraints (palette size, dimensions). Writes the script to disk and returns the command.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYesExpected sprite width in pixels
heightYesExpected sprite height in pixels
max_colorsYesMaximum allowed palette colors
session_idYesCanvas session ID

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden and does disclose the key side effect (writes script to disk) and the return value (returns the command). However, it leaves ambiguous whether the tool actually executes the validation or only produces the command for the caller to run, and whether the session/canvas is modified.

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 with zero filler. The generating action is front-loaded, and the second sentence efficiently packages the side effect and the return value without redundancy.

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

Completeness3/5

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

Reasonable for a simple 4-parameter tool with full schema coverage, but with no annotations and no output schema the description leaves material questions open: whether validation actually runs or just yields a command string, and where the script is written. An agent cannot tell if the returned command must be executed separately.

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

Parameters3/5

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

All four parameters already have schema descriptions (100% coverage), so the baseline is 3. The description's 'palette size, dimensions' merely restates what max_colors/width/height convey, adding no genuinely new parameter semantics.

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

Purpose4/5

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

The description uses a specific verb ('Generate') with a specific resource (validation Lua script and Aseprite command) and names the check targets (palette size, dimensions). Its subject matter clearly slots it apart from art.validate_style and art.tilemap.validate, though it never names a sibling explicitly to earn a 5.

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

Usage Guidelines2/5

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 art.tilemap.validate or art.validate_style, and no preconditions (e.g., Aseprite availability, session state) are stated. The clause 'to check sprite constraints' restates the purpose rather than providing usage context.

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

art.asset.approval.inspectB

Get an approval record by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_idYesApproval record ID

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden for behavioral disclosure. The description states it's a 'Get' operation, implying read-only, but does not disclose whether it returns full record details, partial information, or if it requires special permissions. For a simple read-by-ID tool, this is adequate but sparse, missing any mention of error behavior or returned data shape.

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

Conciseness4/5

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

The description is a single, clear sentence that is appropriately concise and front-loaded with the core action. It does its job without fluff or redundancy.

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

Completeness3/5

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

With a single parameter, no output schema, and no annotations, the description is reasonably complete for a simple fetch-by-ID tool. However, it lacks information about what the response contains or whether the tool is restricted to certain approval states, which could matter for an agent deciding whether to call it.

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

Parameters3/5

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

The schema description covers 100% of the single parameter, describing 'approval_id' as 'Approval record ID'. The description adds minimal value beyond this, but since coverage is high, the baseline is 3. No additional semantic detail about the ID format (e.g., UUID, numeric) is provided in the description.

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

Purpose4/5

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

The description 'Get an approval record by ID' uses a specific verb ('Get') and specifies the resource ('approval record') and the lookup key ('by ID'). It clearly distinguishes this from other asset approval tools like art.asset.approve or art.asset.approval.request, which perform different actions. It doesn't explicitly contrast with siblings, but the purpose is unambiguous.

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

Usage Guidelines3/5

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

The description implies usage: use this when you have an approval record ID and need its details. It doesn't provide explicit context on when to prefer this over art.asset.approve or art.qa.history, but the name and description make it reasonably clear this is a read-only inspection tool. No exclusions or alternatives are named.

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

art.asset.approval.requestC

Request approval for a candidate asset.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorYesRequesting actor
styleYesStyle reference
asset_idYesAsset identifier
artifact_idNoArtifact identifier
qa_snapshotNoQA snapshot at request time
candidate_idYesCandidate identifier
production_job_idNoProduction job ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for disclosing behavioral aspects. It only states 'Request approval', which is a side-effectful action that likely creates a pending approval record or triggers a workflow. It does not disclose what happens after the request: whether it blocks, notifies human approvers, or returns a decision. The description is minimal but not contradictory.

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

Conciseness4/5

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

The description is a single concise sentence, which is efficient for a tool with clear semantics. However, given the complexity of the tool (7 parameters, nested objects), the brevity could be a trade-off; it's under-specified but not verbose. It earns a 4 for being front-loaded and to-the-point.

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

Completeness2/5

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

Given the tool's complexity (7 parameters, nested objects) and lack of annotations or output schema, the description does not provide enough context for an agent to understand the full purpose of the request, such as what constitutes a candidate asset, the role of the style, or the expected outcome. The description is too brief to be complete for a side-effectful operation.

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

Parameters3/5

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

While the schema description coverage is 100%, the description does not add any additional meaning to the parameters beyond the schema. The schema already names fields like asset_id, candidate_id, style, and actor, but the description does not explain how they relate to the approval request (e.g., that candidate_id likely refers to the generated asset version being submitted for approval). The description adds little value beyond the schema, so a baseline of 3 is appropriate.

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

Purpose4/5

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

The description 'Request approval for a candidate asset' clearly identifies the action (request approval) and the resource (candidate asset), distinguishing it from related tools like 'art.asset.approve' (which approves) and 'art.asset.reject' (which rejects). However, it doesn't explicitly differentiate between requesting approval versus directly approving, which could be slightly ambiguous.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'art.asset.approve' or 'art.asset.request_changes'. The description does not state that this is for initiating an approval workflow rather than finalizing it, nor does it mention any prerequisites such as passing QA or the need for a style reference.

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

art.asset.approveC

Approve a candidate asset.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorYesApproving actor
reasonNoApproval reason
approval_idYesApproval record ID

TDQS

C2.8/5.0
Behavior1/5

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

No annotations are provided, so the description must carry the full behavioral disclosure burden. The phrase 'Approve a candidate asset' merely restates the tool's function without revealing side effects, reversibility, permissions required, or downstream consequences. This is a tautological description that adds no behavioral information beyond what the name implies.

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

Conciseness4/5

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

The description is a single, short sentence with no wasted words, which is appropriately concise. It is front-loaded with the core action, but its brevity borders on under-specification; still, for what it does state, it is efficiently structured.

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

Completeness1/5

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

For a mutation tool with no annotations, no output schema, and a potentially impactful approval action, the description is severely incomplete. It fails to mention what happens upon approval, whether the asset is promoted, if subsequent steps are triggered, or any conditions that should gate the call. The one-line description leaves the agent without essential operational context.

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

Parameters3/5

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

Schema coverage is 100% and each parameter (actor, reason, approval_id) already has a description in the schema, so the description does not need to repeat them. The description adds no extra meaning about parameter usage, but the high coverage justifies a baseline score of 3.

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

Purpose5/5

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

The description states a specific verb ('Approve') and a specific resource ('a candidate asset'), making the action unambiguous. It clearly distinguishes from sibling tools like art.asset.reject and art.asset.request_changes, so an agent can tell them apart immediately without inspecting schemas.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as reject or request_changes. The description provides no context about the approval workflow, prerequisites, or criteria that should be met before calling it, leaving the agent to infer usage from the name alone.

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

art.asset.archiveB

Archive an asset (remove from active use).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset ID to archive

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It reveals the core effect ('remove from active use') but does not mention reversibility, side effects, required permissions, or what happens to asset versions. This is adequate for a simple operation but leaves meaningful gaps.

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

Conciseness5/5

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

The description is a single, focused sentence that clearly defines the operation and its effect. There is no fluff, and the parenthetical adds necessary clarification without redundancy.

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 single-parameter mutation tool with no output schema, the description covers the essential invocation details. It lacks usage guidance and behavioral nuance, but the operation is simple enough that an agent can call it with just the id and a reasonable understanding of the action.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter, so the schema already documents its meaning. The description's 'Asset ID to archive' adds no new semantic detail beyond the schema, matching the baseline.

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

Purpose4/5

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

The description uses a specific verb ('Archive') and resource ('asset'), and clarifies the meaning with 'remove from active use.' It is clear but does not explicitly distinguish itself from siblings like art.asset.archive_version or art.asset.deprecate, though the parenthetical helps.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives such as art.asset.archive_version, art.asset.deprecate, or art.asset.update. The description only states what the tool does, leaving the agent to infer selection criteria.

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

art.asset.archive_versionC

Archive a canonical asset, removing it from active use.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorYesActor performing archive
asset_idYesAsset identifier

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose side effects itself; it states that the asset is removed from active use but omits whether this is reversible, whether it affects only the canonical version, what happens to references, or whether special actor permissions are required.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. It conveys the core action and consequence efficiently.

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

Completeness2/5

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

For a mutating archive operation with no annotations and no output schema, the description is under-specified: it lacks version semantics, reversibility, return behavior, and selection criteria. The presence of sibling archive/deprecate tools makes this ambiguity more costly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline applies. The description adds no parameter-level meaning beyond the schema and does not clarify how asset_id identifies the canonical asset or how the actor object is used.

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

Purpose4/5

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

The description names a specific action ('Archive') and a clear outcome ('removing it from active use'), so an agent understands the core operation. However, it does not differentiate this tool from the sibling art.asset.archive or art.asset.deprecate, and the phrase 'canonical asset' leaves the version-specific behavior implied by the tool name unclear.

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

Usage Guidelines2/5

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

No guidance is given about when to call archive_version versus art.asset.archive, art.asset.deprecate, promote, or rollback. The only usage signal is the generic purpose statement, which does not state exclusions, prerequisites, or alternatives.

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

art.asset.compareB

Compare two versions of an asset.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesAsset identifier
version_aYesFirst version
version_bYesSecond version

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Compare' suggests a read-only operation, but the description does not explicitly state that it produces no side effects, whether it requires any particular permissions, or what happens if the versions are identical. It doesn't describe the output format (e.g., a diff, a similarity score, a list of changes). For a tool with no annotation coverage, this is a significant gap, but the verb 'compare' does give some hint of non-mutating behavior.

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

Conciseness4/5

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

The description is a single, concise sentence that front-loads the primary verb and resource. There's no unnecessary fluff or repetition of the tool name. It earns a high score for being efficient, though it could arguably include a bit more context within that sentence.

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

Completeness3/5

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

Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is relatively minimal. It tells you what it does, but doesn't explain what 'compare' means operationally—does it return a diff, a list of changed fields, a boolean? With no output schema and no annotations, an agent might be unsure what to expect. The description is functional but incomplete for a tool that could have nuanced behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are described in the schema: asset_id, version_a, version_b. The description doesn't add additional context beyond what the schema provides, but given full coverage, the baseline is 3. There's no extra info like how the IDs are formatted or how version numbers should be ordered, but the schema handles the core semantics.

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

Purpose4/5

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

The description states a clear verb+resource: 'Compare two versions of an asset.' It conveys the specific action of comparing versions, which is distinguishable from siblings like art.asset.get, art.asset.history, or art.asset.inspect_version. However, it doesn't explicitly differentiate itself from those siblings in the description text itself, so it doesn't quite reach a 5.

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

Usage Guidelines3/5

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

The tool name and description imply a usage context: when you need to compare two versions of an asset. But there is no explicit guidance on when to use this versus alternatives like art.asset.history (which might list all versions), art.asset.inspect_version (which might show a single version), or art.asset.current. The description is minimal and leaves the when-to-use distinction to inference.

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

art.asset.currentB

Get the canonical (current) version number of an asset.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesAsset identifier

TDQS

B3.1/5.0
Behavior2/5

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

No annotations exist, so the description carries the full disclosure burden. The one-liner is nearly a restatement of the name '+ asset' and only clarifies that the return value is the version number, not the wrapped resource. It stops short of describing what happens for missing/invalid assets, whether the return is a plain value versus a structured object, or how 'current' interacts with archive/deprecate state. It isn't a tautology, but it does the bare minimum.

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

Conciseness5/5

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

One tightly scoped sentence, front-loaded with the verb, zero filler. Every word earns its place, and the key qualifier 'canonical (current)' is placed where it's most visible. This is exactly how a tool at this complexity level should be written.

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

Completeness3/5

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

For a trivial 1-parameter read with no output schema, the contract 'asset_id in, version number out' is marginally adequate. The main gap is the return type (a bare number vs. '1.4.2' vs. an object with metadata), which becomes agent-visible ambiguity. Given the untapped opportunity in the sibling graph, this stops just short of complete.

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

Parameters3/5

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

Schema coverage is 100% ('Asset identifier' is self-explanatory for asset_id). The description adds no parameter detail and doesn't need to. The baseline-3 applies: the structured field fully documents the parameter, and no additional semantics (formats, allowed values, side effects on the resource) are omitted.

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

Purpose4/5

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

"Get the canonical (current) version number of an asset" uses a specific verb and resource. The qualification "canonical (current)" meaningfully narrows the scope to the version number rather than the asset object. However, it doesn't distinguish itself from the dense sibling cluster (art.asset.get, art.asset.inspect_version, art.asset.history), so an agent still has to guess how this differs from those.

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

Usage Guidelines2/5

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

No guidance is offered at all. With 60+ siblings and at least 4-5 plausible alternatives in the same namespace (get, inspect_version, exists, history, compare), the description should say when this read-most-likely-cheap call is preferred over art.asset.get, which returns the full asset. No alternative or exclusion is mentioned, forcing the agent to infer scope.

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

art.asset.deprecateC

Mark an asset as deprecated.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset ID to deprecate

TDQS

C2.6/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Mark an asset as deprecated', which implies a state change but does not explain consequences (e.g., whether it affects references, is reversible, requires permissions, or returns a confirmation). This is a significant gap for a mutation tool.

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

Conciseness4/5

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

The description is a single sentence with no fluff, and it is front-loaded with the action. It is appropriately brief for a simple operation, though it might be considered under-specified. It earns its place without unnecessary detail.

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

Completeness1/5

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

Given the tool has no annotations and only a terse description, it is incomplete. An agent cannot tell when to use deprecate over sibling tools like archive or update, nor what the behavioral outcome will be. The output schema is absent, so the response format is unknown. This is a substantial deficiency.

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

Parameters3/5

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

The schema covers the single parameter 'id' fully, so the baseline is 3. The description does not add any extra meaning beyond what the schema provides, such as format, constraints, or examples. It neither improves nor degrades the schema's clarity.

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

Purpose4/5

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

The description clearly states the action 'Mark an asset as deprecated' with a specific resource. It is unambiguous, but it does not differentiate from similar sibling tools like art.asset.archive or art.asset.update, which could also change an asset's state.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. No mention of prerequisites, side effects, or conditions like 'use this instead of archive when the asset is no longer in use but should remain discoverable'. The description only states the action without contextual advice.

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

art.asset.existsA

Check whether an asset with the given ID exists in the registry.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset ID to check

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. 'Check whether... exists' conveys a read-only, side-effect-free predicate operation rather than a mutation of registry data. For such a simple existence check, this level of behavioral disclosure is sufficiently clear, even though it does not spell out response format or edge cases like 'returns false for missing ID.'

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

Conciseness5/5

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

One sentence with no wasted words. The operation is front-loaded, the resource is stetted immediately after, and every word contributes to understanding. This is concise to be model-parseable in a tool list.

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 single-parameter, side-effect-free existence predicate, the description is essentially complete: the parameter is fully documented by schema, and 'check whether it exists' naturally implies a boolean/presence outcome. An explicit 'returns true if the asset exists, false otherwise' would be marginally more precise given there is no output schema, but it is not missing for high-confidence invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents 'id' as 'Asset ID to check.' The description merely refers to 'the given ID' and adds no extra format, validation, or usage details beyond the schema, meaning it meets the baseline but does not improve on it.

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

Purpose5/5

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

The description states a clear verb ('Check whether') and resource ('an asset with the given ID exists in the registry'), which is unambiguous about what the tool does. It also differentiates from sibling asset tools such as art.asset.get, art.asset.find, and art.asset.current by framing this as a pure existence test rather than a retrieval, search, or state-changing operation.

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

Usage Guidelines3/5

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

The description implies the tool is the right choice when an agent only needs to verify whether an asset exists, but it never explicitly says when to prefer this over art.asset.get or art.asset.find. No alternatives, exclusions, or contextual conditions are provided, so the agent must infer usage from the verb 'exists' and the sibling tool names.

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

art.asset.findA

Search and filter registered assets. All parameters are optional; omit all to return every asset.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFilter by tags (all must match)
typeNoFilter by asset type
statusNoFilter by status
categoryNoFilter by category
style_idNoFilter by style ID
style_versionNoFilter by style version

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavior disclosure. The 'search and filter' wording implies a read-only operation and the optionality clarifies the empty-query behavior, but it does not mention result shape, pagination, ordering, or any access constraints.

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

Conciseness5/5

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

Two short sentences with the core action first and the critical optionality note second. No filler or redundant restatement of schema details.

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 simple read-only filter tool with a fully documented schema, the description covers the essential call semantics. It would be more complete with a note on return format or default limits, but nothing blocks correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds the cross-parameter insight that all filters are optional and an empty query lists everything, which is not immediately derivable from the individual parameter descriptions.

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

Purpose4/5

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

The description states a clear verb and resource: 'Search and filter registered assets.' It doesn't explicitly compare itself to sibling tools like art.asset.get or art.asset.current, so it loses the sibling-differentiation point, but the purpose is unambiguous.

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

Usage Guidelines4/5

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

'All parameters are optional; omit all to return every asset' gives clear operational guidance and tells the agent when an unfiltered listing is appropriate. It does not name alternatives or exclusions, 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.

art.asset.getA

Get a registered asset by its ID. Returns the full asset record.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset ID (e.g. "character.goblin.001")

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It does state 'Returns the full asset record,' which hints at read-only retrieval, but it does not specify error behavior (e.g., not-found handling), prerequisites (asset must exist), or any side effects. Since 'Get' implies a read, it's minimally transparent but not thorough.

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

Conciseness5/5

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

Two short sentences with zero waste. The key action and return type are front-loaded. Every word adds value, making it easy to scan.

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

Completeness3/5

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

For a simple get-by-ID tool with one parameter and no output schema, the description is adequate. It states what it does and what it returns. However, it lacks guidance on error conditions, whether the asset must be registered, and how to react to missing IDs. Given the low complexityaging, the gaps are minor but present.

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

Parameters3/5

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

The input schema already describes the parameter (id) and provides an example value. The description adds no new semantics beyond 'by its ID,' which is redundant with the schema. With 100% schema coverage, baseline is 3; the description doesn't add meaning.

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

Purpose5/5

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

The description uses a specific verb ('Get'), names the resource ('registered asset'), and specifies the lookup key ('by its ID'). It also states the return ('full asset record'). It clearly distinguishes from siblings like art.asset.find (search-oriented) and art.asset.exists (existence check) without needing to open schemas.

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

Usage Guidelines3/5

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

The description implies usage (when you have an ID and want the full record) but does not explicitly state when to prefer this over art.asset.find, art.asset.exists, or art.asset.current. No exclusions or alternative routing provided.

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

art.asset.historyC

Get the full version history of an asset.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesAsset identifier

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the purpose and does not mention pagination, ordering, return format, or what fields each version entry contains. 'Get' implies read-only, but no further behavioral detail is given.

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

Conciseness5/5

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

One concise sentence with no filler. The action and resource are front-loaded, making the purpose immediately clear.

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

Completeness2/5

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

With no output schema and no annotations, the description should explain what the returned version history contains. It does not, leaving an agent to guess about response structure, ordering, and pagination, which are material for a tool returning 'full' history.

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

Parameters3/5

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

The input schema already describes asset_id as 'Asset identifier' with 100% schema description coverage. The tool description adds no additional parameter semantics, so the baseline of 3 is appropriate.

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

Purpose4/5

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

States a specific verb 'Get' and resource 'full version history of an asset'. The scope is clear enough to distinguish it from related siblings like art.asset.current or art.asset.inspect_version, though it does not explicitly name those alternatives.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as art.asset.current, art.asset.inspect_version, or art.asset.provenance. The only usage signal is the phrase 'full version history', which is implied rather than explicitly stated.

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

art.asset.inspect_versionB

Get details of a specific asset version.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionYesVersion number
asset_idYesAsset identifier

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. 'Get details' clearly indicates a read-only operation with no destructive side effects, which is transparent. However, it does not disclose any additional behavior such as existence requirements, authentication needs, or error handling.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundant information. Every word contributes to the core meaning, making it appropriately concise for a simple getter.

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?

Given the low complexity (two required parameters, no output schema), the description and schema together are sufficient to invoke the tool correctly. It lacks explicit return-value details and sibling differentiation, which prevents a perfect score, but the core invocation path is clear.

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

Parameters3/5

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

Schema description coverage is 100%, with both 'asset_id' and 'version' described in the input schema. The description adds no further meaning to these parameters beyond what the schema already provides, so the baseline score of 3 applies.

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

Purpose4/5

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

The description uses a specific verb and resource, 'Get details of a specific asset version,' which clearly states the operation. It does not explicitly differentiate from sibling tools like art.asset.get or art.asset.current, relying only on the word 'version' for distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as art.asset.get, art.asset.current, or art.asset.history. No conditions, exclusions, or alternative recommendations are mentioned.

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

art.asset.promoteC

Promote an approved candidate to become the canonical version.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorYesPromoting actor
styleYesStyle reference
qa_resultNoQA result
referencesNoReference asset IDs
approval_idYesApproval record ID
artifact_idYesArtifact identifier
provider_idNoProvider identifier
candidate_idYesCandidate identifier
target_asset_idYesTarget asset identifier
production_job_idNoProduction job ID
expected_current_versionNoExpected current version (optimistic lock)

TDQS

C2.8/5.0
Behavior2/5

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

No annotations exist, so the description carries full burden. It only states 'promote... to become the canonical version' without disclosing side effects such as replacing the current version, authorization requirements, or reversibility. The mutation behavior is implied but not detailed.

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

Conciseness3/5

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

The description is a single concise sentence with no waste, but it is under-specified for the tool's complexity. It lacks structure or additional context beyond the bare statement.

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

Completeness2/5

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

Given 11 parameters, nested objects, and no output schema, this description is inadequate. It doesn't explain the promotion workflow, success criteria, error handling, or implications for the asset's version history. An agent would struggle to call this correctly without additional context.

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

Parameters3/5

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

Schema coverage is 100%, so all parameters are already described. The description adds no extra meaning, such as relationships between parameters or usage context. Baseline 3 is appropriate since the schema handles parameter documentation.

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

Purpose4/5

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

The description clearly states the action (promote) and the object (approved candidate to become canonical version). It is specific and uses a distinct verb, though it does not explicitly differentiate from sibling tools like art.asset.approve or art.asset.rollback.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It never states prerequisites like having an approval record or that it should follow approval. The term 'approved candidate' implies it, but no explicit when/when-not is provided.

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

art.asset.provenanceC

Get version provenance including approval record.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionYesVersion number
asset_idYesAsset identifier

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of disclosing behavior. It reports that the result includes an approval record, but it does not state whether the operation is read-only, what the provenance contains, whether any permissions are needed, or what the response looks like. This is thin for a tool with no structured annotation support.

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

Conciseness5/5

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

The description is a single efficient sentence with no filler. It front-loads the operation ('Get version provenance') and adds the key output qualifier ('including approval record'), earning its place.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description should explain more about what 'provenance' includes and what the caller can expect. It does not specify return structure, limitations, or how this relates to the surrounding approval and history tools, leaving a fairly large gap for an agent selecting among many siblings.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters adequately described in the input schema ('Asset identifier' and 'Version number'). The tool description itself adds no extra parameter meaning beyond what the schema already provides, so the baseline of 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource: 'Get version provenance including approval record.' It clearly communicates that the tool retrieves provenance for a specific asset version, and the approval-record qualifier helps distinguish it from generic history or inspection tools. However, it does not explicitly name or differentiate against siblings like art.asset.history or art.asset.inspect_version.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as art.asset.history or art.asset.approval.inspect. The description implies a read operation for version provenance but gives no conditions, exclusions, or preferred scenarios.

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

art.asset.rebuild_indexA

Rebuild the asset registry index from all registered asset files.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits itself. 'Rebuild' implies a destructive overwrite of the existing index and a potentially expensive scan of asset files, but none of these side effects, performance implications, or error states are mentioned. The description adds some context about the data source but does not cover the operational impact.

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

Conciseness5/5

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

A single, well-formed sentence that states the operation and its input source with no redundant details. It is front-loaded and efficient.

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

Completeness3/5

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

For a zero-parameter tool, the description is mostly adequate, but it lacks behavioral warnings and usage context. Given that the tool is a mutation-like operation with no annotations, an agent might benefit from knowing when to use it and what consequences to expect. Still, the core action is clear.

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

Parameters4/5

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

The tool has zero parameters, so the description is not required to clarify parameter meanings. The baseline of 4 applies.

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

Purpose5/5

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

The description uses the specific verb 'rebuild' with the resource 'asset registry index' and identifies the source as 'all registered asset files'. This clearly distinguishes it from asset query/registration tools like art.asset.get or art.asset.register.

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

Usage Guidelines3/5

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

There is no explicit guidance on when to invoke this tool versus alternatives, nor any mention of prerequisites or conditions. While the action is clear, an agent is left to infer when a rebuild is appropriate, such as after bulk registration or index corruption. No alternative or exclusion is stated.

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

art.asset.registerA

Register a new asset in the registry. Validates schema, style reference, source file, and relationships.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUnique asset ID (e.g. "character.goblin.001")
nameYesHuman-readable asset name
tagsNoTags for filtering
typeYesAsset type
styleYesStyle reference { id, version }
sourceYesSource file { path, format }
statusYesAsset status
categoryYesAsset category
animationNoAnimation metadata
technicalNoTechnical metadata
dimensionsNoAsset dimensions in pixels
relationshipsNoRelationships to other assets

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It mentions validation of schema, style, source, and relationships, but does not clearly state the outcome (e.g., creation success) or any side effects or failure behavior. This leaves some ambiguity about the tool's actual behavior.

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

Conciseness5/5

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

The description is two short sentences, front-loaded with the core purpose and then a concise list of validation areas. No redundant or vague wording is present.

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?

Given the complexity (12 parameters, nested objects) and absence of an output schema, the description provides adequate context for the tool's function. It does not mention return values or explicit preconditions (e.g., uniqueness of ID), but these are not critical for a create operation and the description is sufficient for an agent to invoke it correctly.

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

Parameters3/5

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

The schema provides descriptions for all parameters (100% coverage), so the tool description adds minimal extra semantic value. It does highlight that validation applies to certain fields, but this is already implied by the schema's required fields and enums. The description does not clarify any nuanced parameter interactions beyond what the schema already conveys.

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

Purpose5/5

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

The description clearly states the action 'Register' and the resource 'new asset in the registry', distinguishing it from other asset operations like update or archive. It also hints at the validation scope, making the tool's primary function unambiguous.

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

Usage Guidelines4/5

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

The description implies the tool is for creating new assets, which is sufficient given the presence of related sibling tools like art.asset.update. However, it does not explicitly mention when not to use it or provide alternatives, so it falls slightly short of fully explicit guidance.

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

art.asset.rejectC

Reject a candidate asset.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorYesRejecting actor
reasonNoRejection reason
feedbackNoDetailed feedback items
approval_idYesApproval record ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It only states the action; it does not reveal side effects, whether the rejection updates an approval record, whether it can be reversed, or what response/callback occurs.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no redundant text. It is appropriately brief, though its brevity leaves context to be supplied elsewhere.

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

Completeness2/5

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

For a mutating workflow action with no output schema and no annotations, the description is too thin to let an agent confidently understand consequences or expected results. The 100% schema coverage helps for parameters, but not for workflow semantics, rejection handling, or return behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all four parameters and nested fields. The description adds no parameter-level meaning, but that is acceptable at baseline because the schema already carries the burden.

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

Purpose4/5

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

The description uses a specific verb ('Reject') and resource ('candidate asset'), clearly identifying the action. It doesn't explicitly distinguish from sibling tools like art.asset.approve or request_changes, but the core purpose is unambiguous.

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

Usage Guidelines2/5

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

No guidance about when to use this tool versus alternatives such as art.asset.approve, art.asset.request_changes, or production.approve. The description provides no contextual conditions or exclusions, leaving the agent to infer appropriateness.

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

art.asset.request_changesC

Request changes on a candidate asset.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorYesRequesting actor
reasonNoSummary reason
feedbackYesRequired changes
approval_idYesApproval record ID

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Request changes' implies a write/mutation action, but the description doesn't state whether the change-request is persisted, whether it blocks or cancels the approval, notification behavior, or reversibility. For a mutation tool with zero annotation coverage this is a significant gap.

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

Conciseness5/5

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

A single concise sentence that states the action clearly. It's front-loaded and every word earns its place. No fluff or redundancy.

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

Completeness2/5

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

For a mutation tool with no annotations distilled from the description, this is too thin. An agent needs to know what 'request changes' does to the asset lifecycle, whether it persists, whether it feeds into an approval flow, and what the response looks like (no output schema). Four parameters including nested objects, no annotations, and no output schema – this description doesn't carry its weight.

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

Parameters2/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond what the schema already provides. The nested feedback array is complex but the schema documents each sub-field (category, severity, etc.). The description doesn't clarify the relationship between reason and feedback, or how they interact. -1 for no added value over the schema.

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

Purpose4/5

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

The description states a specific verb ('Request changes') and a resource ('candidate asset'), which clearly identifies the tool's purpose. It's distinguishable from siblings like art.asset.archive_version or art.asset.update by its focus on the approval/review workflow, though it doesn't explicitly name alternatives.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus the many sibling tools (e.g., art.qa.asset for quality checks, art.production.approve for approval). It doesn't state prerequisites (e.g., that an approval record must exist), nor when NOT to use it. The toolname and description imply an approval context, but no explicit routing or exclusion of alternatives.

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

art.asset.rollbackB

Rollback the canonical version to a previous version.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorYesActor performing rollback
asset_idYesAsset identifier
target_versionYesVersion to rollback to
expected_current_versionYesExpected current version (optimistic lock)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits: does it delete the canonical version or just switch a pointer? Does it create a new version entry? Does it require permission? The description neither confirms nor denies any of these. The mention of 'optimistic lock' in the schema hints at concurrency safety, but the description itself doesn't explain the consequences or side effects.

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

Conciseness5/5

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

The description is a single sentence with no fluff. The key action and target are front-loaded. It is appropriately concise given that the schema covers parameters.

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

Completeness3/5

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

Given the complexity of a rollback operation with four parameters, including an optimistic lock, the description lacks key details such as side effects (does it permanently discard the previous version?), preconditions (must the asset be in a certain state?), and concurrency behavior. There is no output schema, so the description should clarify what the response indicates, but it doesn't. Overall, while it covers the basics, it leaves out critical operational context.

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

Parameters3/5

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

Since schema_description_coverage is 100%, each parameter is described in the schema. However, the description adds only the concept of 'rollback' and 'canonical version', which provides some context but doesn't explain parameter relationships (e.g., why expected_current_version is needed). The schema descriptions are basic, so the description could have elaborated on the optimistic lock mechanism, but it doesn't, so the added value is minimal.

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

Purpose4/5

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

The description states the action (rollback) and the resource (canonical version), which is clear. It doesn't explicitly distinguish from other art.asset.* tools like art.asset.promote or art.asset.archive_version, but the verb 'rollback' is specific enough to indicate a revert operation, distinguishing it from promote or update.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as art.asset.promote or art.asset.update. The description is a single sentence with no context about scenarios like reverting a bad deployment or precondition like asset must be in a certain state. The sibling tools include 'art.asset.archive_version' and 'art.asset.promote', which could be similar, but no exclusions are given.

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

art.asset.updateC

Update an existing asset. Provide the asset ID and a patch object with fields to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset ID to update
patchYesFields to update

TDQS

C2.7/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden. It does not mention side effects (e.g., whether the operation is destructive), required permissions, error behaviors if the asset does not exist, or any return value. The user is left completely uninformed about the tool's behavior beyond its basic purpose.

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

Conciseness5/5

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

The description is extremely concise, consisting of two short sentences with no redundant words. It is well-structured and easy to read, earning a perfect score.

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

Completeness2/5

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

The description lacks essential context: no mention of return values, error cases, or how it relates to sibling tools. As a mutation operation without an output schema, the description should at least hint at what the caller can expect, but it does not.

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

Parameters3/5

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

The schema already provides descriptions for both parameters (id and patch) with 100% coverage. The description merely restates these ('Provide the asset ID and a patch object with fields to change') without adding deeper semantics, such as constraints on the patch fields or interaction between parameters. Since schema coverage is high, a baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'Update' and the resource 'asset', which distinguishes it from creation or deletion operations. However, it does not explicitly differentiate from other update-like operations such as archive_version or promote, though the context makes it clear enough.

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

Usage Guidelines2/5

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

The description gives a basic instruction but lacks guidance on when to use this tool versus alternatives like art.asset.register (for creation) or art.asset.archive (for archival). No conditions or prerequisites are mentioned.

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

art.canvas.analyze_refA

Analyze a reference image: extract dimensions, color palette with counts, and 2D color map.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_pathYesPath to image file (relative to project root or absolute)

TDQS

A3.6/5.0
Behavior3/5

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

Because no annotations are provided, the description carries full behavioral disclosure responsibility. It suggests a read-only analysis operation and states the extracted outputs, which is useful. However, it does not mention error conditions, color-count limits, coordinate space of the color map, or whether any state is modified.

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

Conciseness5/5

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

The description is a single, tightly written sentence that front-loads the main action and lists outputs in a scannable way. Every word adds information and there is no filler.

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

Completeness4/5

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

For a simple one-parameter tool with no output schema, the description gives the agent enough to know what to pass and roughly what to expect back. It could be more explicit about the return shape of the color map and any constraints, but it is still reasonably complete for the tool's complexity.

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

Parameters3/5

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

There is only one parameter and its schema description already covers it (100% coverage). The description adds only the context that the image is a 'reference image', but does not provide additional semantic detail about accepted formats, path resolution, or behavior for missing files.

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

Purpose4/5

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

The description uses a specific verb ('Analyze') and resource ('reference image') and names concrete outputs: dimensions, color palette with counts, and 2D color map. This clearly communicates what the tool does, though it does not explicitly differentiate it from similar siblings like art.get_palette.

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

Usage Guidelines3/5

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

The usage context is implied: use when you need to analyze a reference image for dimensions, palette counts, or a color map. However, there is no explicit guidance about when to prefer this over related tools such as art.get_palette or art.canvas.get_state, nor any exclusions.

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

art.canvas.batch_drawA

Execute multiple draw commands in a single call for efficiency. Each command references a canvas tool name and its params.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandsYesArray of draw commands to execute sequentially
session_idYesCanvas session ID

TDQS

A3.7/5.0
Behavior2/5

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

There are no annotations, so the description must carry the full behavioral burden. It only says commands are executed for efficiency; it does not state whether the batch is all-or-nothing, whether failures are partial, that commands run sequentially (this detail appears only in the schema), or that it mutates the canvas session.

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

Conciseness4/5

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

The description is concise at two sentences and front-loads the core purpose. It is effective and free of redundancy, though 'for efficiency' is a slightly motivational embellishment rather than a necessary technical detail.

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 tool with 2 parameters and full schema documentation, the description gives enough selection and invocation context: it defines the batch role and what each entry contains. The only missing context, such as behavior on partial failure and authoritative requirements, is the same behavioral detail already penalized in behavior transparency.

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

Parameters3/5

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

Parameter schema coverage is 100%, and the description adds almost no detail beyond the schema except the general notion of 'references a canvas tool name and its params.' The required commands array, tool string, params object, and session_id are already well documented in the schema, so the description provides the baseline 3 without additional meaning.

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

Purpose5/5

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

The description clearly states a specific action: 'Execute multiple draw commands in a single call for efficiency.' It identifies the resource, the purpose, and calls out the relationship to individual canvas tools, so it is easy to differentiate from sibling tools like set_pixel or draw_rect.

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

Usage Guidelines4/5

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

The description communicates when the tool is useful: when multiple draw commands should be batched 'for efficiency.' It does not explicitly name alternatives or exclusions, but the sibling canvas tools make it clear that each individual draw is for single commands and batch_draw is for bundling them.

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

art.canvas.clearB

Clear the entire canvas, optionally filling with a color.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoFill color as hex string (defaults to transparent/black)
session_idYesCanvas session ID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full burden of explaining behavior. It states the action and the optional fill color but does not disclose that clearing is typically destructive to existing canvas content, nor what happens to the canvas state after the operation.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or repetition. Every word contributes to the core meaning.

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

Completeness3/5

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

For a simple two-parameter canvas operation, the essentials are present: clear entire canvas and optionally fill with color. However, the lack of any guidance around destructive behavior or relationship to art.canvas.fill leaves the description not fully complete in context.

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

Parameters3/5

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

The input schema already covers both parameters with descriptions, including that color is a hex string and defaults to transparent/black. The description confirms that color is optional but adds little beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly names the operation — clearing the entire canvas — and adds that a fill color may be applied, which is more specific than a generic 'clear' statement. It is easy to distinguish from drawing or asset tools, though it does not explicitly differentiate from the similarly named art.canvas.fill sibling.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as art.canvas.fill or art.canvas.set_pixel. An agent must infer usage from the tool name and schema alone.

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

art.canvas.createB

Create a new pixel canvas session for drawing.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNoCanvas width in pixels (default 16)
heightNoCanvas height in pixels (default 16)
asset_idNoAsset ID to associate with this session (enables Studio auto-open)
bg_colorNoBackground color as hex string (e.g. "#000000")
session_idYesUnique session identifier

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations present, the description carries full responsibility for explaining side effects. It only says 'create' a 'session', giving a minimal behavioral fact, but does not disclose what happens upon session creation, whether a previous session is replaced, whether the operation persists or is ephemeral, what the return value is, or any permissions or resource requirements.

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

Conciseness5/5

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

The definition is a single clear sentence, with the main verb and resource immediately accessible and no filler words. It is concise and appropriately sized for a simple creation operation, though sparse.

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

Completeness2/5

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

There is no output schema and no annotations, so the description needs to explain the overall usage context and effects. It merely states that a session is created, but does not mention what the agent receives in return, what the session_id is used for, or how it relates to subsequent drawing operations. The tool cannot be confidently and safely invoked based on this description alone.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter (width, height, asset_id, bg_color, session_id) already has documented meaning. The description adds no extra parameter context beyond the overall purpose of creating a drawing session. This meets the baseline of relying on the schema's parameter descriptions, but no more.

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

Purpose5/5

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

The description states a specific verb ('Create'), a distinct resource ('new pixel canvas session'), and is clearly separated from the many sibling canvas operations like set_pixel, draw_rect, get_state, and save by naming the session itself. This is the only kind of session creation tool among the siblings, so an agent can reliably identify what it does.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool versus the many drawing and state-reading canvas tools, or when a new session is needed instead of reusing an existing one. There is no mention of sequencing, prerequisites, or alternatives, so the agent must infer the usage context.

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

art.canvas.draw_circleB

Draw a circle on the canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
cxYesCenter X coordinate
cyYesCenter Y coordinate
colorYesCircle color as hex string
filledNoWhether to fill the circle (default true)
radiusYesCircle radius in pixels
session_idYesCanvas session ID

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full responsibility for behavioral disclosure. It does not mention whether the circle overwrites existing content, whether the filled parameter affects the result, what coordinate system is used, or what side effects the operation has. The one-sentence description is minimal and does not provide enough 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.

Conciseness4/5

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

The description is very short, focused, and front-loaded with the primary action. All words are relevant, though the minimal nature sacrifices useful context in other dimensions. It is concise without being bloated.

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

Completeness3/5

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

For a simple drawing primitive, the description plus the fully-described schema might be minimally viable. However, there are gaps around canvas session requirements, coordinate bounds, how filled interacts with the visual result, and what other canvas tools should be used in combination. The lack of any output schema makes the description less a problem about returns, but these situational gaps remain.

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

Parameters3/5

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

The schema already provides 100% description coverage for parameters like cx, cy, radius, color, filled, and session_id. The description adds no additional parameter-level meaning, but since the schema is fully self-contained, the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states what the tool does: 'Draw a circle on the canvas.' It names a specific verb, resource, and the primitive being created, which differentiates it from sibling canvas tools such as draw_rect and draw_line. The behavior is unambiguous even with minimal text.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives like draw_line or draw_rect, nor are there prerequisites explained, such as having a valid canvas session. The description only states the action and leaves all usage context to be inferred from the schema.

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

art.canvas.draw_ditherB

Apply a dither pattern to a rectangular region.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
widthYesRegion width
color1YesFirst color as hex string
color2YesSecond color as hex string
heightYesRegion height
patternYesDither pattern type
session_idYesCanvas session ID

TDQS

B3.1/5.0
Behavior2/5

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

There are no annotations to carry the behavioral burden, and the description gives no detail about side effects, whether the operation is destructive, coordinate constraints, or expected results. The verb 'apply' implies mutation but nothing else is disclosed.

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

Conciseness5/5

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

A single, focused sentence communicates the core operation without filler or redundancy. It is well-structured and immediately understandable.

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

Completeness3/5

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

The description is minimally viable for invoking the tool because the schema documents all parameters. However, without annotations or extra behavior details, an agent lacks contextual information about session requirements, visual outcomes, or distinctions from neighboring canvas tools.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters already carry individual descriptions. The tool description adds no parameter-level context, but no additional meaning is strictly needed given the schema's completeness.

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

Purpose4/5

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

The description clearly states a specific action ('apply a dither pattern') on a specific resource ('rectangular region'), which conveys the primary purpose. It does not explicitly differentiate among sibling canvas tools, but the dither-pattern concept provides enough distinction in most cases.

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

Usage Guidelines2/5

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

No usage context or alternative routing is provided. The description does not explain when an agent should choose draw_dither over related tools like draw_noise, fill, or draw_rect.

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

art.canvas.draw_lineA

Draw a line between two points using Bresenham algorithm.

ParametersJSON Schema
NameRequiredDescriptionDefault
x0YesStart X coordinate
x1YesEnd X coordinate
y0YesStart Y coordinate
y1YesEnd Y coordinate
colorYesLine color as hex string
session_idYesCanvas session ID

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the Bresenham algorithm, which hints at integer rasterization, but does not disclose state mutation, coordinate bounds, behavior with invalid points, or whether drawing overrides existing pixels. For a mutation tool, this is a notable gap.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the action and avoids irrelevant detail. Every word contributes to understanding what the tool does.

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

Completeness3/5

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

The tool is fairly simple and the schema fully documents its six parameters. However, with no annotations or output schema, and no mention of behavioral constraints like coordinate handling or session assumptions, the description is only minimally complete for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameter descriptions already document each coordinate, color, and session ID. The description adds no extra parameter semantics beyond the algorithm hint; this aligns with the baseline score for a well-covered 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?

The description clearly states the operation: drawing a line between two points on a canvas, and identifies the algorithm (Bresenham). This distinguishes it from sibling tools like art.canvas.draw_circle, art.canvas.draw_rect, and art.canvas.set_pixel without requiring schema inspection.

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

Usage Guidelines3/5

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

The intended use is implicit: use this when a line needs to be drawn. However, the description gives no explicit guidance about when to choose this over alternative drawing tools or any exclusions or prerequisites such as session initialization.

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

art.canvas.draw_noiseC

Fill a region with random noise using specified colors.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
widthYesRegion width
colorsYesArray of hex color strings to randomly pick from
heightYesRegion height
densityNoProbability of placing a pixel (0-1, default 0.5)
session_idYesCanvas session ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must bear the full behavioral burden. It does not disclose whether existing pixels get overwritten, how hidden randomness is handled, whether density affects the probability of each pixel, or what side effects may occur. Since this is a mutating canvas operation, the lack of any destructive-impact context becomes significant.

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

Conciseness5/5

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

The description is one single purpose-driven sentence with no filler or redundant information. The verb and core concept come first, and the object and how it is created follow immediately; every word earned its place.

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

Completeness2/5

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

Given 7 parameters, no annotations, no output schema, and a large sibling set of drawing tools, the description is incomplete on its own. An agent lacks information about when to use noise versus dither or fill, what happens to existing content, and what the semantic role of density is beyond the schema default. The schema covers parameters, but the contextual essence and side-effect clarity are missing.

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

Parameters3/5

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

The schema covers all parameters in 100% of cases, so the baseline is already 3. The description adds the relation that 'specified colors' means the random pick palette and 'region' maps to x, y, width, and height. It does not need to explain density because the input schema already has a clear description for it.

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

Purpose4/5

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

The description names a specific verb ('Fill') and resource ('a region') plus the defining behavior ('with random noise using specified colors'). This distinguishes it from solid fills, lines, and dithering operations without naming alternatives. It is not a 5 because it does not explicitly contrast with similar canvas tools.

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

Usage Guidelines2/5

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

No guidance is given for when to use this tool versus art.canvas.fill, art.canvas.draw_dither, or art.canvas.batch_draw. The description only explains the mechanism, leaving an agent to infer selection from the word 'noise' alone.

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

art.canvas.draw_rectB

Draw a rectangle on the canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
colorYesFill/stroke color as hex string
widthYesRectangle width
filledNoWhether to fill the rectangle (default true)
heightYesRectangle height
session_idYesCanvas session ID

TDQS

B3.2/5.0
Behavior2/5

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

There are no annotations, so the description bears the full burden of explaining behavior. It only states the basic action and does not disclose coordinate system assumptions, whether the drawing overwrites existing content, how the filled parameter behaves, or any side effects. This is minimal 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.

Conciseness5/5

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

The description is a single declarative sentence with no redundant words. It is immediately front-loaded with the core action and resource, making it very easy to scan and understand.

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

Completeness2/5

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

For a tool with 7 parameters, 6 required, and no output schema, the description is too thin. It omits context that would help an agent use it correctly, such as coordinate system, integer bounds, canvas requirements, fill defaults, or interactions with the existing canvas state.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains all seven parameters including x, y, width, height, color, filled, and session_id. The description adds no parametric meaning beyond the schema, so the baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific action (draw) and a specific resource (a rectangle), clearly identifying the tool's function. It naturally distinguishes itself from sibling canvas tools like draw_line and draw_circle by naming the shape being drawn.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as draw_circle, fill, or batch_draw. It does not mention any preconditions, context, or exclusions, leaving the decision entirely to the agent.

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

art.canvas.fillB

Flood fill an area starting from a point.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesStart X coordinate
yYesStart Y coordinate
colorYesFill color as hex string
session_idYesCanvas session ID

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It only describes the operation and does not mention side effects, color boundary behavior, whether pixels are replaced, whether the canvas is mutated immediately, or what the call returns.

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

Conciseness5/5

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

The description is one action-focused sentence with no filler words, and the core behavior is front-loaded. For a simple tool this is appropriately concise.

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

Completeness2/5

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

For a mutation-oriented canvas tool with no annotations and no output schema, the description omits important context such as return value, boundary interpretation, color matching behavior, and persistence/session effects. The agent must infer too much from the tool name and operation.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already documented. The description's phrase 'starting from a point' reinforces the x/y roles, but does not add meaning beyond the schema.

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

Purpose5/5

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

The description states a specific action, 'flood fill', a resource, 'an area', and the starting point. It is clearly distinguishable from sibling operations like art.canvas.set_pixel, art.canvas.draw_rect, and art.canvas.draw_line.

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

Usage Guidelines3/5

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

The intended use is implied: fill a contiguous region from a starting coordinate. However, the description does not explicitly state when to choose this tool over alternatives, nor does it mention any exclusions or complementing tools.

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

art.canvas.get_pixelB

Read the color of a single pixel on the canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX coordinate
yYesY coordinate
session_idYesCanvas session ID

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Read' does imply a non-destructive operation, but the description is silent on what happens with out-of-bounds or negative coordinates (the schema permits coordinates down to -9007199254740991), how the color is returned (format?), and whether this triggers any validation or session side effects.

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

Conciseness5/5

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

One short sentence front-loads the essential message with zero waste. Every word earns its place, and the read-vs-write distinction is immediately visible.

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

Completeness2/5

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 must explain the return value, but it never states the color format (RGB/hex/RGBA?) or any error behavior. The enormous coordinate min/max in the schema without any clarification about canvas bounds or negative coordinates leaves an agent guessing about valid inputs. For a three-parameter, no-output-schema tool under a large canvas-family context, these gaps matter.

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

Parameters3/5

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

Schema coverage is 100%, so the input schema already documents x, y, and session_id. The description adds no coordinate-system context (origin location, valid bounds, units) beyond the schema's extremely wide integer range, which is not meaningful guidance for actual canvas dimensions. Per the high-coverage baseline, a 3 is appropriate.

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

Purpose5/5

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

The description names a specific verb ('Read'), a specific resource ('the color of a single pixel'), and a location ('the canvas'). This clearly contrasts with sibling tools like art.canvas.set_pixel (write) and art.canvas.fill/draw_rect (bulk drawing), so an agent can accurately select it without inspecting any other definitions.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives, and no alternatives are named. It does not mention related read operations such as art.canvas.get_state or art.analyze_ref, nor does it advise against using it for batch reads. The intended context is implied but never stated.

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

art.canvas.get_stateA

Get the current canvas state as a color map (2D hex array) or base64 PNG.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format (default color_map)color_map
session_idYesCanvas session ID

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must carry the burden of behavioral disclosure. It does indicate a read-only enumeration by saying 'Get' and mentions both output forms, but it does not disclose possible session requirements, failure behavior, or side-effect-free guarantees beyond the verb itself.

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

Conciseness5/5

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

The description is one sentence, front-loaded with the action and resource, and every clause adds value. It avoids restating the tool name or adding irrelevant context.

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?

This is a low-complexity read tool with fully documented parameters and clear return output formats in the absence of an output schema. It could be slightly more complete by noting that the state belongs to a specific canvas session and what happens if that session is missing, but nothing essential is absent.

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

Parameters3/5

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

Schema description coverage is 100%, and the description does not add meaning beyond what the input schema already says. format and session_id are both documented structurally; the description's mention of 'color map' and 'base64 PNG' mirrors the schema enum.

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

Purpose5/5

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

States a specific verb and resource ('Get the current canvas state') and names the exact return representations, so it is easily distinguishable from sibling getters like art.canvas.get_pixel. No ambiguity about what object is being read.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as art.canvas.get_pixel, art.canvas.save, or art.canvas.analyze_ref. The context is only implied by the word 'current', with no exclusions or alternative routing.

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

art.canvas.saveA

Save the current canvas to a PNG file.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesCanvas session ID
output_pathNoOutput file path (defaults to artifacts/{session_id}/output.png)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses that a PNG file is written, but it does not describe whether an existing file is overwritten, whether the canvas is mutated in memory, whether the operation is safe to repeat, or what happens when the session_id is invalid.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. For a simple two-parameter tool, this is appropriately concise.

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

Completeness3/5

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

The description is minimal but viable given that the schema covers both parameters and the tool is a simple save operation. Still, with no output schema and no annotations, return behavior, overwrite semantics, and failure cases are left unspecified.

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

Parameters3/5

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

Parameter coverage is 100%, so the schema already documents session_id and output_path, including the default path. The description adds nothing meaningful beyond the schema for parameter semantics.

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

Purpose5/5

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

The description states a specific verb and resource: 'Save the current canvas to a PNG file.' It clearly distinguishes this from sibling canvas tools like art.canvas.create, art.canvas.draw_rect, and art.canvas.get_state, which concern editing or querying rather than persisting.

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

Usage Guidelines3/5

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

The intended usage is reasonably implied: use this when you want to persist the current canvas to a PNG. However, it does not explicitly state when not to use it, mention prerequisites like an initialized session, or contrast it with alternative tools.

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

art.canvas.set_pixelB

Set a single pixel on the canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX coordinate
yYesY coordinate
colorYesPixel color as hex string (e.g. "#FF0000")
session_idYesCanvas session ID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full responsibility for behavioral disclosure. It states only the basic action ('set') and does not mention overwriting behavior, coordinate bounds, session prerequisites, or any failure modes. While 'set' hints at mutation, the description does not explicitly confirm that or any consequential side effects.

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

Conciseness5/5

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

A single sentence of eight words that is front-loaded and contains no filler. Every word earns its place, and the size is perfectly proportional to the tool's simplicity.

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

Completeness3/5

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

For a simple tool, this is minimally viable but has gaps. The absence of an output schema means the description should indicate whether the call returns anything meaningful, yet it doesn't. It also fails to clarify that a valid session must exist before use, leaving an implicit prerequisite for an AI to guess.

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

Parameters3/5

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

Schema coverage is 100% — all four parameters (x, y, color, session_id) have descriptions in the schema, so the baseline is 3. The description adds no further parameter semantics, but since the schema already covers them at a functional level, no deduction is warranted.

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

Purpose5/5

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

The description states a clear verb ('Set'), a specific resource ('a single pixel'), and immediately delineates this from sibling canvas tools like draw_rect, draw_line, fill, or batch_draw. An agent can unambiguously identify the tool's exact scope without opening the schema.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use set_pixel versus alternatives such as art.canvas.batch_draw for multiple pixels or art.canvas.fill for regions. There is no mention of use cases, exclusions, or conditions selecting this tool, leaving the agent to guess the appropriate context.

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

art.critic.evaluateB

Run the art critic to evaluate canvas quality with spatial scoring and issue detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoDetail profile level for scoring context
session_idYesCanvas session ID

TDQS

B3.2/5.0
Behavior3/5

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

Since no annotations are provided, the description must fully carry the behavioral burden. It does disclose core behaviors ('spatial scoring and issue detection') and implies a non-mutating evaluation, but it omits any mention of return structure, side effects, permissions, or whether the critic persists history. This partial disclosure is better than zero context, but still leaves key behavioral aspects implicit.

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

Conciseness5/5

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

The description is a single sentence that leads with the actionable verb 'Run' and packs meaningful qualification ('art critic', 'canvas quality', 'spatial scoring', 'issue detection') without filler. It is efficiently structured and easy to scan.

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

Completeness2/5

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

Enough to prompt the evaluator, but not enough to complete the picture. There is no output schema, no annotation, and the description doesn't specify whether the result is a score, a list of issues, or a report, nor does it explain the profile parameter despite that being a user-supplied input. An agent could invoke the tool correctly, but it would remain unclear how to interpret the response.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both session_id and profile. The description adds no further parameter-specific meaning, but this is acceptable because the schema handles the semantics; it merely doesn't enrich the parameter details.

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

Purpose4/5

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

The description uses a specific verb 'Run' and names a concrete resource ('canvas quality') evaluated by an 'art critic'. It further narrows the intent by specifying the two core behaviors: spatial scoring and issue detection. This makes the tool's purpose clear, though it does not explicitly distinguish it from closely related siblings such as art.critic.refine.

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

Usage Guidelines2/5

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

There is no explicit or implied guidance about when to use this tool or when to choose an alternative. The description only restates what the tool does and does not mention sibling tools such as art.critic.refine or art.canvas.analyze_ref, nor any exclusions, prerequisites, or triggering conditions.

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

art.critic.refineC

Execute refinement actions from a critique to improve canvas quality.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYesArray of refinement actions to execute
session_idYesCanvas session ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies mutation of the canvas ('execute refinement actions') but does not describe side effects, failure behavior, partial execution, undoability, or whether the actions are applied in order. This is a significant transparency gap for a mutating tool.

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

Conciseness4/5

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

The description is a single sentence with essentially no filler. It is quick to parse, though 'improve canvas quality' is a vague outcome statement that does not add much operational detail to the tool's behavior.

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

Completeness2/5

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

The core parameters are named, but the tool's behavior is opaque: no output schema, no error semantics, no detail about how refinement actions affect the canvas, and no guidance on handling invalid or unknown action names. An agent could construct a plausible call from the schema, but it would not know what the call actually returns or guarantees.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters. The description adds only an abstract note that actions come from a critique and does not explain how action names or params are interpreted beyond what the schema already provides.

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

Purpose4/5

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

The description states a specific verb and resource ('Execute refinement actions ... to improve canvas quality') and ties the tool to critique output. It is clear, but it does not explicitly distinguish it from related tools like art.critic.evaluate or canvas mutation tools, so it stops short of a 5.

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

Usage Guidelines2/5

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

No explicit when-to-use guidance is provided. The phrase 'from a critique' implies this tool follows a critique, but it does not name alternatives, explain when not to use it, or describe the intended workflow relationship with tools like art.critic.evaluate.

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

art.detail.cavityB

Add cavity details (dark center with light rim) to a region.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
seedYesRandom seed
countYesNumber of cavities
widthYesRegion width
heightYesRegion height
dark_colorYesDark (cavity center) color as hex string
session_idYesCanvas session ID
light_colorYesLight (rim) color as hex string

TDQS

B3.1/5.0
Behavior2/5

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

There are zero annotations. The description says 'Add' but does not disclose whether this modifies the canvas in place, whether it is reversible, whether it invokes any side effects, or whether it requires prior session setup. It only describes the visual result (dark center with light rim), which is true but thin context for an operation with 9 required parameters.

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

Conciseness5/5

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

One short sentence, front-loaded with the core verb and resource, then a parenthetical that adds the important visual detail. There is no filler, redundancy, or irrelevant context.

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

Completeness3/5

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

Given all 9 parameters, no output schema, and no annotations, this is a minimum-viable description. The schema covers parameter meaning, and the description states the purpose clearly. However, it omits how coordinates and dimensions interact with the drawing, the role of seed/count in practical use, and any expected visual or stateful result.

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

Parameters3/5

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

Schema coverage is 100% and the schema already explains dark_color as 'cavity center' and light_color as 'rim', so the description's parenthetical does not add meaning beyond it. The baseline of 3 applies because the schema carries the semantic weight.

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

Purpose4/5

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

The description states the action and resource clearly: 'Add cavity details (dark center with light rim) to a region.' It identifies a specific visual operation and is distinguishable from siblings like art.detail.crack or art.detail.speckle by the 'cavity' term, but it does not explicitly name or contrast those alternatives.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative guidance is provided. The description only gives the action without explaining why an agent should choose this tool over other art.detail.* operations. The sibling landscape is rich (speckle, crack, grain, etc.), so the omission is noticeable.

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

art.detail.clean_clustersC

Cleanup pass: merge orphan/isolated pixels into nearest larger cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesCanvas session ID
min_cluster_sizeNoMinimum cluster size to keep (default 2)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full disclosure burden. It indicates that pixels will be merged, but it does not state whether this is destructive, reversible, permission-sensitive, or what happens to isolated pixels that have no nearby larger cluster. For a mutating tool, this is a meaningful gap.

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

Conciseness4/5

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

The description is one sentence, front-loaded with the operation type ('Cleanup pass') and then the concrete action. It avoids filler and does not merely repeat the tool name, though a tiny bit more side-effect context would make it richer.

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

Completeness2/5

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

Despite having only two well-described parameters, this is a mutating canvas operation with no annotations and no output schema. The description does not cover what effects the cleanup has on the canvas state, what a good workflow order is, or what happens in edge cases like a pixel with no nearby larger cluster. It is minimally viable but not complete for an agent.

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

Parameters3/5

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

Schema coverage is 100%, so both session_id and min_cluster_size are already documented. The description adds conceptual context by framing small clusters as 'orphan/isolated pixels,' which helps agents understand min_cluster_size, but it does not provide additional parameter-level details beyond the schema.

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

Purpose4/5

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

The description states a concrete verb and resource: 'merge orphan/isolated pixels into nearest larger cluster.' The 'Cleanup pass' label provides useful context that this is a post-processing step. It does not explicitly name sibling tools, but its operation is clear enough to distinguish it from clustering or texture-generation tools.

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

Usage Guidelines2/5

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

The phrase 'Cleanup pass' implies a post-processing stage, but there is no explicit guidance on when to use this tool versus related detail tools such as art.detail.cluster or art.detail.pass. No when-not-to-use conditions or alternatives are mentioned.

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

art.detail.clusterC

Create a pixel cluster on the canvas at a given position with a specified shape.

ParametersJSON Schema
NameRequiredDescriptionDefault
cxYesCenter X coordinate
cyYesCenter Y coordinate
seedNoRandom seed (used for irregular shape)
sizeYesCluster size (radius in pixels)
colorYesCluster color as hex string (e.g. "#8B4513")
shapeYesCluster shape
session_idYesCanvas session ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must communicate behavioral expectations itself. It only says 'Create a pixel cluster' and does not mention whether existing pixels are overwritten, what happens to out-of-bounds coordinates, how the seed affects irregular shapes, or whether the action is reversible. The mutating nature of the tool is implied but its side effects and constraints are not disclosed.

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

Conciseness4/5

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

The description is a single efficient sentence with the main action and semantic focus front-loaded. It avoids unnecessary examples or filler, though it could have been structured slightly better with a separate 'when to use' clause.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is too spare. It does not explain what a cluster consists of, which shape/seed choices are intended, how the cluster interacts with the current canvas state, or what the agent should expect after execution. The schema covers parameter names well, but the higher-level operational context is missing.

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

Parameters3/5

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

The schema already documents all seven parameters with individual descriptions, achieving 100% schema description coverage, so the baseline is 3. The tool description adds only a general conceptual framing ('position' and 'shape') and does not explain the seed parameter's interaction with irregular shapes or the coordinate system beyond what the schema provides.

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

Purpose4/5

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

The description clearly specifies the action ('Create'), the object ('a pixel cluster'), the location ('on the canvas'), and the manner ('at a given position with a specified shape'). It is unambiguous about the core purpose, though it does not explicitly differentiate this tool from sibling canvas and detail tools like art.canvas.draw_circle or art.detail.speckle.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool instead of the many related drawing and detail tools in the sibling list, such as art.detail.plan, art.detail.texture, art.canvas.draw_noise, or art.detail.clean_clusters. No conditions, prerequisites, or exclusions are provided, so the agent is left to infer the appropriate usage context.

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

art.detail.crackB

Add crack patterns to a region (stone, ice surfaces).

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
seedYesRandom seed
colorYesCrack color as hex string
countYesNumber of cracks
widthYesRegion width
heightYesRegion height
session_idYesCanvas session ID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that the tool adds crack patterns, but it does not mention that this mutates a canvas session, whether it is deterministic given the seed, how the region interacts with existing content, or what side effects occur. This is a significant gap for a drawing/mutation tool.

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

Conciseness4/5

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

The description is a single, front-loaded sentence and is easy to scan. It contains little waste, though it does repeat the word 'crack' already present in the tool name. It is concise and structured well, but it could have used slightly more space for material context or behavioral detail.

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

Completeness2/5

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

Given that this is an 8-parameter mutating operation with no annotations and no output schema, this single-clause description is not sufficiently complete. It does not explain how the operation affects the active session/canvas, what the seed controls, how the region is treated, or what the caller should expect after invocation. The selection of an agent would need to rely mostly on the schema and the tool name.

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

Parameters3/5

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

Schema-description coverage is 100%, so all eight parameters already have descriptions in the input schema. The tool description does not provide additional parameter meaning, such as how seed drives crack generation or how x/y/width/height define the affected region. Baseline 3 is appropriate because the schema already does the heavy lifting.

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

Purpose4/5

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

The description uses a clear action verb ('Add'), a specific resource ('crack patterns'), and a concrete target ('a region') with material context ('stone, ice surfaces'). It distinguishes this tool from similar sibling detail tools such as art.detail.texture or art.detail.grain because it names a specific pattern type, though it does not explicitly compare against those siblings.

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

Usage Guidelines3/5

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

The parenthetical 'stone, ice surfaces' gives an implicit context for when to use this tool, but the description does not explicitly state when to prefer it over alternatives like art.detail.edge_break, art.detail.cavity, or art.detail.texture. The usage signal is inferable but not explicit.

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

art.detail.edge_breakB

Apply edge breakup to avoid perfectly geometric silhouettes.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedYesRandom seed
amountYesBreakup amount (0=none, 1=maximum)
session_idYesCanvas session ID
preserve_outlineNoWhether to preserve outline-colored pixels (default true)

TDQS

B3.2/5.0
Behavior2/5

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

There are no annotations, so the description must fully convey behavioral expectations. It only says 'apply edge breakup', without clarifying that this modifies the existing canvas/session, whether it is destructive, how the edge is detected, whether it affects the whole image, or what the visual result is. This is too thin for a mutation tool.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundancy. It states the action and the intended aesthetic outcome efficiently.

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

Completeness2/5

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

For a detail operation with no output schema and no annotations, the description is too minimal. It does not explain the side effects on the existing canvas, what happens to the original edges, the role of preserve_outline behaviorally, or what a successful call returns or changes. The tool seems simple, but the write operation itself is insufficiently contextualized.

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

Parameters3/5

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

Because schema description coverage is 100%, the schema already documents session_id, amount, seed, and preserve_outline. The description adds no extra semantic value for these parameters. A baseline of 3 is appropriate since the schema carries the load.

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

Purpose4/5

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

The description 'Apply edge breakup to avoid perfectly geometric silhouettes' names a specific verb and resource, and tells the agent the aesthetic goal. It is distinct enough from sibling detail tools like crack, grain, or texture, though it does not explicitly contrast itself with them.

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

Usage Guidelines3/5

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

The phrase 'to avoid perfectly geometric silhouettes' gives some indication of when to use this tool, but there are no explicit alternatives, exclusions, or conditions. An agent must infer when edge breakup is preferred over tools like art.detail.crack, art.detail.grain, or art.detail.texture.

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

art.detail.executeC

Run the full detail pass pipeline on an existing canvas session. Requires content already drawn on canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoRandom seed
profileNoDetail profile levelmedium
materialsYesMaterial types to apply
session_idYesCanvas session ID

TDQS

C2.9/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only explains what is run, not what happens to the canvas, whether the operation mutates or is destructive, whether it completes synchronously, or what result is produced.

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

Conciseness4/5

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

The description is one focused sentence that leads with the verb and resource, then adds a useful prerequisite. It is compact and contains no filler, though it would be more helpful with a bit more operational context.

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

Completeness2/5

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

For a 4-parameter pipeline tool with no output schema and no annotations, the description is under-specified. The prerequisite is useful, but the behavior, side effects, and return/result of the pipeline are completely omitted.

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

Parameters3/5

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

The input schema already documents all four parameters with 100% coverage, including the means for seed, profile, materials, and session_id. The description adds no deeper parameter meaning, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description uses a specific verb and resource (run, full detail pass pipeline) and a clear target (existing canvas session), so an agent understands what the scope is. It stops short of 5 because it does not explicitly differentiate from closely related art.detail.* tools such as plan or pass.

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

Usage Guidelines3/5

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

It states the key prerequisite: content must already be drawn on canvas. This gives useful placement in a workflow, but there is no guidance about when to prefer this tool over art.detail.plan, art.detail.pass, or the individual detail pass variants.

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

art.detail.grainA

Add directional grain lines to a region (wood, cloth).

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
seedYesRandom seed
colorYesGrain color as hex string
widthYesRegion width
heightYesRegion height
densityYesGrain density (0-1)
directionYesGrain direction
session_idYesCanvas session ID

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the disclosure burden. It clearly states the mutating behavior ('Add ... grain lines'), but it does not mention whether existing region content is overlaid, replaced, or preserved, nor does it describe determinism or result behavior. This is adequate but not fully transparent.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. The parenthetical examples are useful and the entire content is highly scannable.

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

Completeness3/5

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

The 9-parameter schema is fully documented and the core action is clear, but the description does not explain when to use this tool versus sibling detail effects, how it interacts with existing region content, or what an agent should expect after invocation. Given no annotations and no output schema, the definition is minimally complete rather than rich.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already described in the input schema. The description adds no new parameter-level semantics beyond the top-level grain concept and material hints, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description 'Add directional grain lines to a region' uses a specific verb and concrete output, and the parenthetical examples 'wood, cloth' distinguish grain from the other art.detail.* effects such as speckle, crack, or texture. An agent can tell what the tool does with little inference.

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

Usage Guidelines3/5

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

The examples '(wood, cloth)' imply when this tool is appropriate, but there is no explicit when-to-use or when-not-to-use guidance. It does not name alternatives such as art.detail.texture or art.detail.speckle, and no prerequisites or exclusions are given.

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

art.detail.highlightC

Add highlight clusters to a region for specular/light reflection.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
seedYesRandom seed
colorYesHighlight color as hex string
widthYesRegion width
heightYesRegion height
densityYesHighlight density (0-1)
session_idYesCanvas session ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says the tool adds highlights; it doesn't disclose whether the operation is destructive, whether existing clusters are preserved, how deterministic the seed/color/density interaction is, or what happens in overlapping regions.

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

Conciseness5/5

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

The description is one concise, front-loaded sentence that names the operation, the target, and the purpose without unnecessary filler or repetition of the schema fields.

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

Completeness2/5

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

Given eight required parameters, no annotations, and no output schema, the description lacks important context about how the tool modifies the canvas, what 'clusters' and 'density' do visually, and whether the operation is deterministic. It is minimally sufficient but leaves significant room for mis-invocation.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already explains the parameters clearly. The description adds a high-level purpose but no additional parameter semantics beyond the schema, which is acceptable but not compensational.

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

Purpose4/5

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

The description uses a clear verb and resource: 'Add highlight clusters to a region', with a useful purpose clause 'for specular/light reflection.' However, it doesn't distinguish this from sibling detail tools like art.detail.cluster or art.detail.shadow, so the agent may need to open other definitions to differentiate them.

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

Usage Guidelines2/5

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

There is no explicit guidance about when to use this tool versus alternatives. The purpose clause hints at a use case, but it never mentions sibling tools or conditions that would favor this operator over others in the art.detail.* family.

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

art.detail.materialB

Apply a full material treatment (all texture patterns for that material) to a region.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
seedYesRandom seed
widthYesRegion width
heightYesRegion height
materialYesMaterial type (e.g. "stone", "wood", "metal")
session_idYesCanvas session ID

TDQS

B3.2/5.0
Behavior2/5

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

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It only says what the tool applies, not whether it replaces existing content, respects region boundaries, uses the seed deterministically, or has any side effects on the canvas session.

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

Conciseness5/5

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

The description is one focused sentence with no filler. The action is front-loaded, and the parenthetical definition of 'full material treatment' earns its place by clarifying scope.

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

Completeness2/5

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

For a mutating tool with 7 required parameters, no annotations, and no output schema, a one-sentence description is not enough. It omits behavior around the target region, coordinate handling, seed reproducibility, and what the operation means for existing canvas content.

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

Parameters3/5

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

The schema already provides 100% parameter coverage, so the baseline is 3. The description adds only light context around 'region' and 'material', but it does not deepen the meaning of the seed, coordinates, or session parameters beyond what the schema already provides.

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

Purpose4/5

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

The description states a specific action ('Apply a full material treatment') and target ('to a region'). The parenthetical 'all texture patterns for that material' helps distinguish this from a single texture/detail operation, though it does not explicitly name sibling alternatives.

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

Usage Guidelines3/5

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

The phrase 'full material treatment (all texture patterns)' implies this tool is for applying complete material coverage rather than individual detail effects. However, it does not explicitly state when to use this tool over alternatives such as art.detail.texture or art.detail.speckle.

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

art.detail.passC

Run a single named detail pass on a canvas session.

ParametersJSON Schema
NameRequiredDescriptionDefault
materialsYesMaterial types
pass_nameYesPass name (e.g. "material", "texture", "cleanup", "critique")
session_idYesCanvas session ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state whether the pass mutates the canvas, what effects it has, whether it requires an existing session state, or what side effects occur. The description only says a pass is 'run', leaving the behavioral profile almost entirely undisclosed.

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

Conciseness5/5

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

The description is one concise sentence with no filler or redundancy. It is appropriately short for a tool whose parameters are documented in the schema.

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

Completeness2/5

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

Given there is no output schema and no annotations, the description is too sparse to be fully actionable. It does not explain what a detail pass involves, what materials are used for, what side effects occur, or what the caller should expect after invocation. The presence of many related sibling tools makes this lack of context especially problematic.

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

Parameters3/5

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

The schema provides descriptions for all three parameters, so the schema coverage is 100%. The description itself adds little semantic value beyond the schema, though 'single named' reinforces that pass_name should identify one pass rather than a batch or plan.

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

Purpose4/5

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

The description uses a specific verb ('Run') and identifies the resource ('a single named detail pass' on 'a canvas session'), which makes the basic action clear. However, 'detail pass' is domain-specific jargon and the description does not directly distinguish this from the many art.detail.* siblings such as execute, texture, or material.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus the numerous related sibling tools like art.detail.execute, art.detail.plan, or the specific pass tools such as art.detail.texture and art.detail.material. The phrase 'single named detail pass' implies a singular operation, but 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.

art.detail.planB

Create a detail art plan for an asset, specifying subject, resolution, materials, and detail profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoRandom seed for deterministic output
widthYesAsset width in pixels
heightYesAsset height in pixels
profileNoDetail profile level (low/medium/high/hero/boss/tile/item)medium
subjectYesSubject description (e.g. "stone wall tile", "iron sword")
materialsYesMaterial types (e.g. ["stone", "metal"])

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits on its own. It states that a plan is created, but it does not clarify whether this is a persistent write, a pure planning artifact, requires prior asset registration, has side effects, or returns a plan object. For a creation-style tool, that is a significant transparency gap.

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

Conciseness5/5

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

One clean sentence that fronts the verb and object, names all meaningful input categories, and contains no redundant wording. Good compression without losing needed semantics.

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

Completeness3/5

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

For a relatively simple 6-parameter tool with full schema coverage, the description is adequate, but it does not explain what a 'detail art plan' is used for or how the result integrates with sibling tools. With no output schema and no annotations, mentioning the relation to art.detail.execute or the expected output shape would make the tool materially easier to use correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains all parameters. The description only summarizes them with rendering ('subject', 'materials', 'resolution' for width/height, and 'detail profile' for profile), which adds no new information beyond the schema.

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

Purpose5/5

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

States a specific verb ('Create') and resource ('a detail art plan for an asset'), and enumerates the defining inputs (subject, resolution, materials, detail profile). This distinguishes it from related planning tools like art.production.plan and art.pipeline.plan by clearly focusing on the 'detail' planning scope.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool rather than alternative ones. Although the name suggests it complements execution-oriented siblings like art.detail.execute, no conditions, prerequisites, or exclusions are stated.

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

art.detail.shadowA

Add shadow clusters to a region for depth/occlusion.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
seedYesRandom seed
colorYesShadow color as hex string
widthYesRegion width
heightYesRegion height
densityYesShadow density (0-1)
session_idYesCanvas session ID

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It does state that the tool adds shadows, implying an additive, non-destructive paint operation on a region. However, it does not mention whether it replaces, blends with, or overlays existing pixels, nor does it describe any side effects beyond the plain 'add' framing. This is acceptable but minimal.

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

Conciseness5/5

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

The description is a single, tightly written sentence with no filler words. The verb is placed first, the object is clear, and the purpose clause is tacked on without bloating the length. It earns its place entirely.

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

Completeness3/5

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

With no annotations and no output schema, the description must do more work than usual. It covers what and why but not key contextual details like how 'clusters' are distributed, whether the region is modified in place, or what the call returns. The 100% parameter schema coverage balances this, but for a detail function with eight required parameters, a bit more descriptive context would be welcome.

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

Parameters3/5

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

Schema coverage is 100%, and every parameter has a helpful description (e.g., 'Random seed', 'Top-left X coordinate', 'Shadow density (0-1)'). The description itself adds no new parameter meaning beyond the schema, so it hits the baseline of 3 rather than outperforming it.

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

Purpose5/5

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

The description is a single, specific action: 'Add shadow clusters to a region for depth/occlusion.' It names a concrete operation (add shadow clusters), the target (a region), and the intended artistic effect (depth/occlusion). This clearly differentiates it from sibling tools like art.detail.texture, art.detail.highlight, or art.detail.speckle, even without opening the input schema.

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

Usage Guidelines4/5

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

The phrase 'for depth/occlusion' gives a clear context for when the tool is appropriate: whenever the user wants to convey shadow-driven depth. It does not explicitly name exclusions or suggested alternative tools, so it is not a perfect 5, but it communicates the intended usage scenario without relying on inference.

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

art.detail.speckleA

Add scattered speckle dots to a region (dirt, stone, skin).

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
seedYesRandom seed
widthYesRegion width
colorsYesArray of hex colors for speckle dots
heightYesRegion height
densityYesSpeckle density (0-1)
session_idYesCanvas session ID

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are present, so the description carries full responsibility for behavioral information. It says 'Add' which implies mutation, but it does not disclose how the speckle dots are placed, whether random generation is deterministic via seed, or how the effects interact with existing pixels or the canvas.

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

Conciseness5/5

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

The description is a single short sentence that front-loads the action and provides useful use-case examples. There is no redundant wording or content already present in the schema.

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

Completeness3/5

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

The schema handles parameter details well, and the effect is simple to understand. However, with no annotations and no output schema, the description could still provide more context about how the region is interpreted, how density and seed affect output, and what happens to the target canvas region.

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

Parameters3/5

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

Schema description coverage is 100%, so all eight parameters are already documented with types, ranges, and descriptions. The tool description adds little beyond the operation-level context, so the baseline score of 3 applies.

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

Purpose5/5

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

The description names a specific verb ('Add'), a concrete resource (scattered speckle dots), and a target region with examples (dirt, stone, skin). This clearly distinguishes it from sibling detail tools like grain, crack, or highlight.

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

Usage Guidelines3/5

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

The parenthetical examples provide implicit context for when speckle might be appropriate, but there are no explicit when-to-use instructions or exclusions relative to sibling detail tools. The guidance is implied rather than stated.

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

art.detail.textureC

Apply a texture pattern to a rectangular region on the canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
seedYesRandom seed
widthYesRegion width
colorsYesArray of hex colors to use
heightYesRegion height
densityYesPattern density (0-1)
patternYesTexture pattern name (noise_cluster/voronoi/grain/crack/speckle/cavity/edge_breakup)
session_idYesCanvas session ID

TDQS

C2.9/5.0
Behavior2/5

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

Annotations are not provided, so the description carries the full burden of behavioral disclosure. It says 'Apply' but does not reveal whether the texture overlays, replaces, or blends with existing canvas content, whether the operation is reversible, whether it affects the whole session, or what the return value is. This is insufficient behavioral context for a mutating operation.

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

Conciseness5/5

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

The description is a single concise sentence with no filler and the key action is front-loaded. It earns its place by naming the operation and the target region in an immediately understandable way.

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

Completeness2/5

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

For a 9-parameter tool with all parameters required, no annotations, and no output schema, this description is too thin. It omits the relationship to the art.detail workflow, whether this is a destructive edit, whether coordinates are canvas-absolute or relative, and what effect the density/seed parameters have on behavior. The schema helps with parameter meaning, but the contextual frame is incomplete.

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

Parameters3/5

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

The schema already documents all nine parameters with meaningful descriptions, including pattern name value examples, region geometry, colors, density, seed, and session_id. With 100% schema description coverage, the tool description need not add much; however, it adds essentially no supplemental parameter semantics beyond the schema.

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

Purpose4/5

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

The description clearly states the action ('Apply'), the resource ('a texture pattern'), and the target ('a rectangular region on the canvas'). It is specific enough to understand the tool's core function, but it does not explicitly differentiate this tool from sibling art.detail.* tools such as grain, crack, or speckle, which may also apply localized patterns.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives like art.detail.speckle, art.detail.crack, art.detail.grain, or art.canvas.draw_noise. The description offers no usage context, no exclusions, and no conditions, so an agent must infer selection from the name and parameter list alone.

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

art.get_paletteB

Returns the color palette for the active style.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implicitly indicates a read-only operation ('Returns'), but does not state side effects, permissions, rate limits, or any hidden behavior. This is a significant gap for a tool with no annotation support.

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

Conciseness5/5

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

The description is a single sentence with no extraneous words. It is front-loaded with the core action and result, making it highly scannable and efficient.

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 simple getter with zero parameters, the description covers the essential purpose. However, it does not explain what constitutes the 'active style' (e.g., how it is set or retrieved), and lacks any output format indication. Given the minimal complexity, the description is mostly sufficient, but a bit more context would improve completeness.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is 100% (trivially), so there is nothing to explain. Per the baseline for 0-param tools, a 4 is appropriate because the description correctly omits parameter details that do not exist.

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

Purpose4/5

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

The description clearly states the action ('Returns the color palette') and the subject ('the active style'). It is a specific verb+resource. However, it does not differentiate from sibling tools like art.get_style or art.get_style_rules, which could also be relevant in style contexts, so it is not fully distinct.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. It does not mention conditions, prerequisites, or situations where another tool (e.g., art.get_style) would be more appropriate. With zero parameters, an agent may still call it without knowing if it is the right choice.

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

art.get_project_contextA

Returns the full art context: project config, active style definition, all rule categories, and palette.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states what is returned (config, style, rules, palette) but does not disclose details like the format, size, or whether it might be expensive to call. Since it returns 'full' context, there might be performance implications, but the description doesn't mention them. It also doesn't state any authentication or side effects, but as a read-only aggregate, that might be inferred. The description is typical but not rich in behavioral detail.

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

Conciseness4/5

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

The description is a single sentence that is concise and front-loaded. It immediately states what the tool returns and lists the components. It is efficient, though it could be slightly more structured, but it does its job without waste.

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

Completeness4/5

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

For a zero-parameter tool with no output schema, the description is fairly complete. It clearly states what the agent will receive. The missing piece is guidance on when to use it versus the specific getters, but the core functionality is well described. Given the sibling richness, a bit more context would push it to 5, but 4 is appropriate.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100% (vacuously). The description correctly indicates no inputs are needed; it simply returns the context. Since there are no parameters, the description adds value by stating that no arguments are required, which is clear from the schema. A baseline of 4 is appropriate for a no-parameter tool.

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

Purpose4/5

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

The description clearly states the purpose: returns the full art context, listing four specific components (project config, active style definition, all rule categories, and palette). The verb 'returns' is specific and the resource is clearly named. However, it doesn't explicitly distinguish itself from siblings like art.get_style, art.get_palette, or art.get_style_rules, which are likely subsets of this context. The description implies it is a broader aggregate but doesn't name them directly.

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

Usage Guidelines3/5

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

The description implies this tool is used when you need the full art context in one call, but it provides no explicit guidance on when to use this versus more focused sibling tools like art.get_style or art.get_palette. There is no statement of alternatives or exclusions. An agent can infer it is a one-stop-shop, but the description doesn't explicitly say 'use this when you need multiple components at once' or 'for a single component use the specific getter.'

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

art.get_styleA

Returns the active style definition. Optionally specify style_id and version to look up a specific style.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionNoStyle version number. Only used with style_id.
style_idNoStyle identifier (e.g. "fantasy_pixel"). Omit for active style.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations present, the description carries the behavioral burden. It states that this is a retrieval operation ('Returns'), but does not disclose other behavioral details such as what happens when an unknown style_id is used, whether the active style can change, or what the returned definition contains. The description is accurate but minimal.

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

Conciseness5/5

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

The description is one sentence, front-loaded with what the tool does, and immediately explains how to modify the default behavior. Every phrase contributes meaning: 'Returns the active style definition' sets the base, and 'Optionally specify style_id and version' covers the parameters.

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 simple retrieval tool with two optional, fully documented parameters, the description is largely complete. It lacks an explicit return format or mention of errors, but given the absence of an output schema and the low complexity, the current description provides enough context for correct invocation in most cases.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already well documented in the schema. The description adds a small amount of context about using style_id and version together, but it mostly restates the optionality and lookup semantics that the schema already conveys.

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

Purpose4/5

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

The description clearly identifies the action ('Returns') and resource ('style definition'), and distinguishes between the active style and a specific style when style_id/version are provided. It does not explicitly differentiate from sibling tools such as art.get_style_rules, but the resource and behavior are immediately understandable.

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

Usage Guidelines3/5

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

It provides useful operational guidance: omit style_id for the active style, or supply style_id and optionally version for a specific style. However, it does not explicitly state when to prefer this tool over alternatives like art.get_style_rules or art.validate_style, so usage 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.

art.get_style_rulesB

Returns the rules for a specific category of the active style.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesRule category: pixel_language, outline, shape_language, lighting, or animation.

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the operation is a read ('Returns'), and hints at a dependency on an 'active style' being set. However, it does not explain prerequisites (how the active style gets established), error behavior when a category has no rules, or what 'active' means in context. Adequate for a simple getter but not rich.

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

Conciseness5/5

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

A single sentence of zero redundancy that front-loads the verb ('Returns') before the resource. Every word earns its place; nothing to cut and nothing missing in terms of phrasing efficiency.

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

Completeness3/5

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

The tool is simple (1 param, enum-constrained, no output schema, no nesting), so the bar is low. The description states the return semantics adequately, but leaves the 'active style' dependency unexplained and does not clarify what happens for an empty category. For a low-complexity tool this is close to adequate, with only the state-dependency gap holding it back.

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

Parameters3/5

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

Schema description coverage is 100% — the schema already documents the single 'category' parameter with its enum values and an inline description. The tool description adds no parameter-level information beyond what the schema provides. Baseline 3 applies since the schema does the heavy lifting.

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

Purpose4/5

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

Clear verb+resource: 'Returns the rules for a specific category of the active style.' It identifies the operation (retrieve) and the resource (style rules by category). It does not explicitly differentiate itself from siblings like art.get_style (which returns the whole style) or art.qa.list_rules, so it doesn't fully earn a 5, but the purpose is unambiguous.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. There is no 'use when...', no exclusions, and no mention that art.get_style or art.qa.list_rules might serve different purposes. The description relies entirely on the reader to infer usage from the term 'returns'.

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

art.memory.add_anchorC

Add a new style anchor to the art memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAnchor ID
nameYesHuman-readable name
noteNoOptional note
styleYesStyle reference { id, version }
assetsYesAsset IDs this anchor references
statusYesAnchor status
categoryYesAnchor category
strengthYesAnchor strength
dimensionsYesVisual dimensions
provenanceNoProvenance info

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It only says 'add a new style anchor' and does not disclose whether adding an existing anchor ID fails, overwrites, or duplicates, what validation occurs, or what the tool returns. For a mutation tool this is a meaningful gap.

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

Conciseness5/5

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

The description is a single clear sentence with no filler or redundant elaboration. It front-loads the intended action and wastes no words.

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

Completeness2/5

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

Given the tool's complexity—10 parameters, nested objects, multiple enums, no annotations, and no output schema—the description is far too minimal. An agent is left without guidance on return values, uniqueness/id constraints, required logical relationships between fields, or error behavior. The schema covers parameter syntax but not operational context.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters and their meaning. The description adds no parameter-level detail beyond the schema, so the baseline score of 3 applies.

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

Purpose4/5

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

The description clearly states the operation: 'Add a new style anchor to the art memory.' It names a specific verb and resource. It does not explicitly differentiate itself from sibling memory tools like add_reference or add_rejection, but the resource type is distinct enough to convey the core purpose.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites such as whether the referenced style or asset IDs must already exist, nor does it explain when an anchor should be added rather than updated or resolved.

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

art.memory.add_decisionC

Add a new art decision record to the art memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDecision ID (e.g. "ADR-001")
styleYesStyle reference { id, version }
titleYesDecision title
reasonYesReasons for the decision
statusYesDecision status
decisionYesDecision details
provenanceNoProvenance info
alternativesNoAlternatives considered
consequencesNoExpected consequences
relationshipsNoRelationships to other decisions

TDQS

C2.7/5.0
Behavior3/5

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

Annotations are absent, so the description must carry the burden for behavioral disclosure. While it states the action ('Add a new decision record'), it does not disclose side effects, such as whether the decision is immutable, whether it verifies referenced decisions/relationships, or what the response format is. For a write operation with potential consequences (relationships, provenance), this is a notable gap. The description adds no behavioral insight beyond the action itself.

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

Conciseness2/5

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

The description is a single short sentence with no structure. It is under-specified: for a tool with 10 parameters, it offers no structured overview of parameters or their relationships. It is minimal but not adequately concise in the sense of covering key points—it's just terse without being informative.

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

Completeness3/5

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

The tool has 10 parameters (6 required) and no annotations. The description plus schema collectively make it usable: the schema defines required fields and constraints. However, missing context like error conditions, mutability, duplicates (e.g., what happens if the same ID already exists), or integration with related tools limits completeness. It's adequate for basic invocation but lacks deeper contextual safeguards.

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

Parameters3/5

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

The schema provides detailed descriptions for each field, so the description itself adds very little. The description mentions 'art decision record' but does not map to specific parameters or explain the required 'style' object vs. optional fields. The goal 'such as' style may make sense intuitively, but an agent would rely on the schema likely enough; the description contributes no high-level semantic guidance or parameter rationale.

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

Purpose3/5

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

The description states a specific verb and resource ('Add a new art decision record'), which identifies what the tool does. However, it does not distinguish this from sibling tools like art.memory.add_reference or art.memory.add_rejection, leaving some ambiguity about the specific scope. The term 'art' and 'decision' are clear enough, but the lack of differentiation from similar memory-add tools lowers the score.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. The description provides no context about prerequisites (e.g., must reference an existing style), no mention of when not to use it, and no comparison to siblings like find_decisions or add_anchor. This leaves the agent to infer usage entirely from the tool name and schema.

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

art.memory.add_referenceC

Add a new approved reference to the art memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesReference ID
noteNoOptional note
rolesYesReference roles
styleYesStyle reference { id, version }
statusYesReference status
asset_idYesAsset ID this reference points to
strengthYesReference strength
dimensionsYesVisual dimensions
provenanceNoProvenance info

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations present, the description carries full responsibility. It states 'add' (a mutation) but does not disclose idempotency, whether it validates asset existence, whether it overwrites duplicates, or what it returns. No mention of side effects or prerequisites. A bare one-liner, so 2.

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

Conciseness3/5

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

One short sentence, no fluff. It is front-loaded with the action and object. However, it lacks any structural breakdown (e.g., when/how to use), so while concise it is not information-dense. Average 3.

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

Completeness2/5

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

Missing essential context: what a 'reference' is, how it differs from anchors/decisions, whether multiple references per asset are allowed, and what 'approved' means relative to the status field. The terse description leaves an agent guessing about semantics and preconditions.

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

Parameters3/5

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

Every schema property has an explicit description (e.g., 'Asset ID this reference points to', 'Reference strength'), giving high schema coverage. The description itself adds no extra meaning beyond the word 'approved', which conflicts slightly with the status field. Baseline 3 because the schema does the heavy lifting.

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

Purpose4/5

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

The verb 'add' and object 'reference' clearly indicate a write operation, and the domain 'art memory' situates it among memory management tools. The word 'approved' adds intent but slightly conflates the operation with a status filter; however, it distinguishes from add_anchor/add_rejection siblings. Minor ambiguity, so 4.

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

Usage Guidelines2/5

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

No guidance on when to use this vs. art.memory.add_anchor, add_rejection, or resolve_references. Missing criteria such as 'when you need to store a new reference' or 'prefer add_reference for...'. Only implicit context from the name. Score 2.

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

art.memory.add_rejectionB

Add a new rejection record to the art memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRejection ID (e.g. "rejection-001")
noteNoOptional note
typeYesRejection type
styleYesStyle reference { id, version }
statusYesRejection status
reasonsYesRejection reasons
asset_idNoAsset ID (required for type=asset)
provenanceNoProvenance info
descriptionNoDescription (required for type=direction)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are present, and the description only states the action without disclosing side effects (e.g., whether it validates input, overwrites existing records, or returns a status). The description does not clarify behaviors like conditional requirements.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the purpose and leaves no superfluous words.

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

Completeness2/5

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

The description lacks essential context such as expected output, error handling, or the conditional requirements implied by the schema (e.g., asset_id required for type=asset). An agent would need to infer these from the schema, making the description insufficient on its own.

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

Parameters3/5

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

The schema already provides descriptions for each parameter, including constraints and enums. The tool description adds no further semantic clarification about relationships between parameters (e.g., asset_id vs. description depending on type). It relies entirely on the schema.

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

Purpose5/5

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

The description clearly states the action ('Add a new rejection record') and the resource ('art memory'), making it distinct from sibling tools like 'find_rejections' or 'add_decision'.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives, such as when a rejection is needed after a QA failure or how it complements the 'find_rejections' tool.

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

art.memory.explain_styleA

Explain the current or specified style: core rules, canonical anchors, important decisions, things to avoid, and history.

ParametersJSON Schema
NameRequiredDescriptionDefault
style_idNoStyle ID (defaults to latest from history)
style_versionNoStyle version (defaults to latest)

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of explaining behavior. It clearly discloses that the tool produces an explanation covering rules, anchors, decisions, avoidance guidance, and history, while 'Explain' reasonably implies a read-only, non-destructive operation. It does not detail output format or error behavior, but for a simple explanatory tool the disclosed content 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.

Conciseness5/5

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

The description is a single, front-loaded sentence that states the primary action and resource first, then uses a compact colon-delimited list to enumerate output categories. There is no redundant or filler language.

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 low-complexity tool with no required parameters, no output schema, and no annotations, the description adequately conveys the purpose and the scope of the explanation. It could be more complete by mentioning output format or how this differs from related retrieval tools, but the schema covers parameter defaults and the description covers output content.

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

Parameters3/5

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

Schema description coverage is 100%, with both style_id and style_version already documented as defaulting to latest. The description adds only the notion of 'current' style, which slightly enriches the mental model but does not add substantive parameter meaning beyond what the schema provides. A baseline of 3 is appropriate.

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

Purpose4/5

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

The description uses a clear verb ('Explain'), names the resource ('style'), and enumerates the content of the explanation: core rules, canonical anchors, important decisions, things to avoid, and history. This is more specific than a tautology, though it does not explicitly differentiate itself from siblings like art.get_style, art.get_style_rules, or art.memory.get_style_history.

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

Usage Guidelines3/5

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

The phrase 'current or specified style' implies this tool can explain either a current/default style or one identified by parameters, and the parameter defaults are documented. However, it provides no explicit guidance about when to choose explain_style over sibling tools, no exclusions, and no notes about prerequisites or alternatives.

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

art.memory.find_anchorsC

Search for style anchors with optional filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by status
categoryNoFilter by category
style_idNoFilter by style ID
dimensionNoFilter by dimension
style_versionNoFilter by style version

TDQS

C2.6/5.0
Behavior2/5

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

There are no annotations to cover safety or behavior, so the description carries the full burden. It only states that filters are optional; it does not disclose what the search returns (list? counts?), pagination behavior, or any constraints (e.g., requires a style context). This is a significant gap for a search tool with five filters.

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

Conciseness4/5

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

The description is a single, concise sentence without wasted words. It is appropriately front-loaded with the verb and resource. However, it is minimal to the point of lacking substance, which prevents a 5—it is not verbose, but it also doesn't earn its place by adding value beyond the schema.

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

Completeness2/5

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

With no output schema and no annotations, the description is the sole source of context. It is inadequate for a five-parameter search tool: it does not explain what a 'style anchor' is, what the result format looks like, whether results are paginated, or how this relates to other memory tools. A complete description would need to mention these aspects or rely on a richer schema.

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

Parameters3/5

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

Schema coverage is 100% and each parameter has a 'Filter by ...' description. The tool description adds nothing beyond the schema—it merely says 'optional filters,' which is already implied by having zero required parameters. Given the high schema coverage, a baseline of 3 is appropriate; the description does not enhance or clarify parameter meaning.

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

Purpose3/5

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

The description states a clear verb ('Search') and resource ('style anchors'), so the purpose is evident. However, it does not distinguish this tool from sibling search tools like art.memory.find_references, art.memory.find_rejections, or art.asset.find, all of which likely have overlapping functionality. A 5 requires explicit differentiation, which is absent; a 4 would need some differentiating context, which is also missing.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description simply says 'Search for style anchors' with no mention of scenarios, prerequisites, or why one would prefer this over other search tools in the memory namespace. The agent is left to infer usage from the name and parameters.

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

art.memory.find_decisionsB

Search for art decision records with optional filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by status
style_idNoFilter by style ID
style_versionNoFilter by style version

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It conveys that this is a read-style search with optional filters, but it does not describe result behavior, default scope when no filters are supplied, pagination, limits, or ordering. No contradiction exists, but meaningful transparency is missing.

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

Conciseness5/5

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

A single sentence with no filler; the action and resource are front-loaded. This is appropriately concise for a tool whose parameters are fully documented in the schema.

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

Completeness3/5

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

For a simple three-optional-parameter search, the schema covers parameters, but the description omits return-value expectations and does not differentiate from art.memory.get_decision. Since there is no output schema and no annotations, the agent must infer what a successful response looks like and how broad the search can be.

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

Parameters3/5

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

The input schema has 100% description coverage: each filter parameter is self-documented with a clear enum or type. The description adds no extra meaning beyond 'optional filters', so the schema correctly carries the parameter semantics.

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

Purpose4/5

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

The description states a specific action ('Search') and resource ('art decision records'), and notes that filters are optional. It is distinguishable from the sibling art.memory.get_decision by the search/list framing, though that distinction is not explicit.

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

Usage Guidelines2/5

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

There is no guidance about when to use find_decisions versus get_decision, find_rejections, or other memory search tools. The description only states what the tool does; no context, exclusions, or alternatives are provided.

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

art.memory.find_referencesC

Search for approved references with optional filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoFilter by role
statusNoFilter by status
asset_idNoFilter by asset ID
style_idNoFilter by style ID
style_versionNoFilter by style version

TDQS

C2.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not explain what 'approved' means as a filter default, whether the search returns partial matches, how results are ordered, or what happens when no filters are provided (does it return all references?). It also doesn't describe the return format or pagination behavior.

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

Conciseness3/5

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

The description is a single short sentence, which is concise, but it is too under-specified to be truly useful. It does not front-load any key differentiators or important constraints. It might earn a 4 for brevity but lacks substance, so a 3 is appropriate.

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

Completeness2/5

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

Given the tool has 5 optional parameters, no annotations, no output schema, and a complex domain (art references with multiple roles and statuses), the description is inadequate. It does not explain what type of references are being searched (style, character, etc.) despite the schema listing roles. An agent would need to infer the full context from the schema alone, which is possible but not ideal.

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

Parameters3/5

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

Schema coverage is 100% and each parameter has a basic description ('Filter by role', 'Filter by status', etc.). The description adds minimal value beyond the schema, just using the word 'optional filters' which is already implied by required parameters being 0. It does not clarify the meaning of 'approved' as a status vs. a filter value.

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

Purpose3/5

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

The description 'Search for approved references with optional filters' clearly states the action (search) and resource (references), but it does not specify what kind of references (e.g., art references) or how it differs from sibling tools like art.memory.find_anchors or art.memory.resolve_references. The word 'approved' might imply a default status filter, but it's ambiguous whether it's a default or a filter option.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention that it's for searching art references specifically, nor does it differentiate from other search tools like art.asset.find or art.memory.find_rejections. An agent must infer usage solely from the tool name and schema.

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

art.memory.find_rejectionsC

Search for rejection records with optional filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by rejection type
reasonNoFilter by reason
statusNoFilter by status
style_idNoFilter by style ID
style_versionNoFilter by style version

TDQS

C2.9/5.0
Behavior2/5

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

Since annotations are absent, the description must shoulder the full burden of disclosing behavior, but it only states that a search occurs. The description does not disclose what a 'rejection record' represents, what entity it belongs to, whether any implicit status filtering (e.g., excluding 'archived') happens by default, or what the shape of the results will be. For a non-read-only annotation-less tool, this is a meaningful gap, though it doesn't contradict anything.

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

Conciseness4/5

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

The description is seven words and wastes no words. It front-loads the action verb and noun phrase immediately, which an agent can parse in a single pass. For such a simple filtering tool, this level of concision is appropriate, though it leans toward terse.

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

Completeness3/5

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

For a low-complexity search endpoint with 5 optional, well-documented parameters, the description is mostly sufficient. The main shortcoming is the domain-specific term 'rejection records,' which is never elaborated upon (e.g., rejection of what — assets, styles?), and there is no mention of which sibling tools it complements. An agent familiar with the 'art.memory' domain will manage, but a novice agent might misinfer the resource scope.

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

Parameters3/5

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

Schema coverage is 100%, and each parameter has a 'Filter by...' description, establishing a baseline of 3. The description's 'optional filters' correctly mirrors the schema's 0 required parameters but adds no additional meaning, such as how filters combine when multiple are provided, or whether the filters are inclusive or exact-match.

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

Purpose4/5

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

The description uses a precise verb ('Search') and resource ('rejection records'), making the core action clear and distinct from write operations. However, it doesn't explicitly differentiate from the very similarly-named sibling art.memory.get_rejection, which could plausibly perform the same action in a different mode.

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

Usage Guidelines2/5

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

No guidance is provided for when to choose this tool over alternatives like art.memory.get_rejection, art.memory.find_references, or art.asset.find. The phrase 'with optional filters' implies a parametrized search but never states when this is the right call versus a simple get or lookup.

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

art.memory.get_anchorA

Get a style anchor by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAnchor ID (e.g. "anchor.hero.canonical")

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. 'Get' implies a read operation, but the description does not state whether it returns the anchor object, whether it errors on unknown IDs, or if it has any side effects. Minimal behavioral detail is provided.

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

Conciseness5/5

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

A single, front-loaded sentence states exactly what the tool does with zero wasted words. It is concise enough for agents to quickly parse and well-structured.

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

Completeness3/5

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

This is a simple, single-parameter getter, and the schema makes the parameter fully clear. However, without annotations or an output schema, the description leaves gaps around expected return values and failure behavior. Adequate for a straightforward retrieval, but not fully complete.

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

Parameters3/5

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

The schema documents the 'id' parameter with 100% coverage, including an example, so the description needn't restate it. The description adds only the resource type ('style anchor') to the parameter context, which is marginal—the tool name already conveys that. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Get'), a specific resource ('style anchor'), and a specific lookup criterion ('by its ID'). This clearly distinguishes the tool from sibling memory operations such as find_anchors (searching) and add_anchor (creating).

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

Usage Guidelines3/5

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

The phrase 'by its ID' implies the appropriate usage scenario—when you already know an anchor's ID—but it does not explicitly instruct when to prefer this tool over alternatives like find_anchors or get_reference. Usage is left to inference rather than stated.

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

art.memory.get_decisionA

Get an art decision record by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDecision ID (e.g. "ADR-001")

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'get', implying a read operation, but does not state potential outcomes such as 'returns null if not found' or error behavior. There is no information about side effects or return structure. The description adds minimal value beyond the verb.

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

Conciseness5/5

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

A single, concise sentence that is front-loaded with the action and target. Every word earns its place; there is no fluff or redundancy.

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

Completeness3/5

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

For a trivial getter, the description covers the essential input (id) and implies a return of the record. However, it omits details like return format, not-found handling, or whether the record is returned in full. Since there is no output schema, these gaps reduce completeness. The description is adequate but not fully comprehensive.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already documents the id parameter with an example format. The description merely repeats 'by its ID', adding no new meaning beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('get') and resource ('art decision record') with a clear key ('by its ID'). It is unambiguous and naturally distinct from sibling art.memory.find_decisions, which implies searching/filtering. The purpose is immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when an ID is known, but does not explicitly mention when not to use it or contrast it with find_decisions. It provides no exclusions or alternatives. For a simple getter, this is acceptable but leaves the agent to infer the differentiation from naming conventions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.memory.get_referenceC

Get an approved reference by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesReference ID (e.g. "reference.hero.front")

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not disclose side effects (though likely read-only), error handling, or return format. With no annotations, it fails to convey what happens if the reference is not approved or not found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, using a single clear sentence with no unnecessary words. It is well-structured for quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the large set of sibling tools, the description lacks sufficient context about what a reference is and when to use this operation. It also omits expectations about the return value, leaving the agent with incomplete information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The 'id' parameter has an example in the schema, providing some semantic context. However, the description adds no extra meaning beyond the schema, and the significance of 'approved' is not explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (get) and the resource (approved reference by ID). It is specific and distinguishes from sibling tools like find_references or add_reference, though the qualifier 'approved' could use clarification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly indicate when to use this tool versus alternatives like find_references or add_reference. It lacks guidance on conditions such as having an ID or needing only approved references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.memory.get_rejectionA

Get a rejection record by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRejection ID (e.g. "rejection-001")

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavior. It indicates a read operation ('Get') but does not mention any potential side effects, authorization requirements, rate limits, or error conditions. For a simple get it is adequate, but it adds no extra context beyond the verb and resource.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, efficient sentence that conveys the entire purpose with no wasted words. The information is front-loaded and immediately actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-id operation with one parameter and no output schema, the description is structurally sufficient. However, it lacks explanation of what a rejection record is, when one would use this instead of find_rejections, and what happens if the ID does not exist. Given the broader context of the toolset and the presence of a sibling search tool, more context would help an agent decide when to call this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — the 'id' parameter is already described in the schema. The tool description adds no additional meaning or usage details for the parameter, so it earns the baseline score of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb (Get) and resource (rejection record) with the specific method of lookup (by ID). It is immediately distinguishable from the sibling art.memory.find_rejections, which implies a search/filter operation. However, it does not explicitly name the sibling as the alternative, so it misses the full 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you already have a rejection ID, but it does not provide explicit guidance on when to prefer this over find_rejections or any other access pattern. There is no statement of when not to use it or mention of prerequisites. The context is clear enough but lacks exclusions or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.memory.get_style_historyB

Get the full style evolution history.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Get', which implies a read operation, but it does not disclose the return format, whether it returns a list or object, any pagination, or side effects. For a simple read tool this is minimal, but still incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence with no superfluous content. It is appropriately short for a tool with no parameters, though it could perhaps be slightly more informative without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (no params, no output schema), and the description explains its basic function. However, it provides no context about when to use it relative to sibling tools or what kind of history is captured (e.g., across versions, changes, etc.). It is adequate but leaves gaps for an agent deciding between similar memory tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the schema trivially covers 100% of parameters. The description adds nothing about parameters, but none exist, so the baseline of 4 applies per the rubric.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and a clear resource ('full style evolution history'). It is not a tautology and conveys what the tool does. However, it does not distinguish it from sibling memory tools like get_summary or explain_style, which might overlap in purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. No context, prerequisites, or exclusions are mentioned. Given the large set of sibling tools, an agent would have to infer when to call this over others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.memory.get_summaryA

Get a summary of the art memory: anchor count, active decisions, active rejections, total references.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavior. It correctly describes the returned counts and implies a read operation, but does not explicitly state it is side-effect free, nor does it mention any error conditions or edge cases (e.g., empty memory). It is adequate but not richly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that is front-loaded with the action ('Get a summary') and lists the key return fields. Every word adds value, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, read-only summary tool with a clearly enumerated output, the description is complete. An agent needs no further details to invoke it correctly: no inputs, no schema complexity, and the output is specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description appropriately focuses on return payload rather than parameters, and schema coverage is trivially 100% with an empty properties object. No additional parameter explanation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (Get) and resource (summary of the art memory) and enumerates the specific content (anchor count, active decisions, active rejections, total references). This defines a distinct purpose compared to the many granular sibling tools like get_anchor or find_references.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage as an overview, contrasting with the more specific lookup tools in the sibling list. However, it does not explicitly state when to prefer this over alternatives or provide exclusions, though the word 'summary' effectively signals its role.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.memory.insightsA

Get style insights derived from approved assets — patterns, preferences, and learned conventions from the asset corpus.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the behavioral burden. It discloses that the tool produces derived insights from approved assets rather than raw data. However, it does not explicitly say it is read-only, whether it is deterministic, whether it aggregates lazily or from a stored precomputed index, or whether it requires any authorization context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loads the action and object ('Get style insights'), and then elaborates with a dash to define what 'insights' means. There is no wasted wording and no placeholder language; it is dense and directly relevant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool, the description explains what the result is conceptually about: style patterns, preferences, and learned conventions from approved assets. It does not define an exact output shape, but this is acceptable for a natural-language-style knowledge/insights endpoint. The main missing piece is a clearer sibling separation, which is a smaller gap because there are no parameters or schemas to otherwise document.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool accepts zero input parameters, so there is little the description must add beyond schema. The description does not need to explain parameter semantics, and it appropriately spends its words on the semantics of the returned insights instead. This is a clean zero-parameter case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb and resource: 'Get style insights', and clarifies what those insights consist of — patterns, preferences, and learned conventions derived from the approved asset corpus. It does not explicitly compare against siblings like art.get_style or art.memory.explain_style, but the 'derived from approved assets' language differentiates it from raw style retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool should be used when an agent wants pooled style patterns and preferences from approved assets, but it gives no explicit when-to-use/when-not-to-use guidance and does not name alternatives. An agent would have to infer how this differs from art.get_style_rules, art.memory.explain_style, or art.memory.get_summary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.memory.negativeA

Get negative patterns (rejected examples) for a type/material — query rejections filtered by type hints in reasons.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoAsset type to filter negative patterns
materialNoMaterial type to filter negative patterns

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full behavioral burden. It discloses a non-obvious detail (filtering happens via 'type hints in reasons'), and 'get/query' implies a read-only operation. But it does not state whether there are side effects, what happens when no filters are given, or what the return shape is.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one compact sentence that front-loads the core verb and resource, and then adds a concrete implementation nuance after the dash. There is no filler or redundant restatement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is relatively simple, and the description is mostly adequate for a lookup-style operation. But it does not explain the relationship to the related rejection tools, whether at least one parameter should be supplied despite a 'required parameters: 0' signal, or what the returned negative patterns look like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both properties ('type', 'material') already explain their role as filters. The tool description adds little beyond the natural reading of the schema, and the connection to 'type hints in reasons' is not spelled out in parameter-level terms.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb ('get') and resource ('negative patterns/rejected examples') and adds a specific filtering mechanism ('type hints in reasons'). It is clearly distinct from a generic memory query, though it doesn't explicitly differentiate itself from the closely related sibling tools art.memory.get_rejection and art.memory.find_rejections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The reader can infer the intended use: it is for retrieving rejected examples or negative patterns filtered by type/material. However, there is no explicit guidance about when to choose this tool instead of the similar memory rejection tools, nor any mention of exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.memory.resolve_referencesD

Resolve relevant references, anchors, decisions, and rejections for a given context. Returns categorized results.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoAsset type filter
categoryNoCategory filter
style_idNoStyle ID (defaults to latest)
dimensionsNoDimensions to match
style_versionNoStyle version (defaults to latest)

TDQS

D1.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations or descriptions of side effects, return format, or error behavior. The tool is named 'resolve' but it is unclear whether it performs any mutations, caches results, or is purely read-only. The statement 'Returns categorized results' is too generic to convey the actual output structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the main verb and object. It avoids fluff and directly states the input (context) and output (categorized results). However, the brevity contributes to ambiguity, which slightly reduces the score, but structurally it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks critical contextual details: no output schema is provided, no examples, no explanation of how the parameters affect the results, and no mention of which categories are returned. Given the existence of more specific memory tools, this generic description leaves the agent incompletely informed about the tool's full capability and behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Each parameter has a brief description (e.g., 'Asset type filter', 'Style ID (defaults to latest)'), but their relationship to the resolution process is not explained. For instance, how do 'type' and 'category' interact? What does 'dimensions to match' mean in the context of resolving references and anchors? The descriptions are skeletal and do not clarify the parameter roles beyond generic filters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is vague: 'resolve relevant references, anchors, decisions, and rejections' does not clearly define the action or distinguish it from the existing find_* sibling tools (e.g., find_references, find_anchors, find_decisions, find_rejections). The term 'relevant' and 'given context' are ambiguous, and the parameters (type, category, style_id, dimensions) are not explicitly tied to that context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this combined resolver versus the dedicated find functions for each memory type. The description does not mention preferred scenarios, fallback logic, or differences from the alternatives, leaving the agent without clear usage criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.memory.signatureA

Compute a visual signature (deterministic fingerprint) for a canvas session — color distribution, cluster stats, edge complexity, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesCanvas session ID

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral context. It discloses that the fingerprint is deterministic and indicates what metrics are computed, which is meaningful. However, it does not state side effects (if none), response format, or performance characteristics; the absence of explicit mutation wording suggests a read-like operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence with a clear main clause and illustrative components, efficiently front-loaded. There is no redundant wording, and the 'etc.' prevents over-committing while still providing representative detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one parameter, but with no output schema, the description provides only a partial picture of the return value. It names some output features but leaves the exact structure undefined and doesn't mention side effects or behaviors such as caching or error conditions, which could matter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes session_id as 'Canvas session ID' with 100% coverage. The description adds general context but no new semantic details about the parameter. Baseline 3 applies because the schema handles parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Compute') with a well-defined resource ('visual signature/deterministic fingerprint') and target ('canvas session'). It also names example components (color distribution, cluster stats, edge complexity), making the tool's purpose clear and distinguishable from siblings like art.memory.get_summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance about when to use this tool versus alternatives is provided. The description implies its use whenever a deterministic visual fingerprint of a canvas session is desired, but does not state prerequisites, exclusions, or how it compares to other memory/analysis tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.pipeline.analyzeB

Analyze a reference image. Returns palette, silhouette, composition, pixel characteristics. Provide either a file path or reference_id of an already-uploaded reference.

ParametersJSON Schema
NameRequiredDescriptionDefault
poseNoPose (e.g. "standing", "walking", "idle")
facingNoFacing direction (e.g. "front", "left", "3/4")
subjectNoWhat the image depicts (e.g. "goblin warrior")
categoryNoAsset category (e.g. "monster", "character", "tile")
file_pathNoPath to PNG file (relative to project root)
reference_idNoReference ID (if already stored in references/)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It is good that the description names the returned analysis categories and clarifies that the reference must already be uploaded. However, it is silent on side effects, required versus optional parameters, and what happens when both file_path and reference_id are supplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two focused sentences with no filler. It front-loads the action and return kinds, then states the input requirement. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for invoking the tool with file_path or reference_id and provides a basic sense of outputs despite the lack of an output schema. However, four of the six parameters (pose, facing, subject, category) are unmotivated in the prose, and there is no guidance on how this tool fits among the many pipeline and analysis-related siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all six parameters, so the baseline is 3. The description adds real value by expressing the either/or relationship between file_path and reference_id and adding the 'already-uploaded' precondition, which are insights not present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action ('Analyze a reference image') and lists meaningful outputs ('palette, silhouette, composition, pixel characteristics'), so an agent can tell what the tool does. It does not explicitly contrast itself with similar-sounding siblings like art.canvas.analyze_ref or art.pipeline.* tools, so it stops just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance about when to use this tool versus the many sibling alternatives. It only provides the file_path-or-reference_id input choice, which is helpful for calling the tool but does not help an agent decide whether this tool is the right one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.pipeline.planA

Build a 7-stage ArtPlan (silhouette-first) from an ArtSpecification. The plan defines ordered generation stages with QA checkpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault
reference_idYesReference ID with existing spec
max_iterationsNoMax QA iteration loops (default: 3)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It does disclose useful behavioral details: 7 stages, silhouette-first ordering, and QA checkpoints. But it does not say whether the plan is returned only, whether other artifacts are mutated, or how the plan is structured beyond those traits.

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 concise sentences with no filler. The main action and output are front-loaded, followed by scoping detail. The composition is tight and scannable.

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?

Given that there are only two parameters, both fully documented, and the tool's behavior is explained, the description is largely sufficient for an agent to invoke it. It lacks an output schema or explicit return-value description, but the plan definition and QA checkpoints give adequate context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no extra parameter-level meaning beyond what the schema already documents; it only reinforces the reference_id-to-spec relationship.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Build') and resource ('7-stage ArtPlan') and clarifies the input ('ArtSpecification') and output concept ('stages with QA checkpoints'). It is clearly distinguishable from similar pipeline and detail tools, though it doesn't explicitly contrast itself with siblings such as art.production.plan or art.pipeline.plan's scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'from an ArtSpecification' implies the tool is used after a specification exists, so an agent can infer the basic when-to-use. However, it gives no explicit guidance on when not to use it, nor does it name alternatives like art.pipeline.analyze or art.production.plan.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.pipeline.scoreC

Compute visual quality score for a pixel art asset. Scores silhouette, palette, composition, pixel cleanliness, and style match.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_pathYesPath to PNG file to score (relative to project root)
reference_idNoReference ID for comparison (optional)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral disclosure burden. It states that the tool computes a score and lists the criteria, but it does not describe side effects, output shape, read-only nature, error conditions, or whether the quality score is a numeric grade or structured result. Important behavior remains opaque.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. It states the operation and immediately lists actionable scoring criteria. Every sentence earns its place, and the most essential information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no description of the return format, which is a notable gap for a scoring tool. The description also does not mention how reference_id changes behavior, whether the tool is safe to run, or how it fits into a pipeline flow relative to other art.* tools. It is minimally sufficient but leaves several operational questions unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema adequately documents asset_path and reference_id. The description adds context by naming the scoring dimensions, but does not elaborate on how the parameters affect scoring or how reference_id influences the result beyond the schema's 'comparison' wording.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'compute visual quality score for a pixel art asset.' It also lists concrete scoring dimensions (silhouette, palette, composition, pixel cleanliness, style match), making the tool's function clear. It does not explicitly distinguish itself from related sibling tools like art.critic.evaluate or art.qa.asset, but the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives such as art.pipeline.analyze, art.critic.evaluate, or art.qa.asset. There is no indication of when scoring is appropriate, what it is not for, or how it differs from other quality-related tools in the sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.pipeline.specB

Build an ArtSpecification from a reference analysis + active style. The spec defines canvas, palette, outline, shading constraints for pixel art generation.

ParametersJSON Schema
NameRequiredDescriptionDefault
subjectNoOverride subject description
max_colorsNoOverride max palette colors
canvas_widthNoOverride canvas width
reference_idYesReference ID to build spec from
canvas_heightNoOverride canvas height

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations provided, so the description must disclose behavioral traits on its own. It explains the produced spec but leaves side effects, persistence, and error behavior entirely unstated. For instance, it does not say whether building a spec mutates any state or simply returns an object.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences, front-loaded with the primary purpose and then clarifying the spec's contents. Every clause contributes to understanding the tool's output and scope, with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description leaves an important undefined concept: 'active style' is not explained in terms of where the style comes from or how it is obtained. It also does not mention follow-up tools or whether the output spec is a standalone object or input to another pipeline step. With no output schema, these gaps matter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter already having a clear description such as 'Override canvas width' and 'Reference ID to build spec from.' The description adds a high-level mapping to canvas and palette constraints, but the schema already or, does the heavy lifting. This aligns with the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Build an ArtSpecification from a reference analysis + active style.' It clarifies the tool's output constraints by naming canvas, palette, outline, and shading for pixel art, which helps distinguish it from broader pipeline tools, though not from the sibling art.tilemap.create_spec explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'from a reference analysis + active style' implies when the tool should be used, but the description does not give explicit when-not scenarios or name alternative spec-creation tools. It gives partial context about prerequisites without fully routing the agent among the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.production.approveB

Approve a production job that is awaiting approval, moving it to completed.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesProduction job ID

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries full behavioral disclosure. It states the primary effect (approving and moving to completed) but lacks any mention of side effects, failure conditions, reversibility, or authorization requirements. For a mutation tool, this is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no redundant words. It front-loads the action and outcome, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It does not mention what the tool returns, what happens if the job is not in an 'awaiting approval' state, or potential errors. The agent may be left uncertain about the behavior in edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage for the single parameter job_id, which is described as 'Production job ID'. The tool description does not add any extra semantic detail about this parameter, so the baseline of 3 is appropriate since the schema already documents it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'approve', the resource 'production job', and the outcome 'moving it to completed'. It is specific enough to distinguish from asset approval (art.asset.approve) by specifying 'production job'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used when a production job is 'awaiting approval', which is a context cue. However, it does not explicitly mention alternatives like art.production.start or art.asset.approve, nor does it state when not to use this tool. Thus, usage is only implied, not fully guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.production.attemptsB

Get the attempt history for a production job.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesProduction job ID

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states 'get' implying a read operation, but it does not disclose any additional behavioral traits like pagination, ordering, limits, or what data is included (e.g., timestamps, outcomes). For a history tool, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is maximally concise, a single short sentence that immediately states the action and resource. There is no wasted verbiage, and it is well front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description is adequate but not complete. It explains the purpose but lacks any details on output format, ordering, or potential errors. Given its simplicity, it's minimally viable but could easily be improved with a sentence on what data is returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with the job_id parameter described as 'Production job ID' in the schema. The description does not add any additional meaning or constraints beyond that, but given the high schema coverage, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('get') and a specific resource ('attempt history for a production job'), which is distinct enough from sibling tools that focus on status, inspection, or planning. However, it does not explicitly differentiate itself from other history-related tools like art.memory.get_style_history or art.qa.history, so it's clear but not fully distinguished.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as art.production.status or art.production.inspect. The description only states what it does, not the scenarios where it is the preferred choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.production.cancelC

Cancel a production job.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesProduction job ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Cancel' without explaining whether cancellation is destructive, irreversible, audited, or whether it affects running operations. This is notably thin for a state-changing operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler or repetition. It communicates the basic operation immediately, and given the single-parameter schema, the brevity is appropriate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a cancellation operation with no annotations and no output schema, the description is too sparse. It does not state the effects of cancellation, whether it can be reversed, what happens to existing production attempts, or how an agent should confirm success.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the single parameter 'job_id' as a 'Production job ID' with 100% coverage, so the description does not need to add parameter detail. It adds no extra semantic meaning beyond what the schema provides, which keeps this at baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action and resource: 'Cancel a production job.' It is specific enough to convey the core purpose, though it does not explicitly differentiate itself from sibling art.provider.cancel or explain what qualifies as a production job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus alternatives, nor any mention of prerequisites or exclusions. The description simply states the action without indicating whether the job must be active, pending, or in a particular state to be cancellable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.production.createB

Create a production job (plan + persist, does not start execution).

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNoStyle override
outputYesOutput specification
subjectYesSubject description (e.g. "goblin", "fire sword")
categoryNoAsset category (e.g. "enemy", "npc")
animationNoAnimation requirements
asset_typeYesAsset type (e.g. "monster", "character", "item")
request_idYesUnique request identifier
max_attemptsNoMaximum generation attempts
preferred_providerNoPreferred provider ID

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must disclose behavior on its own. It does clarify the tool only plans and persists, not executes – useful. But it omits side effects (is it idempotent? does it overwrite?), state changes, auth/rate limits, or what happens on duplicate request_id. For a creation tool with zero annotation coverage, this is a meaningful gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single concise sentence, front-loaded with the key distinction ('plan + persist, does not start execution'). Zero fluff. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 9 parameters, 2 nested objects, and no annotations or output schema, the one-line description leaves important gaps: what a production job is, what 'plan + persist' entails, validation rules, and what success looks like. The sentence conveys scope but not enough context to guide detailed usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with per-field descriptionsches (all fields have descriptions). The tool description adds no behavior beyond identifying that it persists a plan. Baseline 3 is appropriate since the schema itself is self-explanatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Create') and resource ('production job'), and clarifies scope with 'plan + persist, does not start execution'. It's clear what the tool does and meaningfully distinguishes it from execution tools (art.production.start). However, it doesn't explicitly name sibling tools or further qualify the resource type, leaving slight ambiguity about what a 'production job' entails.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says it does not start execution, which implies a workflow where the agent would call this to plan/persist and then use art.production.start separately dozen but no explicit when/when-not guidance is given. No exclusions, alternatives, or prerequisites are mentioned, so an agent gets minimal direction on when to select this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.production.inspectC

Get full details of a production job including events, attempts, and plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesProduction job ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It is a read operation ('Get full details') but does not state whether it requires special permissions, the volume of data returned (potentially large), any pagination behavior, or whether the job must exist (error behavior). It does suggest scope by naming included sub-resources, but lacks critical operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no redundancy. The key word 'full details' and the listed components (events, attempts, plan) are front-loaded. It is appropriately brief for a tool with one parameter and no complex output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's purpose (inspection) and the presence of many closely related production tools, the description is adequate but not complete. It does not specify the output structure (no output schema provided), does not differentiate from status/attempts, and gives no usage prerequisites. An agent might still confuse this with art.production.status due to lack of distinction, though the word 'full' hints at comprehensiveness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (job_id has a simple description). The description confirms the parameter is a production job ID but adds minimal extra meaning. Since the schema already documents the parameter, the baseline is 3. The description does not clarify any format specifics (e.g., whether it accepts an existing job vs. pending).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('full details of a production job'), listing the included sub-resources ('events, attempts, and plan'). It distinguishes from siblings like 'art.production.status' (which implies a lighter, status-only snapshot) and 'art.production.list' (which lists jobs), but the differentiation is implicit rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like art.production.status or art.production.attempts. It does not mention that it retrieves a superset of status/attempts data, nor does it provide exclusions or contextual triggers. The distinction must be inferred from tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.production.listB

List all production job IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It merely states 'List all production job IDs' without mentioning pagination, ordering, rate limits, authentication, or whether it's a read-only operation. This minimal disclosure is insufficient for a tool with zero annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no unnecessary words. It's highly concise and front-loaded, stating the core action immediately. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless tool with no output schema, the description adequately conveys the action and result (production job IDs). It could mention whether all IDs are returned at once or paginated, but given the tool's simplicity, the current description is mostly complete. The lack of any usage context or limitation notes is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, so the schema description coverage is effectively 100%. Per the calibration rule, a baseline of 4 applies. The description adds no parameter information, but none is needed since there are no parameters to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action and resource: 'List all production job IDs.' It's specific and unambiguous. However, it doesn't distinguish itself from similar sibling tools like art.production.status or art.production.attempts, which could also return lists of jobs. The lacking differentiation prevents a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool instead of alternatives. The description only says what it does, not when an agent should choose it over other production-related tools. There's no mention of scenarios or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.production.planB

Create a production plan for an art asset (inspect before executing).

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNoStyle override
outputYesOutput specification
subjectYesSubject description (e.g. "goblin", "fire sword")
categoryNoAsset category (e.g. "enemy", "npc")
animationNoAnimation requirements
asset_typeYesAsset type (e.g. "monster", "character", "item")
request_idYesUnique request identifier
max_attemptsNoMaximum generation attempts
preferred_providerNoPreferred provider ID

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description gives only the basic action 'create'. It does not disclose whether the plan is executable, whether it overwrites existing plans, or any permissions or side effects. For a tool with no annotation coverage, this is inadequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no waste, and the parenthetical adds a useful operational note. It is front-loaded and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 9 parameters, nested objects, and no output schema, the description is far too sparse. It doesn't explain what a 'production plan' entails, what the output will be, or how to handle potential failures. An agent lacks critical context for successful invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so all 9 parameters are individually documented. The tool description adds no additional meaning or relationships between parameters, which meets the baseline for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it creates a production plan for an art asset, with a specific verb and resource. It distinguishes from siblings by focusing on 'plan' rather than execution or status, though it doesn't name alternative tools explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical '(inspect before executing)' implies a workflow sequence but does not explicitly state when to use this tool versus others like art.production.create or art.production.start. No exclusions or alternative conditions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.production.resumeA

Resume a failed or interrupted production job.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesProduction job ID

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states 'resume' but does not explain the effects, prerequisites (e.g., whether the job must be in a specific state), side effects, or potential outcomes. It doesn't disclose what happens if the job is not failed/interrupted, nor does it mention any auth or resource requirements. This is a significant gap for a state-changing operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the verb and resource. It contains no fluff or redundancy. Every word adds value in defining the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema, the description is minimally adequate. It covers the trigger condition ('failed or interrupted') but omits behavioral details like state transitions, error handling, or idempotency. While not incomplete enough to be unusable, it leaves agents guessing about post-call behavior and failure modes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes the single parameter (job_id, 'Production job ID') with 100% coverage. The description adds no additional parameter-level information, so it meets the baseline of 3 for schema-covered parameters. No extra value is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Resume') with a clear resource ('production job') and scope ('failed or interrupted'). It clearly distinguishes from siblings like 'start' (new jobs) or 'cancel' (stopping jobs). No ambiguity in intent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states the condition for use ('failed or interrupted'), which provides clear usage context. While it doesn't mention alternatives or exclusions (e.g., don't use on completed jobs), the condition is sufficiently clear to differentiate from related tools. The absence of explicit alternatives is a minor gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.production.startC

Start executing a production job.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesProduction job ID

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state that this action mutates the job's state, whether it requires prior planning, what happens if the job is already running, or whether it is idempotent. For a state-changing operation with zero annotation coverage, this is a significant transparency gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with no wasted words. The content is minimal, but for a single-line description it is appropriately compact and front-loaded with the action. It is not padded with filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a state-changing operation with no annotations, no output schema, and a single required parameter. The description is too minimal to guide the agent: it does not define what 'start' means (versus resume/create), what conditions must hold, what the expected side effects are, or what a successful call returns. Given the tool has many distinguishing siblings, this level of detail is inadequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema declaration coverage is 100%, and the sole parameter job_id is described in the schema as 'Production job ID'. The description adds no meaning beyond this — it does not clarify whether the ID must refer to a planned, queued, or draft job, or what type of job ID (UUID, numeric, etc.) is expected. Baseline 3 holds because the schema already documents the parameter adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description has a clear purpose: it starts a production job. However, 'production job' is vague and the description does not specify what 'start' entails relative to siblings like 'resume', 'plan', or 'create'. It lists a clear verb and resource but lacks the specificity to fully distinguish itself from closely related production actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus close siblings like art.production.resume or art.production.create. The agent is left to infer that 'start' may be the initial execution trigger, but there is no wording describing prerequisites, sequencing, or when an alternative (e.g., resume) would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.production.statusC

Get the current status of a production job.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesProduction job ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of behavioral disclosure. It implies a read-only operation through 'Get', but does not explain what data is returned, what statuses may be observed, whether the tool errors on unknown job IDs, or any side-effect-free guarantees beyond the verb itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence with no filler or repetition. It is front-loaded with the action and resource, though it is so terse that it misses opportunities to add useful routing or behavioral context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and no annotations, the description is too thin. It identifies the required parameter but leaves unclear what a caller should expect as a response, what valid production statuses are, and how this tool fits into the production workflow relative to sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes job_id with 100% coverage as 'Production job ID', so the parameter's meaning is fully documented. The description adds no additional parameter-specific semantics such as ID format, lookup scope, or relation to other production tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb 'Get' and the resource 'current status of a production job', which differentiates it from production lifecycle tools like create, start, resume, cancel, and approve. However, it does not distinguish it from overlapping siblings such as art.production.inspect or art.production.attempts, leaving some ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives like inspect, attempts, or list. There is no context about polling patterns, prerequisites for a job to have a status, or when another tool would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.provider.analyzeB

Analyze a PNG file using the canvas-analysis provider. Runs local analysis (signature, clusters, palette) without external APIs.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNoStyle context (uses default if omitted)
asset_idNoAsset ID for signature tagging
operationYesAnalysis operation to perform
source_pathYesAbsolute path to the PNG file to analyze
compare_pathNoSecond PNG path (required for compare_canvases)
connectivityNoCluster connectivity: 4 or 8 (default 8, for detect_clusters)

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral disclosure burden. It does disclose a genuinely useful trait: analysis runs locally without external APIs. However, it does not disclose potential side effects such as asset tagging via the asset_id parameter, error behavior when source_path does not exist or is not a PNG, or the performance/cost characteristics of the analysis.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler; the core purpose is front-loaded and the behavioral differentiator (local, no external APIs) follows immediately. Both sentences earn their place. It only loses a point because it is efficient but slightly under-informative — a brief mention of the comparison operation would make it fully representative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description bears a heavy burden, and it falls short. It covers only three of the five operations (signature, clusters, palette) while omitting analyze_canvas and compare_canvases, says nothing about return values, and does not address side effects like asset tagging or how this tool differs from art.pipeline.analyze and art.canvas.analyze_ref. For a 6-parameter tool with 5 operation modes, this is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's references to signature, clusters, and palette map onto three of the five operation enum values (compute_signature, detect_clusters, extract_palette), which lightly reinforces the schema. It adds no meaning about compare_path, connectivity, style, or asset_id beyond what the input schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Analyze'), a concrete resource ('PNG file'), and a named provider ('canvas-analysis'), then enumerates the analysis categories (signature, clusters, palette). The 'without external APIs' phrase partially differentiates it from provider-execution siblings. However, it does not explicitly name any sibling (e.g., art.pipeline.analyze or art.canvas.analyze_ref) and omits the compare_canvases operation from its capability summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Runs local analysis... without external APIs' implies a selection criterion — prefer this tool when external API calls must be avoided — which gives some context. But no alternative tool is named and no when-not-to-use conditions are stated. Among near siblings like art.provider.execute, art.provider.operation, and art.pipeline.analyze, the agent is left to infer the boundaries on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.provider.artifactB

Get details of a generated artifact.

ParametersJSON Schema
NameRequiredDescriptionDefault
artifact_idYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. The verb 'Get' implies a read-only, side-effect-free retrieval, which is the core behavioral trait for a getter, but the description says nothing about what happens for unknown artifact_ids, error conditions, or the returned detail structure. For a single-parameter read tool this is acceptable but thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence with no wasted words: 'Get details of a generated artifact.' It is appropriately sized for a one-parameter read tool and front-loads the core action, though it is more minimal than rich.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool (1 parameter, no annotations, no output schema) the description covers the basic operation, but the meaning of 'details' is undefined and the tool can still be confusing among siblings. The lack of output schema means the description could have explained what the agent receives, so overall completeness is only partial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema alone contributes almost nothing beyond the parameter name and type. The phrase 'generated artifact' adds real meaning by clarifying that artifact_id refers to a produced artifact rather than an asset or provider instance, though it does not explain ID format, provenance, or how the ID relates to outputs of art.provider.execute or art.provider.operation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'get details' of a 'generated artifact,' so an agent can tell what kind of operation this is. However, it does not explicitly distinguish itself from similar siblings like art.asset.get, art.provider.get, or art.asset.inspect_version — the word 'generated' hints at the difference but leaves the contrast unspoken.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus the many look-alike getters in the family (art.asset.get, art.provider.get, art.asset.inspect_version). With over 70 sibling tools and no exclusions or alternative routing, an agent must guess the intended use case from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.provider.cancelC

Cancel a running provider operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
operation_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action (cancel) but doesn't disclose what happens to the operation (e.g., whether it's reversible, whether partial results are discarded, whether it requires special permissions, or what the response contains). For a cancellation tool, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no waste. It front-loads the action and resource. It could be slightly more informative, but it is appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description is minimal but leaves key questions unanswered: how to obtain operation_id, what happens on success/failure, and whether cancellation is idempotent. With no annotations and no output schema, the description should provide more context for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It doesn't explain what operation_id refers to (e.g., where to obtain it, its format). However, the parameter name is self-explanatory and the schema marks it required, so an agent can likely infer its meaning. The description adds no value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Cancel') and resource ('a running provider operation'), which clearly distinguishes it from sibling tools like art.provider.execute or art.provider.operation. It doesn't explicitly name a sibling it is not, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., that the operation must be running), nor does it contrast with related tools like art.production.cancel or art.provider.operation. An agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.provider.capabilitiesB

Get the capabilities of a specific provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
provider_idYesProvider ID

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of disclosing behavior. 'Get' implies a read operation, but the description does not say what capabilities are returned, whether the provider must be active, or what happens when the provider is invalid. This is minimal disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence with no filler. It front-loads the core action and object, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter getter, the description is minimally viable, but it lacks any explanation of the output shape or how this relates to other provider tools. There is no output schema to compensate, so the agent receives only the bare minimum.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents provider_id with 100% coverage, and the description only says 'specific provider,' which adds no meaning beyond the schema. Baseline 3 is appropriate because the schema handles the parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('Get') and a specific resource ('capabilities of a specific provider'). It is easy to understand the tool's basic function, though it does not explicitly differentiate itself from sibling tools like art.provider.get or art.provider.health.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus related provider tools such as art.provider.get, art.provider.list, or art.provider.health. It simply restates the action without offering context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.provider.executeC

Execute an art generation operation via a provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleYes
outputNo
dry_runNo
asset_idNo
operationYes
asset_typeNo
parametersNo
referencesNo
provider_idYes
timeout_secondsNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure, yet it only says 'execute.' It does not state whether execution is asynchronous (the existence of art.provider.cancel hints it may be), what side effects occur (asset creation, file writes, registration), or what the dry_run parameter does. The description is not misleading, but it adds almost no behavioral context beyond the bare verb.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single nine-word sentence with zero filler and the core verb front-loaded. It is well structured, though the brevity borders on under-specification for a tool of this complexity; the structure earns credit, but the length limits the information conveyed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 10 parameters, 0% schema coverage, no annotations, no output schema, and over 70 siblings, a one-sentence description is far from complete. Missing context includes return values, async versus sync behavior, side effects, parameter semantics for most fields, and any required setup steps. An agent would need to inspect other tools or probe to use this safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it only implicitly sheds light on provider_id and operation. The other eight parameters — including the required nested style object, output, references, asset_id, asset_type, and dry_run — receive no semantic clarification in either the schema or the description. This is a substantial gap for a 10-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('execute'), a resource ('art generation operation'), and a qualifier ('via a provider'), so an agent can tell this is the run action rather than an introspection tool like art.provider.list or art.provider.capabilities. It does not, however, clarify how it differs from the similarly named sibling art.provider.operation, leaving some potential ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. Given the sibling list includes closely related provider tools (art.provider.get, art.provider.capabilities, art.provider.operation, art.provider.cancel), an agent gets no hints about prerequisites such as checking capabilities first, selecting a provider, or validating a style before executing. No exclusions or alternative routing are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.provider.fallbackC

Execute an art operation with fallback — tries the primary provider, falls back to a secondary on failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleYes
outputNo
dry_runNo
asset_idNo
operationYes
asset_typeNo
parametersNo
referencesNo
provider_idYesPrimary provider ID
timeout_secondsNo
fallback_providerNoFallback provider ID to try if primary fails

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose the core fallback trait, but it does not explain what counts as a failure, whether the operation is destructive, what happens on total failure, how dry_run behaves, or what the response looks like. Significant behavioral context is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It communicates the primary behavior immediately and earns its place; nothing extraneous is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is an 11-parameter tool with nested objects, no output schema, and no annotations. The one-sentence description is far from sufficient: it omits operation semantics, output handling, timeout behavior, references, asset context, and return value expectations. Agents would likely need substantial trial and error or external documentation to use this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 18%, so the description must compensate, but it does not. It repeats the provider/fallback role already described in the schema and adds no meaning for the other nine parameters such as operation, style, output, dry_run, timeout_seconds, or references. Agents cannot infer how to construct a valid call from this description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Execute') and resource ('art operation') and immediately communicates the defining behavior: try primary provider, fall back to a secondary. This distinguishes it from siblings like art.provider.execute, though 'art operation' remains somewhat generic and no sibling is explicitly contrasted.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The fallback behavior implies the tool is for cases where resilience or redundancy is needed, so usage context is suggested rather than stated. There is no explicit when-to-use guidance, no named alternative, and no exclusion such as 'use art.provider.execute when fallback is not required.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.provider.getA

Get detailed metadata for a specific provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
provider_idYesProvider ID

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. 'Get detailed metadata' reasonably implies a read-only, non-mutating operation, but the description does not explicitly confirm side-effect-free behavior, permission requirements, or error behavior for unknown provider IDs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundant phrasing. Every word contributes to the core meaning, and there is no repetition of the tool name or parameter schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a low-complexity tool with one fully documented parameter, so the description is roughly adequate for selecting and invoking it. However, there is no output schema and the description does not clarify what 'detailed metadata' contains, leaving the agent without a clear expectation of the return payload.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single required parameter provider_id is documented in the schema as 'Provider ID'. The description adds little beyond the schema, but given the high schema coverage, this meets the baseline without requiring additional compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair ('Get detailed metadata for a specific provider') and signals that the operation is scoped to one provider rather than a list. It is clear enough to distinguish from provider.list, but it doesn't explicitly differentiate from similar read-style siblings like provider.capabilities or provider.health.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for a specific provider' implies the tool is used when a particular provider_id is already known, which gives useful context. However, it provides no explicit when-to-use/when-not-to-use guidance and names no alternative tools for cases like listing all providers or checking health.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.provider.healthB

Check the health status of a specific provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
provider_idYesProvider ID

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full behavioral burden. The verb 'Check' reasonably implies a read-only, non-mutating operation, but the description does not explicitly state the absence of side effects, any required permissions, or what constitutes 'health status.' It gives some behavioral signal but leaves important details unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the action and target. There is no redundant information or filler, and the phrasing is direct and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one parameter and no output schema, making the description minimally viable. However, it omits what the health check returns, how 'health' is defined, error behavior, and the relationship to sibling provider tools, leaving clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the only parameter, provider_id, is described as 'Provider ID' in the schema. The description itself adds no additional meaning or usage details for the parameter, so the baseline score of 3 applies since the schema already documents it adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Check') and a particular resource ('health status of a specific provider'), making the core function clear. It does not explicitly distinguish itself from siblings like art.provider.get or art.provider.capabilities, but 'health status' is a distinct concern, so the meaning is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as art.provider.get, art.provider.capabilities, or art.provider.list. There are no usage conditions, exclusions, or mention of alternatives, leaving an agent to infer the appropriate context solely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.provider.health_allA

Check health of all registered providers. Returns a map of provider ID to health status with latency and consecutive failure count.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of describing behavior. It does explain the return format: a map from provider ID to health status with latency and consecutive failure count, but it does not explicitly state side-effect safety, permission needs, or failure behavior. This is adequate but not deeply transparent.

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 focused sentences: the first states the action and scope, the second states the return value. There is no filler or redundant restatement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description states both what happens and what the response contains. Including possible health-status values or latency units would make it fully complete, but nothing essential is missing for selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema captures this completely, so the description does not need to explain parameters. This meets the baseline for a no-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Check') with a clear resource ('health of all registered providers') and explicitly includes the output shape. The 'all' distinguishes this from sibling art.provider.health without needing to compare schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a use case for checking all providers at once, but it does not explicitly tell the agent when to prefer this over art.provider.health or other provider tools. There is no exclusion or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.provider.listA

List all registered art providers with their metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that it lists all registered providers and returns metadata, which explains the read-only nature. However, it does not mention potential large response sizes, pagination, or any error behavior. It's transparent about the basic operation but lacks deeper 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that clearly states the action and result. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing operation, the description is complete: it states the action and what is returned. There is no output schema, but the return is implied to be a list of providers with metadata. It could mention pagination or sorting, but for a basic list, this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters (schema is empty), so schema coverage is effectively 100%. The description adds no parameter-level meaning, which is fine because there are none. Baseline is 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List'), a clear resource ('registered art providers'), and clarifies the output ('with their metadata'). It clearly distinguishes from siblings like art.provider.get (which retrieves a single provider) and art.provider.capabilities (which gets capabilities).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives. It states it lists all providers, but does not mention when to prefer it over art.provider.get or art.provider.capabilities. No exclusions or conditions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.provider.operationC

Get the status of a provider operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
operation_idYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does not disclose whether the operation is read-only, what happens when an operation_id is invalid, whether it can be called repeatedly, or any side effects. The wording implies a query but lacks explicit safety or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no redundancy. It is front-loaded with the core action. However, the extreme brevity borders on under-specification, though it is not verbose enough to lose points.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one simple parameter, it is still incomplete. It does not explain what a provider operation is, what status values might be returned, or how to obtain an operation_id. Without an output schema or further context, an agent lacks enough information to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no descriptions for operation_id and coverage is 0%. The description adds no context about what operation_id represents, its format, or how to obtain it. It fails to compensate for the schema's lack of detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (get) and the resource (status of a provider operation), distinguishing it from sibling tools like execute, cancel, or list. It is concise and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as art.provider.execute or art.provider.cancel. The description does not mention prerequisites (e.g., need an operation_id from a prior execute call) or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.qa.assetA

Run QA checks on a single asset. Returns a full QA report with all rule results.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoQA profile: strict, default, or lenient
asset_idYesAsset ID to check (e.g. "character.goblin.001")

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Run QA checks' and 'returns a full QA report' clearly indicate a read-only verification behavior that produces a report. It does not explicitly address authorization, mutation, or edge cases like missing assets, but the described operation is evidently non-mutating.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no fluff: the first states the action and resource, the second states the exact output. It is front-loaded and every word contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema fully covers the two input parameters, and the description communicates the return value shape. Since no output schema is provided, stating 'full QA report with all rule results' is a useful minimum. A brief note on what 'full' entails or how 'profile' affects the report would be beneficial but not blocking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both 'asset_id' and 'profile' have descriptions and the enum values are fully listed. The description adds no extra parameter semantics beyond calling out the single-asset scope, so it is appropriately average.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear verb ('Run QA checks') and a specific resource ('a single asset'), then specifies the result ('full QA report with all rule results'). This naturally distinguishes the tool from siblings like 'art.qa.batch' (many assets), 'art.qa.rule' (a single rule), and 'art.qa.gate'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'on a single asset' provides a clear usage context: choose this tool when there is exactly one asset to QA. It does not explicitly spell out alternatives or when to use other QA tools instead, but the scope is clear enough for reasonable selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.qa.batchA

Run QA checks on multiple assets at once. Returns a batch report with individual results.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoQA profile: strict, default, or lenient
asset_idsYesArray of asset IDs to check

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the burden. It mentions the return of a report but does not disclose side effects, failure modes, or whether it is read-only. Given the batch nature, more transparency about error handling would be beneficial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no redundant information. It clearly conveys the core action and expected outcome.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimal and lacks context on what 'QA checks' entail or how to interpret the batch report. It does not explain the relationship to sibling tools, but the name and schema provide some clarity. The lack of an output schema means more context would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters have descriptive names and schema descriptions covering 100% of the parameters. The tool description adds no additional meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs QA checks on multiple assets and returns a batch report with individual results. This distinguishes it from single-asset QA tools like art.qa.asset and aligns with the 'batch' naming.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for multiple assets but does not explicitly compare with alternatives or state when to prefer this over single-asset QA. No conditions or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.qa.explain_failureA

Explain why a specific QA rule failed for an asset. Returns rule definition, issue details, and context.

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_idYesRule ID that failed
asset_idYesAsset ID that failed the rule

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It signals a read-only diagnostic operation ('Explain...') and discloses the return contents ('rule definition, issue details, and context'). It does not mention permissions, error behavior, or whether any state is recorded.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences front-load the purpose and immediately state the return payload. There is no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only tool with no output schema, the description gives the needed invocation context and lists what is returned. It could be more specific about the shape of 'context' or error conditions, but it is adequate for selection and basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already explains rule_id and asset_id clearly. The description adds no additional meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Explain') and names the resource ('a specific QA rule failed for an asset'), so an agent can tell this is a diagnostic tool for individual failures. It does not explicitly call out sibling tools like art.qa.rule or art.qa.history, but the failure-explanation scope is distinct enough to avoid confusion with list/get/history siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Explain why a specific QA rule failed for an asset' implies the intended use case: after a rule failure has been identified, retrieve the explanation. It does not, however, state when not to use it or point to alternatives such as art.qa.history or art.qa.rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.qa.gateB

Run a QA gate check on an asset. Returns pass/fail verdict with full report.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoQA profile: strict, default, or lenient
asset_idYesAsset ID to gate-check

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It does disclose it returns a pass/fail verdict with full report, but does not mention side effects (if any), whether it mutates state, or any required permissions. However, the tool name and description suggest a non-destructive evaluation, and the description adds value by stating the output format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no waste. It front-loads the action and the outcome. It is concise and structured well.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is relatively simple with 2 parameters and no output schema. Given the complexity, the description is fairly complete but could mention the effect of the profile parameter or the nature of the report. However, since schema already covers parameter details, the description is adequate for a basic gate check tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (profile and asset_id) are already described. The description does not add beyond schema. The profile parameter has enum with default, which is already clear from schema. The description adds no additional semantics beyond what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it runs a QA gate check on an asset and returns a pass/fail verdict with a full report. It uses specific verb (run) and resource (asset QA gate). While it could differentiate from siblings like art.qa.asset, art.qa.batch, or art.qa.explain_failure, the description is sufficiently specific about the outcome.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (run a QA gate check) but does not explicitly state when to use this tool versus alternatives like art.qa.asset, art.qa.batch, or art.validate_style. It does not mention exclusions or prerequisites. The appropriate context is implied but not explicitly guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.qa.historyC

Get QA run history. Optionally filter by asset ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idNoFilter history by asset ID (omit for all)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden of behavioral disclosure. It indicates a simple read operation but does not mention return format, ordering, pagination, history scope, or possible side effects. 'Get' implies read-only behavior but this is not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler or repetition. It is appropriately sized for a simple tool with one optional parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The operation is simple and the sole parameter is documented, but there is no output schema and no annotations. The agent is left without any knowledge of what a QA run history entry contains, how results are ordered, or whether any limits apply. A short mention of returned fields or default behavior would make the description complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully documents asset_id with 'Filter history by asset ID (omit for all)', giving 100% schema description coverage. The description's 'Optionally filter by asset ID' adds no new meaning beyond what the schema provides, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action and resource: 'Get QA run history'. The verb 'Get' and resource are clear, giving an agent a basic understanding of the tool. However, it does not distinguish this from other history-related siblings like art.asset.history or art.memory.get_style_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as art.qa.asset or art.asset.history. The only usage signal is the optional asset_id filter, which is parameter information rather than tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.qa.list_rulesA

List all available QA rules with their definitions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only list operation and discloses that definitions are included, but it does not mention pagination, ordering, or any limitations. For a simple list, this is adequate but minimal; no contradictions exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no filler. The action and resource are front-loaded, making it easily scannable. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool, the description is nearly complete. It states the action and the returned content (rules and definitions). It does not explain return format or any filters, but given the simplicity and sibling context, this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters and the schema coverage is 100% (vacuously). Per the rubric, this yields a baseline of 4. The description adds nothing about parameters, but none are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('List'), a resource ('all available QA rules'), and the content ('with their definitions'). It distinguishes itself from sibling QA tools like art.qa.rule (likely for retrieving a single rule) and art.qa.history (for past runs). No ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as art.qa.rule or art.qa.explain_failure. It does not mention what scenarios warrant listing all rules, nor does it exclude cases where a specific rule is needed. The agent is left to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.qa.ruleA

Get the full definition of a specific QA rule by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_idYesRule ID (e.g. "canvas.dimensions")

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided at all, the description carries the full burden of behavioral disclosure. The verb 'Get' clearly signals a read-only operation and 'full definition' hints at return content, but there's no disclosure of error behavior for unknown IDs, response format, or performance characteristics. For a simple getter, this is adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single 12-word sentence that front-loads the verb and resource while wasting zero tokens. The qualifier 'full' adds meaningful scoping that 'definition' alone would lack, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity — one parameter, no output schema, no nested objects, 100% schema coverage — there is very little left undisclosed. 'Full definition' suggests return richness, and the sibling art.qa.list_rules handles the multi-rule case. Minor remaining gaps are low-stakes for a getter: no mention of not-found behavior or whether the output is compatible with an enum or known set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage of the single rule_id parameter, including a realistic example ('canvas.dimensions'). The description's 'by its ID' merely echoes the schema and adds no new semantic information, which lands it at the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description has a specific verb ('Get'), a specific resource ('full definition of a specific QA rule'), and a precise selection mechanism ('by its ID'). The deliberate use of 'specific' and 'by its ID' cleanly differentiates it from the natural sibling art.qa.list_rules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrasing implies this is used when a rule ID is already known — presumably from art.qa.list_rules — but the description never explicitly states when to use it versus a sibling tool like art.qa.batch. Usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.ref.canonicalA

Get canonical assets for a type/material — filters retrieve results to only canonical status entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoAsset type filter
materialNoMaterial type filter

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. The word 'Get' implies a non-mutating read, and 'filters retrieve results to only canonical status entries' discloses the main behavioral characteristic. However, it does not mention possible side effects, authentication requirements, ordering, pagination, or what qualifies as canonical, leaving some transparency gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that is front-loaded with the primary action ('Get canonical assets') and then clarifies the filter behavior. Every phrase adds useful information, and there is no repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with two optional string filters, this description conveys the core contract but leaves some operational ambiguity: what happens when no filters are provided, what 'canonical status' means, and what the return structure looks like. These gaps are noticeable because there is no output schema and no annotations to fill them in.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter descriptions already document type and material as filters. The tool description simply restates these dimensions ('type/material') without adding detail such as acceptable formats, default behavior when omitted, or how the two filters interact. Baseline 3 is appropriate because the schema handles the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies a specific operation ('Get canonical assets') and the filtering dimensions (type/material). It distinguishes the intent from generic asset retrieval by emphasizing canonical status, though it does not explicitly contrast with sibling tools like art.ref.retrieve. A concise, recognizable purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'filters retrieve results to only canonical status entries' implicitly tells the agent that this tool is appropriate when canonical assets are needed. However, it does not explicitly state when to prefer this over art.ref.retrieve, art.asset.find, or other retrieval tools. Usage context is clear but not fully differentiated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.ref.packB

Build a reference pack for generation — combines style constraints, canonical references, negative examples, and material palette.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoAsset type filter
categoryNoAsset category filter
materialNoMaterial type filter
max_negativeNoMaximum negative examples
max_canonicalNoMaximum canonical references

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries full responsibility for behavioral disclosure. It states that the tool 'builds' a pack, but does not indicate whether this is a pure computation, whether it persists anything, whether it modifies existing assets, or what side effects/side states are involved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with a front-loaded verb and resource, followed by a concise component list. No extraneous words or repetition, and the core purpose appears first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the agent still lacks essential operational context: what the pack is, what it returns, whether it saves or registers anything, and how optional filters combine into the final pack. The current text provides only a high-level summary, which is insufficient for a tool with five non-required parameters and nontrivial behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented. The description adds some conceptual grouping by mentioning 'canonical references', 'negative examples', and 'material palette', but it does not explain parameter interactions or the meaning of the filter parameters beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Build') and resource ('reference pack') and clarifies the purpose ('for generation'). It enumerates the combined components, which separates it from single-purpose siblings like art.ref.canonical or art.ref.retrieve, though it does not name them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for generation' implies when the tool is appropriate, and the component list suggests an aggregating role. However, there are no explicit conditions, exclusions, or references to alternative tools such as art.ref.retrieve or art.ref.canonical, so the agent must infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.ref.retrieveB

Smart ranked reference retrieval — scores and returns top assets by canonical status, style match, material match, and recency.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoAsset type filter (e.g. "character", "tile", "item")
categoryNoAsset category filter
materialNoMaterial type filter (e.g. "stone", "wood")
max_resultsNoMaximum number of results to return

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description must convey behavioral traits. It does disclose that the tool scores and returns top assets using specific criteria, which is useful. However, it doesn't say whether it is safe/read-only, how it resolves ties, whether filters are required, or what happens when nothing is found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence with no filler or redundancy. It front-loads the tool's main purpose and then lists its scoring dimensions, earning its space without any unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a retriever with four optional parameters and no output schema, this description provides the basic outcomes and scoring criteria. But because there are no annotations and multiple sibling tools overlap in retrieval behavior, more context about what 'references' mean and when to choose this tool over siblings is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters with meaningful descriptions, so the description is at the baseline. The description adds an implicit connection between scoring dimensions and filters (e.g., material match, but it doesn't clearly map each scoring dimension to a specific parameter beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action with a specific verb ('retrieval') and resource ('assets'), and even gives scoring dimensions like canonical status, style match, material match, and recency. It is clear enough to distinguish it from generic asset lookups, though it doesn't explicitly name a sibling or clarify what constitutes a 'reference'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool vs alternatives such as art.asset.find or art.ref.canonical. It does not compare against siblings or provide any 'when-not-to-use' context, leaving the agent to assume when ranked retrieval is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.style.bootstrapA

Get session bootstrap context — assembles project config, style, canonical assets, anti-patterns, and recent decisions into one payload.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the disclosure burden. 'Get' clearly frames the operation as read-only, while 'assembles ... into one payload' conveys an aggregation behavior, not a mutation. It does not mention response details or caching, but for a zero-parameter read the description is still reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one dense, front-loaded sentence with no wasted words. It opens with the operation, names the resource, and specifies all payload contents.

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?

Given no parameters, no output schema, and no annotations, the description provides enough context: it identifies exactly when to use the tool and what the payload contains. A slightly richer statement about what the returned payload looks like or how it differs from calling sibling getters would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema has full 100% coverage, so the description does not need to explain inputs. The baseline for a parameterless tool is 4, and the description correctly treats the operation as needing no arguments.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Get session bootstrap context' and lists exactly what is bundled (project config, style, canonical assets, anti-patterns, recent decisions). It clearly differentiates itself from the many more targeted getters like art.get_project_context, art.get_style, and art.memory.get_decision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a clear usage context: call this once during session bootstrap to receive a combined context payload. It lacks explicit exclusions or named alternatives, but the aggregation framing provides enough guidance for an agent to recognize this is the all-in-one retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.style.checkA

Run style consistency check on a canvas session — compares canvas content against compiled style constraints.

ParametersJSON Schema
NameRequiredDescriptionDefault
materialNoMaterial type for context-specific checking
session_idYesCanvas session ID

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It does communicate the essential operation — a comparison against compiled style constraints — and 'check' implies no mutation, but it does not disclose the return format, any preconditions on compiled constraints, or whether any side effects could occur.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence conveys the action, target, and comparison basis without filler. Every phrase contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has only two parameters and full schema coverage, so basic callability is clear. However, there is no mention of what the result looks like, what happens if style constraints are not yet compiled, or how material affects checking, leaving the agent to infer important operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100%, with both session_id and material described in the schema. The description adds no parameter details itself, but this is acceptable because the schema already documents the parameters and the material parameter's context-specific checking purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('style consistency check on a canvas session') and clarifies the actual behavior: comparing canvas content against compiled style constraints. This distinguishes it from style compilation, validation, and retrieval tools in the same family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context: checking canvas content after style constraints have been compiled. However, it does not explicitly say when to prefer this over related tools such as art.validate_style or how the optional material parameter changes the scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.style.compileB

Compile style constraints for a subject — merges style definition, optional material profile, and resolution into a flat StyleConstraints object.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNoAsset width in pixels
heightNoAsset height in pixels
profileNoDetail profile level (low/medium/high/hero/boss/tile/item)medium
materialNoMaterial type (e.g. "stone", "wood", "metal")

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose the core transformation: merging style, optional material, and resolution into a flat object. However, it does not state whether this is purely read-only, what happens on unknown material or style definitions, or whether it depends on existing project state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one dense sentence with no filler and front-loads the tool's purpose. Every phrase contributes either to what is compiled or how it is compiled.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has four optional parameters and no output schema or annotations, and the description introduces 'subject' and 'style definition' without connecting them to any input parameter or context dependency. An agent cannot fully determine how the style definition is selected or what the flat StyleConstraints object contains beyond its name.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents width, height, profile, and material. The description adds that material and resolution participate in the merge, but it does not explicitly map 'resolution' to width/height or clarify how 'profile' relates to 'material'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Compile'), a resource ('style constraints'), and the transformation it performs: merging style definition, optional material profile, and resolution into a flat StyleConstraints object. It is clearly distinct from retrieval or validation tools like art.get_style and art.validate_style, though it does not explicitly name an alternative sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus similar style-related tools such as art.style.check, art.style.repair, or art.validate_style. There are no stated exclusions, prerequisites, or alternative conditions for an agent to route on.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.style.repairA

Generate a repair plan from a style consistency check — identifies actions to fix style issues on a canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
materialNoMaterial type for context-specific repairs
session_idYesCanvas session ID

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the full behavioral burden. It discloses that the tool only generates a plan and identifies actions, which is helpful for a tool named 'repair' that could be mistaken for an executable repair. It is not explicit about whether it mutates any state or requires stored check results from a previous call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one clean sentence with a front-loaded verb and object. The apposition after the dash provides extra context about the plan's contents without wasting words. Every part of the message earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no output schema, the description is adequate to understand the basics: generate a repair plan from a style check. However, it does not mention how the plan is expressed (e.g., a list vs. a Newton-style or according to a schema), nor does it give procedural context such as when the repair plan should be invoked or how it relates to later plan/execute steps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers both parameters fully: session_id is described as 'Canvas session ID', and material is described as 'Material type for context-specific repairs'. Schema description coverage is 100%, so the description itself adds no extra meaning to the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a concrete verb ('generate'), a specific deliverable ('repair plan'), and an explicit source ('style consistency check'). It clearly states the tool's purpose is to produce actions that fix style issues on a canvas, making it distinct from the many style check, compile, and provisioning siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. The phrase 'from a style consistency check' implies a link to a prior check, but it never says 'use after art.style.check' or 'this only produces a plan, not an execution'. The agent must infer the intended workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.tilemap.build_opsB

Generate TiledMCP operations from a MapSpecification. Returns the operation sequence for TiledMCP provider execution.

ParametersJSON Schema
NameRequiredDescriptionDefault
map_idYesMap ID to build operations for

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden. It conveys that this tool generates and returns operations rather than directly executing them, which is a meaningful behavioral signal. However, it does not disclose side effects, validation behavior, or error cases such as what happens when the map_id does not correspond to a valid MapSpecification.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded. The first sentence identifies the core operation and the second clarifies the return value. There is no filler, redundant phrasing, or unnecessary detail.

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 tool with one input parameter and no output schema, the description is reasonably complete: it names the input concept, the transformation, and the return type. It could add more context about what 'TiledMCP operations' means or how to obtain a MapSpecification, but this is a fairly simple single-purpose tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage for the single param is 100%, so the baseline is 3. The description adds some context by mentioning MapSpecification, suggesting the map_id references a specification entity, but this connection is not explicit. The schema description already covers the parameter's meaning, so the description does not add much beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Generate') and clear resource/artifact pair: TiledMCP operations from a MapSpecification. It also explicitly says the return value is an operation sequence for TiledMCP provider execution, which helps distinguish it from execution tools. It does not explicitly differentiate it from sibling tilemap tools like create_spec or resolve_tiles, but the overall purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives, or what precedes/follows it in a workflow. It does not mention that this should be used after creating a MapSpecification or before calling a provider execution tool. The context is only implicit in the word 'from a MapSpecification.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.tilemap.create_specC

Create a MapSpecification for tilemap generation. Defines map size, biome, layers, objects, terrain rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoRandom seed for procedural generation
biomeYesBiome (e.g. "forest", "dungeon", "village")
widthYesMap width in tiles
heightYesMap height in tiles
layersYesMap layers
map_idYesMap identifier
objectsNoMap objects
tile_sizeNoTile size (default: 16)
tileset_idYesTileset to use
descriptionNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It says 'Create a MapSpecification' but does not explain whether this mutates persistent state, requires a registered tileset, validates inputs, or returns a handle to the spec. The mention of 'terrain rules' lacks any corresponding schema field, which adds a minor inconsistency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that front-loads the core action and resource. It names the containing feature ('tilemap generation') and a compact list of the things the object defines. No wasted words or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 10-parameter, 6-required tool with no annotations and no output schema, the description is too thin. It does not explain return values, side effects, prerequisites, or the relationship to related tools like register_tileset or build_ops. An agent would need to infer too much about how the MapSpecification is used downstream.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high (90%), and the schema already describes most parameters. The description only groups parameters into categories like 'map size, biome, layers, objects' and does not add semantics beyond that. It also references 'terrain rules', which do not appear in any parameter, so it adds limited value to what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Create' and the resource 'MapSpecification', and the list of contents (map size, biome, layers, objects, terrain rules) gives a useful overview. It distinguishes this spec-creation tool from sibling operations like list_tilesets, validate, build_ops, and resolve_tiles by establishing that this is the initial specification step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit instruction about when to use this tool versus alternatives such as art.tilemap.validate, art.tilemap.build_ops, or art.tilemap.register_tileset. 'For tilemap generation' is only a vague context cue, not a usage guideline. No prerequisites, sequencing, or exclusion conditions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.tilemap.list_tilesetsA

List all registered tileset definitions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description frames the operation as read-only by using 'List all,' but annotations are absent, so the description carries the full burden. It provides useful scope details ('all registered') but does not explicitly state side effects, output form, ordering, or failure behavior. For a simple zero-parameter list operation, this is adequate though not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It states exactly what the tool lists and the scope of the list, which is appropriately concise for a zero-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter list operation, the description covers the core requirement: it lists tileset definitions and specifies the 'registered' scope. There is no output schema, so a brief note about the return shape would have been useful, but the description is still largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the input schema fully documents the interface with 100% coverage. No parameter descriptions are needed, and the lack of one is appropriate for a zero-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('registered tileset definitions'), clearly differentiating it from related tilemap tools like art.tilemap.register_tileset or art.tilemap.resolve_tiles. The title and description align, and the meaning is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not state when this tool should be used relative to alternatives such as art.tilemap.resolve_tiles or art.tilemap.validate. There is no explicit guidance on choosing this tool over siblings, and no mention of typical use cases or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.tilemap.register_tilesetB

Register a tileset definition with semantic tile metadata. Each tile gets an ID, terrain, walkability, collision info.

ParametersJSON Schema
NameRequiredDescriptionDefault
tilesYesTile definitions
asset_idYesSource pixel art asset ID
style_idNoStyle ID (default: active style)
tile_sizeYesTile size in pixels (e.g. 16)
tileset_idYesUnique tileset ID (e.g. "forest_v1")
style_versionNoStyle version

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It does convey that registration involves assigning IDs, terrain, walkability, and collision metadata, but it does not clarify whether registration is idempotent, whether duplicate tileset IDs are replaced or rejected, or what persistent side effects occur.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: it names the operation and target first, then gives a brief meaningful summary of tile metadata. Every sentence contributes value without redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate but not robust. It lacks behavioral/usage context and there is no output schema, so an agent does not learn what the register operation returns or how it interacts with existing tilesets. Still, the required parameters are covered by the schema, making basic invocation possible.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains all parameters. The description reinforces the semantic nature of the tile metadata but does not add meaningful parameter-level details beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Register') and resource ('tileset definition'), and adds useful detail about semantic tile metadata. It is distinct from sibling read/validate tools, though it does not explicitly differentiate itself from related creation/spec tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives such as art.tilemap.validate, art.tilemap.create_spec, or art.tilemap.resolve_tiles. The intended use is only implied by the word 'register'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.tilemap.resolve_tilesA

Resolve semantic tile names to tileset local IDs. Use to verify tile names before building a map.

ParametersJSON Schema
NameRequiredDescriptionDefault
intentsYesTiles to resolve
tileset_idYesTileset to resolve against

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the behavioral burden. It notes the resolution/verification nature of the operation, but it does not describe what happens for unknown tile names, whether the operation is read-only, or what failure behavior looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The core operation is front-loaded and the workflow hint is immediately useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is functional and ties the tool to the map-building workflow, but with no output schema or annotations, the agent is left guessing about return representation, invalid-name handling, and the role of x and y in the input intents array.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both tileset_id and intents are already documented with examples. The description confirms the overall mapping but adds little to individual parameter meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific action and resource: resolving semantic tile names into tileset local IDs. It also situates the tool in a workflow by stating it is for verifying tile names before building a map, making it clearly distinct from siblings like list_tilesets or create_spec.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to verify tile names before building a map' explicitly tells an agent when this tool fits. It does not name alternatives or exclusion conditions, but the context is clear enough to support correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.tilemap.validateA

Validate a MapSpecification against its tileset. Checks missing tiles, invalid refs, style mismatch, object bounds.

ParametersJSON Schema
NameRequiredDescriptionDefault
map_idYesMap ID to validate

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description must carry the behavioral burden. It adds useful specificity by naming the checks performed, but it does not disclose what the tool returns, whether it has side effects, or how it signals failure. The implicit read-only nature of 'validate' helps, but is not explicitly confirmed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the first sentence defines the action and object, the second lists the validation categories. There is no filler or irrelevant context; the only minor issue is the sentence fragment that follows the first sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter utility this is mostly adequate, but with no output schema and no annotations it fails to mention whether validation returns a simple pass/fail, a list of issues, or something else. It also does not clarify prerequisites or assumptions about tileset.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the sole required parameter. The description does not add meaningful semantic detail about map_id beyond the schema, aside from echoing that it is the thing to validate. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action — validate a MapSpecification against its tileset — and lists the specific categories of checks: missing tiles, invalid refs, style mismatch, object bounds. This clearly distinguishes it from a validation sibling like art.validate_style and from other tilemap tools that create or register specs rather than validate them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The core intent — validate a MapSpecification against a tileset — is clear enough for an agent to infer when it should be used. However, there is no explicit guidance about alternatives, preconditions such as a registered tileset, or where in a tilemap workflow validation should occur (e.g., before build_ops).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.validate_styleB

Validates the active style configuration and returns any errors found.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. 'Validates... and returns errors found' implies a non-mutating operation, but it never explicitly states there are no side effects, doesn't describe the shape of a successful return, and doesn't reveal whether all errors are collected or it fails fast.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no wasted words. Each phrase earns its place: 'validates' states the action, 'active style configuration' narrows the scope, and 'returns any errors found' tells the agent what to expect.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool the bar is low, but a validation tool would benefit from stating what 'valid' means, whether the operation is read-only, and what the caller should do with the errors. The word 'active' also raises an unanswered question — is there state involved that the agent should know about?

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters with 100% schema coverage, so there is nothing material for the description to add. The baseline of 4 applies here — nothing is missing since there is nothing to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description provides a clear verb (validates), a specific resource (active style configuration), and the return type (errors). However, it doesn't differentiate from siblings like art.get_style, art.qa.rule, or art.get_style_rules — an agent must infer why validate_style is the right choice over those.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is zero guidance on when to choose this tool over its many siblings. No when-to-use context, no exclusionary statements (e.g., 'use art.qa.gate for CI checks'), and no mention of prerequisites or ordering (e.g., 'validates the config as loaded by art.get_style').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.workflow.guideA

Generate a step-by-step painting guide for the AI to follow when drawing a subject. Enforces strict palette discipline, form-first/detail-last hierarchy, and per-step color limits. The guide is TEXT instructions — read it and follow each step sequentially.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNoAsset width in pixels (default 16)
heightNoAsset height in pixels (default 16)
profileNoDetail profile level (low/medium/high/hero/boss)medium
subjectYesWhat to paint (e.g. "stone house", "wooden barrel", "iron sword")
materialNoMaterial type (e.g. "stone", "wood", "metal", "grass", "dirt", "water", "leather", "cloth", "skin", "ice", "magic")

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full behavioral burden and does well: it discloses that the tool enforces palette discipline, form-first hierarchy, per-step color limits, and that the output is text instructions meant to be read and followed sequentially. It doesn't mention side effects or failure modes, but none are strongly implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences deliver a clear purpose, key constraints, and output format with no redundancy. The most important information is front-loaded, and every sentence contributes to the agent's understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is sufficient for a code-generation-style tool: it defines the output as text instructions and explains how to use them. The absence of an output schema is partially mitigated by the explicit statement about the guide being TEXT instructions. It could add more about how profile or material affect the guide, but the schema already covers those.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the property descriptions already define width, height, profile, subject, and material. The tool description adds no per-parameter meaning beyond the schema, but it does frame how the parameters relate to the generated guide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Generate a step-by-step painting guide') and clear resource ('for the AI to follow when drawing a subject'). It differentiates itself from sibling tools like art.workflow.palette and art.detail.* by emphasizing the sequential text guide nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states when to use the tool: when the AI needs a step-by-step guide to follow while drawing a subject. It does not explicitly exclude alternatives or name sibling tools, but the context is clear enough for an agent to infer the appropriate invocation scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

art.workflow.paletteA

Get the strict palette for a material — returns role-to-hex mappings, maximum color count, and forbidden colors. Use this before painting to know EXACTLY which colors are allowed.

ParametersJSON Schema
NameRequiredDescriptionDefault
materialNoMaterial type (e.g. "stone", "wood", "metal"). Omit for general palette.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly discloses what the tool returns ('role-to-hex mappings, maximum color count, and forbidden colors') and implies a read-only palette lookup. It does not cover edge cases or invalid materials, but it is transparent about the core behavior.

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 purposeful sentences with no filler. The core action and return shape are front-loaded, and the usage guidance is a single clear directive. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple lookup with one optional parameter, the description is nearly complete: it explains the return contents and when to use the tool. The absence of an output schema is mitigated by the explicit mention of role-to-hex mappings, max color count, and forbidden colors. Minor gaps such as error behavior or output formatting do not significantly hinder correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so the schema already explains the 'material' parameter and the omit-for-general-palette behavior. The description adds the 'strict palette' framing and reinforces that colors are constrained, but it does not materially extend the schema's parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Get the strict palette for a material') and lists concrete return contents: role-to-hex mappings, maximum color count, and forbidden colors. It is clear about what the tool does, though it does not explicitly differentiate itself from the sibling art.get_palette beyond the 'strict' qualifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit usage context: 'Use this before painting to know EXACTLY which colors are allowed.' This tells the agent when to call the tool, but it does not state when not to use it or mention alternatives such as art.get_palette or art.workflow.guide.

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. 9 tool updatesv0.3.1
    • Addedart.aseprite.export
    • Addedart.aseprite.layers
    • Addedart.aseprite.spritesheet
    • Addedart.aseprite.validate
    • Addedart.provider.analyze
    • Addedart.provider.fallback
    • Addedart.provider.health_all
    • Addedart.workflow.guide
    • Addedart.workflow.palette
  2. 50 tool updatesv0.3.0
    • Addedart.canvas.analyze_ref
    • Addedart.canvas.batch_draw
    • Addedart.canvas.clear
    • Addedart.canvas.create
    • Addedart.canvas.draw_circle
    • Addedart.canvas.draw_dither
    • Addedart.canvas.draw_line
    • Addedart.canvas.draw_noise
    • Addedart.canvas.draw_rect
    • Addedart.canvas.fill
    • Addedart.canvas.get_pixel
    • Addedart.canvas.get_state
    • Addedart.canvas.save
    • Addedart.canvas.set_pixel
    • Addedart.critic.evaluate
    • Addedart.critic.refine
    • Addedart.detail.cavity
    • Addedart.detail.clean_clusters
    • Addedart.detail.cluster
    • Addedart.detail.crack
    • Addedart.detail.edge_break
    • Addedart.detail.execute
    • Addedart.detail.grain
    • Addedart.detail.highlight
    • Addedart.detail.material
    • Addedart.detail.pass
    • Addedart.detail.plan
    • Addedart.detail.shadow
    • Addedart.detail.speckle
    • Addedart.detail.texture
    • Addedart.memory.insights
    • Addedart.memory.negative
    • Addedart.memory.signature
    • Addedart.pipeline.analyze
    • Addedart.pipeline.plan
    • Addedart.pipeline.score
    • Addedart.pipeline.spec
    • Addedart.ref.canonical
    • Addedart.ref.pack
    • Addedart.ref.retrieve
    • Addedart.style.bootstrap
    • Addedart.style.check
    • Addedart.style.compile
    • Addedart.style.repair
    • Addedart.tilemap.build_ops
    • Addedart.tilemap.create_spec
    • Addedart.tilemap.list_tilesets
    • Addedart.tilemap.register_tileset
    • Addedart.tilemap.resolve_tiles
    • Addedart.tilemap.validate
  3. 67 tool updatesv0.1.0
    • First observedart.asset.approval.inspect
    • First observedart.asset.approval.request
    • First observedart.asset.approve
    • First observedart.asset.archive
    • First observedart.asset.archive_version
    • First observedart.asset.compare
    • First observedart.asset.current
    • First observedart.asset.deprecate
    • First observedart.asset.exists
    • First observedart.asset.find
    • First observedart.asset.get
    • First observedart.asset.history
    • First observedart.asset.inspect_version
    • First observedart.asset.promote
    • First observedart.asset.provenance
    • First observedart.asset.rebuild_index
    • First observedart.asset.register
    • First observedart.asset.reject
    • First observedart.asset.request_changes
    • First observedart.asset.rollback
    • First observedart.asset.update
    • First observedart.get_palette
    • First observedart.get_project_context
    • First observedart.get_style
    • First observedart.get_style_rules
    • First observedart.memory.add_anchor
    • First observedart.memory.add_decision
    • First observedart.memory.add_reference
    • First observedart.memory.add_rejection
    • First observedart.memory.explain_style
    • First observedart.memory.find_anchors
    • First observedart.memory.find_decisions
    • First observedart.memory.find_references
    • First observedart.memory.find_rejections
    • First observedart.memory.get_anchor
    • First observedart.memory.get_decision
    • First observedart.memory.get_reference
    • First observedart.memory.get_rejection
    • First observedart.memory.get_style_history
    • First observedart.memory.get_summary
    • First observedart.memory.resolve_references
    • First observedart.production.approve
    • First observedart.production.attempts
    • First observedart.production.cancel
    • First observedart.production.create
    • First observedart.production.inspect
    • First observedart.production.list
    • First observedart.production.plan
    • First observedart.production.resume
    • First observedart.production.start
    • First observedart.production.status
    • First observedart.provider.artifact
    • First observedart.provider.cancel
    • First observedart.provider.capabilities
    • First observedart.provider.execute
    • First observedart.provider.get
    • First observedart.provider.health
    • First observedart.provider.list
    • First observedart.provider.operation
    • First observedart.qa.asset
    • First observedart.qa.batch
    • First observedart.qa.explain_failure
    • First observedart.qa.gate
    • First observedart.qa.history
    • First observedart.qa.list_rules
    • First observedart.qa.rule
    • First observedart.validate_style

TDQS

C2.9/5.0

Scored across 126 tools

Disambiguation3/5

The hierarchical namespaces help, but the sheer number of tools creates real overlap: art.provider.analyze vs art.pipeline.analyze, art.asset.archive vs art.asset.archive_version, and art.qa.asset vs art.critic.evaluate vs art.style.check all have fuzzy boundaries. An agent could easily pick the wrong one without very careful descriptions.

Naming Consistency4/5

Most tools follow a predictable art.<category>.<action> pattern with snake_case verbs, which is highly readable. However, a few top-level tools like art.validate_style, art.get_style, and art.get_palette break the convention, and verbs are mixed across add/register/create for similar operations.

Tool Count1/5

126 tools is an extreme count for any MCP server, far beyond the 25+ threshold. Many micro-tools—individual detail effects, memory CRUD variants, and Aseprite command generators—could be consolidated into broader operations, making the surface unnecessarily hard to navigate.

Completeness5/5

The tool surface is remarkably comprehensive for a game-art domain: asset lifecycle, versioning, approvals, style memory, QA, providers, canvas painting, production jobs, tilemaps, detail passes, Aseprite export, and workflow guidance are all covered. Major workflows have no obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers