ICCPlus MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ICCPlus MCPcreate a new ICC Plus project with a point named 'start'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ICCPlus MCP
A schema-aware Model Context Protocol server for creating, inspecting, editing, validating, and packaging ICC Plus projects.
This project was created through vibe coding in collaboration with an AI coding agent.
The server gives an AI agent a complete ICC Plus project model generated and indexed directly from the upstream source:
the project schema and current defaults are generated from ICC Plus source;
every one of the 59 declared model types and 893 unique fields is discoverable;
all 227 authored source/build/config/patch files and 1,411 named functions/methods across the creator and standalone viewer are indexed with exact source, SHA-256 evidence, signatures, model-field usage, and line spans;
all 75 files in the requested deployment repository and 34 files inside its official viewer archives have byte counts and SHA-256 manifests;
high-level tools preserve IDs, ordering, parent links, and reciprocal memberships;
generic RFC 6902 patching keeps new or uncommon upstream fields accessible;
structural and semantic validation catches dangling references before save;
source-backed Custom CSS tools expose official viewer classes, resolve project selectors, and diagnose syntax/cascade risks before save;
ICC Plus v2.10 row-width preservation, build-form visibility/debug titles, split score-recalculation controls, hidden row menus, and addon state CSS classes are modeled and discoverable;
official web and local viewer archives can be built without opening the creator UI.
Compatibility is currently generated from ICC Plus v2.10.1, source commit
b33bfb9b29e0a84a035a56d7e1827e42fe0f7000.
What this is
ICCPlus MCP is an authoring and build adapter around ICC Plus project JSON. It does not reimplement the browser viewer. Selection effects, audio playback, dialogs, rendering, and other interactive behavior still execute in the official viewer. The server understands and validates the configuration that drives those behaviors, can evaluate requirement trees for supplied state, and can package the result into the official viewer templates.
The design deliberately has two layers:
agent
├─ discover: capabilities, schema, resources, prompts
├─ author: create/update/move/duplicate/import entities
├─ complete field access: atomic JSON Patch for every schema field
└─ verify: normalize, validate, evaluate, save, build viewer
│
▼
revisioned in-memory project session
│
▼
ICC Plus JSON / viewer ZIPRelated MCP server: ts-language-mcp
Requirements
Node.js 20 or newer
An ICC Plus project workspace
For viewer builds,
web_viewer.ziporlocal_viewer.zipfrom the ICC Plus deployment repository
Install and build
git clone https://github.com/Kz2g1ew-commits/ICCPlus-MCP.git
cd ICCPlus-MCP
npm ci
npm run buildThe executable is dist/index.js and communicates over stdio. Protocol output
uses stdout; diagnostics use stderr.
Connect an agent
Set ICCPLUS_WORKSPACE to the only directory the server may read or write.
Relative project, asset, template, and output paths are resolved inside this
directory. Existing symlinks are resolved and cannot escape it.
Codex
codex mcp add iccplus \
--env ICCPLUS_WORKSPACE=/absolute/path/to/iccplus-workspace \
-- node /absolute/path/to/ICCPlus-MCP/dist/index.jsVerify with codex mcp list, then restart the client if it was already open.
The equivalent user or trusted-project config.toml entry is:
[mcp_servers.iccplus]
command = "node"
args = ["/absolute/path/to/ICCPlus-MCP/dist/index.js"]
env = { ICCPLUS_WORKSPACE = "/absolute/path/to/iccplus-workspace" }
startup_timeout_sec = 10
tool_timeout_sec = 60
enabled = trueCodex CLI, the IDE extension, and the ChatGPT desktop Codex surface share this
configuration. A project-scoped entry can live in .codex/config.toml and is
loaded only for a trusted project.
Other stdio MCP clients
Use the client's local-server configuration with this command:
{
"command": "node",
"args": ["/absolute/path/to/ICCPlus-MCP/dist/index.js"],
"env": {
"ICCPLUS_WORKSPACE": "/absolute/path/to/iccplus-workspace"
}
}Optional environment:
ICCPLUS_WORKSPACE: filesystem boundary; defaults to the server process CWD.ICCPLUS_MAX_ASSET_BYTES: maximum local asset size; defaults to 26,214,400 bytes (25 MiB).ICCPLUS_DUPLICATED_TEXT_LIMIT_BYTES: maximum size duplicated into the text fallback of a tool result; defaults to 8,192 bytes. Larger exact results remain available instructuredContent. Set-1for legacy unlimited text.
Recommended agent workflow
Call
iccplus_capabilitiesfor the relevant feature family or field.Create or open a project and retain its
project_idandrevision.Create referenced top-level entities first: points, variables, words, groups, designs, and global requirements.
Create rows, then choices, then scores/addons/requirements.
Pass
expected_revisionto mutations. Usedry_runfor broad changes.For advanced styling, discover exact selectors with
iccplus_css_catalog, analyze candidate CSS, then apply it withiccplus_css_set.Call
iccplus_validateand, where useful,iccplus_evaluate_requirements.Save explicitly or build an official viewer archive.
An agent can also request the bundled author-iccplus-project or
audit-iccplus-project prompt.
Example user request:
Create a CYOA with 10 starting credits, three mutually exclusive origin choices, and a weapon row unlocked by selecting an origin. Validate it, save it as
projects/origins.json, then build a web viewer usingtemplates/web_viewer.zip.
Tools
Tool | Purpose |
| Discover 19 feature families, a type/field, an exact function body, a source-file index, or a deployment artifact. |
| List source-backed official viewer classes and exact project-id selectors. |
| Analyze stored or candidate CSS syntax, specificity, target resolution, cascade conflicts, and external assets. |
| Replace, append, prepend, or clear project Custom CSS with revision, dry-run, and validation protection. |
| Read the schema summary, one definition, or the complete generated schema. |
| Start from the exact current upstream defaults. |
| Open project JSON into an isolated session. |
| List sessions, revisions, dirty state, and counts. |
| Inspect validation, size, content counts, and optional JSON. |
| Read exact JSON Pointers, including CSS/HTML/JS and unknown fields, with asset redaction by default. |
| Search all modeled entities by type, ID, or text. |
| Create an entity with defaults, fresh IDs, and parent repair. |
| Deep-merge/unset fields and optionally rewrite ID references. |
| Clone an entity tree with fresh IDs and optional internal remapping. |
| Reorder an entity and repair positional indices. |
| Delete while rejecting newly dangling references by default. |
| Atomically apply RFC 6902 operations to any project field. |
| Migrate legacy shapes and repair IDs, indices, parents, and memberships. |
| Run generated schema plus semantic/reference validation. |
| Evaluate requirements against supplied selections, points, variables, and words. |
| Export one reusable entity subtree. |
| Import a subtree with safe ID regeneration/remapping. |
| Set any string field from a workspace file, URL, or data URL. |
| Atomically save validated JSON inside the workspace. |
| Build official web/local viewer ZIPs and optionally separate images. |
| Undo or redo a session mutation. |
| Close a session, protecting unsaved changes. |
Entity tools cover row, backpack_row, choice, addon,
selectable_addon, score, requirement, point, variable, word,
group, row_design_group, choice_design_group, global_requirement,
sound_effect, and category.
Resources and prompts
URI/name | Contents |
| Official Custom CSS selector catalog with source evidence. |
| Complete generated project JSON Schema. |
| Source-backed feature catalog and coverage counts. |
| SHA-256 manifest for all deployment files and official viewer ZIP entries. |
| UTF-8 normalized metadata for 209 upstream third-party packages. |
| Stored CSS, static analysis, and project-specific selectors. |
| Live revision, validation, and entity counts. |
| Safe construction order and verification workflow. |
| Full project completion and packaging audit. |
Safety and data integrity
Mutations occur on cloned data and commit atomically.
expected_revisionprovides optimistic concurrency control.dry_runreturns the projected validation report without changing a session.no_new_errorsis the default mutation policy;strictrequires a completely valid result;noneis available for staged repairs.JSON Patch blocks prototype-pollution pointer segments.
Save uses a temporary file plus rename.
Existing files are not replaced unless
overwrite=true.Asset values are redacted from ordinary query output and reported by media type and approximate byte size.
Exact path reads avoid returning a complete project, and large tool results are not duplicated into both text and structured output.
Unknown fields survive load, edit, normalization, and save for forward compatibility.
Validation coverage
The validator combines the generated App schema with checks for:
duplicate or missing IDs and positional index mismatches;
addon parent links;
every modeled row, choice, point, group, variable, word, design, sound, and global-requirement reference;
score-to-point and point-activation references;
nested requirements, thresholds, and global-requirement cycles;
group and design-group reciprocal memberships;
incompatible viewer export modes;
Custom CSS syntax, dangerous legacy constructs, unresolved ICC Plus ID selectors, broad scope, external assets, and probable inline-style conflicts;
point integer/float and initialization invariants.
The requirement evaluator implements id (including /ON#N), points,
pointCompare, or, selFromGroups, selFromRows, selFromWhole, gid,
word, negation, operators, and nested prerequisites. It returns an
explainable trace rather than only a boolean.
Advanced Custom CSS
ICC Plus stores CSS in the top-level customCSS field and injects it as
style#customCSS in the official creator/viewer using textContent. The MCP
derives its catalog from the pinned standalone viewer markup, including
row-{id}, row-{id}-bg, row-{id}-header, choice-{id}, choice state
classes, addon, and selectable addon-{id}.
iccplus_css_catalog can return CSS-escaped selectors for every open-project
row, choice, and selectable addon. iccplus_css_analyze parses nested rules,
reports specificity and matched entities, and warns when a declaration is
likely to lose to ICC Plus inline styles. iccplus_css_set persists the result
through the same revisioned transaction and validation policy as other project
mutations.
For v2.10+, the catalog also covers .row-bg-{rowId},
.row-header-{rowId}, .choice, .addon-selectable, and the
.addon-enabled, .addon-disabled, .addon-selected, and
.addon-unselected state classes while retaining older row selector spellings.
This is intentionally static analysis. Computed styles, responsive layout, and interaction-state rendering remain the responsibility of the official viewer; no browser automation runtime or unrelated browsing tool is bundled.
Viewer builds
iccplus_build_viewer accepts an official template ZIP within the workspace.
Web mode writes
project.json.Local mode embeds the project in
js/app.js.Loading title, text, colors, favicon, background, fonts, and project Custom CSS are retained in the packaged project.
Optional image separation extracts data URLs from global styles, rows, backpack rows, design groups, and viewer settings; identical assets are deduplicated.
The template's viewer JavaScript remains the runtime source of truth.
Upstream synchronization
The project model is generated directly from upstream source. Re-run the analyzer against a checkout of ICC-Plus-Svelte:
npm run analyze:upstream -- --source ../ICC-Plus-Svelte --deployment ../ICCPlus
npm test
npm run check
npm run buildThe analyzer uses the TypeScript AST to regenerate:
src/generated/iccplus.schema.jsonsrc/generated/default-project.jsonsrc/generated/source-analysis.jsonsrc/generated/deployment-manifest.jsonsrc/generated/third-party-licenses.jsonanalysis/CODEBASE_INVENTORY.md
Tests fail if a newly declared upstream model type is not assigned to a feature
family. source-analysis.json also records declarations, imports, complete
SHA-256-addressed source files, component labels, every named source
function/method, exact function bodies, and source occurrences. The deployment
manifest covers every file in wahaha303/ICCPlus plus every official viewer
archive entry. Agents can query field:<name>, type:<name>,
function:<name>, or source:<relative-path> through
iccplus_capabilities; deployment:<relative-path> returns deployment
evidence. Function queries support file, offset, and limit so duplicate
local names remain manageable; include_source=false returns compact metadata.
Development
npm test
npm run test:stdio
npm run verify:upstream -- --source ../ICC-Plus-Svelte --deployment ../ICCPlus
npm run check
npm run build
npm run inspect
npm pack --dry-runThe test suite covers generated-model coverage, model graph mutation, normalization, reference rewrites, all requirement families, RFC 6902 atomicity, viewer packaging, and an in-memory MCP client/server exchange.
For the full semantic feature map, see
analysis/FEATURE_ANALYSIS.md. The generated
field/function/component evidence is in
analysis/CODEBASE_INVENTORY.md.
The requirement-by-requirement verification record is
analysis/COMPLETION_AUDIT.md.
Attribution
ICC Plus is developed by
wahaha303. This MCP server is an independent
integration and does not replace or modify the official creator/viewer.
Both projects are distributed under the MIT License; see LICENSE.
Upstream and vendored dependency notices are preserved in
THIRD_PARTY_NOTICES.md and the
iccplus://licenses resource.
Available Tools
27 toolsiccplus_build_viewerBuild ICC Plus viewer archiveCDestructive
Package the project into an official web/local viewer template, applying loading config and optional deduplicated image separation.
| Name | Required | Description | Default |
|---|---|---|---|
| local | No | ||
| overwrite | No | ||
| project_id | Yes | ||
| output_path | Yes | ||
| require_valid | No | ||
| template_path | Yes | web_viewer.zip or local_viewer.zip path inside ICCPLUS_WORKSPACE. | |
| separate_images | No | ||
| expected_revision | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details like applying loading config and optional deduplicated image separation, which are not in annotations. However, it does not disclose potential side effects such as overwriting output or modifying the project, and the destructive hint is only in annotations. More transparency about side effects and failure modes would improve.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no extraneous content. It efficiently conveys the main action and optional components.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the main action is clear, the description lacks context about the output format, how parameters affect the result, and any prerequisites. There is no output schema, and the tool has 8 parameters with minimal guidance, making it incomplete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only template_path has a description; the other seven parameters are undocumented. The description mentions loading config and image separation but does not map them to specific parameters. With low schema coverage, the lack of parameter descriptions leaves the agent guessing about required inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: packaging the project into a viewer template, with specific details about loading config and optional image separation. It distinguishes from sibling tools by focusing on building an archive, not on editing or exporting fragments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool over alternatives. It does not mention any conditions or scenarios where this tool is preferred, leaving the agent without selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_capabilitiesDiscover ICC Plus capabilitiesBRead-onlyIdempotent
List feature families or return field, type, function-body, source-file, deployment-artifact, or Custom CSS evidence extracted from ICC Plus.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Optional relative-file filter for function:<name> when local names have multiple matches. | |
| limit | No | Maximum function matches to return. | |
| topic | No | Feature id, field:<name>, type:<name>, function:<name>, source:<relative-path>, or deployment:<relative-path>. Omit to list all feature families. | |
| offset | No | Function-match offset. | |
| include_source | No | Include exact bodies for function/source queries; set false for a compact index. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that the tool extracts evidence from ICC Plus and lists the evidence types, which is consistent with the annotations and provides some context. However, it doesn't describe the return structure, pagination, or what happens when no topic is given beyond listing families. With annotations covering the core behavior, a 3 is appropriate—some added context but not rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the primary action and then enumerates the evidence types. It's concise and readable, though the long list makes it slightly dense. No wasted words, and the key purpose is stated upfront.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 optional parameters and no output schema, the description doesn't explain what the response looks like (e.g., a list of families, a structured index, or function bodies). The topic parameter's syntax is covered by the schema, but the description could mention that the result is a list or index to set expectations. Since it's a read-only discovery tool and the schema is rich, a 3 feels adequate—it's not incomplete enough to mislead, but it could give more detail on return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (file, limit, topic, offset, include_source) already has a detailed description in the schema. The tool description adds no additional parameter-level semantics beyond what the schema provides. Baseline 3 is correct—the schema does the heavy lifting, and the description doesn't need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List feature families or return field, type, function-body, source-file, deployment-artifact, or Custom CSS evidence extracted from ICC Plus.' It names a specific verb and resource, and enumerates the kinds of evidence returned. It distinguishes itself from siblings like iccplus_schema or iccplus_css_catalog by being a broader discovery tool, though it doesn't explicitly name any sibling. Slight ambiguity remains around what 'feature families' means, but the core 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.
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 its many siblings (e.g., iccplus_schema for schema details, iccplus_css_catalog for CSS specifics). There is no explicit when-to-use or when-not-to-use, nor any mention of alternatives. The only usage hint is 'Omit to list all feature families,' which is a parameter behavior, not a selection guideline. An agent would have to infer from sibling names and the description that this is a general discovery entry point.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_close_projectClose ICC Plus projectADestructive
Close an in-memory session. Unsaved sessions require force=true.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| project_id | Yes | ||
| expected_revision | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate destructive behavior, and the description adds that this closes an in-memory session and that unsaved sessions require force=true. It stops short of explicitly disclosing that forcing will discard unsaved changes or what exactly happens to the session state, so the added behavioral context is useful but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no filler. The core action is front-loaded, and the force requirement is presented as a concise, necessary caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a destructive, mutating operation with no output schema, the description is not complete enough for safe invocation. It fails to explain expected_revision, the consequences of force, or any return/error behavior, which are important for an agent deciding whether and how to call this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. It does clarify the force parameter's key condition, but it gives no guidance on project_id's role and completely omits expected_revision, which is likely a concurrency guard and is left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Close') and resource ('in-memory session'), and the title clarifies the resource is the ICC Plus project. It is clearly differentiated from siblings like open_project, save_project, and read_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when closing an in-memory session, with the additional condition that unsaved sessions require force=true. However, it does not explicitly contrast this with save_project or any alternative, nor does it say when closing without force is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_create_entityCreate ICC Plus entityB
Create any modeled ICC Plus entity with current project defaults, optional overrides, automatic ids, and normalized memberships.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | ||
| parent | No | Parent entity id or JSON Pointer for nested entities. | |
| values | No | ||
| dry_run | No | ||
| position | No | ||
| project_id | Yes | ||
| expected_revision | No | ||
| validation_policy | No | no_new_errors |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no positive behavioral hints—readOnlyHint, openWorldHint, idempotentHint, and destructiveHint are all false—so the description carries the burden. It does disclose useful creation behavior: current project defaults, optional overrides, automatic ids, and normalized memberships. However, it does not mention side effects, validation behavior, dry_run capability, or persistence implications, which are relevant 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the core purpose and then lists high-level behaviors without wasted words. It is readable and scannable, and every phrase adds meaning about how the tool behaves.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, low schema coverage, no output schema, and a large sibling set, this description is too thin to fully support correct invocation. It omits the role of validation_policy, dry_run, expected_revision, and position, and does not clarify how 'normalized memberships' or 'overrides' relate to the input structure. An agent would likely need to inspect the schema or experiment to understand critical behaviors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 13%, with only 'parent' documented, so the description must compensate heavily. It introduces concepts like 'overrides', 'automatic ids', and 'normalized memberships', but these are not explicitly mapped to parameters such as values, parent, or expected_revision. Important parameters like dry_run, validation_policy, position, and project_id receive no semantic guidance beyond schema constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Create any modeled ICC Plus entity.' It adds behavioral specifics—current project defaults, optional overrides, automatic ids, normalized memberships—that go beyond the title. However, it does not explicitly distinguish itself from siblings like iccplus_create_project or iccplus_duplicate_entity, relying on the word 'entity' to imply the separation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives such as iccplus_duplicate_entity, iccplus_update_entity, or iccplus_patch. It implies broad use for entity creation via 'any modeled ICC Plus entity,' but does not mention prerequisites like having a project open, or when a different creation path would be more appropriate. This leaves selection largely to inference from the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_create_projectCreate ICC Plus projectA
Create an in-memory project from current upstream defaults. Nothing is written until save is called.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional future save path inside ICCPLUS_WORKSPACE. | |
| overrides | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, meaning this is not a read-only operation, and the description adds crucial behavioral detail: the project is created in-memory and nothing is written until save is called. This goes beyond what annotations provide and sets accurate expectations about side effects and persistence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the essential operation and a key constraint (in-memory, nothing written until save). Every word earns its place with no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and two optional parameters, the description covers the core concept but leaves some gaps: it does not specify what the tool returns, whether the new project becomes the active project, or how overrides should be structured. The presence of sibling tools like read_project and save_project partially compensates, but the missing return/state-change details make it minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: the path parameter has a description, but the overrides object is undocumented in the schema and the description does not explain it. The phrase 'from current upstream defaults' hints that overrides may adjust those defaults, but this is implicit and not sufficient for an agent to confidently construct valid override values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Create') and resource ('in-memory project from current upstream defaults'), making the operation clear. It also distinguishes itself from save_project by explicitly noting that nothing is written until save is called, and from open_project by implying this creates a new project rather than opening an existing one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool—when starting a new project from default upstream values—and hints that a subsequent save_project call is required to persist it. It does not explicitly name alternative tools like open_project or save_project, but the context provides adequate guidance for an agent to choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_css_analyzeAnalyze ICC Plus Custom CSSARead-onlyIdempotent
Statically analyze stored or candidate CSS for syntax, selector specificity, official classes, project ids, inline-style conflicts, and external assets.
| Name | Required | Description | Default |
|---|---|---|---|
| css | No | Candidate CSS. Omit to analyze the open project customCSS value. | |
| project_id | No | Adds project-aware target resolution; CSS is read from the project when css is omitted. | |
| include_rules | No | ||
| max_diagnostics | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, and the description adds useful context by saying the analysis is 'static' and applies to 'stored or candidate' CSS. It does not describe the output or diagnostic behavior, but nothing contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense, well-structured sentence that front-loads the verb and resource and then lists the analysis dimensions. Every clause adds meaningful information, and there is no repetition of annotation or schema data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only static analysis tool, the description covers the main inputs and analysis areas reasonably well. But because there is no output schema, the agent is left without explicit information about what the tool returns, and the two undocumented parameters remain unexplained, leaving gaps in fully anticipating the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes `css` and `project_id`, and the description reinforces those semantics with 'stored or candidate CSS'. However, `include_rules` and `max_diagnostics` have no descriptions in either the schema or the tool description, so the description does not fully compensate for the 50% schema coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Statically analyze stored or candidate CSS' and enumerates concrete analysis dimensions like syntax, selector specificity, official classes, project ids, inline-style conflicts, and external assets. This makes the tool's purpose clear, though it does not explicitly differentiate it from siblings like iccplus_css_catalog or iccplus_css_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when the tool applies: when analyzing either stored project CSS or a candidate CSS string. However, it never names alternatives or states when not to use this tool, so the agent must infer boundaries from the sibling names rather than from explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_css_catalogDiscover ICC Plus Custom CSS targetsBRead-onlyIdempotent
List official viewer classes with source evidence and project-specific escaped row, choice, and selectable-addon selectors.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| limit | No | ||
| query | No | Filter selectors, descriptions, ids, titles, paths, or source files. | |
| scope | No | official | |
| offset | No | ||
| project_id | No | Required for project or all scope. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful context about what the list contains ('source evidence' and 'project-specific escaped selectors'), which goes beyond the schema. It does not mention pagination or result ordering, but given the annotation coverage, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that front-loads the primary action and object. It is concise and avoids fluff, though it uses jargon like 'escaped' and 'source evidence' that may require domain knowledge. Still, it earns points for efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters, no output schema, and low schema coverage, the description is too brief to be fully complete. It does not explain the distinction between 'official' and 'project' scopes, what 'source evidence' means, or what the returned data looks like. An agent would need to infer many details from names and context, which is risky for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only query and project_id have text). The description does not compensate by explaining kind, scope, limit, or offset semantics. With low coverage and no description-level guidance, parameters like kind and scope remain underdocumented, leaving the agent unsure how to use them effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists official viewer classes and project-specific selectors, with a specific verb ('List') and resource. It does not explicitly differentiate from siblings like iccplus_css_analyze or iccplus_css_set, but the purpose is unambiguous and specific enough to be distinguished from them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as iccplus_css_analyze or iccplus_css_set. There is no mention of typical use cases, prerequisites, or exclusions. An agent must infer usage from the name and sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_css_setSet ICC Plus Custom CSSADestructive
Replace, append, prepend, or clear the official project customCSS field with revision protection, dry-run support, and integrated validation.
| Name | Required | Description | Default |
|---|---|---|---|
| css | No | Required unless mode is clear. | |
| mode | No | replace | |
| dry_run | No | ||
| project_id | Yes | ||
| expected_revision | No | ||
| validation_policy | No | no_new_errors |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, and the description adds genuinely useful behavioral context beyond them: revision protection (concurrency guard), dry-run support (preview before applying), and integrated validation (policy-gated writes). It clearly identifies the affected field ('customCSS'), so the destructive scope is disclosed. It doesn't detail rollback or failure semantics, but the safety mechanisms are well surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 22-word sentence that front-loads the action verbs, names the exact target field, and appends the three distinguishing features. Every phrase earns its place with zero filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive 6-parameter mutation tool with no output schema, the description covers the core concepts (modes, revision guard, dry-run, validation) but omits operational details an agent needs: what the return value looks like, what happens when the revision check fails or validation fails, and whether the project must be open first. Adequate conceptually, but with clear gaps at the edges.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 17% schema description coverage, the description carries most of the burden and partially compensates: the verbs map directly to the mode enum values, and 'revision protection', 'dry-run support', and 'integrated validation' correspond to expected_revision, dry_run, and validation_policy. However, it leaves the validation_policy levels (strict vs no_new_errors vs none) and the exact revision-mismatch behavior unexplained, so compensation is high-level rather than complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names multiple specific verbs (Replace, append, prepend, clear) targeting a precise resource (the official project customCSS field). The 'official' qualifier distinguishes this field-level mutation from sibling CSS tools like iccplus_css_catalog (listing) and iccplus_css_analyze (analysis), so an agent can tell them apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the operation modes via the verbs, but gives no explicit when-to-use guidance, prerequisites, or exclusions relative to siblings. It never names alternatives such as iccplus_css_analyze for validation-only workflows or iccplus_read_project for viewing current CSS, leaving routing entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_delete_entityDelete ICC Plus entityBDestructive
Delete one entity. The default policy rejects deletions that create dangling references.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| dry_run | No | ||
| reference | Yes | ||
| project_id | Yes | ||
| expected_revision | No | ||
| validation_policy | No | no_new_errors |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the destructive profile (destructiveHint=true, readOnlyHint=false), and the description adds one useful behavioral context: the default policy rejects deletions that create dangling references. However, it does not disclose whether deletions are reversible, what happens to dependent entities beyond the rejection, or what a successful delete returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the operation and then the key behavioral constraint, with zero filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six parameters, no output schema, zero schema descriptions, and a destructiveHint, the definition should explain parameter meaning, dry_run semantics, and success/failure behavior — none of which are present. This is comparable to the update_drive calibration case (4 params, 50% coverage, no annotations), which was also scored 2 for incompleteness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description bore the duty to explain reference, type, dry_run, expected_revision, and validation_policy — and it explains none of them by name. The default-policy sentence does give practical meaning to the default validation_policy value ('no_new_errors'), but that is partial credit at best.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Delete') and resource ('one entity'), and the 'one' qualifier rules out bulk deletion, adding precision over the title. The operation is unambiguous among the sibling set, which contains only create/update/duplicate/move/patch as mutation alternatives, though the description does not explicitly name a sibling to differentiate from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no explicit when-to-use guidance and names no alternatives such as update_entity or patch for modifying rather than removing an entity. The dangling-reference note hints at validation considerations but does not tell the agent when to prefer this tool or how to avoid the default rejection (e.g., via dry_run).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_duplicate_entityDuplicate ICC Plus entityB
Duplicate an entity and nested content with fresh ids; optionally remap references within the clone.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| dry_run | No | ||
| position | No | ||
| reference | Yes | ||
| project_id | Yes | ||
| expected_revision | No | ||
| validation_policy | No | no_new_errors | |
| remap_internal_references | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It mentions 'fresh ids' and 'remap references' but does not state side effects on the original entity (e.g., whether it is left unchanged). The annotations indicate destructiveHint=false and readOnlyHint=false, which are consistent but the description itself provides only partial transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the primary action. It omits unnecessary details and is immediately comprehensible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not cover return values, failure modes, or the purpose of parameters like expected_revision and validation_policy. With no output schema and vague parameter hints, context is incomplete for a complex operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions none of the eight parameters, despite the schema defining required fields like project_id and reference, and enums for type and validation_policy. No parameter is explained, leaving users to guess their meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool duplicates an entity with nested content, assigns fresh ids, and optionally remaps references. The verb 'duplicate' is specific and distinct from other entity operations like create or update, so 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what it does but gives no guidance on when to use it versus alternatives (e.g., when to duplicate vs create). It lacks explicit conditions like 'use this when you need a deep copy without affecting the original.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_evaluate_requirementsEvaluate ICC Plus requirementsBRead-onlyIdempotent
Evaluate an entity or supplied requirement tree using ICC Plus operator semantics and return an explainable trace.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | ||
| entity | No | Entity id or JSON Pointer. Omit when requirements is supplied. | |
| project_id | Yes | ||
| requirements | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior; description adds that it returns an explainable trace, providing additional clarity on output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, conveying the essential action and output in one sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description gives only a vague notion of the return (explainable trace); it fails to describe error handling, detailed behavior, or parameter interdependencies for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% with only entity having a description; the tool description adds no parameter explanations, leaving state, project_id, and requirements ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it evaluates an entity or requirement tree using ICC Plus operator semantics and returns an explainable trace, distinguishing it from other tools like validate or normalize.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for evaluation but does not explicitly contrast with alternatives like iccplus_validate or iccplus_normalize; the purpose is clear enough but guidance is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_export_fragmentExport ICC Plus fragmentBRead-onlyIdempotent
Return a row, choice, addon, score, requirement, or feature entity as reusable JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| reference | Yes | ||
| project_id | Yes | ||
| include_embedded_assets | No | Return raw data URLs. Leave false unless their exact encoded contents are explicitly required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey the safety profile: readOnlyHint=true, openWorldHint=false, idempotentHint=true, destructiveHint=false. The description adds only that the tool returns reusable JSON, which is modest but consistent. No additional behavioral details such as output shape, error conditions, or asset handling are disclosed, though annotations lower this burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no filler. The core action and result are front-loaded, making it easy for an agent to quickly parse the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, low parameter coverage, and a wide enum of possible type values, the description should explain more about what 'reusable JSON' contains and how to construct the reference. It leaves important operational details such as how to identify the target entity and what the exported JSON looks like entirely unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% because only include_embedded_assets has a description. The description lists some entity kinds but does not explain the meaning of 'reference', the format of project_id, or how type values map to behavior. The schema's enum already lists valid types, so the description adds little semantic value for the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Return') and resource ('a row, choice, addon, score, requirement, or feature entity as reusable JSON'), which makes the tool's basic function obvious. However, it does not explicitly differentiate this from siblings like iccplus_query or iccplus_read_project, and the term 'feature' is not actually present in the type enum.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'as reusable JSON' implies this is intended for serializing/exporting a fragment for later reuse, giving some contextual signal about when to use it. But it does not explicitly say when to prefer this over alternatives like query, read_project, or import_fragment, and provides no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_historyUndo or redo ICC Plus mutationADestructive
Undo or redo one in-memory mutation while keeping revision conflict protection.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| project_id | Yes | ||
| expected_revision | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, and the description adds useful context beyond that: 'in-memory' clarifies the mutation is not persisted, and 'while keeping revision conflict protection' signals that revision checks are enforced. This goes beyond the structured annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that immediately names the operation and the most important constraint. Every word earns its place; there is no wasted text or repetition of title/schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Core behavior and safety profile are covered, making the tool usable for basic invocation. However, it omits prerequisites like an open project, potential errors (e.g., nothing to undo), and the meaning of expected_revision. For a destructive tool with no output schema, this is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it does not explain any of the three parameters. It only alludes to revision conflict protection without clarifying expected_revision's role or how action enumerations map to behavior. The schema's self-explanatory names and enum provide some guidance, but the description itself adds little.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Undo or redo one in-memory mutation.' This clearly identifies the operation and scope, and it is easily distinguished from sibling tools because none of the siblings mention undo/redo functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context that the tool operates on in-memory mutations of the current project, which implies when it should be used relative to other mutation tools. It does not explicitly mention alternatives or exclusions, but the unique purpose among siblings makes this acceptable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_import_fragmentImport ICC Plus fragmentB
Import a fragment through the same parent/default/normalization layer used for normal entity creation.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | ||
| value | Yes | ||
| parent | No | ||
| dry_run | No | ||
| position | No | ||
| project_id | Yes | ||
| preserve_ids | No | ||
| expected_revision | No | ||
| validation_policy | No | no_new_errors |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation that is not idempotent and not destructive, which already covers the basic safety profile. The description adds some behavioral context by mentioning the normalization layer and parent/default handling, but does not disclose side effects, validation behavior, or how the fragment is persisted or returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler and the core action is front-loaded. It is appropriately terse, though the phrase 'parent/default/normalization layer' is slightly dense and could be simplified without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters, a nested value object, multiple enums, no output schema, and a broad sibling set, the one-sentence description is substantially incomplete. It does not mention return values, failure modes, dry-run semantics, or what differentiates this from create_entity, making it insufficient for confident invocation without external schema exploration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% with 9 parameters, so the description carries the burden of explaining parameters, but it only alludes to parent/default/normalization. It does not clarify the 'value' fragment structure, 'type' enum semantics, dry_run behavior, preserve_ids, expected_revision, or validation_policy, leaving most parameters underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Import') and resource ('ICC Plus fragment'), and adds context about using the same normalization layer as normal entity creation. It is clear enough to distinguish from export_fragment, though it does not explicitly contrast with create_entity or other sibling import-like operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'same parent/default/normalization layer used for normal entity creation' implies this tool is for importing fragments with consistent behavior to entity creation, but it never states when to use this over create_entity, normalize, or export_fragment. No alternatives are named and no exclusions or preconditions are given, so usage guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_list_projectsList open ICC Plus projectsARead-onlyIdempotent
List in-memory project sessions, revisions, dirty state, and compact summaries.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: the listing is in-memory only, includes dirty state, and returns compact summaries rather than full project content. It does not contradict the readOnly/idempotent/destructive hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence efficiently conveys the action, scope, and output content without redundancy. All elements earn their place and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only listing tool, the description is largely complete. It identifies what is listed and the nature of the output. It could be slightly clearer about the exact shape of the summaries, but the lack of parameters and strong annotations keep the burden low.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to explain. The baseline of 4 applies; the description adds no parameter semantics because none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states the specific verb 'list', the resource 'in-memory project sessions', and the contents of the listing ('revisions, dirty state, and compact summaries'). This clearly distinguishes it from tools like read_project or project_status, which operate on individual projects rather than enumerating open sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the tool's scope clear: list in-memory project sessions. However, it does not explicitly say when to use this tool instead of siblings such as iccplus_project_status, iccplus_read_project, or iccplus_query. Usage guidance is implied rather than stated with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_move_entityMove ICC Plus entityA
Move an entity within its current ordered container and repair stored indices.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| dry_run | No | ||
| position | Yes | ||
| reference | Yes | ||
| project_id | Yes | ||
| expected_revision | No | ||
| validation_policy | No | no_new_errors |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only provide false hints for readOnly, idempotent, and destructive, so they do not characterize this as a mutation. The description steps in by explicitly stating the move effect and the 'repair stored indices' side effect. It also narrows scope to the current container, adding useful behavioral context beyond annotations. It does not discuss effects on sibling ordering or reversibility, but core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence containing no filler. Every phrase adds value: the verb, the container scope, and the index-repair effect are all present with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no output schema and zero parameter descriptions, an 11-word description is materially incomplete. An agent would not know how reference and type relate, what dry_run does, when validation_policy matters, or whether prerequisites like an open project apply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden of explaining 7 parameters. It only weakly implies that 'position' is the target index and 'reference' identifies the entity. It says nothing about type, dry_run, expected_revision, or validation_policy, leaving the agent without meaningful parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Move'), a precise resource ('an entity within its current ordered container'), and a relevant side effect ('repair stored indices'). This clearly distinguishes it from sibling operations like create_entity, update_entity, or delete_entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. Sibling tools such as update_entity and duplicate_entity exist, but the description never explains what makes move the right choice or mentions any conditions/exclusions. Usage must be inferred entirely from the name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_normalizeNormalize ICC Plus projectC
Migrate legacy shapes, generate missing ids, repair indices/parents, and rebuild reciprocal group/design memberships.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| project_id | Yes | ||
| expected_revision | No | ||
| validation_policy | No | no_new_errors |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations offer no hints (readOnlyHint=false, destructiveHint=false), so the description must carry the burden. It implies mutation through actions like 'migrate', 'repair', and 'rebuild', but omits critical safety context such as the dry_run default, validation_policy behavior, and potential side effects on existing data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it lists four actions without prioritizing the most critical behavioral elements. It is not front-loaded with the dry_run safety mechanism or validation policy, so while compact, it lacks effective structure for agent decision-making.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four parameters, no output schema, and no supporting annotations, the description is far too thin. It omits the dry-run default, validation policy semantics, expected_revision's role, and any warnings about non-idempotency or potential data loss, leaving the agent to guess at safe usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description mentions none of the four parameters (dry_run, project_id, expected_revision, validation_policy). The agent must rely solely on parameter names and schema defaults, which is insufficient given the safety implications of dry_run and validation_policy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description lists four concrete operations—migrate legacy shapes, generate missing ids, repair indices/parents, and rebuild memberships—clearly indicating the tool's purpose. It is specific enough to distinguish it from generic validation or update tools, though it does not explicitly contrast with siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like iccplus_validate, iccplus_patch, or iccplus_project_status. The description provides no context on the appropriate conditions or scenarios for running normalization.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_open_projectOpen ICC Plus projectARead-onlyIdempotent
Open a project JSON file from ICCPLUS_WORKSPACE into an isolated revisioned session.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| normalize | No | Apply compatible migrations and reciprocal membership repair in memory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds that the session is 'isolated' and 'revisioned', which are behavioral details not in annotations. It does not contradict annotations and provides useful context about session semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundant phrases. It front-loads the core action and location, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple open operation with two parameters and no output schema, the description covers the essential context: where the file comes from (ICCPLUS_WORKSPACE) and the nature of the session (isolated, revisioned). The normalize parameter is documented in the schema, so nothing critical is missing for the agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% – only normalize has a description. The description implies path is a JSON file path (from ICCPLUS_WORKSPACE), which adds some meaning beyond the bare 'path' parameter. However, it doesn't elaborate on normalize, and the description does not fully compensate for the missing path description, though it partially does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('open') and resource ('project JSON file from ICCPLUS_WORKSPACE'), and states the outcome ('into an isolated revisioned session'). This clearly distinguishes it from siblings like read_project (which likely just reads) and create_project (which creates new projects).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context (workspace location, isolated revisioned session) but does not explicitly compare to alternatives or state when not to use it. Given the sibling list includes read_project, save_project, and close_project, an agent can infer usage, but there is no direct guidance on choosing this over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_patchPatch ICC Plus projectBDestructive
Atomically apply RFC 6902 JSON Patch operations for any current or future ICC Plus field.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| patches | Yes | ||
| project_id | Yes | ||
| expected_revision | No | ||
| validation_policy | No | no_new_errors |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true, so the mutation risk is known. The description adds the valuable behavioral detail of atomicity and references the RFC 6902 standard, which informs expected patch semantics. However, it does not mention revision conflicts, validation behavior, or dry-run effects, which are relevant for a destructive patch operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It communicates the core action, the atomicity guarantee, and the scope in a compact and scannable way.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, multi-parameter patch tool with no output schema, a one-line description is under-specified. It omits important context around revision handling, validation policies, dry-run behavior, and what the operation returns or affects, leaving the agent to infer critical execution details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only clarifies the nature of 'patches' by referencing RFC 6902. The other parameters—project_id, dry_run, expected_revision, validation_policy—receive no explanation beyond their names and schema constraints, leaving significant semantic gaps for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool applies RFC 6902 JSON Patch operations, identifying both the mechanism and the target resource. It conveys atomicity and a broad field scope, which helps distinguish it from entity-specific or field-specific siblings, though it does not explicitly name any sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over alternatives like iccplus_update_entity, iccplus_css_set, or iccplus_set_asset. The phrase 'for any current or future ICC Plus field' hints at broad applicability, but no when-to-use or when-not-to-use conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_project_statusInspect ICC Plus project statusARead-onlyIdempotent
Return revision, dirty state, summary, Custom CSS analysis, validation counts, and optionally project JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| include_project | No | Return the complete project. Prefer iccplus_read_project with exact paths to keep responses small. | |
| include_embedded_assets | No | Return raw data URLs. Leave false unless their exact encoded contents are explicitly required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the output contents but not much beyond that, such as potential payload size or cost of including the project JSON. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one tight sentence that front-loads the action and lists the full scope of returned information without filler. Every clause contributes meaning, and the optional project JSON is cleanly signaled.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, non-destructive status tool with only one required parameter, the description plus schema guidance is mostly sufficient: the agent knows what will be returned and how to avoid expensive optional payloads. It is not a 5 because the description does not explicitly distinguish status inspection from the validation or CSS-analysis siblings, and there is no output schema to clarify return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%; the two boolean parameters are well documented in the schema, including strong guidance to prefer iccplus_read_project and to avoid embedded assets unless required. The main description adds only 'optionally project JSON,' which maps to include_project. The project_id parameter lacks prose but has type/format/pattern constraints, so a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Return') and enumerates concrete status artifacts: revision, dirty state, summary, Custom CSS analysis, validation counts, and optional project JSON. The schema parameter description further distinguishes it from iccplus_read_project by steering bulk project reads to that sibling, so an agent can tell which tool to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The main description gives clear context about the status payload, and the parameter descriptions provide useful routing guidance: prefer iccplus_read_project for complete project reads and keep embedded assets false unless exact encoded contents are needed. It stops short of explicitly stating when to choose this over iccplus_validate or iccplus_css_analyze, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_queryQuery ICC Plus entitiesCRead-onlyIdempotent
Search rows, choices, addons, scores, requirements, points, groups, designs, words, variables, sound effects, and categories.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | ||
| limit | No | ||
| query | No | ||
| types | No | ||
| offset | No | ||
| project_id | Yes | ||
| include_values | No | Set false for a compact metadata-first search, then fetch values for exact ids. | |
| include_embedded_assets | No | Return raw data URLs. Leave false unless their exact encoded contents are explicitly required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description's 'Search' is consistent with those. However, the description adds no behavioral context beyond that: it does not mention result shape, pagination, matching semantics, or the effect of include_values/include_embedded_assets, which are already partially described in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words and front-loads the core action ('Search'). It is concise, but the brevity sacrifices the behavioral and parameter guidance needed for a tool with eight parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, no-output-schema tool in a crowded sibling set, this description is not complete enough. It fails to specify return shape, pagination, query semantics, or when this search tool should be chosen over read/schema/export siblings, leaving agents to rely on inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 25% schema description coverage, the description needed to compensate, but it barely does. It lists plural entity categories such as 'designs', 'addons', and 'requirements' that map imprecisely to the schema's enum values (e.g., row_design_group vs choice_design_group, addon vs selectable_addon), and it gives no meaning for project_id, ids, query, limit, or offset.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Search' and identifies the resource as ICC Plus entities, then lists the entity kinds it covers. This differentiates it from mutation tools like iccplus_update_entity or iccplus_delete_entity, though it does not explicitly contrast with iccplus_schema or iccplus_read_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to prefer this tool over siblings such as iccplus_schema, iccplus_read_project, or iccplus_export_fragment. The verb 'Search' implies a read/list use case, but no context, exclusions, or alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_read_projectRead exact ICC Plus project pathsARead-onlyIdempotent
Read one or more RFC 6901 JSON Pointers without returning the complete project; preserves exact CSS, HTML, JS, and unknown fields while redacting embedded assets by default.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | Exact JSON Pointers. Use an empty string for the root only when the complete project is truly required. | |
| project_id | Yes | ||
| include_embedded_assets | No | Return raw data URLs. Leave false unless their exact encoded contents are explicitly required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds meaningful behavioral context beyond those hints: it guarantees exact preservation of CSS, HTML, JS, and unknown fields, and explicitly discloses that embedded assets are redacted by default. There is no contradiction between the description and the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single information-dense sentence that front-loads the action and resource before delivering the key constraints. It includes no filler and every clause earns its place, 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description could go further in stating the response shape or behavior for invalid/inaccessible paths, but the tool's purpose is simple enough that an agent can reasonably infer it returns the values at the requested pointers. The schema and annotations provide strong coverage of parameters and safety, and the description fills the important behavior gaps around exactness and asset redaction.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers paths and include_embedded_assets, and the description reinforces and extends this by explaining that JSON Pointer reads preserve exact fields and redact embedded assets by default. This adds practical meaning to the include_embedded_assets parameter that the schema only describes as 'Return raw data URLs.' project_id is only constrained by pattern in the schema and not semantically described, but it is a standard identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Read'), a precise resource ('RFC 6901 JSON Pointers' within an ICC Plus project), and immediately distinguishes the behavior from a full project read with 'without returning the complete project.' It also communicates the exactness guarantees (CSS, HTML, JS, unknown fields) and default redaction, leaving no ambiguity about the tool's core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool—when an exact, targeted read is needed rather than the full project—via 'without returning the complete project.' It does not explicitly name alternatives among siblings such as iccplus_query or state when this tool should be preferred, nor does it describe excluded use cases, so the usage guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_save_projectSave ICC Plus projectCDestructive
Atomically save project JSON inside ICCPLUS_WORKSPACE after optional strict validation.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| pretty | No | ||
| overwrite | No | ||
| project_id | Yes | ||
| require_valid | No | ||
| expected_revision | No | ||
| create_directories | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive and non-read-only. The description adds value by noting atomicity and optional validation, which are not in the annotations. However, it omits key behavioral traits such as overwrite semantics, conflict handling via expected_revision, and what happens on failure. While it supplements annotations, the coverage is incomplete for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no filler. It front-loads the primary purpose and includes two key qualifiers (atomic, optional validation). While it could benefit from a list of parameters or more detail, the structure is clean and the text is appropriately terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, no output schema, and destructive annotations, the description is far too brief. It doesn't explain return values, error handling, or the behavior of overwrite, expected_revision, or create_directories. The atomicity and validation mentions are useful but insufficient for an agent to safely invoke this tool without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the parameters, but it doesn't. It only hints at 'strict validation' which maps loosely to require_valid. The other six parameters (path, pretty, overwrite, expected_revision, create_directories) remain entirely unexplained, leaving the agent to guess their meaning from names and defaults alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (atomically save), the resource (project JSON), and the location (inside ICCPLUS_WORKSPACE). It goes beyond a tautology by adding atomicity and validation context. However, it doesn't differentiate from sibling tools like create_project or update_entity, which might also save project data, leaving some ambiguity about when this specific save operation is intended.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions 'optional strict validation' but doesn't clarify under what circumstances validation should be skipped or enabled, nor does it name alternative tools or exclusions. An agent would struggle to decide between this and similar operations like create_project or patch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_schemaRead ICC Plus project schemaARead-onlyIdempotent
Read the generated JSON Schema summary, one definition, or the complete project schema.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Return the complete generated schema. | |
| definition | No | Schema definition such as Choice, Row, Requireds, Score, or Styling. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds the 'generated' provenance and the summary/definition/full scoping, but does not describe output details or how the two optional parameters interact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence with no filler. It front-loads the action and clearly enumerates the three read modes without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with only two optional parameters and strong readOnly/idempotent/destructive annotations, the description is largely complete. It does not specify the exact JSON return shape or combined-parameter behavior, but the 'or' phrasing and JSON Schema context make the intended usage reasonably clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the schema already explains `full` and `definition` with useful examples. The tool description maps those parameters to three modes but adds little meaning beyond what the input schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Read') and resource ('generated JSON Schema summary, one definition, or the complete project schema'), giving three clear scopes. It is not tautological and the title reinforces the purpose, but it does not explicitly differentiate from sibling tools like iccplus_read_project or iccplus_capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies three usage modes matching the optional parameters: summary, a single definition, or the complete schema. However, it gives no explicit when-to-use guidance, no exclusions, and no mention of when a sibling 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.
iccplus_set_assetSet ICC Plus image or audio assetC
Set any string field from a workspace file as a data URL, or from an external/data URL, using an exact JSON Pointer.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| dry_run | No | ||
| media_type | No | ||
| project_id | Yes | ||
| source_path | No | ||
| target_path | Yes | ||
| expected_revision | No | ||
| validation_policy | No | no_new_errors |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool mutates a field, but it does not say whether it overwrites existing values, whether the project must first be open or saved, how revision checks or validation policies affect the write, or what side effects a successful set has. Annotations are all false and carry no safety or idempotency information, so the description bears the full burden and does not meet it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one efficient sentence that front-loads the core action and key constraint. It is not padded, but the awkward 'from a workspace file as a data URL' phrasing slightly hurts readability and precision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 8 parameters, no output schema, no parameter descriptions, and no helpful annotations, this one-sentence description is insufficient. It establishes intent but omits critical operational details such as the source_path vs url distinction, media_type requirements, dry_run behavior, and validation/revision semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage across 8 parameters, the description must compensate, but it only clarifies the idea of a JSON Pointer target and data-URL source. It leaves url, source_path, media_type, dry_run, expected_revision, and validation_policy essentially unexplained, so an agent cannot reliably distinguish source_path from url or know why validation_policy and expected_revision exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set'), the target resource ('any string field ... using an exact JSON Pointer'), and the two source modes ('workspace file' or 'external/data URL'). It is specific enough to distinguish this from generic patch/update tools, though the phrase 'from a workspace file as a data URL' is slightly tangled and the title's 'image or audio asset' sounds narrower than 'any string field'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no conditions, and no mention of alternative tools such as iccplus_css_set, iccplus_patch, or iccplus_update_entity. It only states the mechanism ('using an exact JSON Pointer'), which is a requirement rather than a usage criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_update_entityUpdate ICC Plus entityB
Deep-merge fields into one entity and optionally unset fields. ID changes can rewrite all modeled references.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| unset | No | ||
| values | Yes | ||
| dry_run | No | ||
| reference | Yes | Entity id or exact JSON Pointer. | |
| project_id | Yes | ||
| expected_revision | No | ||
| validation_policy | No | no_new_errors | |
| rewrite_id_references | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the sparse annotations by disclosing that updates are deep merges, that fields can be unset, and that ID changes may rewrite all modeled references—a meaningful side-effect warning. It does not use destructiveHint despite potential reference rewrites, but this is not necessarily a contradiction because the operation updates rather than deletes. It could add dry-run or validation behavior, but the annotation set 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler, front-loaded with the main action and then a critical side effect. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With nine parameters, nested values, no output schema, and sparse annotations, the short description leaves important context unexplained: return values, failure or validation behavior, and when to use this versus iccplus_patch. It also does not mention dry_run or validation_policy, which are significant for safely exercising this mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
It adds semantics for 'values' (deep-merged rather than replaced), 'unset' (explicit field removal), and ID/reference rewriting, which are not obvious from the bare schema. However, schema coverage is only 11%, and several parameters such as dry_run, expected_revision, validation_policy, and type receive no explanatory benefit from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation—deep-merging fields into an entity and optionally unsetting fields—and adds a notable side effect about ID changes rewriting modeled references. It clearly identifies 'one entity' as the resource, though it does not explicitly distinguish itself from the similar sibling iccplus_patch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance about when to choose this tool over siblings such as iccplus_patch or iccplus_create_entity. The 'update' title and merge semantics imply it is for modifying an existing entity, but the description does not state exclusions, prerequisites, or alternative selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iccplus_validateValidate ICC Plus projectBRead-onlyIdempotent
Run generated structural schema checks plus ids, references, requirements, memberships, cycles, Custom CSS, and export invariants.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| structural | No | ||
| max_diagnostics | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by listing the concrete invariant categories checked and noting the checks are 'generated.' It does not describe the return shape, but that is secondary given the strong annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every phrase adds a distinct validation category, and the verb-object relationship is immediately clear. It is appropriately sized for the tool's straightforward scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a thorough inventory of what is validated, and the annotations cover side-effect safety. However, it lacks output expectations and any usage context, and with zero parameter semantics an agent can select the tool but must rely on schema defaults and inference to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description contributes almost no parameter information. It does not explain what `structural` toggles, what `max_diagnostics` limits, or how `project_id` is used beyond being the project identifier. The agent is left to infer parameter meaning from property names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Run') and a clear object: generated structural schema checks for an ICC Plus project. It then enumerates the exact categories (ids, references, requirements, memberships, cycles, Custom CSS, export invariants), making its scope distinct from siblings like iccplus_evaluate_requirements or iccplus_project_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of conditions, prerequisites, exclusions, or a preferred workflow such as running validation before export. The description states what the tool does but not when an agent should choose it over other validation-related siblings.
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. Dates show when Glama detected each change.
27 tool updates
v0.1.0- First observed
iccplus_build_viewer - First observed
iccplus_capabilities - First observed
iccplus_close_project - First observed
iccplus_create_entity - First observed
iccplus_create_project - First observed
iccplus_css_analyze - First observed
iccplus_css_catalog - First observed
iccplus_css_set - First observed
iccplus_delete_entity - First observed
iccplus_duplicate_entity - First observed
iccplus_evaluate_requirements - First observed
iccplus_export_fragment - First observed
iccplus_history - First observed
iccplus_import_fragment - First observed
iccplus_list_projects - First observed
iccplus_move_entity - First observed
iccplus_normalize - First observed
iccplus_open_project - First observed
iccplus_patch - First observed
iccplus_project_status - First observed
iccplus_query - First observed
iccplus_read_project - First observed
iccplus_save_project - First observed
iccplus_schema - First observed
iccplus_set_asset - First observed
iccplus_update_entity - First observed
iccplus_validate
TDQS
Most tools target distinct resources and actions, such as project lifecycle, entity CRUD, CSS, validation, and import/export. The main ambiguities are update_entity versus patch and import_fragment versus create_entity, but the descriptions provide enough scope detail to choose correctly.
All tools share the iccplus_ prefix and snake_case, and the majority follow a verb_noun pattern such as create_project, delete_entity, and set_asset. A few noun-only or verb-only names like capabilities, schema, query, and history are minor deviations from an otherwise consistent convention.
27 tools is above the typical well-scoped range and sits just past the heavy 16-25 band. The broad domain—project sessions, entity modeling, CSS management, validation, and viewer building—justifies much of the surface, but some operations could potentially be consolidated.
The tool set covers the main project lifecycle, entity CRUD, querying, validation, normalization, import/export, CSS, assets, and viewer building. Minor gaps include no explicit project deletion/rename and no direct get-entity-by-id helper, though JSON Pointer reads and query cover most practical needs.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Give your AI agent a persistent map of your project's structure, dependencies, and bugs.
Search, fetch (with provenance), scan, and convert AI instruction files for agents.
Build, validate, and deploy multi-agent AI solutions from any AI environment.
Cross-agent artifact workspace with provenance across Claude Code, Codex, Cursor, LangGraph.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables local-first book writing with AI assistance, allowing users to scaffold, create, search, validate, and enrich a book repository through natural language using OpenCode or Claude.MIT
- AlicenseAqualityBmaintenanceEnables AI coding agents to interact with TypeScript projects through compiler-level code intelligence, providing tools for navigation, type information, diagnostics, refactoring, and semantic search.293423Apache 2.0
- AlicenseBqualityBmaintenanceEnables coding agents to incrementally index project text and code, persist decisions and constraints with clear sources, and assemble focused project context across sessions via MCP.342005MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP service for AI-assisted reasoning and editing on long-form fiction projects. It builds a structured index from scene files for targeted context retrieval.2731AGPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Kz2g1ew-commits/ICCPlus-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server