Polarion MCP
This MCP server enables AI assistants to read and write Polarion ALM data via the Polarion REST API.
Discovery & Reading
List projects – Browse accessible Polarion projects
List documents – Discover documents within a project
Get document details – Retrieve metadata, raw HTML body, or render as flowing Markdown
List document parts – Inspect headings, work items, and prose blocks with embedded metadata
Search work items – Find work items using Lucene or SQL queries (module-scoped, custom fields, traceability)
Get work item details – Full details with raw HTML or Markdown-rendered description
List links – View outgoing/incoming traceability links with roles, suspect flags, and linked item metadata
List comments – Retrieve document comments with thread relationships
Resolve enum options – Get valid values for document and work item fields (status, type, severity, priority, custom enums)
Writing
Create/update work items – Create free-floating work items or patch title, status, description, priority, severity, assignees, custom fields, hyperlinks, and workflow actions
Create/update documents – Create new documents with optional Markdown body, or patch metadata, body HTML, and workflow actions
Manage links – Create, update (suspect flag, revision), or delete outgoing work item links in bulk
Move work items – Attach a work item into a document at a specific position, or detach it back to free-floating
Manage comments – Create top-level comments or replies, and resolve or re-open them
Most write operations support a dry_run mode that previews the JSON:API payload without making changes.
Enables GitHub Copilot to interact with Polarion ALM, allowing AI assistants to read, create, update, and reorganize work items, documents, and traceability links.
Click on "Deploy 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., "@Polarion MCPlist work items in project 'MyProject' where status is 'open'"
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.
mcp-server-polarion
Talk to your Polarion — AI reads, writes, and reorganizes documents, work items, test runs, and traceability links.
Features · Quickstart · Tools · Example Prompts · Setup
A Model Context Protocol (MCP) server for Polarion ALM, built for real-world instances: every write supports dry_run, guards validate fields and enum values before anything is committed, and requests are paced to a rate cap you configure for your instance — so an AI assistant can work on production data without surprises.

Features
46 tools covering read and write across documents, work items, test runs, traceability links, comments, and attachments.
Read — render documents as Markdown, search with Lucene or SQL, walk incoming/outgoing links, resolve enum options.
Write — create and update work items, documents, and test runs, manage links, reorganize document structure, post comments.
Safe writes — every write tool supports
dry_run, and pre-write guards validate fields, enum values, and link targets before hitting Polarion.Plays nice with your server — requests are serialized and paced to a configurable rate cap, with automatic retries on 429/5xx responses.
Built for LLMs — strict async, fully typed, pagination on every list tool, docstrings written as the assistant's manual.
Related MCP server: TestRail MCP Server
Quickstart
Requires Polarion 2506+ and uv — see Prerequisites. Fastest path — Claude Code:
claude mcp add mcp-server-polarion \
-e POLARION_URL=https://polarion.example.com \
-e POLARION_TOKEN=your-personal-access-token \
-- uvx mcp-server-polarionOther clients (VS Code, Claude Desktop, Cursor) — see Client Configuration.
Tools
Read
Tool | Description |
| List accessible projects |
| List documents in a project |
| List work items in a project (Lucene/SQL query) |
| List test runs in a project (Lucene query, templates filter) |
| Get test run details, optionally with the raw HTML report body |
| List a test run's execution records, one per test case iteration |
| Get one test record's execution comment and test-case revision |
| Fetch copy-paste SQL recipes for advanced queries |
| Fetch copy-paste Polarion HTML templates for raw-HTML body edits |
| Get document metadata, optionally with the raw body HTML |
| Render a document end-to-end as Markdown |
| List a document's structural parts with embedded work item metadata |
| Get work item details with the body as raw HTML |
| Get work item details with the body as Markdown |
| List a work item's outgoing or incoming links |
| List a document's attachments with file name, size, and author |
| Fetch an image attachment for viewing (bitmap as image, SVG as text) |
| List a work item's attachments with file name, size, and author |
| Fetch a work item image attachment for viewing (bitmap as image, SVG as text) |
| List a test record's attachments with file name, size, and author |
| Fetch a test record image attachment for viewing (bitmap as image, SVG as text) |
| List a document's comments with thread relationships |
| List a work item's comments with thread relationships |
| Resolve valid enum ids for a document field |
| Resolve valid enum ids for a work item field |
All list tools support pagination via page_size (1–100) and page_number parameters.
Write
Tool | Description |
| Create one or more work items in a single request |
| Update fields, body, or workflow status on one or more work items |
| Create a new document |
| Update document metadata, body, or workflow status |
| Copy a document to a new name, space, or project |
| Create one or more test runs, optionally from a template |
| Record test-case execution results on a test run |
| Update title, status, group, or custom fields on one or more test runs |
| Update result, comment, or defect link on one or more test records of a test run |
| Create one or more outgoing links from a source work item |
| Update |
| Delete one or more outgoing links from a source work item |
| Attach a work item to a document at a chosen position |
| Detach a work item from its document |
| Upload one or more local files as document attachments |
| Upload one or more local files as work item attachments |
| Upload one or more local files as test record attachments |
| Add one or more comments or replies to a document |
| Add one or more comments or replies to a work item |
| Resolve or re-open a document comment |
| Resolve or re-open a work item comment |
Example Prompts
"List the projects I can access, then show the documents in project MCPT with their types."
"List the documents in space 'Specifications' of project MCPT."
"Find every approved requirement in project MCPT whose title starts with 'Auth' and show me their owning document."
"Search project MCPT for work items where the custom field 'verification_method' is 'Test' — grab the SQL recipes first if you need a join."
"Find all work items in the SRS module of project MCPT that were changed in the last sprint."
"Read the SRS document of project MCPT and summarize each open requirement."
"Show me the structural outline of the SRS document — headings and the work items under each."
"Read work item MCPT-042 as Markdown and explain what it asks for."
"Show the outgoing and incoming links for MCPT-042 and flag any child task that is still open."
"Which requirements in the SRS document have no 'verifies' back link from a test case?"
"List the open comment threads on the SRS document and who started each."
"Create a task in project MCPT titled 'Refactor authentication module' and link it to MCPT-042 as 'relates_to'."
"Create three test-case work items in project MCPT from this checklist and link each one to MCPT-042 as 'verifies'."
"Add a new requirement under section 3.2 of the SRS document with the body I just drafted."
"Update the description of MCPT-042 with the revised text I'll paste, keeping the existing formatting."
"Add a comment on the SRS document asking the owner to clarify section 4, then reply to thread T-12 marking it resolved."
"Create a test run REG-SPRINT-7 in project MCPT from the 'Regression' template with status 'open'."
"List the valid status values for a defect in project MCPT, then move MCPT-077 to 'in_review'."
"Bump MCPT-042's priority to 90, set severity to 'major', and approve the workflow."
"Change MCPT-201 from a task to a requirement and re-apply its previous status."
"Move MCPT-201 into the SRS document right after MCPT-150."
"Detach MCPT-077 from its document so I can rework it as a standalone task."
"Mark the 'blocks' link from MCPT-042 to MCPT-099 as suspect, then delete the stale 'relates_to' link to MCPT-010."
Setup
Prerequisites
Polarion 2506 or higher is required. Earlier versions lack REST API endpoints this server depends on.
This server is distributed as a Python package and requires uv to run.
Install uv (if not already installed):
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Or via pip:
pip install uvNo other installation is needed — uvx mcp-server-polarion downloads and runs the server automatically.
Environment Variables
Variable | Description | Example |
| Base URL of your Polarion instance |
|
| Personal Access Token for authentication |
|
| Optional. Client-side request rate cap — raise it to match your deployment's throttle, or set |
|
To generate a Personal Access Token, open Polarion, click your user name, and go to My Account → Personal Access Tokens.
Client Configuration
Add to .vscode/mcp.json:
{
"servers": {
"mcp-server-polarion": {
"type": "stdio",
"command": "uvx",
"args": ["mcp-server-polarion"],
"env": {
"POLARION_URL": "https://polarion.example.com",
"POLARION_TOKEN": "your-personal-access-token"
}
}
}
}Add to claude_desktop_config.json:
{
"mcpServers": {
"mcp-server-polarion": {
"command": "uvx",
"args": ["mcp-server-polarion"],
"env": {
"POLARION_URL": "https://polarion.example.com",
"POLARION_TOKEN": "your-personal-access-token"
}
}
}
}Add to Cursor MCP settings:
{
"mcpServers": {
"mcp-server-polarion": {
"command": "uvx",
"args": ["mcp-server-polarion"],
"env": {
"POLARION_URL": "https://polarion.example.com",
"POLARION_TOKEN": "your-personal-access-token"
}
}
}
}Register via the claude mcp add command:
claude mcp add mcp-server-polarion \
-e POLARION_URL=https://polarion.example.com \
-e POLARION_TOKEN=your-personal-access-token \
-- uvx mcp-server-polarionContributing
Bug reports and pull requests are welcome — see CONTRIBUTING.md for branch, commit, and review conventions.
License
Available Tools
46 toolscopy_documentA
Copy a document, duplicating its structure, body, and contained work items.
Rebuilding via create_document/update_document loses the contained items. target_document_name must be free at the destination — check list_documents first. Destination defaults to the source project/space.
link_original_items_with_role is validated against the TARGET project's workitem-link-role enum; remove_outgoing_links strips links carried over from the source.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview payload without writing; guards still query Polarion. | |
| revision | No | Copy the source as of this revision (HEAD if omitted). | |
| space_id | Yes | Source space ID ('_default' = default space). | |
| project_id | Yes | Source project ID. | |
| document_name | Yes | Source document name. | |
| target_space_id | No | Destination space (source space if omitted). | |
| target_project_id | No | Destination project (source project if omitted). | |
| target_document_name | Yes | New document name; must not already exist at the destination. | |
| remove_outgoing_links | No | Strip outgoing links from copied items (kept if omitted). | |
| link_original_items_with_role | No | Link each copied item back to its original with this workitem-link-role id (e.g. 'duplicates'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| copied | Yes | |
| dry_run | Yes | |
| document_name | Yes | |
| payload_preview | Yes | |
| target_space_id | Yes | |
| target_project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses validation of link_original_items_with_role against target project enum, stripping of outgoing links, and dry_run preview. Annotations already indicate non-read-only, but description adds concrete behavioral details.
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?
Concise, front-loaded with core purpose. Additional details are relevant and efficiently stated, though the paragraph could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers prerequisites, default behavior, key parameter options, and validation. Output schema exists, so missing return info is acceptable. Adequate for a complex tool with 10 parameters.
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 descriptions cover 100% of parameters. Description adds meaning beyond schema by explaining behavior of link_original_items_with_role and remove_outgoing_links, and default destination behavior.
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 clearly: 'Copy a document, duplicating its structure, body, and contained work items.' Explicitly distinguishes from create_document/update_document which lose contained items.
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 explicit when-not: 'Rebuilding via create_document/update_document loses the contained items.' Also advises checking list_documents first for name availability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_documentA
Create a document in a space.
document_name must be unique in the space — a duplicate name conflicts; check list_documents first. type/status and custom_fields keys are validated on write — resolve ids via list_document_enum_options first.
Set rendering_layout_types to every work item type the document will hold — without a layout their fields do not render in the Polarion UI. Resolve those ids via list_work_item_enum_options; a later update_document must resend every type to keep.
home_page_content is Markdown (greenfield only), converted to sanitized HTML. Markdown tables get native Polarion styling; a paragraph starting 'Table:' directly after a table becomes a numbered caption widget. Post-create edits round-trip raw HTML via get_document(include_home_page_content_html=True) and update_document; add work items via move_work_item_to_document.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Document type (e.g. 'req_specification', 'generic'). | |
| title | Yes | Human-readable document title. | |
| status | No | Initial workflow status (project default if omitted). | |
| dry_run | No | Preview payload without writing; guards still query Polarion. | |
| space_id | Yes | Space ID ('_default' = default space). | |
| project_id | Yes | Polarion project ID. | |
| auto_suspect | No | Flag linked work items suspect on change. | |
| custom_fields | No | Keyed by Polarion field ID (copy keys from a sibling document); rich-text values as {'type':'text/html','value':...}. | |
| document_name | Yes | Document name (e.g. 'MySpecV1'); unique within space_id, appears in the document URL. | |
| home_page_content | No | Markdown body; converted to sanitized HTML. | |
| rendering_layout_types | No | Work item type IDs the document will hold (e.g. ['softwarerequirement']); each gets a section layout. | |
| uses_outline_numbering | No | Enable auto outline numbers (1, 1.1, ...). |
Output Schema
| Name | Required | Description |
|---|---|---|
| created | Yes | |
| dry_run | Yes | |
| document_name | Yes | |
| payload_preview | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavioral traits beyond the annotations: duplicate name conflicts, write-time validation, the necessity of rendering layout types for fields to appear, Markdown-to-sanitized-HTML conversion, table caption widget behavior, and round-tripping of raw HTML. This is rich, non-obvious context that annotations (readOnlyHint=false, etc.) do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized for the tool's complexity. Every sentence adds value, from the core purpose to caveats and workflow guidance. It is front-loaded with the primary action, then logically progresses through prerequisites, layout requirements, and Markdown behavior 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?
Given the 12-parameter schema with 100% coverage and an output schema, the description covers all necessary context: uniqueness, validation via enum options, layout requirements, Markdown handling, and follow-up operations. It provides a complete picture of how to use the tool correctly and what to expect, without needing to detail return values (covered by output schema).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though the schema describes each parameter, the description adds crucial semantic context: document_name uniqueness and the need to check existing documents; type/status/custom_fields validation requiring enum resolution; rendering_layout_types must include every work item type or fields won't render; home_page_content Markdown conversion and caption behavior. This significantly enriches understanding of how parameters interact.
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 'Create a document in a space' with a specific verb and resource. It distinguishes itself from sibling tools like list_documents, update_document, and copy_document by focusing on creation and adding detailed caveats (uniqueness, layout types, Markdown conversion) that are unique to creation.
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 explicit usage guidance: 'check list_documents first' to avoid duplicate names, 'resolve ids via list_document_enum_options first' and 'list_work_item_enum_options' for validation, and references to post-create actions via update_document and move_work_item_to_document. It clearly signals when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_document_attachmentsA
Upload 1-10 local files as document attachments in one request.
file_path is read from local disk by the server process -- use absolute paths to readable files. file_name (default: file_path's basename) becomes the attachment id; reference it in a document body as attachment:{id} for update_document. Total upload size per call is capped at 25 MiB: compress or use the Polarion portal for one oversized file, split oversized batches across calls. Pure create -- nothing is replaced. Uploads cannot be deleted through this API, so verify file_path and file_name first. A file_name colliding with another item in the same call, or with an existing attachment on the document, rejects the whole batch -- check list_document_attachments first or pick a new file_name. NOT idempotent -- retrying a success is rejected as a duplicate, not silently merged.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview payload without calling Polarion. | |
| space_id | Yes | Space ID ('_default' = default space). | |
| project_id | Yes | Polarion project ID. | |
| attachments | Yes | Files to upload in one request. | |
| document_name | Yes | Document name within space_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| created | Yes | |
| dry_run | Yes | |
| attachment_ids | Yes | |
| payload_preview | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, destructiveHint=false, idempotentHint=false. Description adds critical behaviors: total upload cap 25 MiB, not idempotent, batch rejected on collision, cannot delete uploads. This enriches annotations without contradiction.
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?
Description is thorough but slightly verbose. However, each sentence adds value, and it is well-structured with primary function first, then constraints and warnings. Very efficient for the complexity.
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?
Completely covers all aspects: usage, limitations, parameter semantics, error conditions, performance tips. Without the output schema, it still fully informs an agent how to invoke and use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds substantial meaning: file_path read from local disk, file_name becomes attachment id usable in update_document, dry_run previews. Explains collision and idempotency implications for 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 it uploads 1-10 local files as document attachments in one request. It specifies the resource (document attachments) and action (upload/create), and the detail about file_name becoming the attachment id distinguishes it from other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Extensive usage guidelines: when to use (upload attachments), when to avoid (cannot delete, check collisions, idempotency). Explicitly states 'Pure create -- nothing is replaced.' Advises checking list_document_attachments first and splitting oversized batches. Provides clear exclusions and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_document_commentsA
Create one or more comments on a document in one request.
Reply: set parent_comment_id to a short id from list_document_comments (None = top-level). 'text/html' text is sent unsanitized. Always authored by the token's user. NOT idempotent — a retry duplicates. attachment:{id} image refs in text/html comments must name an existing document attachment — resolve via list_document_attachments first.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview payload without writing; guards still query Polarion. | |
| comments | Yes | Comments to create in one request. | |
| space_id | Yes | Space ID ('_default' = default space). | |
| project_id | Yes | Polarion project ID. | |
| document_name | Yes | Document name within space_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| created | Yes | |
| dry_run | Yes | |
| comment_ids | Yes | |
| payload_preview | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already indicating write, non-idempotent, and open-world behavior, the description adds valuable context: comments are authored by the token's user, 'text/html' is sent unsanitized, retries duplicate comments, and attachment references must name existing document attachments. This goes well beyond the structured 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 compact and front-loaded with the primary purpose. Every line adds operational value—batching, parent IDs, sanitization, idempotency, and attachment resolution—without redundancy or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (batch create, formatting options, attachments) and the presence of an output schema, the description covers all critical behavioral and prerequisite information. It leaves no major gaps for an agent to misuse the tool, from idempotency to authentication to attachment handling.
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 input schema covers all parameters with descriptions, providing a high baseline. The description enriches this by explaining parent_comment_id should come from list_document_comments and that 'text/html' text is unsanitized, which directly informs parameter usage. It does not fully explain dry_run, but schema coverage already handles that adequately.
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 begins with a specific verb+resource: 'Create one or more comments on a document in one request.' This clearly distinguishes it from siblings like create_work_item_comments and update_document_comment, and the batch aspect ('in one request') adds further specificity.
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 clear context on how to use the tool, such as setting parent_comment_id from list_document_comments and resolving attachments via list_document_attachments first. It does not explicitly state when not to use this tool versus alternatives, but the resource-specific title and first sentence make the usage domain evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_test_record_attachmentsA
Upload 1-10 local files as test record attachments in one request.
For document attachments use create_document_attachments, for work item attachments use create_work_item_attachments instead. Record coordinates (project_id, test_run_id, test_case_id, iteration) match get_test_record -- verify via list_test_records first. file_path is read from local disk by the server process -- use absolute paths to readable files. Total upload size per call is capped at 25 MiB: compress or use the Polarion portal for one oversized file, split oversized batches across calls. attachment_ids in the result are server-assigned ({test_case_id}_{file_name}) and differ from the input file_name. A file_name colliding with another item in the same call, or with an existing attachment on the record, rejects the whole batch -- check list_test_record_attachments first or pick a new file_name. NOT idempotent -- retrying a success is rejected as a duplicate, not silently merged.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview payload without calling Polarion. | |
| iteration | No | Record iteration number (0-based). | |
| project_id | Yes | Polarion project ID. | |
| attachments | Yes | Files to upload in one request. | |
| test_run_id | Yes | Test run ID (e.g. 'TR-2026-01'). | |
| test_case_id | Yes | Full test case work item ID 'project/WI-id' as returned by list_test_records. |
Output Schema
| Name | Required | Description |
|---|---|---|
| created | Yes | |
| dry_run | Yes | |
| attachment_ids | Yes | |
| payload_preview | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses non-obvious behaviors not fully covered by annotations: server reads file_path locally requiring absolute paths, 25 MiB cap per call, server-assigned attachment_ids differing from file_name, whole-batch rejection on collision, and explicit non-idempotency. This aligns with annotations (idempotentHint=false, readOnlyHint=false) with no contradictions.
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 detailed but every sentence serves a purpose: core action, alternatives, prerequisites, file_path caveat, size limits, output naming, collision behavior, and idempotency. It is front-loaded and structured logically, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex upload operation with 6 parameters, the description covers all essential aspects: purpose, alternatives, prerequisites, operational constraints, error conditions, and idempotency. An output schema exists, so return values are not required in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds critical semantics beyond the schema: file_path must be absolute and server-readable, file_name is not the id, iteration matches get_test_record, and collision behavior with existing attachments. This meaningfully enhances agent understanding.
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 ('Upload'), resource ('test record attachments'), and scope ('1-10 local files in one request'). It explicitly distinguishes from sibling tools by directing document attachments to create_document_attachments and work item attachments to create_work_item_attachments.
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 explicit when-to-use guidance: names alternatives and when to use them. Also instructs to verify record coordinates via list_test_records first and advises on handling size caps (split batches) and name collisions (check list_test_record_attachments).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_test_recordsA
Create 1-50 test records on one test run, recording which test cases were executed with what result.
Use list_test_records to read them back; create_test_runs creates the run itself. Atomic: one bad item rejects the whole batch. Posting the same test_case_id again starts a new iteration rather than replacing it -- use separate calls, not duplicates in one batch. comment is sent verbatim in comment_format, no Markdown conversion.
Returns record_ids as full 5-segment ids -- never shortened. result is validated against the project's testing enumerations; defect must reference an existing work item. An invalid test_case_id is rejected by Polarion -- resolve via list_work_items first.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Test records to create in one request (1-50). | |
| dry_run | No | Preview payload without writing; guards still query Polarion. | |
| project_id | Yes | Polarion project ID. | |
| test_run_id | Yes | Test run ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| created | Yes | |
| dry_run | Yes | |
| record_ids | No | |
| payload_preview | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations give minimal safety hints, but the description adds critical behavioral context: atomicity, duplicate iteration semantics, verbatim comment handling, full id returns, and validation rules that go far beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence contributes important information. The purpose is front-loaded, though the overall structure is a single paragraph that could be better organized into bullet points for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex (batch atomic creation, validations, duplicate semantics) and the description covers all key aspects, including return IDs and validation rules. It is complete even with an output schema available.
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?
Since schema description coverage is 100%, baseline is 3. The description adds meaningful semantics beyond the schema, such as validation of result, that defect must reference an existing work item, and that comment_format controls verbatim sending.
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 creates 1-50 test records on one test run, with a specific verb and resource. It also distinguishes from sibling tools by naming create_test_runs and list_test_records.
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 explicit guidance: use list_test_records for reading back, create_test_runs for creating the run, and resolve invalid test_case_id via list_work_items. It also explains batch behavior and duplicate handling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_test_runsA
Create 1-50 test runs in one project in one bulk request.
id is required per item — never auto-generated. type/status are validated against the project's testing enumerations and template_id against existing templates (list_test_runs(templates=True)). custom_fields keys are validated against a sample of existing runs; enum-typed custom values are not (test runs have no options API). Atomic: one bad item rejects the whole batch.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Test runs to create in one request (1-50). | |
| dry_run | No | Preview payload without writing; guards still query Polarion. | |
| project_id | Yes | Polarion project ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| created | Yes | |
| dry_run | Yes | |
| test_run_ids | No | |
| payload_preview | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses several important behaviors beyond the annotations: id must be provided per item, type/status are validated against project enumerations, template_id against existing templates, custom_fields keys are validated but enum-typed values are not, and the operation is atomic. This adds substantial value over the sparse 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 structured with a lead sentence followed by four bullet points covering key validation details. While a bit dense, each sentence provides useful information. It is appropriately sized for the complexity of the tool.
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 thoroughly covers validation behavior, atomicity, and references related tooling. It is complete given the tool's complexity and the existence of an output schema, which means return-value details are not necessary.
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 adds critical semantics not present in the schema: id is required per item and never auto-generated, type/status validation rules, template_id validation source, and custom_fields validation caveats. This compensates for the nested fields that lack schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Create 1-50 test runs in one project in one bulk request', specifying the verb, resource, and scope. It clearly distinguishes itself from sibling tools like create_test_records by naming 'test runs' and emphasizing the bulk, single-project nature.
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 clear context for when to use the tool: bulk creation of 1-50 test runs in one project. It also references list_test_runs(templates=True) as a prerequisite for template validation. However, it does not explicitly state when not to use it or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_work_item_attachmentsA
Upload 1-10 local files as work item attachments in one request.
For document attachments use create_document_attachments instead. file_path is read from local disk by the server process -- use absolute paths to readable files. Total upload size per call is capped at 25 MiB: compress or use the Polarion portal for one oversized file, split oversized batches across calls. attachment_ids in the result are server-assigned counter-prefixed ids (e.g. 3-diagram.png) -- not predictable from file_name -- and double as the workitemimg:{id} reference tokens for the work item description body. Duplicate file_name values are allowed, both within one call and against existing attachments: each upload creates a new attachment, never a conflict. Heading-type work items accept uploads, but the portal hides the Attachments section on heading items -- attachments there are reachable only through the API. NOT idempotent -- retrying a success silently creates a duplicate; after an ambiguous failure verify with list_work_item_attachments before retrying.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview payload without calling Polarion. | |
| project_id | Yes | Polarion project ID. | |
| attachments | Yes | Files to upload in one request. | |
| work_item_id | Yes | Work item ID within project_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| created | Yes | |
| dry_run | Yes | |
| attachment_ids | Yes | |
| payload_preview | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the annotations. It discloses that file_path is read from the server process, the 25 MiB cap, non-predictable server-assigned attachment_ids, duplicate file_name behavior, heading-type work item portal limitation, and the non-idempotent nature with a concrete consequence. This is rich, actionable context not present in the annotations, and no contradictions with annotations exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized for the tool's complexity. It is front-loaded with the core purpose, then logically moves to alternatives, constraints, edge cases, and idempotency. Every sentence carries unique information; there is no filler 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?
Given the tool has 4 parameters, annotations, an output schema, and 45 sibling tools, this description is exceptionally complete. It covers usage, constraints, behavioral quirks, failure handling, and result semantics, making it self-sufficient for an agent to select and invoke the tool 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?
Although schema coverage is 100%, the description adds significant meaning beyond the schema. It explains file_path semantics (absolute paths, server-side read), the significance of attachment_ids as reference tokens, duplicate file_name allowances, and the 1–10/25 MiB constraints, which are not fully captured in the property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Upload 1-10 local files as work item attachments in one request.' It clearly scopes count and context, and immediately distinguishes from the sibling tool create_document_attachments, leaving no ambiguity about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: 'For document attachments use create_document_attachments instead.' It also advises using the Polarion portal for oversized files, splitting oversized batches across calls, and verifying with list_work_item_attachments after ambiguous failures—covering when to use this tool, alternatives, and fallback actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_work_item_commentsA
Create one or more comments on a work item in one request.
Reply: set parent_comment_id to a short id from list_work_item_comments (None = top-level). Optional title sets the comment heading. 'text/html' text is sent unsanitized. Always authored by the token's user. NOT idempotent — a retry duplicates. workitemimg:{id} image refs in text/html comments must name an existing attachment — resolve via list_work_item_attachments first.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview payload without writing; guards still query Polarion. | |
| comments | Yes | Comments to create in one request. | |
| project_id | Yes | Polarion project ID. | |
| work_item_id | Yes | Work item ID, e.g. 'MCPT-001'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| created | Yes | |
| dry_run | Yes | |
| comment_ids | Yes | |
| payload_preview | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: text/html is unsanitized (security risk), not idempotent (retry duplicates), always authored by token's user, and image refs must match existing attachments. Annotations already indicate non-idempotent and non-readOnly, so the description reinforces and expands on these traits with no contradiction.
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 front-loaded: the first sentence states the core purpose. Subsequent sentences add critical behavioral and usage details in a structured manner without redundancy. 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?
Given the complexity of supporting multiple comments, replies, formatting, and image references, the description covers behavioral aspects, usage guidance, and parameter semantics thoroughly. The presence of a separate output schema (not shown but indicated) handles return value documentation, so the description is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds valuable context for parameters like parent_comment_id (source from list_work_item_comments), title (optional heading), and text_format ('text/html' unsanitized). It does not mention dry_run, but the schema covers it. The added meaning justifies a score of 4.
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 creates one or more comments on a work item in one request. It distinguishes from sibling tools like list_work_item_comments (reading) and update_work_item_comment (updating). The verb 'create' and resource 'work item comments' are specific and 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 provides explicit when-to-use guidance: setting parent_comment_id for replies, optional title, handling unsanitized HTML, and resolving image references via list_work_item_attachments. It warns about non-idempotence and that comments are always authored by the token's user. No when-not-to-use is needed because the tool's purpose is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_work_item_linksA
Create 1-50 outgoing links from one source work item, atomically.
Role and target existence are validated before writing. Per spec: target_project_id defaults to the source, revision pins (else HEAD), suspect flags re-review. A duplicate role+target rolls back the whole batch — re-query list_work_item_links before retrying. link_ids are the delete-path ids, input order.
Phantom success: a document-attached source already has an auto-created heading link; a NEW same-role link reports created but is NOT persisted — verify with list_work_item_links.
| Name | Required | Description | Default |
|---|---|---|---|
| links | Yes | Links to create under the source work item (1-50). | |
| dry_run | No | Preview payload without writing; guards still query Polarion. | |
| project_id | Yes | Source work item's project ID. | |
| work_item_id | Yes | Source work item ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| created | Yes | |
| dry_run | Yes | |
| link_ids | No | |
| payload_preview | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is exceptionally transparent about behavior beyond annotations: atomicity, role/target existence validation, defaulting behavior (target_project_id defaults to source, revision pins else HEAD), suspect flag meaning, entire batch rollback on duplicate, and the critical phantom success caveat where a new same-role link reports created but is not persisted on document-attached sources. This goes far beyond the simple write hints in 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 front-loaded with the purpose, then logically organized into validation/spec, rollback behavior, and phantom success warning. It is dense but each sentence provides critical operational detail. It could be slightly tighter, but the structure and direct information justify a high score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex batch creation tool, the description covers all essential behavioral aspects: atomicity, validation, defaults, rollback, output ids (delete-path ids), and a non-obvious phantom success scenario. An output schema exists to cover return values, and the description complements it thoroughly. No significant gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. However, the description adds meaningful semantic detail for parameters: target_project_id defaults to source, revision pinning vs HEAD, suspect flags re-review, and duplicate role+target causing batch rollback. These enrich understanding beyond the plain schema descriptions, though it doesn't fully detail every parameter's edge cases.
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 'Create 1-50 outgoing links from one source work item, atomically' – a specific verb, resource, and scope. It clearly distinguishes this from sibling link/attachment tools (list/delete/update_work_item_links) by focusing on creation and batch atomicity.
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: atomic batch creation, validation before writing, and rollback on duplicate role+target. It tells the agent to re-query list_work_item_links before retrying and to verify with list_work_item_links, but it does not explicitly contrast with alternatives like update_work_item_link or delete_work_item_links, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_work_itemsA
Create 1-50 work items in one project in a single bulk request.
Items are created free-floating — place into a document with move_work_item_to_document (this tool cannot). Atomic: one bad item rejects the whole batch.
description is Markdown (greenfield only); later edits are raw-HTML round-trip via get_work_item(include_description_html=True) and update_work_items — formats never mix. Markdown tables get native Polarion styling; a paragraph starting 'Table:' directly after a table becomes a numbered caption widget. Enum values and custom_fields keys are validated on write — resolve ids via list_work_item_enum_options first. Returns the new work item ids.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Work items to create in one request (1-50). | |
| dry_run | No | Preview payload without writing; guards still query Polarion. | |
| project_id | Yes | Polarion project ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| created | Yes | |
| dry_run | Yes | |
| work_item_ids | No | |
| payload_preview | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: atomicity (batch rejection), description format nuances (Markdown vs HTML, table styling, caption widget), validation behavior for enums and custom_fields, and the fact that returns new IDs. Annotations are limited (readOnlyHint false, destructiveHint false), so the description carries the full burden and delivers thoroughly, with no contradictions.
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 relatively long but every sentence adds value. It is well-structured with clear logical flow: first states the core action, then uses newlines to segment important caveats (free-floating, atomicity, description format, validation). Minor redundancy could be trimmed but overall efficient and front-loaded with key points.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (bulk creation with many optional fields, atomicity, format rules, validation needs), the description is remarkably complete. It covers creation procedure, post-creation step requirements, error implications, description format nuances, and points to sibling tools for enum resolution and document placement. The output schema exists to document return values, so that aspect is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds operational meaning for each parameter: for 'items', it explains sub-field usage (description as Markdown only, enum validation, custom_fields key requirements) and links to list_work_item_enum_options for ID resolution. For 'dry_run', it explains preview behavior. The project_id parameter is straightforward. The description compensates for any schema terseness by providing actionable context.
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 creates 1-50 work items in one project in a single request. It explicitly distinguishes from a sibling tool by stating 'place into a document with move_work_item_to_document (this tool cannot)', which differentiates its purpose from related creation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: for bulk creation, and notes that items are created free-floating, requiring another tool for document placement. It warns about atomicity (one bad item rejects the whole batch), explains description format rules (Markdown only at creation, HTML later), and advises resolving enum IDs before use. It implies not to use for updates or single-item creation (covered by siblings). No explicit 'when not to use' but strong contextual cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_work_item_linksADestructiveIdempotent
Delete 1-50 outgoing links from one source work item.
Outgoing only — delete a back link from its source item instead. Refs from list_work_item_links(direction="forward") or a prior create. Stale refs never fail: results split into deleted_link_ids / not_found_link_ids.
| Name | Required | Description | Default |
|---|---|---|---|
| links | Yes | Existing outgoing links to delete (1-50). | |
| dry_run | No | Preview payload without deleting; the pre-read still queries Polarion. | |
| project_id | Yes | Source work item's project ID. | |
| work_item_id | Yes | Source work item ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| deleted | Yes | |
| dry_run | Yes | |
| link_ids | No | |
| payload_preview | No | |
| deleted_link_ids | No | |
| not_found_link_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true. The description adds valuable behavioral details: stale refs never fail, results split into deleted/not_found, and mentions dry_run feature. 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 highly concise: two short paragraphs with no wasted words. The main action and limit are front-loaded, and essential usage notes follow immediately. 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?
Given the tool's destructive nature and 4 parameters, the description covers behavior for stale refs, dry run, and directionality. An output schema exists, so return values are not needed. A minor gap is the lack of explicit prerequisites or permissions, but overall it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaning beyond the schema by clarifying that the 'links' parameter should contain existing outgoing links (obtained from list_work_item_links) and that stale refs are handled gracefully. This enriches the agent's understanding.
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 (delete), resource (outgoing links from a source work item), and scope (1-50 links). It effectively distinguishes from sibling tools like list_work_item_links and update_work_item_link by specifying 'outgoing only'.
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 explicitly states when to use (for outgoing links) and when not (for back links, use the source item). It references list_work_item_links for obtaining link IDs and explains behavior with stale refs, providing clear context for correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_documentARead-only
Get a document's metadata: title/type/status/timestamps/editors/custom fields.
include_home_page_content_html=True fills content_html with raw homePageContent HTML — the required source for update_document(home_page_content_html=...). That body is inline prose only — headings and embedded work items render via read_document. Never feed back a blanked (flag=False) body.
| Name | Required | Description | Default |
|---|---|---|---|
| space_id | Yes | Space ID ('_default' = default space). | |
| project_id | Yes | Polarion project ID. | |
| document_name | Yes | Document name within space_id. | |
| include_home_page_content_html | No | Fill content_html with raw HTML for round-trip editing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | No | |
| title | Yes | |
| status | No | |
| created | No | |
| updated | No | |
| author_id | No | |
| author_name | No | |
| auto_suspect | No | |
| content_html | No | |
| custom_fields | No | |
| last_updated_by_id | No | |
| last_updated_by_name | No | |
| rendering_layout_types | No | |
| uses_outline_numbering | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true, but the description adds valuable behavioral detail: the nature of content_html (raw homePageContent HTML, inline prose only), the dependency on it for update_document, and the warning not to feed back a blanked body. These go beyond the annotation and help the agent avoid mistakes.
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 yet information-dense. It uses two short paragraphs: the first states the core purpose, the second details the optional flag and critical caveats. No filler words; every sentence contributes actionable guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (handling return structure), the description covers the essential aspects: the tool's purpose, the optional behavior, and cross-tool dependencies. It also warns about a subtle failure mode (blanked body). This is complete for a read-only metadata retrieval 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?
Since the schema already provides descriptions for all four parameters (100% coverage), the baseline is 3. The description adds substantial meaning for include_home_page_content_html, explaining its purpose for round-trip editing and its relationship to raw HTML, which exceeds the schema's one-line description. Other parameters are already well-schema-described.
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 explicitly states the tool retrieves document metadata and enumerates the fields (title, type, status, timestamps, editors, custom fields). This clearly distinguishes it from sibling tools that handle attachments or content rendering.
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 explicit usage guidance by naming read_document as the alternative for rendered content with headings and embedded work items, and by linking include_home_page_content_html to update_document for round-trip editing. This tells the agent when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_document_attachment_contentARead-only
Fetch a document attachment's content for viewing.
PNG, JPEG, GIF, and WebP return as a viewable image; SVG returns its source markup as text. Any other extension is rejected before any request. Use get_work_item_attachment_content for work item attachments. Use list_document_attachments to discover attachment ids, file names, and sizes.
| Name | Required | Description | Default |
|---|---|---|---|
| space_id | Yes | Space ID ('_default' = default space). | |
| project_id | Yes | Polarion project ID. | |
| attachment_id | Yes | Attachment id (bare filename token) from list_document_attachments. | |
| document_name | Yes | Document name within space_id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description reinforces a read-only fetch. It adds valuable behavioral context by specifying supported image extensions (PNG, JPEG, GIF, WebP) and their return format, and that SVG returns source markup as text while other extensions are rejected before any request. This goes beyond the annotation to clarify exact output behavior and limitations.
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 four sentences long, with the main purpose in the first sentence. Each subsequent sentence adds necessary information about media types, rejection, and sibling alternatives, with no redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity and the presence of schema descriptions and readOnlyHint annotation, the description fully explains the tool's return behavior (image vs SVG text), the pre-request rejection of unsupported extensions, and how to discover attachment ids. With no output schema, this behavioral explanation compensates adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions, including attachment_id as 'bare filename token' and space_id as '_default'. The description adds little beyond this coverage, only linking to list_document_attachments for discovery, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Fetch' with the resource 'document attachment's content for viewing,' clearly stating the operation. It distinguishes from sibling tools by explicitly directing work item attachments to get_work_item_attachment_content and pointing to list_document_attachments for discovery.
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 explicit when-to-use guidance: 'Use get_work_item_attachment_content for work item attachments' and 'Use list_document_attachments to discover attachment ids, file names, and sizes.' It also warns that unsupported extensions are rejected beforehand, implying not to attempt unsupported types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_html_recipesARead-only
Fetch the required HTML templates for tables, captions, links, and widgets written via update_work_items / update_document.
Any new , numbered caption, work-item / cross-reference / wiki-page link, or TOC / Table-of-Figures widget must be adapted from these templates — plain hand-written markup renders unstyled and breaks numbering. Also covers macro-id and metadata-scope caveats.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| recipes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description goes beyond that by disclosing that hand-written markup breaks numbering and that the tool covers macro-id and metadata-scope caveats. While it doesn't elaborate on the caveats, it adds useful behavioral context beyond the annotation.
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 three sentences long, front-loaded with the primary purpose. Each sentence adds value: the second explains why templates are mandatory, and the third mentions additional caveats. No filler 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 read-only, zero-parameter tool with an output schema, the description covers purpose, usage context, and important caveats. It is sufficient for an agent to know when to call it and what to expect, with output shape presumably in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics to address. Per the baseline for 0-parameter tools, a score of 4 is appropriate; the description doesn't need to explain 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 the tool fetches the required HTML templates for specific elements (tables, captions, links, widgets) used with update_work_items/update_document. The verb 'Fetch' and resource 'HTML templates' are specific, and the mention of these elements distinguishes it from siblings like get_sql_query_recipes.
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 explicitly states when to use the tool: any new table, numbered caption, link, or widget must be adapted from these templates. It also warns against the alternative (plain hand-written markup) by explaining it renders unstyled and breaks numbering, giving clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sql_query_recipesARead-only
Fetch copy-paste SQL recipes for the list_work_items SQL:(...) prefix.
Call before writing any SQL query (document scope, custom-field, traceability); adapt a recipe instead of hand-writing joins. Includes the table schema.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| recipes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, and the description confirms a read-only operation by stating 'Fetch copy-paste SQL recipes' and 'Includes the table schema.' Additional context about output content and usage is provided, which adds value beyond 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 exceptionally concise, consisting of two sentences that immediately convey the action ('Fetch copy-paste SQL recipes') and usage guidance. No extraneous information is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema, the description covers all necessary context: what it does, when to use it, and what it includes (recipes and table schema). The sibling tools are all distinct, so no confusion arises.
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 input schema has no parameters with 100% coverage, so no parameter descriptions are needed. The description adequately describes the tool's function without requiring parameter details, earning the baseline score of 4.
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 purpose: fetching SQL recipes for the list_work_items SQL prefix. It specifies the resource (SQL recipes) and includes context about table schema, distinguishing it from sibling tools that handle work items, documents, and comments.
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 explicitly advises using this tool before writing any SQL query (document scope, custom-field, traceability) and adapting a recipe instead of hand-writing joins. This provides clear when-to-use guidance, though alternatives are not explicitly named due to the unique nature of this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_test_recordARead-only
Get full detail of one test-case iteration inside a test run: execution comment and test-case revision.
Use list_test_records for run-wide summaries, get_test_run for run metadata. comment_html carries the record's raw HTML comment; plain-text comments return as-is. Verify coordinates via list_test_records if not found.
| Name | Required | Description | Default |
|---|---|---|---|
| iteration | No | Record iteration number (0-based). | |
| project_id | Yes | Polarion project ID. | |
| test_run_id | Yes | Test run ID (e.g. 'TR-2026-01'). | |
| test_case_id | Yes | Full test case work item ID 'project/WI-id' as returned by list_test_records. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| result | No | |
| duration | No | |
| executed | No | |
| defect_id | No | |
| iteration | No | |
| project_id | Yes | |
| test_run_id | Yes | |
| comment_html | No | |
| test_case_id | Yes | |
| executed_by_id | No | |
| executed_by_name | No | |
| test_case_revision | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, and the description adds valuable behavioral context: comment_html carries raw HTML comments, plain-text comments return as-is, and verification of coordinates via list_test_records. No contradiction with annotations, and the added detail goes beyond 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 compact, front-loaded with the core purpose, and every sentence earns its place: it states the function, directs to alternatives, and notes output behavior. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has read-only annotations, a fully described schema, and an output schema, so the description does not need to explain return values. It covers usage alternatives, output nuances, and verification steps, making it complete for an agent to select and 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 description coverage is 100%, so the input schema fully documents all parameters. The description adds a hint about test_case_id format ('as returned by list_test_records') but does not significantly extend the schema's parameter explanations, which is acceptable given the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get full detail') and names the exact resource ('one test-case iteration inside a test run'), clearly distinguishing it from run-wide summaries and run metadata tools. It also names sibling tools explicitly, making the purpose unmistakable.
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 explicit when-to-use guidance: use list_test_records for run-wide summaries, get_test_run for run metadata, and verify coordinates via list_test_records if not found. This provides clear alternatives and context for selecting this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_test_record_attachment_contentARead-only
Fetch a test record attachment's content for viewing.
PNG, JPEG, GIF, and WebP return as a viewable image; SVG returns its source markup as text. Any other extension is rejected before any request. Use get_document_attachment_content or get_work_item_attachment_content for the other domains. Use list_test_record_attachments to discover attachment ids, file names, and sizes.
| Name | Required | Description | Default |
|---|---|---|---|
| iteration | No | Record iteration number (0-based). | |
| project_id | Yes | Polarion project ID. | |
| test_run_id | Yes | Test run ID (e.g. 'TR-2026-01'). | |
| test_case_id | Yes | Full test case work item ID 'project/WI-id' as returned by list_test_records. | |
| attachment_id | Yes | Attachment id ({testCaseId}_{fileName} token) from list_test_record_attachments. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds meaningful behavioral details beyond that: PNG/JPEG/GIF/WebP return as viewable images, SVG returns source markup, and other extensions are rejected before any request. This gives the agent clear expectations for output format and failure modes.
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 four sentences long, front-loaded with the core purpose, and every sentence provides distinct value: functionality, output format, exclusions, and cross-tool alternatives. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema and only readOnlyHint annotation, the description covers purpose, return types, rejection behavior, domain alternatives, and discovery methods. For a read-only content-fetching tool, this is comprehensive and leaves no critical ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds practical parameter acquisition guidance by pointing to list_test_record_attachments to discover attachment ids, file names, and sizes. This goes slightly beyond the schema's static property descriptions and helps the agent populate the required fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Fetch a test record attachment's content for viewing.' It immediately scopes the tool to test-record attachments and differentiates from sibling tools by explicitly naming alternatives for document and work item attachments.
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 explicit usage guidance: 'Use get_document_attachment_content or get_work_item_attachment_content for the other domains' and 'Use list_test_record_attachments to discover attachment ids, file names, and sizes.' Also clarifies supported file types and rejection behavior, helping the agent decide when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_test_runARead-only
Get full details of one test run by ID.
Returns writable fields (title, status, group_id, custom_fields) plus read-only context: test-case selection, template provenance, author, and timestamps. include_home_page_content_html=True fills content_html with the raw HTML report body; it stays empty when use_report_from_template is true. Never feed back a blanked (flag=False) body.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Polarion project ID. | |
| test_run_id | Yes | Test run ID (e.g. 'TR-2026-01'). | |
| include_home_page_content_html | No | Fill content_html with the run's raw HTML report body. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| type | Yes | |
| query | No | |
| title | Yes | |
| status | Yes | |
| created | No | |
| updated | No | |
| group_id | No | |
| space_id | No | |
| author_id | No | |
| project_id | Yes | |
| author_name | No | |
| finished_on | No | |
| is_template | No | |
| template_id | No | |
| content_html | No | |
| custom_fields | No | |
| document_name | No | |
| select_test_cases_by | No | |
| use_report_from_template | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description explains the behavior of include_home_page_content_html and warns about feeding back a blanked body. This adds useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with purpose. It provides necessary details without fluff, though it could be slightly more structured. 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?
Given the presence of an output schema, the description covers key behavioral aspects and parameter nuances. It is complete for a read-only tool with good annotations and schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds extra meaning for include_home_page_content_html, specifying when it fills content_html and a warning, which provides value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get full details of one test run by ID', specifying the verb and resource. It also describes the returned fields, distinguishing it from list_test_runs which returns multiple runs.
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 by mentioning 'writable fields' and 'read-only context', but it does not explicitly state when to use this tool versus update_test_runs or list_test_runs. No clear when-not-to or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_work_itemARead-only
Get full details of one work item by ID.
include_description_html=True fills description_html with raw HTML — the required source for update_work_items description_html. Never feed back a blanked (flag=False) body.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Polarion project ID. | |
| work_item_id | Yes | Work item ID (e.g. 'MCPT-001'). | |
| include_description_html | No | Fill description_html with raw HTML for round-trip editing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| type | Yes | |
| title | Yes | |
| status | Yes | |
| created | No | |
| updated | No | |
| priority | No | |
| severity | No | |
| space_id | No | |
| author_id | No | |
| hyperlinks | No | |
| project_id | Yes | |
| resolution | No | |
| author_name | No | |
| assignee_ids | No | |
| custom_fields | No | |
| document_name | No | |
| assignee_names | No | |
| outline_number | No | |
| description_html | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Does not contradict annotations (readOnlyHint=true). Adds behavioral context about the include_description_html parameter and the caution regarding blanked bodies, which goes beyond the annotation.
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 main purpose. The second sentence, while technical, is relevant. No unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose and key parameter behavior. With an output schema, return values need not be described. However, lacking differentiation from read_work_item and no mention of error handling or permissions leaves some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters. The description adds extra meaning for include_description_html, noting it is the required source for update_work_items, enriching the schema baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool gets full details of one work item by ID. However, it does not differentiate from sibling 'read_work_item', which may have overlapping 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?
Explicitly mentions that include_description_html is required for update_work_items and warns against feeding back a blanked body. Provides partial usage guidance but does not contrast with siblings like read_work_item.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_work_item_attachment_contentARead-only
Fetch a work item attachment's content for viewing.
PNG, JPEG, GIF, and WebP return as a viewable image; SVG returns its source markup as text. Any other extension is rejected before any request. Use get_document_attachment_content for document attachments. Use list_work_item_attachments to discover attachment ids, file names, and sizes.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Polarion project ID. | |
| work_item_id | Yes | Work item ID within project_id. | |
| attachment_id | Yes | Attachment id (bare filename token) from list_work_item_attachments. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses behavioral traits beyond the readOnlyHint annotation: PNG/JPEG/GIF/WebP return as viewable images, SVG returns source markup as text, and other extensions are rejected. This gives the agent actionable expectations about return format and validation, which annotations do not cover.
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. The first sentence states the core purpose, and the following sentences provide essential format and alternate-tool guidance. Every sentence adds value 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?
Given there is no output schema, the description adequately explains return behaviors (image vs. text) and rejection rules. It fully covers the tool's functionality, including how to discover required IDs via a sibling tool, making it complete for agent use.
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?
While schema descriptions already cover all three parameters, the description adds valuable context: attachment_id is described as a 'bare filename token' from list_work_item_attachments. This clarifies the parameter's origin and format beyond the schema's basic description, enhancing semantic understanding.
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 action: 'Fetch a work item attachment's content for viewing.' It clearly identifies the resource (work item attachment) and distinguishes it from document attachments via explicit reference to get_document_attachment_content. This separates it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Use get_document_attachment_content for document attachments' and 'Use list_work_item_attachments to discover attachment ids, file names, and sizes.' Also specifies the rejection of non-supported extensions before any request, giving clear usage constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_document_attachmentsARead-only
List a document's attachments as a paginated page.
Document attachments only, not work item attachments. Returned id is the exact token a body references as attachment:{id}; Polarion never validates that reference, so a body may point at a missing file. Order is server-defined and not requestable. Use read_document for body context, list_documents for valid space/document ids.
| Name | Required | Description | Default |
|---|---|---|---|
| space_id | Yes | Space ID ('_default' = default space). | |
| page_size | No | ||
| project_id | Yes | Polarion project ID. | |
| page_number | No | ||
| document_name | Yes | Document name within space_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| has_more | No | |
| page_size | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint, the description discloses important behavior: the returned id is the exact attachment token used in bodies, Polarion never validates references (so missing files possible), and ordering is server-defined. These details are not inferable from annotations or 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?
Every sentence provides distinct value: scope, id behavior, ordering, and cross-tool guidance. Efficient and well-structured despite moderate length.
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 an output schema present, the description doesn't need to explain return values. It fully covers behavioral context, usage boundaries, and guidance for related tools, making it complete for a paginated-list 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?
Schema covers 60% of parameters (space_id, project_id, document_name have descriptions). The description adds no direct parameter semantics beyond implying pagination with 'paginated page.' page_size and page_number remain undocumented in the description but are self-explanatory from defaults.
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 'List a document's attachments as a paginated page' with a specific verb and resource. It distinguishes from siblings by explicitly noting 'Document attachments only, not work item attachments.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly scopes the tool (document attachments only) and guides users to alternative tools: 'Use read_document for body context, list_documents for valid space/document ids.' This provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_document_commentsARead-only
List a document's comments as a flat page.
Threads reconstruct via parent_comment_id (None = root) + child_comment_ids. text is verbatim, unsanitized — treat as untrusted when rendering.
| Name | Required | Description | Default |
|---|---|---|---|
| space_id | Yes | Space ID ('_default' = default space). | |
| page_size | No | ||
| project_id | Yes | Polarion project ID. | |
| page_number | No | ||
| document_name | Yes | Document name within space_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| has_more | No | |
| page_size | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, consistent with listing. Description adds valuable detail: comments are returned as a flat page, threads via parent/child IDs, and text is unsanitized (security warning). Exceeds annotation info.
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?
Extremely concise: two sentences, no redundant words. Front-loaded with purpose, then threading and security warning. Every sentence adds value.
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 list tool with output schema present, description covers purpose, threading, and security. Sufficient for correct invocation and understanding.
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 60% (3/5 params described). Description does not enhance parameter understanding beyond schema; it mentions parent_comment_id but this is output behavior, not parameter detail. No compensation for missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List a document's comments as a flat page.' with specific verb and resource. Explains threading via parent_comment_id and child_comment_ids, distinguishing it from sibling tools like list_work_item_comments.
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 explicit guidance on when to use this tool vs. alternatives. The sibling list includes list_work_item_comments, but description does not differentiate or provide use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_document_enum_optionsARead-only
List valid enum option ids for a document field of a given type.
Call this before create_document / update_document — invalid enum ids are rejected on write. An unknown document_type silently falls back to '~', so verify the type id first.
| Name | Required | Description | Default |
|---|---|---|---|
| field_id | Yes | e.g. 'status', 'type', or a custom field id. | |
| page_size | No | ||
| project_id | Yes | Polarion project ID. | |
| page_number | No | ||
| document_type | Yes | e.g. 'systemReqSpecification'; '~' = type-agnostic. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| has_more | No | |
| page_size | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the fallback behavior for unknown document_type, which is beyond the readOnlyHint annotation. No contradictions 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?
Three clear, front-loaded sentences. No fluff, every sentence adds value.
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 listing tool with an output schema, the description covers purpose, usage guidelines, and a behavioral nuance. It is complete given the tool's complexity.
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 provides descriptions for most parameters (field_id, project_id, document_type) covering 60% of parameters. The description adds critical context about document_type fallback and pre-write usage. Pagination params are standard, so the description adds value without over-explaining.
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 ('list') and clarifies the scope ('valid enum option ids for a document field of a given type'). It distinguishes from siblings like list_work_item_enum_options by specifying 'document 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?
Explicitly states when to call this tool ('before create_document / update_document') and warns about invalid enum IDs being rejected. Also provides a caveat about unknown document_type falling back to '~'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_documentsARead-only
List a project's documents.
Returns space_id + document_name — the inputs to every other document tool — plus type, status, updated, and creator/editor display names. Use get_document for author/editor ids. Discovery scan cached 60s.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| project_id | Yes | Polarion project ID. | |
| page_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| has_more | No | |
| page_size | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds caching behavior (60s) beyond readOnlyHint annotation. Also lists returned fields, providing transparency on output. 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?
Two concise sentences with front-loaded purpose. No redundancy; every sentence adds value.
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 output schema exists to document return values, description completes the picture with caching and tool differentiation. Missing parameter details slightly reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (project_id described). Description implies project_id needed but does not explain page_size or page_number. With low coverage, description should compensate, but it falls short.
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?
Clear verb-resource pair: 'List a project's documents.' Specifies returned fields (space_id, document_name, etc.) and explicitly distinguishes sibling tool get_document by stating when to use it for author/editor ids.
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 guidance to use get_document for more detail, implying this tool is for summary listing. Also mentions 60-second cache, but lacks explicit when-not-to-use or alternatives beyond get_document.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsARead-only
List accessible Polarion projects — the source of project ids.
Lucene query allows trailing wildcards (name:ILCU*); leading ones are rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional Lucene filter (e.g. 'name:ILCU*'); trailing wildcards only. | |
| page_size | No | ||
| page_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| has_more | No | |
| page_size | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description's 'List' action is consistent. It adds valuable non-obvious behavior about Lucene query wildcard rules (trailing allowed, leading rejected) and clarifies that only accessible projects are returned. 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?
Two concise sentences: the first front-loads the purpose, and the second adds a key constraint about wildcard usage. No filler or redundant 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?
The description covers the core purpose, scope ('accessible'), and a critical query behavior. With an output schema present, return values need not be described. The only minor omission is pagination semantics, but the schema provides defaults and limits, making the description sufficient for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, with only 'query' described. The tool description adds useful detail about the query format (e.g., 'name:ILCU*', trailing wildcards only), partially compensating. However, page_size and page_number are not explained in the description, though their names and schema constraints are fairly self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('accessible Polarion projects'), and adds context that it is the source of project IDs. This clearly distinguishes it from sibling tools that handle attachments, comments, documents, and work items.
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 'the source of project ids' gives clear context that this tool should be used when project IDs are needed. There are no sibling tools that list projects, so no explicit exclusion or alternative is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_test_record_attachmentsARead-only
List a test record's attachments as a paginated page.
Test record attachments only -- use list_work_item_attachments for work item files, list_document_attachments for document files. test_case_id is the full 'project/WI-id' form from list_test_records, not the short work item ID. Order is server-defined and not requestable. An empty result means the record has no attachments; verify the run/test-case/iteration coordinates via list_test_records if unsure.
| Name | Required | Description | Default |
|---|---|---|---|
| iteration | No | Record iteration number (0-based). | |
| page_size | No | ||
| project_id | Yes | Polarion project ID. | |
| page_number | No | ||
| test_run_id | Yes | Test run ID (e.g. 'TR-2026-01'). | |
| test_case_id | Yes | Full test case work item ID 'project/WI-id' as returned by list_test_records. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| has_more | No | |
| page_size | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds beyond readOnlyHint annotation: paginated, server-defined order, empty result meaning, and verification advice. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: purpose, sibling differentiation, behavior; front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a listing tool with output schema: explains pagination, ordering, empty results, and offers troubleshooting hint.
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 67%, description adds critical context for test_case_id format and pagination, but page_size/page_number not detailed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'List a test record's attachments' with specific verb and resource, and distinguishes from siblings list_work_item_attachments and list_document_attachments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use (test record attachments) and when to use alternatives, and clarifies the format of test_case_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_test_recordsARead-only
List execution records of one test run — one row per test case iteration. For run metadata use get_test_run.
Filter by result (e.g. 'failed') or omit for all; not-yet-executed records have empty result. Lucene query is NOT supported here. Returns summaries — id is the exact value update_test_records takes as record_id; defect_id links the failure work item.
| Name | Required | Description | Default |
|---|---|---|---|
| result | No | Filter by result enum ID (e.g. 'passed', 'failed', 'blocked'). | |
| page_size | No | ||
| project_id | Yes | Polarion project ID. | |
| page_number | No | ||
| test_run_id | Yes | Test run ID (e.g. 'TR-2026-01'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| has_more | No | |
| page_size | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true. Description adds that return is summaries, id matches update_test_records record_id, and defect_id links failure work item. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five concise sentences, front-loaded with purpose, then guidelines, filter info, and output semantics. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists and 5 parameters, description covers main use case, result filtering, and key output fields. Pagination is implicit via schema defaults, but sufficient.
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 60%. Description adds meaning to result parameter (filter by enum ID, empty for not executed) and explains output fields. Other parameters well-covered by schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists execution records of one test run, one row per test case iteration, distinguishing it from get_test_run (metadata) and update_test_records (which uses the record_id).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly directs to use get_test_run for run metadata, states Lucene query is not supported, and explains result filter behavior with empty result for not-yet-executed records.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_test_runsARead-only
List / search test runs in a project.
Returns run instances by default; set templates=True for the reusable template blueprints. Filter by person with author.name (exact, quoted) — author.id does not match on test runs; discover the full name from an unfiltered page first.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional Lucene filter (e.g. 'status:open', 'groupId:Release-2.5', 'author.name:"Jane Doe"', 'HAS_VALUE:<field>' to match runs with that field populated). | |
| page_size | No | ||
| templates | No | List template blueprints instead of actual run instances. | |
| project_id | Yes | Polarion project ID. | |
| page_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| has_more | No | |
| page_size | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds useful behavioral context such as default return type and the fact that author.id does not match on test runs. No contradictions present.
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 very concise with two sentences and a clause. It front-loads the primary purpose and provides essential details without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description does not need to detail return values. It covers default behavior, template mode, and filtering caveats. Pagination parameters are in the schema, and the description adds relevant context for effective use.
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 60% of parameters with descriptions. The description clarifies the templates parameter and provides a specific usage hint for the query parameter regarding author.name formatting, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'List / search test runs in a project', providing a specific verb and resource. It is clearly distinct from sibling tools like list_work_items or get_test_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the templates parameter ('Returns run instances by default; set templates=True for the reusable template blueprints') and warns about filtering nuances with author.name. It does not explicitly compare to alternatives like get_test_run, but the context makes the tool's purpose clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_work_item_attachmentsARead-only
List a work item's attachments as a paginated page.
Work item attachments only -- use list_document_attachments for documents. Returned id is the exact token a body references as workitemimg:{id}; Polarion never validates that reference, so a body may point at a missing file. Order is server-defined and not requestable. Use list_work_items to discover valid ids.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| project_id | Yes | Polarion project ID. | |
| page_number | No | ||
| work_item_id | Yes | Work item ID within project_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| has_more | No | |
| page_size | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description reveals that the returned id is a token used in body references, that Polarion does not validate references, that order is server-defined, and that results are paginated. This provides significant behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with four sentences, each serving a purpose: stating the action, differentiating scope, explaining behavioral details, and providing a prerequisite. No redundant or unnecessary 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?
Given the presence of an output schema and the readOnlyHint annotation, the description covers all essential aspects: purpose, scope, pagination behavior, ID semantics, and prerequisite. It is complete for an agent to correctly select and invoke 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?
The schema covers 50% of parameters (project_id and work_item_id have descriptions). The description implies pagination with page_size and page_number but does not detail their semantics or constraints, though the schema provides those via defaults and min/max. The description adds moderate value over the schema's missing descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists a work item's attachments as a paginated page, differentiating it from document attachments by explicitly directing users to list_document_attachments for documents. It also mentions using list_work_items to discover valid IDs, providing prerequisite context.
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 explicitly states when to use this tool (work item attachments) and when not to (documents, directing to list_document_attachments). It also provides a prerequisite (use list_work_items to discover valid IDs), giving clear guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_work_item_commentsARead-only
List a work item's comments as a flat page.
Threads reconstruct via parent_comment_id (None = root) + child_comment_ids. text is verbatim, unsanitized — treat as untrusted when rendering.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| project_id | Yes | Polarion project ID. | |
| page_number | No | ||
| work_item_id | Yes | Work item ID, e.g. 'MCPT-001'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| has_more | No | |
| page_size | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safe read is known. Description adds valuable context: comments are unsanitized and should be treated as untrusted when rendering, plus explains thread reconstruction structure. This goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently cover action, thread reconstruction, and a security warning. No wasted words; front-loaded with the core 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 output schema present and annotations as readOnlyHint, the description explains thread reconstruction and security, but does not elaborate on pagination behavior beyond 'flat page'. Minor gap but largely complete for a read 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 50% (only project_id and work_item_id have descriptions). The description adds no parameter-specific details, leaving page_size and page_number behavior implicit. It does not compensate for the moderate 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?
Description clearly states it lists a work item's comments as a flat page, with specific detail about thread reconstruction via parent_comment_id and child_comment_ids. This distinguishes it from sibling tools like list_document_comments (documents) and create_work_item_comments (creation).
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 it's for reading comments but provides no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives like create_work_item_comments or update_work_item_comment, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_work_item_enum_optionsARead-only
List valid enum option ids for a work item field of a given type.
Call this before create_work_items / update_work_items — invalid enum ids are rejected on write. An unknown work_item_type silently falls back to '~', so verify the type id first.
| Name | Required | Description | Default |
|---|---|---|---|
| field_id | Yes | e.g. 'status', 'type', 'severity', 'priority', or a custom field id. | |
| page_size | No | ||
| project_id | Yes | Polarion project ID. | |
| page_number | No | ||
| work_item_type | Yes | e.g. 'task', 'requirement'; '~' = type-agnostic. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| has_more | No | |
| page_size | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds that invalid enum ids cause rejection on write and that an unknown work_item_type silently falls back to '~'. These are useful behavioral details beyond the annotation but not extensive.
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 concise sentences, no fluff. First sentence states main purpose, second adds usage guidance. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (not shown), the description adequately covers the main use case, prerequisites, and a critical fallback behavior. Could mention pagination or the output format, but overall sufficient for the tool's simplicity.
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 60% and the description does not elaborate on individual parameters beyond what the schema already says. The description implies the 'type' parameter but adds no new semantic detail for field_id, project_id, page_size, or page_number.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'List' and the resource 'valid enum option ids for a work item field of a given type'. Differentiates from sibling list_document_enum_options by specificity to work items. Fully unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call before create/update work items because invalid enum ids are rejected. Also warns about the fallback of unknown work_item_type to '~' and recommends verifying the type id first. Provides both context and caveat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_work_item_linksARead-only
List a work item's links, one direction per call.
Forward carries role (parent, verifies, …) and suspect; back is a Lucene fallback that drops role (always None) — recover it via forward on the source.
| Name | Required | Description | Default |
|---|---|---|---|
| direction | No | forward | |
| page_size | No | ||
| project_id | Yes | Polarion project ID. | |
| page_number | No | ||
| work_item_id | Yes | Work item ID (e.g. 'MCPT-001'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| has_more | No | |
| page_size | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, which the description aligns with by describing a read operation. The description adds behavioral context: direction impacts returned data (role preservation). No contradictions. Could elaborate on pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, highly concise and front-loaded. No redundant phrasing. Every sentence adds value.
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 read-only annotations, output schema presence, and the tool's listing nature, the description covers the key nuance (direction behavior). Pagination and other parameters are not addressed, but output schema likely covers return structure. Slightly incomplete.
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 40%, only 2 of 5 parameters are described in schema. The description adds no parameter-level details (e.g., syntax, constraints). The direction enum is implied but not explained further. Additional parameter context would improve score.
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 a work item's links, with a specific verb ('List') and resource ('work item's links'). It also notes directionality, distinguishing it from potential siblings like delete or update link tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use forward vs back: forward carries role and suspect; back is a Lucene fallback that drops role. It provides a recovery suggestion ('recover it via forward on the source'). However, it lacks explicit alternatives or when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_work_itemsARead-only
List / search work items in a project.
Leading Lucene wildcards are rejected; module and body text are NOT Lucene-indexed — scope by document via SQL:(...) or read_document_parts, never a Lucene module term. For SQL:(...), call get_sql_query_recipes first and adapt a recipe — never hand-write SQL. For one known id, use get_work_item instead of scanning.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional Lucene filter (e.g. 'type:requirement', 'title:SRS*') OR a 'SQL:(...)' prefix for native SQL. | |
| page_size | No | ||
| project_id | Yes | Polarion project ID. | |
| page_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| has_more | No | |
| page_size | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that leading wildcards are rejected, module and body text are not Lucene-indexed, and advises using SQL via get_sql_query_recipes. Annotations already state readOnlyHint=true, consistent.
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 pack essential information, but second sentence is dense with multiple pieces of guidance. Still efficient and 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?
Given output schema exists, description covers behavior, limitations, and alternatives comprehensively. No gaps apparent.
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?
Adds context beyond schema for query parameter (e.g., module/body text not indexed) but schema already describes query types. Other parameters not elaborated, but schema coverage is 50%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool lists/searches work items in a project, distinguishes from get_work_item for single item and mentions read_document_parts as alternative for scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when not to use (e.g., for one known id) and provides guidance on query types (avoid leading wildcards, use get_sql_query_recipes before hand-writing SQL).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_work_item_from_documentADestructive
Detach a work item from its document — the ONLY detach path.
NOT idempotent: an already free-floating item fails — confirm attachment first (get_work_item: non-empty space_id). The item is preserved and re-attachable via move_work_item_to_document. Headings are detachable too.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview payload without calling Polarion. | |
| project_id | Yes | Polarion project ID. | |
| work_item_id | Yes | Work item ID (e.g. 'MCPT-042'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| moved | Yes | |
| dry_run | Yes | |
| payload_preview | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description explains the failure mode for already detached items, confirms item preservation and re-attachability, and notes that headings are detachable. This adds valuable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then key behavioral details, no filler. Every sentence is essential.
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 a clear purpose, usage conditions, behavioral insights, and an output schema complementing return values, the description fully covers what an agent needs to use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not add extra meaning to parameters beyond what the schema already provides. Dry_run is mentioned but not elaborated.
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 detaches a work item from its document and declares itself as 'the ONLY detach path,' distinguishing it from sibling tools that handle comments, attachments, or other 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?
Explicitly warns of non-idempotence, advises confirming attachment via get_work_item, and mentions the re-attach alternative move_work_item_to_document, providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_work_item_to_documentADestructive
Move an existing work item into a document at a given position.
THE attach path: atomically sets module and inserts a part. Headings are rejected — add headings via update_document . An item already in a document is moved, not copied.
At most one of previous_part_id (AFTER) / next_part_id (BEFORE); omit both to append. Part ids from read_document_parts.
Auto-creates one link to the enclosing heading; a later same-role create_work_item_links reports created but is NOT persisted.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview payload without calling Polarion. | |
| project_id | Yes | Polarion project ID. | |
| next_part_id | No | Insert BEFORE this part ID; exclusive with previous_part_id. | |
| work_item_id | Yes | Work item ID (e.g. 'MCPT-042'). | |
| target_space_id | Yes | Target space ID ('_default' = default space). | |
| previous_part_id | No | Insert AFTER this part ID; exclusive with next_part_id. | |
| target_document_name | Yes | Target document name within target_space_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| moved | Yes | |
| dry_run | Yes | |
| payload_preview | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint, openWorldHint), the description discloses critical side effects: the attach path 'atomically sets module and inserts a part,' it 'auto-creates one link to the enclosing heading,' and warns that 'a later same-role create_work_item_links reports created but is NOT persisted.' This goes well beyond the structured annotations and reveals permanent and non-obvious behaviors.
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 dense but every sentence earns its place. It front-loads the purpose, then groups related constraints (positioning, heading rejection, move-vs-copy, link side effect) into concise paragraphs. No filler words; the only minor flaw is the unusual capitalization 'THE attach path,' but it does not hinder comprehension.
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 7 parameters and an output schema, the description covers all critical aspects: positioning rules, heading restrictions, move semantics, link auto-creation, persistence caveat, and data source for part IDs. The output schema handles return values, and annotations cover safety; the description fills the remaining behavioral and contextual gaps comprehensively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema covers 100% of parameters, the description adds essential meaning not fully captured in the schema: it explains the exclusivity of previous_part_id/next_part_id in plain language ('At most one'), the behavior when omitting both ('append'), and where to obtain valid part IDs ('read_document_parts'). This makes the parameter semantics much clearer.
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 'Move an existing work item into a document at a given position,' which clearly states the action (move), the object (work item), and the destination (document). It explicitly distinguishes from copying ('moved, not copied') and from the sibling 'move_work_item_from_document' by naming the direction. This is a specific verb+resource+target definition.
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 explicit when-to-use and alternatives: 'Headings are rejected — add headings via update_document <hN>' tells users to use another tool for headings. It also states 'Part ids from read_document_parts' as a dependency, and explains the parameter usage: 'At most one of previous_part_id (AFTER) / next_part_id (BEFORE); omit both to append.' These are clear directives on when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_documentARead-only
Render a document end-to-end as flowing Markdown — THE way to read a body.
Interleaves headings, work-item descriptions, and prose. Synthesis output: NEVER feed it to update_document — round-trip via get_document(include_home_page_content_html=True). For metadata-only extraction use list_work_items with SQL.
| Name | Required | Description | Default |
|---|---|---|---|
| space_id | Yes | Space ID ('_default' = default space). | |
| page_size | No | ||
| project_id | Yes | Polarion project ID. | |
| page_number | No | ||
| document_name | Yes | Document name within space_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| content | Yes | |
| has_more | No | |
| page_size | Yes | |
| part_count | Yes | |
| total_parts | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds behavioral context beyond the readOnlyHint annotation, such as output format and interleaving behavior. No contradictions 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?
Concise with three sentences, front-loading the main purpose. The middle sentence could be seen as extraneous but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main purpose and important warnings, but lacks explanation of pagination parameters and does not mention output structure despite having an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description does not add meaning to parameters beyond the schema. Schema covers 60% but page_size and page_number lack descriptions; the tool description does not clarify them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool renders a document as flowing Markdown for reading. Distinguishes from siblings like get_document and list_work_items by specifying different use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says it is the way to read a body, warns against using output for update_document, and directs to get_document for round-trip and list_work_items for metadata-only extraction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_document_partsARead-only
List a document's structural parts in order.
Use for structure: part ids (move_work_item_to_document anchors), heading levels, per-part Markdown. For plain reading use read_document; for a document's work items use list_work_items.
| Name | Required | Description | Default |
|---|---|---|---|
| space_id | Yes | Space ID ('_default' = default space). | |
| page_size | No | ||
| project_id | Yes | Polarion project ID. | |
| page_number | No | ||
| document_name | Yes | Document name within space_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| items | Yes | |
| has_more | No | |
| page_size | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description is consistent, describing a read-only operation. It adds context about the type of output (structural parts, ids, headings, Markdown), but does not elaborate on other behaviors like pagination or potential exceptions. With annotations covering the safety profile, the description provides adequate but not extensive behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the primary purpose, followed by clear usage guidance. Every sentence serves a purpose, and there is no redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description adequately explains the type of data returned (structural parts with ids, headings, Markdown). It also provides context on when to use the tool. While it does not detail pagination or the exact output structure, it is reasonably complete for a listing tool with an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60%, with descriptions for space_id, project_id, and document_name, but page_size and page_number lack descriptions. The tool description does not add any parameter-level information to compensate for the missing schema descriptions, leaving ambiguity for the pagination 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 the tool lists a document's structural parts in order, specifies usage for structure (part ids, heading levels, per-part Markdown), and explicitly distinguishes from sibling tools read_document and list_work_items.
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 explicit guidance: 'Use for structure...' and 'For plain reading use read_document; for a document's work items use list_work_items.' This clarifies when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_work_itemARead-only
Read one work item with its body rendered as Markdown.
Synthesis output — collapses Polarion anchors; NEVER feed it to update_work_items. Edits round-trip via get_work_item(include_description_html=True) instead.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Polarion project ID. | |
| work_item_id | Yes | Work item ID (e.g. 'MCPT-001'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| type | Yes | |
| title | Yes | |
| status | Yes | |
| created | No | |
| updated | No | |
| priority | No | |
| severity | No | |
| space_id | No | |
| author_id | No | |
| hyperlinks | No | |
| project_id | Yes | |
| resolution | No | |
| author_name | No | |
| description | No | |
| assignee_ids | No | |
| custom_fields | No | |
| document_name | No | |
| assignee_names | No | |
| outline_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the readOnlyHint annotation by disclosing that the output collapses Polarion anchors and that the body is rendered as Markdown. 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?
Two sentences that are front-loaded with the core purpose, followed by critical usage warnings. Every sentence serves a purpose with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and the readOnlyHint annotation, the description adequately covers the tool's behavior and return format. The warning about synthesis output completes the behavioral 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 100% with clear parameter descriptions. The tool description does not add further parameter details, but the schema already suffices. Baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read one work item with its body rendered as Markdown.' It identifies the specific verb ('read') and resource ('work item'), and distinguishes from siblings like 'get_work_item' by noting the Markdown rendering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly warns against feeding the output to update_work_items and provides a clear alternative for edits: 'get_work_item(include_description_html=True)'. This gives both when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_documentADestructiveIdempotent
Update a document's metadata or body.
PATCHes only supplied attributes — omitted fields stay unchanged; read BEFORE writing. home_page_content_html is raw Polarion HTML, sent verbatim — source from get_document(include_home_page_content_html=True); an empty string is rejected, pass '' for near-empty.
Body rules:
Inline .. auto-create heading work items — THE way to add a heading. For body text or work items use create_work_items + move_work_item_to_document, NOT this tool.
A polarion_wiki macro name=module-workitem leaves module unset — attach via move_work_item_to_document.
Tables, captions, image embeds, links, TOC/TOF widgets, page breaks must come from get_html_recipes templates, never hand-written. attachment:{id} refs must name a real attachment — confirm via list_document_attachments first.
rendering_layout_types REPLACES the type set get_document returns — pass every type to keep; existing layouts survive.
workflow_action must pair with at least one attribute. Unknown status/type ids and custom_fields keys outside the type schema are rejected — resolve ids via list_document_enum_options, or list_work_item_enum_options for rendering_layout_types.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | New document type (e.g. 'req_specification'). | |
| title | No | New document title. | |
| status | No | New status; prefer workflow_action for real transitions. | |
| dry_run | No | Preview payload without writing; guards still query Polarion. | |
| space_id | Yes | Space ID ('_default' = default space). | |
| project_id | Yes | Polarion project ID. | |
| auto_suspect | No | Flag linked work items suspect on change. | |
| custom_fields | No | Partial; rich-text values as {'type':'text/html','value':...}. | |
| document_name | Yes | Document name within space_id. | |
| workflow_action | No | Workflow action ID. | |
| home_page_content_html | No | New body as raw HTML from get_document(include_home_page_content_html=True); '' rejected; anchorless blocks get id= auto-stamped. New tables, captions, images, or other Polarion constructs: call get_html_recipes first and adapt a template. | |
| rendering_layout_types | No | Work item type IDs that render their fields in this document; REPLACES the current set, so pass every type to keep. | |
| uses_outline_numbering | No | Enable auto outline numbers (1, 1.1, ...). |
Output Schema
| Name | Required | Description |
|---|---|---|
| dry_run | Yes | |
| updated | Yes | |
| payload_preview | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations by explaining PATCH semantics ('omitted fields stay unchanged'), raw HTML handling ('empty string rejected, pass '<p></p>''), and rendering_layout_types replacement behavior. Also warns about validation of status/type ids and custom_fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but efficiently structured: purpose first, then PATCH semantics, HTML guidance, body rules, and layout/workflow constraints. Every sentence carries essential information for safe usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (13 parameters) and rich schema, the description is comprehensive: it covers edge cases (empty string rejection), alternative tools, and validation rules. It fully prepares an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds meaningful cross-parameter constraints (e.g., workflow_action must pair with an attribute) and source guidance (home_page_content_html from get_document). This pushes it above baseline, though some parameters rely solely on schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'Update a document's metadata or body' clearly states the action and resource. It distinguishes from siblings by explicitly directing users to other tools for body text and work items: 'For body text or work items use create_work_items + move_work_item_to_document, NOT this tool.'
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 explicit 'read BEFORE writing' and detailed when-to-use guidance. It names alternatives for body text and attachments, and specifies constraints like 'workflow_action must pair with at least one attribute' and 'resolve ids via list_document_enum_options'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_document_commentAIdempotent
Resolve or re-open one document comment thread.
Root comments only — replies cannot be updated; pick a root id (parent_comment_id=None) from list_document_comments. Resolving the root resolves the whole thread. Idempotent.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview payload without calling Polarion. | |
| resolved | Yes | New resolved state. | |
| space_id | Yes | Space ID ('_default' = default space). | |
| comment_id | Yes | Short comment ID (e.g. 'c42' from list_document_comments). | |
| project_id | Yes | Polarion project ID. | |
| document_name | Yes | Document name within space_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| dry_run | Yes | |
| updated | Yes | |
| resolved | Yes | |
| comment_id | Yes | |
| payload_preview | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes key behaviors beyond annotations: 'Resolving the root resolves the whole thread' and 'Idempotent.' Annotations already indicate idempotentHint=true and destructiveHint=false, and the description adds context about thread-level effect. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with front-loaded purpose. Every sentence adds essential information: action, scope constraint, idempotent note. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, full schema coverage, and output schema present, the description covers all critical behavioral points: purpose, usage guidelines, root-only constraint, thread resolution effect, and idempotency. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, base is 3. The description adds value by explaining that comment_id must be a root comment ID from list_document_comments, which is not in the schema. This clarifies parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Resolve or re-open one document comment thread' with a specific verb and resource. It distinguishes from siblings by specifying root comments only and differentiating from work item comments, as siblings include update_work_item_comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance: 'Root comments only — replies cannot be updated; pick a root id (parent_comment_id=None) from list_document_comments.' This tells when to use (root comments) and where to get the id, and implies when not to use (replies).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_test_recordsADestructiveIdempotent
Set result, comment, and/or defect link on 1-50 test records of one test run in a single bulk PATCH.
Run-level fields (title, status, group_id) — use update_test_runs instead. Atomic: one bad item rejects the whole batch; no record changes.
record_id must be copied verbatim from list_test_records — never decomposed. comment is sent verbatim; Polarion stores it as text/html regardless of the comment_format sent, so a later read always shows text/html.
Returns the echoed record_ids only — re-read via list_test_records. result must already be a value the run uses (discover via list_test_records) or the write is rejected; defect_id must reference an existing work item or the write is rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Per-record changes (1-50); unset fields stay unchanged. | |
| dry_run | No | Preview payload without writing; guards still query Polarion. | |
| project_id | Yes | Polarion project ID. | |
| test_run_id | Yes | Test run ID (e.g. 'TR-2026-01'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| dry_run | Yes | |
| updated | Yes | |
| record_ids | No | |
| payload_preview | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent hints. The description adds atomicity (one bad item rejects whole batch), validation requirements, comment_format being stored as text/html, and dry_run behavior. No contradictions.
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?
Concise, front-loaded paragraph with clear sentences. Every sentence adds value: purpose, guidelines, constraints, return info.
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 4 parameters (including array with subfields), annotations, and output schema, the description thoroughly covers operation, batch size, atomicity, parameter constraints, return value, storage behavior, and validation.
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 100% and good schema descriptions. Description adds extra context: record_id must be copied verbatim, comment sent verbatim, result must be run-valid, defect_id must exist, comment_format ignored.
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 and resource: 'Set result, comment, and/or defect link on 1-50 test records of one test run in a single bulk PATCH.' It distinguishes from the sibling 'update_test_runs' for run-level fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use (batch test record updates) and when not (run-level fields, use update_test_runs). Provides constraints: record_id verbatim, result must be valid, defect_id must exist, atomicity, and advice to re-read via list_test_records.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_test_runsADestructiveIdempotent
Update fields on 1-50 existing test runs in one bulk PATCH; unset fields stay unchanged. Atomic: one bad item rejects the whole batch.
Writable: title, status, group_id, custom_fields. status is validated against the project's testing enumerations. custom_fields is partial; keys are validated against a sample of existing runs, values are not (test runs have no options API). finishedOn is server-managed — not settable. Returns ids only — re-read via list_test_runs.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Per-run changes (1-50); unset fields stay unchanged. | |
| dry_run | No | Preview payload without writing; guards still query Polarion. | |
| project_id | Yes | Polarion project ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| dry_run | Yes | |
| updated | Yes | |
| test_run_ids | No | |
| payload_preview | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructive and read/write behavior; the description adds atomicity, validation details, and server-managed fields. No contradiction with annotations. Provides useful behavioral context beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, no fluff. Front-loaded with the core action and scope. Each sentence adds essential information (scope, atomicity, writable fields, return value). Excellent structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description's mention that it returns IDs only is sufficient. Covers purpose, usage, behavior, parameters, and return. No gaps for this three-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant value: lists writable fields, explains validation nuances for status and custom_fields, clarifies that 'finishedOn' is not settable, and elaborates on 'dry_run'. This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Update fields on 1-50 existing test runs in one bulk PATCH', specifying the resource and scope. It distinguishes from siblings like 'update_test_records' and other tools by focusing on test runs and batch 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 description provides solid usage guidance: atomicity, validation rules for status and custom_fields, and that finishedOn is server-managed. It implicitly differentiates from list/get tools. Could be more explicit about when to use vs alternative update tools, but the tool name and context make it clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_work_item_commentAIdempotent
Resolve or re-open one work item comment.
Root comments only — replies cannot be updated; pick a root id (parent_comment_id=None) from list_work_item_comments. Resolving a root flips only that comment. Idempotent.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview payload without calling Polarion. | |
| resolved | Yes | New resolved state. | |
| comment_id | Yes | Short comment ID (e.g. 'c42' from list_work_item_comments). | |
| project_id | Yes | Polarion project ID. | |
| work_item_id | Yes | Work item ID, e.g. 'MCPT-001'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| dry_run | Yes | |
| updated | Yes | |
| resolved | Yes | |
| comment_id | Yes | |
| payload_preview | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description declares idempotency, which matches the idempotentHint annotation. It adds context about scope ('flips only that comment'). Annotations already cover readOnlyHint false and destructiveHint false, so the description adds moderate value.
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 sentences plus a brief constraint note. Every sentence adds value with no filler. Key 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?
Given the presence of an output schema and annotations, the description covers the essential behavior, constraints, and usage context. It is fully adequate for a tool with this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not elaborate on parameters beyond their basic role. It mentions that comment_id should be a root ID, but this is not a direct parameter description. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Resolve or re-open') on a clear resource ('one work item comment'). It also distinguishes from sibling tools by specifying 'Root comments only' and differentiating from document comments via context.
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 explicit guidance: only root comments can be updated, and it tells users to obtain a root comment ID from list_work_item_comments. It implies when not to use (replies) but lacks explicit alternatives or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_work_item_linkA
Set suspect and/or revision on one existing outgoing link.
Identify the link via list_work_item_links(direction="forward") — role + target address one link; copy the role exactly as listed. None = unchanged; at least one of suspect / revision required. One link per call.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | Role id of the existing link. | |
| dry_run | No | Preview payload without calling Polarion. | |
| suspect | No | New suspect flag; None = unchanged. | |
| revision | No | New revision pin; None = unchanged. | |
| project_id | Yes | Source work item's project ID. | |
| work_item_id | Yes | Source work item ID. | |
| target_project_id | No | Defaults to the source's project. | |
| target_work_item_id | Yes | Target work item ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| dry_run | Yes | |
| link_id | Yes | |
| updated | Yes | |
| payload_preview | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not read-only and not destructive, and the description adds context that it modifies suspect and revision fields. The behavior of 'None = unchanged' for both parameters is clearly stated, and the existence of a 'dry_run' parameter for preview is noted. No contradictions 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 a single paragraph that efficiently states the tool's purpose, followed by concise instructions and parameter notes. Every sentence adds value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, 4 required) and the presence of an output schema, the description adequately covers the main usage aspects: identification of the link, required fields, and the one-link constraint. It does not detail the output schema, but that is provided separately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds valuable context beyond schema by explaining how to obtain the 'role' parameter and emphasizing that at least one of 'suspect' or 'revision' must be provided. It also clarifies the 'None = unchanged' semantics and the one-link-per-call constraint.
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 explicitly states 'Set suspect and/or revision on one existing outgoing link', clearly defining the action on a specific resource. It distinguishes from sibling tools like 'delete_work_item_links' and 'list_work_item_links' by focusing on updating an existing link rather than deleting or listing.
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 clear instructions on how to identify the link via 'list_work_item_links(direction="forward")' and specifies that at least one of 'suspect' or 'revision' is required. It doesn't explicitly state alternatives for when not to use the tool, but the context given is sufficient for proper usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_work_itemsADestructiveIdempotent
Update fields on 1-50 existing work items in one bulk PATCH; unset fields stay unchanged. hyperlinks/assignee_ids REPLACE the stored lists: even to add ONE entry, call get_work_item on the target BEFORE updating and resubmit every existing entry plus the new one — anything omitted is silently deleted. Atomic: one bad item rejects the whole batch.
description_html is raw Polarion HTML, sent verbatim — source from get_work_item(include_description_html=True); greenfield bodies use create_work_items Markdown, formats never mix. To add a table, caption, image, link, or widget, call get_html_recipes first and adapt its template before writing description_html — hand-written table markup is rejected. workitemimg:{id} image refs must name an existing attachment — confirm via list_work_item_attachments first.
custom_fields is partial; keys outside the type schema are rejected, values are not validated — resolve via list_work_item_enum_options first. module is not settable here — use move_work_item_to_document / move_work_item_from_document. workflow_action/change_type_to apply to EVERY item; change_type_to rescopes enums to the target type and resets status. Returns ids only — re-read via get_work_item if needed.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Per-item changes (1-50). hyperlinks/assignee_ids REPLACE the stored lists — read each item first and pass full lists, not deltas. | |
| dry_run | No | Preview payload without writing; guards still query Polarion. | |
| project_id | Yes | Polarion project ID. | |
| change_type_to | No | New work-item type for EVERY item; RESETS status. | |
| workflow_action | No | Workflow action ID (e.g. 'close'); applies to EVERY item. |
Output Schema
| Name | Required | Description |
|---|---|---|
| dry_run | Yes | |
| updated | Yes | |
| work_item_ids | No | |
| payload_preview | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true, idempotentHint=true), the description details specific behaviors: list replacement, atomic batch failure, verbatim description_html handling, and status reset on type change. It fully discloses side effects and requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly long but every sentence is necessary due to the tool's complexity. It is well-structured with clear warnings and action steps. Slight reduction could be possible, but overall it is efficient for the information density.
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 covers all needed context: batch size limit, atomicity, list replacement semantics, description_html constraints, custom_fields behavior, and return value. It also references sibling tools where appropriate. No gaps remain.
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 100% schema coverage, the description adds significant value by explaining how to use each parameter correctly, e.g., highlighting that hyperlinks and assignee_ids replace lists, that description_html must come from get_work_item or get_html_recipes, and that custom_fields values are not validated. This goes well beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates existing work items in bulk (1–50), using a PATCH-like semantic. It explicitly distinguishes itself from sibling tools like create_work_items (create) and move_work_item_from_document (module change).
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 extensive guidance on when to use this tool, including warnings about replacing lists (hyperlinks, assignee_ids), the need to read items first, and alternatives for module changes (move_work_item_*). It also covers constraints like atomicity and the requirement to use get_html_recipes for rich descriptions.
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.
17 tool updates
v2.1.0- Changed
create_document1 field changed- added
Input schema / properties / rendering_layout_typesAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Work item type IDs the document will hold (e.g. ['softwarerequirement']); each gets a section layout." +}
- Added
create_document_comments - Added
create_test_record_attachments - Added
create_test_records - Added
create_test_runs - Added
create_work_item_attachments - Added
create_work_item_links - Changed
get_document1 field changed- added
Output schema / properties / rendering_layout_typesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +}
- Added
get_document_attachment_content - Added
get_html_recipes - Added
get_test_record - Added
get_test_record_attachment_content - Added
get_work_item_attachment_content - Added
list_document_attachments - Added
list_projects - Added
move_work_item_to_document - Changed
update_document1 field changed- added
Input schema / properties / rendering_layout_typesAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Work item type IDs that render their fields in this document; REPLACES the current set, so pass every type to keep." +}
20 tool updates
v2.0.0- Removed
create_document_comments - Removed
create_test_record_attachments - Added
delete_work_item_links - Added
get_sql_query_recipes - Removed
get_test_record_attachment_content - Added
get_test_run - Removed
list_document_attachments - Added
list_documents - Removed
list_projects - Added
list_test_record_attachments - Added
list_test_records - Added
list_test_runs - Added
list_work_item_comments - Added
list_work_item_enum_options - Added
list_work_item_links - Added
move_work_item_from_document - Added
read_work_item - Added
update_document - Added
update_document_comment - Added
update_work_item_link
37 tool updates
v2.0.0- Added
copy_document - Changed
create_document4 fields changed- added
Input schema / properties / document_nameAdded value: +{ + "description": "Document name (e.g. 'MySpecV1'); unique within space_id, appears in the document URL.", + "minLength": 1, + "type": "string" +} - removed
Input schema / properties / module_nameRemoved value: -{ - "description": "Document identifier (e.g. 'MySpecV1'); unique within space_id, appears in the document URL.", - "minLength": 1, - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "project_id", - "space_id", - "module_name", - "title", - "type" -]New value: +[ + "project_id", + "space_id", + "document_name", + "title", + "type" +] - changed
Output schema / descriptionPrevious value: -"Result of a ``create_document`` operation."New value: +"``create_document`` result."
- Added
create_document_attachments - Changed
create_document_comments5 fields changed- changed
Input schema / properties / comments / items / descriptionPrevious value: -"Common fields for a comment to create; base for type-specific specs."New value: +"Common create fields; base for type-specific specs." - removed
Input schema / properties / comments / items / properties / author_idRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null -} - changed
Input schema / properties / document_name / descriptionPrevious value: -"Document name within ``space_id``."New value: +"Document name within space_id." - changed
Input schema / properties / dry_run / descriptionPrevious value: -"Preview payload without calling Polarion."New value: +"Preview payload without writing; guards still query Polarion." - changed
Output schema / descriptionPrevious value: -"Result of a comment-create operation."New value: +"Comment-create result."
- Added
create_test_record_attachments - Removed
create_test_runs - Changed
create_work_item_comments4 fields changed- changed
Input schema / properties / comments / items / descriptionPrevious value: -"Work item comment to create; adds ``title`` (document comments have none)."New value: +"Work item comment to create; adds title (document comments have none)." - removed
Input schema / properties / comments / items / properties / author_idRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null -} - changed
Input schema / properties / dry_run / descriptionPrevious value: -"Preview payload without calling Polarion."New value: +"Preview payload without writing; guards still query Polarion." - changed
Output schema / descriptionPrevious value: -"Result of a comment-create operation."New value: +"Comment-create result."
- Removed
create_work_item_links - Changed
create_work_items3 fields changed- changed
Input schema / properties / items / items / descriptionPrevious value: -"One work item to create via ``create_work_items``."New value: +"One work item to create via create_work_items." - changed
Input schema / properties / items / items / properties / hyperlinks / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": false, - "description": "A single external hyperlink attached to a work item.", - "properties": { - "role": { - "type": "string" - }, - "title": { - "default": "", - "type": "string" - }, - "uri": { - "type": "string" - } - }, - "required": [ - "role", - "uri" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": false, + "description": "Single external hyperlink on a work item.", + "properties": { + "role": { + "type": "string" + }, + "title": { + "default": "", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "required": [ + "role", + "uri" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Output schema / descriptionPrevious value: -"Result of a ``create_work_items`` operation."New value: +"``create_work_items`` result."
- Removed
delete_work_item_links - Changed
get_document10 fields changed- added
Input schema / properties / include_home_page_content_htmlAdded value: +{ + "default": false, + "description": "Fill content_html with raw HTML for round-trip editing.", + "type": "boolean" +} - removed
Input schema / properties / include_homepage_content_htmlRemoved value: -{ - "default": false, - "description": "Fill content_html with raw HTML for round-trip editing.", - "type": "boolean" -} - changed
Output schema / descriptionPrevious value: -"Full details of a Polarion document returned by ``get_document``."New value: +"Full Polarion document detail from ``get_document``." - removed
Output schema / properties / authorRemoved value: -{ - "default": "", - "type": "string" -} - added
Output schema / properties / author_idAdded value: +{ + "default": "", + "type": "string" +} - added
Output schema / properties / author_nameAdded value: +{ + "default": "", + "type": "string" +} - added
Output schema / properties / createdAdded value: +{ + "default": "", + "type": "string" +} - removed
Output schema / properties / last_updated_byRemoved value: -{ - "default": "", - "type": "string" -} - added
Output schema / properties / last_updated_by_idAdded value: +{ + "default": "", + "type": "string" +} - added
Output schema / properties / last_updated_by_nameAdded value: +{ + "default": "", + "type": "string" +}
- Removed
get_html_recipes - Removed
get_sql_query_recipes - Added
get_test_record_attachment_content - Changed
get_work_item5 fields changed- changed
Input schema / properties / include_description_html / descriptionPrevious value: -"Fill ``description_html`` with raw HTML for round-trip editing."New value: +"Fill description_html with raw HTML for round-trip editing." - changed
Output schema / descriptionPrevious value: -"Full work-item details returned by ``get_work_item``."New value: +"Full work-item detail from ``get_work_item``." - added
Output schema / properties / assignee_namesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / author_nameAdded value: +{ + "default": "", + "type": "string" +} - changed
Output schema / properties / hyperlinks / items / descriptionPrevious value: -"A single external hyperlink attached to a work item."New value: +"Single external hyperlink on a work item."
- Added
list_document_attachments - Changed
list_document_comments4 fields changed- changed
Input schema / properties / document_name / descriptionPrevious value: -"Document name within ``space_id``."New value: +"Document name within space_id." - changed
Output schema / properties / items / items / descriptionPrevious value: -"A single comment returned by the comment list tools."New value: +"Single comment from comment list tools." - removed
Output schema / properties / items / items / properties / author_idRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null -} - added
Output schema / properties / items / items / properties / author_nameAdded value: +{ + "default": "", + "type": "string" +}
- Changed
list_document_enum_options1 field changed- changed
Output schema / properties / items / items / descriptionPrevious value: -"Single enum option returned by ``list_*_enum_options``."New value: +"Single enum option from ``list_*_enum_options``."
- Removed
list_documents - Changed
list_projects1 field changed- changed
Output schema / properties / items / items / descriptionPrevious value: -"Summary of a Polarion project returned by ``list_projects``."New value: +"Polarion project summary from ``list_projects``."
- Removed
list_test_runs - Added
list_work_item_attachments - Removed
list_work_item_comments - Removed
list_work_item_enum_options - Removed
list_work_item_links - Changed
list_work_items3 fields changed- changed
Output schema / properties / items / items / descriptionPrevious value: -"Compact work-item representation for list and search results."New value: +"Compact work-item view for list + search results." - removed
Output schema / properties / items / items / properties / assignee_idsRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -} - added
Output schema / properties / items / items / properties / author_nameAdded value: +{ + "default": "", + "type": "string" +}
- Removed
move_work_item_from_document - Removed
move_work_item_to_document - Changed
read_document_parts1 field changed- changed
Output schema / properties / items / items / descriptionPrevious value: -"A single part (heading or work item) within a Polarion document."New value: +"Single part (heading or work item) within Polarion document."
- Removed
read_work_item - Removed
update_document - Removed
update_document_comment - Added
update_test_records - Added
update_test_runs - Changed
update_work_item_comment1 field changed- changed
Output schema / descriptionPrevious value: -"Shared result of a comment-resolve update, across all comment types."New value: +"Comment-resolve update result, shared across comment types."
- Removed
update_work_item_link - Changed
update_work_items4 fields changed- changed
Input schema / properties / items / items / descriptionPrevious value: -"One work item's changes in an ``update_work_items`` batch; unset\nfields stay unchanged."New value: +"One update_work_items batch entry; unset fields stay unchanged." - changed
Input schema / properties / items / items / properties / description_html / descriptionPrevious value: -"Raw HTML from get_work_item(include_description_html=True); verbatim."New value: +"Raw Polarion HTML from get_work_item(include_description_html=True), sent verbatim. Adding a table, caption, or widget requires get_html_recipes first — build this field from its template; hand-written table markup is rejected." - changed
Input schema / properties / items / items / properties / hyperlinks / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": false, - "description": "A single external hyperlink attached to a work item.", - "properties": { - "role": { - "type": "string" - }, - "title": { - "default": "", - "type": "string" - }, - "uri": { - "type": "string" - } - }, - "required": [ - "role", - "uri" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": false, + "description": "Single external hyperlink on a work item.", + "properties": { + "role": { + "type": "string" + }, + "title": { + "default": "", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "required": [ + "role", + "uri" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Output schema / descriptionPrevious value: -"Result of an ``update_work_items`` operation."New value: +"``update_work_items`` result."
15 tool updates
v1.4.1- Changed
create_document2 fields changed- added
Input schema / properties / auto_suspectAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Flag linked work items suspect on change." +} - added
Input schema / properties / uses_outline_numberingAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Enable auto outline numbers (1, 1.1, ...)." +}
- Changed
create_document_comments1 field changed- added
Input schema / properties / comments / items / additionalPropertiesAdded value: +false
- Added
create_test_runs - Changed
create_work_item_comments1 field changed- added
Input schema / properties / comments / items / additionalPropertiesAdded value: +false
- Changed
create_work_item_links1 field changed- added
Input schema / properties / links / items / additionalPropertiesAdded value: +false
- Changed
create_work_items2 fields changed- added
Input schema / properties / items / items / additionalPropertiesAdded value: +false - changed
Input schema / properties / items / items / properties / hyperlinks / anyOfPrevious value: -[ - { - "items": { - "description": "A single external hyperlink attached to a work item.", - "properties": { - "role": { - "type": "string" - }, - "title": { - "default": "", - "type": "string" - }, - "uri": { - "type": "string" - } - }, - "required": [ - "role", - "uri" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": false, + "description": "A single external hyperlink attached to a work item.", + "properties": { + "role": { + "type": "string" + }, + "title": { + "default": "", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "required": [ + "role", + "uri" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
delete_work_item_links1 field changed- added
Input schema / properties / links / items / additionalPropertiesAdded value: +false
- Changed
get_document2 fields changed- added
Output schema / properties / auto_suspectAdded value: +{ + "default": false, + "type": "boolean" +} - added
Output schema / properties / uses_outline_numberingAdded value: +{ + "default": false, + "type": "boolean" +}
- Added
get_html_recipes - Changed
get_work_item1 field changed- added
Output schema / properties / hyperlinks / items / additionalPropertiesAdded value: +false
- Added
list_test_runs - Changed
read_work_item1 field changed- added
Output schema / properties / hyperlinks / items / additionalPropertiesAdded value: +false
- Changed
update_document3 fields changed- added
Input schema / properties / auto_suspectAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Flag linked work items suspect on change." +} - changed
Input schema / properties / home_page_content_html / descriptionPrevious value: -"New body as raw HTML from get_document(include_homepage_content_html=True); '' rejected; anchorless blocks get id= auto-stamped."New value: +"New body as raw HTML from get_document(include_homepage_content_html=True); '' rejected; anchorless blocks get id= auto-stamped. New tables, captions, or other Polarion constructs: call get_html_recipes first and adapt a template." - added
Input schema / properties / uses_outline_numberingAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Enable auto outline numbers (1, 1.1, ...)." +}
- Removed
update_work_item - Added
update_work_items
24 tool updates
v1.4.0- Changed
create_document7 fields changed- changed
Input schema / properties / custom_fields / descriptionPrevious value: -"Optional custom fields keyed by Polarion field ID; take keys from a sibling document via get_document to avoid ghost keys; rich-text values must be ``{'type':'text/html','value':...}``."New value: +"Keyed by Polarion field ID (copy keys from a sibling document); rich-text values as {'type':'text/html','value':...}." - changed
Input schema / properties / dry_run / descriptionPrevious value: -"When True, return the payload preview without writing; the enum guard still calls Polarion's getAvailableOptions, so that endpoint must be reachable."New value: +"Preview payload without writing; guards still query Polarion." - changed
Input schema / properties / home_page_content / descriptionPrevious value: -"Optional Markdown body; converted to sanitized HTML on write."New value: +"Markdown body; converted to sanitized HTML." - changed
Input schema / properties / module_name / descriptionPrevious value: -"Polarion document identifier (e.g. 'MySpecV1'); must be unique within ``space_id`` and appears in the document URL."New value: +"Document identifier (e.g. 'MySpecV1'); unique within space_id, appears in the document URL." - changed
Input schema / properties / space_id / descriptionPrevious value: -"Space ID (use '_default' for the default space)."New value: +"Space ID ('_default' = default space)." - changed
Input schema / properties / status / descriptionPrevious value: -"Optional initial workflow status (project default applies if omitted)."New value: +"Initial workflow status (project default if omitted)." - changed
Input schema / properties / title / descriptionPrevious value: -"Human-readable document title (required, non-empty)."New value: +"Human-readable document title."
- Changed
create_document_comments5 fields changed- changed
Input schema / properties / comments / descriptionPrevious value: -"One or more comments to create in a single request."New value: +"Comments to create in one request." - changed
Input schema / properties / comments / items / descriptionPrevious value: -"One comment to create via ``create_document_comments``."New value: +"Common fields for a comment to create; base for type-specific specs." - changed
Input schema / properties / dry_run / descriptionPrevious value: -"When True, return payload preview without calling Polarion."New value: +"Preview payload without calling Polarion." - changed
Input schema / properties / space_id / descriptionPrevious value: -"Space ID (use '_default' for the default space)."New value: +"Space ID ('_default' = default space)." - changed
Output schema / descriptionPrevious value: -"Result of a ``create_document_comments`` operation."New value: +"Result of a comment-create operation."
- Added
create_work_item_comments - Changed
create_work_item_links3 fields changed- changed
Input schema / properties / dry_run / descriptionPrevious value: -"When True, return payload preview without calling Polarion."New value: +"Preview payload without writing; guards still query Polarion." - changed
Input schema / properties / links / descriptionPrevious value: -"One or more links to create under the source work item (1-50)."New value: +"Links to create under the source work item (1-50)." - changed
Input schema / properties / work_item_id / descriptionPrevious value: -"Source work item ID (the links' outgoing endpoint)."New value: +"Source work item ID."
- Changed
create_work_items2 fields changed- changed
Input schema / properties / dry_run / descriptionPrevious value: -"When True, return the payload preview without writing; the enum guard still calls Polarion's getAvailableOptions, so that endpoint must be reachable."New value: +"Preview payload without writing; guards still query Polarion." - changed
Input schema / properties / items / descriptionPrevious value: -"One or more work items to create in a single request (1-50). Pass a single-element list to create just one."New value: +"Work items to create in one request (1-50)."
- Changed
delete_work_item_links3 fields changed- changed
Input schema / properties / dry_run / descriptionPrevious value: -"When True, return payload preview without calling Polarion."New value: +"Preview payload without deleting; the pre-read still queries Polarion." - changed
Input schema / properties / links / descriptionPrevious value: -"One or more existing outgoing links to delete (1-50)."New value: +"Existing outgoing links to delete (1-50)." - changed
Input schema / properties / work_item_id / descriptionPrevious value: -"Source work item ID (the links' outgoing endpoint)."New value: +"Source work item ID."
- Changed
get_document6 fields changed- changed
Input schema / properties / document_name / descriptionPrevious value: -"Document name within the space (spaces handled automatically)."New value: +"Document name within space_id." - changed
Input schema / properties / include_homepage_content_html / descriptionPrevious value: -"When True, fill ``content_html`` with raw HTML for round-trip editing."New value: +"Fill content_html with raw HTML for round-trip editing." - changed
Input schema / properties / space_id / descriptionPrevious value: -"Space ID containing the document (e.g. '_default')."New value: +"Space ID ('_default' = default space)." - added
Output schema / properties / authorAdded value: +{ + "default": "", + "type": "string" +} - added
Output schema / properties / last_updated_byAdded value: +{ + "default": "", + "type": "string" +} - added
Output schema / properties / updatedAdded value: +{ + "default": "", + "type": "string" +}
- Changed
get_work_item2 fields changed- changed
Input schema / properties / include_description_html / descriptionPrevious value: -"When True, fill ``description_html`` with raw HTML for round-trip editing."New value: +"Fill ``description_html`` with raw HTML for round-trip editing." - changed
Input schema / properties / work_item_id / descriptionPrevious value: -"Work Item ID (e.g. 'MCPT-001')."New value: +"Work item ID (e.g. 'MCPT-001')."
- Changed
list_document_comments4 fields changed- changed
Input schema / properties / document_name / descriptionPrevious value: -"Document name within the space."New value: +"Document name within ``space_id``." - changed
Input schema / properties / space_id / descriptionPrevious value: -"Space ID containing the document (e.g. '_default')."New value: +"Space ID ('_default' = default space)." - changed
Output schema / properties / items / items / descriptionPrevious value: -"A single document comment returned by ``list_document_comments``."New value: +"A single comment returned by the comment list tools." - added
Output schema / properties / items / items / properties / titleAdded value: +{ + "default": "", + "type": "string" +}
- Changed
list_document_enum_options2 fields changed- changed
Input schema / properties / document_type / descriptionPrevious value: -"Document type id (e.g. 'systemReqSpecification'). Pass '~' for type-agnostic options."New value: +"e.g. 'systemReqSpecification'; '~' = type-agnostic." - changed
Input schema / properties / field_id / descriptionPrevious value: -"Field id (e.g. 'status', 'type', or a custom field id)."New value: +"e.g. 'status', 'type', or a custom field id."
- Changed
list_documents4 fields changed- added
Output schema / properties / items / items / properties / authorAdded value: +{ + "default": "", + "type": "string" +} - added
Output schema / properties / items / items / properties / last_updated_byAdded value: +{ + "default": "", + "type": "string" +} - added
Output schema / properties / items / items / properties / statusAdded value: +{ + "default": "", + "type": "string" +} - added
Output schema / properties / items / items / properties / updatedAdded value: +{ + "default": "", + "type": "string" +}
- Added
list_work_item_comments - Changed
list_work_item_enum_options2 fields changed- changed
Input schema / properties / field_id / descriptionPrevious value: -"Field id (e.g. 'status', 'type', 'severity', 'priority', or a custom field id)."New value: +"e.g. 'status', 'type', 'severity', 'priority', or a custom field id." - changed
Input schema / properties / work_item_type / descriptionPrevious value: -"Work item type id (e.g. 'task', 'requirement'). Pass '~' for type-agnostic options."New value: +"e.g. 'task', 'requirement'; '~' = type-agnostic."
- Changed
list_work_item_links1 field changed- changed
Input schema / properties / work_item_id / descriptionPrevious value: -"Work Item ID (e.g. 'MCPT-001')."New value: +"Work item ID (e.g. 'MCPT-001')."
- Changed
move_work_item_from_document3 fields changed- changed
Input schema / properties / dry_run / descriptionPrevious value: -"When True, return payload preview without calling Polarion."New value: +"Preview payload without calling Polarion." - changed
Input schema / properties / project_id / descriptionPrevious value: -"Project containing the work item."New value: +"Polarion project ID." - changed
Input schema / properties / work_item_id / descriptionPrevious value: -"Short ID of an EXISTING work item (e.g. 'MCPT-042')."New value: +"Work item ID (e.g. 'MCPT-042')."
- Changed
move_work_item_to_document6 fields changed- changed
Input schema / properties / dry_run / descriptionPrevious value: -"When True, return payload preview without calling Polarion."New value: +"Preview payload without calling Polarion." - changed
Input schema / properties / next_part_id / descriptionPrevious value: -"Insert BEFORE this part ID; mutually exclusive with ``previous_part_id``. Omit both to append at the end of the target document."New value: +"Insert BEFORE this part ID; exclusive with previous_part_id." - changed
Input schema / properties / previous_part_id / descriptionPrevious value: -"Insert AFTER this part ID; mutually exclusive with ``next_part_id``. Omit both to append at the end of the target document."New value: +"Insert AFTER this part ID; exclusive with next_part_id." - changed
Input schema / properties / project_id / descriptionPrevious value: -"Project containing the work item."New value: +"Polarion project ID." - changed
Input schema / properties / target_space_id / descriptionPrevious value: -"Target space ID (use '_default' for the default space)."New value: +"Target space ID ('_default' = default space)." - changed
Input schema / properties / work_item_id / descriptionPrevious value: -"Short ID of an EXISTING work item (e.g. 'MCPT-042')."New value: +"Work item ID (e.g. 'MCPT-042')."
- Changed
read_document2 fields changed- changed
Input schema / properties / document_name / descriptionPrevious value: -"Document name within the space."New value: +"Document name within space_id." - changed
Input schema / properties / space_id / descriptionPrevious value: -"Space ID containing the document."New value: +"Space ID ('_default' = default space)."
- Changed
read_document_parts2 fields changed- changed
Input schema / properties / document_name / descriptionPrevious value: -"Document name within the space."New value: +"Document name within space_id." - changed
Input schema / properties / space_id / descriptionPrevious value: -"Space ID containing the document."New value: +"Space ID ('_default' = default space)."
- Changed
read_work_item1 field changed- changed
Input schema / properties / work_item_id / descriptionPrevious value: -"Work Item ID (e.g. 'MCPT-001')."New value: +"Work item ID (e.g. 'MCPT-001')."
- Changed
update_document7 fields changed- changed
Input schema / properties / custom_fields / descriptionPrevious value: -"Partial custom-field update; rich-text values must be ``{'type':'text/html','value':...}``."New value: +"Partial; rich-text values as {'type':'text/html','value':...}." - changed
Input schema / properties / document_name / descriptionPrevious value: -"Document name within ``space_id``."New value: +"Document name within space_id." - changed
Input schema / properties / dry_run / descriptionPrevious value: -"When True, return the payload preview without writing; enum/custom-field guards still query Polarion, so the document must be readable and the validation endpoint reachable."New value: +"Preview payload without writing; guards still query Polarion." - changed
Input schema / properties / home_page_content_html / descriptionPrevious value: -"New body as raw Polarion HTML (round-trip shape from get_document); '' is rejected."New value: +"New body as raw HTML from get_document(include_homepage_content_html=True); '' rejected; anchorless blocks get id= auto-stamped." - changed
Input schema / properties / space_id / descriptionPrevious value: -"Space ID (use '_default' for the default space)."New value: +"Space ID ('_default' = default space)." - changed
Input schema / properties / status / descriptionPrevious value: -"New workflow status; prefer ``workflow_action`` for real transitions."New value: +"New status; prefer workflow_action for real transitions." - changed
Input schema / properties / workflow_action / descriptionPrevious value: -"Workflow action ID; must be paired with at least one attribute field."New value: +"Workflow action ID."
- Changed
update_document_comment5 fields changed- changed
Input schema / properties / comment_id / descriptionPrevious value: -"Short comment ID to update (e.g. 'c42' from ``list_document_comments``)."New value: +"Short comment ID (e.g. 'c42' from list_document_comments)." - changed
Input schema / properties / dry_run / descriptionPrevious value: -"When True, return payload preview without calling Polarion."New value: +"Preview payload without calling Polarion." - changed
Input schema / properties / resolved / descriptionPrevious value: -"New resolved state for the comment."New value: +"New resolved state." - changed
Input schema / properties / space_id / descriptionPrevious value: -"Space ID (use '_default' for the default space)."New value: +"Space ID ('_default' = default space)." - changed
Output schema / descriptionPrevious value: -"Result of an ``update_document_comment`` operation."New value: +"Shared result of a comment-resolve update, across all comment types."
- Changed
update_work_item12 fields changed- changed
Input schema / properties / change_type_to / descriptionPrevious value: -"Change work-item type; RESETS status; must be paired with at least one body field."New value: +"New work-item type; RESETS status." - changed
Input schema / properties / custom_fields / descriptionPrevious value: -"Partial custom-field update; rich-text values must be ``{'type':'text/html','value':...}``."New value: +"Partial; rich-text values as {'type':'text/html','value':...}." - changed
Input schema / properties / description_html / descriptionPrevious value: -"New raw Polarion HTML body (round-trip shape from get_work_item)."New value: +"Raw HTML from get_work_item(include_description_html=True); verbatim." - changed
Input schema / properties / dry_run / descriptionPrevious value: -"When True, return the payload preview without writing; enum/custom-field guards still query Polarion, so the work item must be readable and the validation endpoint reachable."New value: +"Preview payload without writing; guards still query Polarion." - changed
Input schema / properties / due_date / descriptionPrevious value: -"New due date 'YYYY-MM-DD'."New value: +"'YYYY-MM-DD'." - changed
Input schema / properties / include_current_description_html / descriptionPrevious value: -"When True, return the post-PATCH raw HTML body in ``current.description_html``."New value: +"Return post-PATCH raw HTML in current.description_html." - changed
Input schema / properties / initial_estimate / descriptionPrevious value: -"New Polarion duration (e.g. '5 1/2d', '1w 2d')."New value: +"Polarion duration (e.g. '5 1/2d', '1w 2d')." - changed
Input schema / properties / priority / descriptionPrevious value: -"New priority string (e.g. '50.0')."New value: +"e.g. '50.0'." - changed
Input schema / properties / resolution / descriptionPrevious value: -"New resolution outcome; prefer ``workflow_action`` so workflow rules apply."New value: +"Prefer workflow_action so workflow rules apply." - changed
Input schema / properties / status / descriptionPrevious value: -"New workflow status; prefer ``workflow_action`` for real transitions."New value: +"New status; prefer workflow_action for real transitions." - changed
Input schema / properties / work_item_id / descriptionPrevious value: -"Short ID of an EXISTING work item (e.g. 'MCPT-042')."New value: +"Work item ID (e.g. 'MCPT-042')." - changed
Input schema / properties / workflow_action / descriptionPrevious value: -"Workflow action ID (e.g. 'close'); must be paired with at least one body field."New value: +"Workflow action ID (e.g. 'close')."
- Added
update_work_item_comment - Changed
update_work_item_link7 fields changed- changed
Input schema / properties / dry_run / descriptionPrevious value: -"When True, return payload preview without calling Polarion."New value: +"Preview payload without calling Polarion." - changed
Input schema / properties / revision / descriptionPrevious value: -"New revision pin; None leaves the existing pin unchanged."New value: +"New revision pin; None = unchanged." - changed
Input schema / properties / role / descriptionPrevious value: -"Link role id of the existing link."New value: +"Role id of the existing link." - changed
Input schema / properties / suspect / descriptionPrevious value: -"New suspect flag value; None leaves it unchanged."New value: +"New suspect flag; None = unchanged." - changed
Input schema / properties / target_project_id / descriptionPrevious value: -"Target's project; defaults to the source's project."New value: +"Defaults to the source's project." - changed
Input schema / properties / target_work_item_id / descriptionPrevious value: -"Target work item ID (the link's incoming endpoint)."New value: +"Target work item ID." - changed
Input schema / properties / work_item_id / descriptionPrevious value: -"Source work item ID (the link's outgoing endpoint)."New value: +"Source work item ID."
1 tool update
v1.2.0- Changed
list_documents1 field changed- added
Output schema / properties / items / items / properties / typeAdded value: +{ + "default": "", + "type": "string" +}
26 tool updates
v1.1.0- Changed
create_document8 fields changed- changed
Input schema / properties / custom_fields / descriptionPrevious value: -"Optional custom fields keyed by Polarion field ID; rich-text values must be ``{'type':'text/html','value':...}``."New value: +"Optional custom fields keyed by Polarion field ID; take keys from a sibling document via get_document to avoid ghost keys; rich-text values must be ``{'type':'text/html','value':...}``." - changed
Input schema / properties / dry_run / descriptionPrevious value: -"When True, return payload preview without calling Polarion."New value: +"When True, return the payload preview without writing; the enum guard still calls Polarion's getAvailableOptions, so that endpoint must be reachable." - removed
Output schema / $defsRemoved value: -{ - "JsonValue": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "items": { - "$ref": "#/$defs/JsonValue" - }, - "type": "array" - }, - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } - ] - } -} - removed
Output schema / properties / created / descriptionRemoved value: -"True on a real create; False on dry-run." - removed
Output schema / properties / document_name / descriptionRemoved value: -"Module name of the new document; None on dry-run." - removed
Output schema / properties / dry_run / descriptionRemoved value: -"Whether this was a dry-run." - changed
Output schema / properties / payload_preview / anyOfPrevious value: -[ - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / payload_preview / descriptionRemoved value: -"JSON:API payload sent or previewed; None after real ops."
- Changed
create_document_comments12 fields changed- changed
Input schema / properties / comments / items / descriptionPrevious value: -"One comment to create via ``create_document_comments``.\n\n``parent_comment_id`` is the short ID from ``list_document_comments``\n(omit for top-level); the tool composes the full path internally.\nOmit ``author_id`` to default to the authenticated token's user;\nomit ``resolved`` to let Polarion default to False."New value: +"One comment to create via ``create_document_comments``." - removed
Input schema / properties / comments / items / properties / author_id / descriptionRemoved value: -"Author user ID." - removed
Input schema / properties / comments / items / properties / parent_comment_id / descriptionRemoved value: -"Short comment ID for replies; omit for top-level." - removed
Input schema / properties / comments / items / properties / resolved / descriptionRemoved value: -"Initial resolved state." - removed
Input schema / properties / comments / items / properties / text / descriptionRemoved value: -"Comment body text." - removed
Input schema / properties / comments / items / properties / text_format / descriptionRemoved value: -"MIME type of ``text``." - removed
Output schema / $defsRemoved value: -{ - "JsonValue": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "items": { - "$ref": "#/$defs/JsonValue" - }, - "type": "array" - }, - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } - ] - } -} - removed
Output schema / properties / comment_ids / descriptionRemoved value: -"Short IDs in Polarion's return order; empty on dry-run." - removed
Output schema / properties / created / descriptionRemoved value: -"True on a real create; False on dry-run." - removed
Output schema / properties / dry_run / descriptionRemoved value: -"Whether this was a dry-run." - changed
Output schema / properties / payload_preview / anyOfPrevious value: -[ - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / payload_preview / descriptionRemoved value: -"JSON:API payload sent or previewed; None after real ops."
- Removed
create_work_item - Changed
create_work_item_links13 fields changed- changed
Input schema / properties / links / descriptionPrevious value: -"One or more links to create under the source work item."New value: +"One or more links to create under the source work item (1-50)." - removed
Input schema / properties / links / items / properties / revision / descriptionRemoved value: -"Optional revision pin; defaults to current HEAD." - removed
Input schema / properties / links / items / properties / role / descriptionRemoved value: -"Link role id (e.g. 'parent')." - removed
Input schema / properties / links / items / properties / suspect / descriptionRemoved value: -"Mark the link as suspect." - removed
Input schema / properties / links / items / properties / target_project_id / descriptionRemoved value: -"Target's project; defaults to the source's project." - removed
Input schema / properties / links / items / properties / target_work_item_id / descriptionRemoved value: -"Target work item ID." - added
Input schema / properties / links / maxItemsAdded value: +50 - removed
Output schema / $defsRemoved value: -{ - "JsonValue": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "items": { - "$ref": "#/$defs/JsonValue" - }, - "type": "array" - }, - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } - ] - } -} - removed
Output schema / properties / created / descriptionRemoved value: -"True on a real create; False on dry-run." - removed
Output schema / properties / dry_run / descriptionRemoved value: -"Whether this was a dry-run." - removed
Output schema / properties / link_ids / descriptionRemoved value: -"Composite 5-segment link ids in input order; empty on dry-run." - changed
Output schema / properties / payload_preview / anyOfPrevious value: -[ - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / payload_preview / descriptionRemoved value: -"JSON:API payload sent or previewed; None after real ops."
- Added
create_work_items - Changed
delete_work_item_links14 fields changed- changed
Input schema / properties / links / descriptionPrevious value: -"One or more existing outgoing links to delete."New value: +"One or more existing outgoing links to delete (1-50)." - removed
Input schema / properties / links / items / properties / role / descriptionRemoved value: -"Link role id; must match exactly." - removed
Input schema / properties / links / items / properties / target_project_id / descriptionRemoved value: -"Target's project; defaults to the source's project." - removed
Input schema / properties / links / items / properties / target_work_item_id / descriptionRemoved value: -"Target work item ID." - added
Input schema / properties / links / maxItemsAdded value: +50 - removed
Output schema / $defsRemoved value: -{ - "JsonValue": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "items": { - "$ref": "#/$defs/JsonValue" - }, - "type": "array" - }, - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } - ] - } -} - changed
Output schema / descriptionPrevious value: -"Result of a ``delete_work_item_links`` operation.\n\n``link_ids`` echoes the REQUEST — Polarion silently ignores body-level\nrefs that do not match an existing link, so the echo is not a list of\nwhat was actually deleted. Cross-check with ``list_work_item_links``\nif exact accounting is required."New value: +"Result of a ``delete_work_item_links`` operation." - removed
Output schema / properties / deleted / descriptionRemoved value: -"True on a real delete; False on dry-run." - added
Output schema / properties / deleted_link_idsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / dry_run / descriptionRemoved value: -"Whether this was a dry-run." - removed
Output schema / properties / link_ids / descriptionRemoved value: -"Composite 5-segment ids reconstructed from the request refs." - added
Output schema / properties / not_found_link_idsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / payload_preview / anyOfPrevious value: -[ - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / payload_preview / descriptionRemoved value: -"JSON:API payload sent or previewed; None after real ops."
- Changed
get_document6 fields changed- changed
Output schema / descriptionPrevious value: -"Full details of a Polarion document returned by ``get_document``.\n\n``content_html`` is the round-trip pair for\n``update_document(home_page_content_html=...)`` — populated only when\n``include_homepage_content_html=True``. It is the inline prose only;\nheading text and embedded work-item bodies live in separate work items,\nso ``read_document`` is the assembled-body view.\n\n``custom_fields`` mirrors the keys configured on the document type:\nrich-text values stay as ``{'type': 'text/html', 'value': '<...>'}``\ndicts so the shape round-trips back unchanged."New value: +"Full details of a Polarion document returned by ``get_document``." - removed
Output schema / properties / content_html / descriptionRemoved value: -"Raw Polarion HTML body; empty unless the read flag was True." - removed
Output schema / properties / custom_fields / descriptionRemoved value: -"Project-defined custom fields keyed by field ID." - removed
Output schema / properties / status / descriptionRemoved value: -"Document workflow status (e.g. 'draft', 'approved')." - removed
Output schema / properties / title / descriptionRemoved value: -"Document title." - removed
Output schema / properties / type / descriptionRemoved value: -"Document type (e.g. 'req_specification')."
- Added
get_sql_query_recipes - Changed
get_work_item22 fields changed- changed
Output schema / descriptionPrevious value: -"Full work-item details returned by ``get_work_item``.\n\nExtends ``WorkItemSummary`` with the description, project context,\nand detail-only metadata (authorship, resolution, severity, outline\nposition, external hyperlinks).\n\n``description_html`` is the round-trip pair for\n``update_work_item(description_html=...)`` and must never pass through\na Markdown converter or sanitizer — doing so strips Polarion-specific\nspans and breaks the round-trip. ``custom_fields`` keeps rich-text\nvalues as ``{'type': 'text/html', 'value': '<...>'}`` dicts so the\nshape round-trips back unchanged."New value: +"Full work-item details returned by ``get_work_item``." - removed
Output schema / properties / assignee_ids / descriptionRemoved value: -"Short user IDs of assignees; empty list when unassigned." - removed
Output schema / properties / author_id / descriptionRemoved value: -"Short user ID of the author; empty when unreported." - removed
Output schema / properties / created / descriptionRemoved value: -"ISO-8601 creation timestamp; empty when unreported." - removed
Output schema / properties / custom_fields / descriptionRemoved value: -"Project-defined custom fields keyed by field ID." - removed
Output schema / properties / description_html / descriptionRemoved value: -"Raw Polarion HTML body; empty unless the read flag was True." - removed
Output schema / properties / document_name / descriptionRemoved value: -"Containing document name; empty when free-floating." - removed
Output schema / properties / hyperlinks / descriptionRemoved value: -"External hyperlinks attached to this work item." - removed
Output schema / properties / hyperlinks / items / properties / role / descriptionRemoved value: -"Hyperlink role id (e.g. 'ref_ext')." - removed
Output schema / properties / hyperlinks / items / properties / title / descriptionRemoved value: -"Human-readable link title; empty when unset." - removed
Output schema / properties / hyperlinks / items / properties / uri / descriptionRemoved value: -"Target URI of the hyperlink." - removed
Output schema / properties / id / descriptionRemoved value: -"Work Item ID (e.g. 'MCPT-001')." - removed
Output schema / properties / outline_number / descriptionRemoved value: -"Hierarchical position (e.g. '1.2.3'); empty outside a document." - removed
Output schema / properties / priority / descriptionRemoved value: -"Priority value as a string (e.g. '90.0'); empty when unset." - removed
Output schema / properties / project_id / descriptionRemoved value: -"Project that contains this work item." - removed
Output schema / properties / resolution / descriptionRemoved value: -"Resolution outcome (e.g. 'fixed'); empty when unresolved." - removed
Output schema / properties / severity / descriptionRemoved value: -"Severity classification (e.g. 'critical'); empty for non-defects." - removed
Output schema / properties / space_id / descriptionRemoved value: -"Containing document's space; empty when free-floating." - removed
Output schema / properties / status / descriptionRemoved value: -"Workflow status (e.g. 'draft', 'approved')." - removed
Output schema / properties / title / descriptionRemoved value: -"Work Item title." - removed
Output schema / properties / type / descriptionRemoved value: -"Work Item type (e.g. 'requirement', 'testCase')." - removed
Output schema / properties / updated / descriptionRemoved value: -"ISO-8601 last-modified timestamp; empty when unreported."
- Changed
list_document_comments13 fields changed- removed
Input schema / properties / page_number / descriptionRemoved value: -"Page number to retrieve (1-based, default 1)." - removed
Input schema / properties / page_size / descriptionRemoved value: -"Number of comments per page (1-100, default 100)." - changed
Input schema / properties / space_id / descriptionPrevious value: -"Space ID that contains the document (use '_default' for the default space)."New value: +"Space ID containing the document (e.g. '_default')." - removed
Output schema / properties / has_more / descriptionRemoved value: -"True if more pages follow." - changed
Output schema / properties / items / items / descriptionPrevious value: -"A single document comment returned by ``list_document_comments``.\n\nComments form a tree: top-level comments have ``parent_comment_id=None``\nand replies link back via ``parent_comment_id`` while exposing their own\nreplies through ``child_comment_ids``. The list endpoint returns a flat\npage; rebuild the thread on the client side. ``text`` is returned\nverbatim with ``text_format`` indicating whether it is HTML or plain\ntext -- HTML is NOT sanitized, so it round-trips losslessly."New value: +"A single document comment returned by ``list_document_comments``." - removed
Output schema / properties / items / items / properties / author_id / descriptionRemoved value: -"User ID of the author; None when unknown." - removed
Output schema / properties / items / items / properties / child_comment_ids / descriptionRemoved value: -"Direct reply comment IDs in declaration order." - removed
Output schema / properties / items / items / properties / created / descriptionRemoved value: -"ISO-8601 creation timestamp." - removed
Output schema / properties / items / items / properties / id / descriptionRemoved value: -"Comment ID (e.g. 'MyCommentId')." - removed
Output schema / properties / items / items / properties / parent_comment_id / descriptionRemoved value: -"Parent comment ID for replies; None on top-level." - removed
Output schema / properties / items / items / properties / resolved / descriptionRemoved value: -"True when the comment is marked resolved." - removed
Output schema / properties / items / items / properties / text / descriptionRemoved value: -"Comment body verbatim." - removed
Output schema / properties / items / items / properties / text_format / descriptionRemoved value: -"MIME type of ``text`` as reported by Polarion."
- Changed
list_document_enum_options10 fields changed- removed
Input schema / properties / page_number / descriptionRemoved value: -"Page number to retrieve (1-based, default 1)." - removed
Input schema / properties / page_size / descriptionRemoved value: -"Number of options per page (1-100, default 100)." - removed
Output schema / properties / has_more / descriptionRemoved value: -"True if more pages follow." - changed
Output schema / properties / items / items / descriptionPrevious value: -"Single enum option returned by ``list_document_enum_options``.\n\nSurfaces only the attributes an LLM needs to pick a value before a\nwrite call. Other Polarion option fields (color, iconURL, columnWidth,\ncreateDefect, limited, minValue, oppositeName, parent,\nrequiresSignatureForTestCaseExecution, templateWorkItem) are not\nexposed."New value: +"Single enum option returned by ``list_*_enum_options``." - removed
Output schema / properties / items / items / properties / default / descriptionRemoved value: -"True when this option is the project default." - removed
Output schema / properties / items / items / properties / description / descriptionRemoved value: -"Option description; empty when Polarion has none." - removed
Output schema / properties / items / items / properties / hidden / descriptionRemoved value: -"True when the option is hidden in the UI; avoid selecting." - removed
Output schema / properties / items / items / properties / id / descriptionRemoved value: -"Option id; pass verbatim to write tools." - removed
Output schema / properties / items / items / properties / name / descriptionRemoved value: -"Human-readable display name." - removed
Output schema / properties / items / items / properties / terminal / descriptionRemoved value: -"For status fields, True for workflow end-states."
- Changed
list_documents5 fields changed- removed
Input schema / properties / page_number / descriptionRemoved value: -"Page number to retrieve (1-based, default 1)." - removed
Input schema / properties / page_size / descriptionRemoved value: -"Number of documents per page (1-100, default 100)." - removed
Output schema / properties / has_more / descriptionRemoved value: -"True if more pages follow." - removed
Output schema / properties / items / items / properties / document_name / descriptionRemoved value: -"Document name within the space." - removed
Output schema / properties / items / items / properties / space_id / descriptionRemoved value: -"Space containing the document (e.g. '_default')."
- Changed
list_projects4 fields changed- removed
Input schema / properties / page_number / descriptionRemoved value: -"Page number to retrieve (1-based, default 1)." - removed
Input schema / properties / page_size / descriptionRemoved value: -"Number of projects per page (1-100, default 100)." - removed
Output schema / properties / has_more / descriptionRemoved value: -"True if more pages follow." - removed
Output schema / properties / items / items / properties / active / descriptionRemoved value: -"False means archived."
- Changed
list_work_item_enum_options10 fields changed- removed
Input schema / properties / page_number / descriptionRemoved value: -"Page number to retrieve (1-based, default 1)." - removed
Input schema / properties / page_size / descriptionRemoved value: -"Number of options per page (1-100, default 100)." - removed
Output schema / properties / has_more / descriptionRemoved value: -"True if more pages follow." - changed
Output schema / properties / items / items / descriptionPrevious value: -"Single enum option returned by ``list_document_enum_options``.\n\nSurfaces only the attributes an LLM needs to pick a value before a\nwrite call. Other Polarion option fields (color, iconURL, columnWidth,\ncreateDefect, limited, minValue, oppositeName, parent,\nrequiresSignatureForTestCaseExecution, templateWorkItem) are not\nexposed."New value: +"Single enum option returned by ``list_*_enum_options``." - removed
Output schema / properties / items / items / properties / default / descriptionRemoved value: -"True when this option is the project default." - removed
Output schema / properties / items / items / properties / description / descriptionRemoved value: -"Option description; empty when Polarion has none." - removed
Output schema / properties / items / items / properties / hidden / descriptionRemoved value: -"True when the option is hidden in the UI; avoid selecting." - removed
Output schema / properties / items / items / properties / id / descriptionRemoved value: -"Option id; pass verbatim to write tools." - removed
Output schema / properties / items / items / properties / name / descriptionRemoved value: -"Human-readable display name." - removed
Output schema / properties / items / items / properties / terminal / descriptionRemoved value: -"For status fields, True for workflow end-states."
- Changed
list_work_item_links14 fields changed- removed
Input schema / properties / direction / descriptionRemoved value: -"'forward' (outgoing) or 'back' (incoming); call twice if both needed." - removed
Input schema / properties / page_number / descriptionRemoved value: -"Page number to retrieve (1-based, default 1)." - removed
Input schema / properties / page_size / descriptionRemoved value: -"Number of links per page (1-100, default 100)." - removed
Output schema / properties / has_more / descriptionRemoved value: -"True if more pages follow." - changed
Output schema / properties / items / items / descriptionPrevious value: -"A work item link with the target's summary metadata.\n\n``direction='forward'`` is an outgoing link (this work item links to\nthe target); ``'back'`` is an incoming link (the target links to this\nwork item). The back-direction Lucene fallback does not expose the\noriginating role, so ``role`` is ``None`` for every back-direction\nitem. ``suspect`` marks links whose target changed since the link\nwas last reviewed; it is only meaningful in the forward direction."New value: +"A work item link with the target's summary metadata." - removed
Output schema / properties / items / items / properties / direction / descriptionRemoved value: -"'forward' for outgoing links, 'back' for incoming." - removed
Output schema / properties / items / items / properties / document_name / descriptionRemoved value: -"Linked item's document name; empty when not module-bound." - removed
Output schema / properties / items / items / properties / id / descriptionRemoved value: -"Linked Work Item ID (e.g. 'MCPT-002')." - removed
Output schema / properties / items / items / properties / role / descriptionRemoved value: -"Link role (e.g. 'parent'); None on back-direction links." - removed
Output schema / properties / items / items / properties / space_id / descriptionRemoved value: -"Linked item's document space; empty when not module-bound." - removed
Output schema / properties / items / items / properties / status / descriptionRemoved value: -"Linked work item workflow status; empty when unreported." - removed
Output schema / properties / items / items / properties / suspect / descriptionRemoved value: -"True when the link is marked as suspect." - removed
Output schema / properties / items / items / properties / title / descriptionRemoved value: -"Linked Work Item title." - removed
Output schema / properties / items / items / properties / type / descriptionRemoved value: -"Linked work item type; empty when unreported."
- Changed
list_work_items13 fields changed- removed
Input schema / properties / page_number / descriptionRemoved value: -"Page number to retrieve (1-based, default 1)." - removed
Input schema / properties / page_size / descriptionRemoved value: -"Number of work items per page (1-100, default 100)." - removed
Output schema / properties / has_more / descriptionRemoved value: -"True if more pages follow." - changed
Output schema / properties / items / items / descriptionPrevious value: -"Compact work-item representation for list and search results.\n\n``space_id`` + ``document_name`` together address the containing\ndocument (both empty when the work item is free-floating); pass them\nto ``get_document`` / ``read_document_parts``."New value: +"Compact work-item representation for list and search results." - removed
Output schema / properties / items / items / properties / assignee_ids / descriptionRemoved value: -"Short user IDs of assignees; empty list when unassigned." - removed
Output schema / properties / items / items / properties / document_name / descriptionRemoved value: -"Containing document name; empty when free-floating." - removed
Output schema / properties / items / items / properties / id / descriptionRemoved value: -"Work Item ID (e.g. 'MCPT-001')." - removed
Output schema / properties / items / items / properties / priority / descriptionRemoved value: -"Priority value as a string (e.g. '90.0'); empty when unset." - removed
Output schema / properties / items / items / properties / space_id / descriptionRemoved value: -"Containing document's space; empty when free-floating." - removed
Output schema / properties / items / items / properties / status / descriptionRemoved value: -"Workflow status (e.g. 'draft', 'approved')." - removed
Output schema / properties / items / items / properties / title / descriptionRemoved value: -"Work Item title." - removed
Output schema / properties / items / items / properties / type / descriptionRemoved value: -"Work Item type (e.g. 'requirement', 'testCase')." - removed
Output schema / properties / items / items / properties / updated / descriptionRemoved value: -"ISO-8601 last-modified timestamp; empty when unreported."
- Changed
move_work_item_from_document5 fields changed- removed
Output schema / $defsRemoved value: -{ - "JsonValue": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "items": { - "$ref": "#/$defs/JsonValue" - }, - "type": "array" - }, - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } - ] - } -} - removed
Output schema / properties / dry_run / descriptionRemoved value: -"Whether this was a dry-run." - removed
Output schema / properties / moved / descriptionRemoved value: -"True on a real move; False on dry-run." - changed
Output schema / properties / payload_preview / anyOfPrevious value: -[ - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / payload_preview / descriptionRemoved value: -"Request payload sent or previewed; None after real ops."
- Changed
move_work_item_to_document5 fields changed- removed
Output schema / $defsRemoved value: -{ - "JsonValue": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "items": { - "$ref": "#/$defs/JsonValue" - }, - "type": "array" - }, - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } - ] - } -} - removed
Output schema / properties / dry_run / descriptionRemoved value: -"Whether this was a dry-run." - removed
Output schema / properties / moved / descriptionRemoved value: -"True on a real move; False on dry-run." - changed
Output schema / properties / payload_preview / anyOfPrevious value: -[ - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / payload_preview / descriptionRemoved value: -"Request payload sent or previewed; None after real ops."
- Changed
read_document9 fields changed- removed
Input schema / properties / page_number / descriptionRemoved value: -"Page number to retrieve (1-based, default 1)." - removed
Input schema / properties / page_size / descriptionRemoved value: -"Number of parts per page (1-100, default 100)." - changed
Output schema / descriptionPrevious value: -"Rendered Markdown view of one page of document parts.\n\nReturned by ``read_document``. Interleaves heading titles, embedded\nwork-item descriptions, and inline prose from a single page of\n``read_document_parts`` into a flowing Markdown stream suitable for\nend-to-end reading by an LLM.\n\nThe output is read-only synthesis: it cannot be fed back to any\nwrite tool because no update path accepts this shape. For round-trip\nediting of the document body, fetch the raw source via\n``get_document(include_homepage_content_html=True)`` instead.\n\n``part_count`` reflects parts consumed from ``read_document_parts``\non this page — including widget placeholders that produce no output\n— so use it for pagination accounting, not chunk count."New value: +"Rendered Markdown view of one page of document parts (``read_document``)." - removed
Output schema / properties / content / descriptionRemoved value: -"Rendered Markdown for this page." - removed
Output schema / properties / has_more / descriptionRemoved value: -"True when more pages of parts follow." - removed
Output schema / properties / page / descriptionRemoved value: -"Current page number (1-based)." - removed
Output schema / properties / page_size / descriptionRemoved value: -"Maximum number of parts per page." - removed
Output schema / properties / part_count / descriptionRemoved value: -"Number of parts consumed on this page." - removed
Output schema / properties / total_parts / descriptionRemoved value: -"Total parts across the entire document."
- Changed
read_document_parts16 fields changed- removed
Input schema / properties / page_number / descriptionRemoved value: -"Page number to retrieve (1-based, default 1)." - removed
Input schema / properties / page_size / descriptionRemoved value: -"Number of parts per page (1-100, default 100)." - removed
Output schema / properties / has_more / descriptionRemoved value: -"True if more pages follow." - changed
Output schema / properties / items / items / descriptionPrevious value: -"A single part (heading or work item) within a Polarion document.\n\nField population varies by ``type``:\n\n* ``heading`` — text in ``title``, depth in ``level``, ``work_item_*``\n fields point at the heading work item.\n* ``workitem`` — body in ``description`` (Markdown), metadata on\n ``work_item_*``, ``content`` empty.\n* ``normal`` / ``wikiblock`` — body in ``content`` (Markdown).\n* ``toc`` / ``tof`` / ``page_break`` — widget placeholders, all body\n fields empty. ``tof`` and ``page_break`` are inferred from the part\n ID prefix because Polarion reports both as plain ``normal``.\n\nUse ``id`` as ``previous_part_id`` / ``next_part_id`` when calling\n``move_work_item_to_document``. ``work_item_id`` plugs straight into\n``get_work_item`` / ``list_work_item_links``."New value: +"A single part (heading or work item) within a Polarion document." - removed
Output schema / properties / items / items / properties / content / descriptionRemoved value: -"Part body in Markdown; empty unless body lives here." - removed
Output schema / properties / items / items / properties / description / descriptionRemoved value: -"Linked work item body as Markdown; only set on 'workitem' parts." - removed
Output schema / properties / items / items / properties / external / descriptionRemoved value: -"True when the part is re-used from another project (read-only)." - removed
Output schema / properties / items / items / properties / id / descriptionRemoved value: -"Short part identifier (e.g. 'workitem_MCPT-042')." - removed
Output schema / properties / items / items / properties / level / descriptionRemoved value: -"Heading level (1-4) for heading parts; 0 otherwise." - removed
Output schema / properties / items / items / properties / next_part_id / descriptionRemoved value: -"Short ID of the next part; empty on the last part." - removed
Output schema / properties / items / items / properties / outline_number / descriptionRemoved value: -"Hierarchical position (e.g. '1.2.3'); empty for prose / widgets." - removed
Output schema / properties / items / items / properties / title / descriptionRemoved value: -"Part title or heading text." - removed
Output schema / properties / items / items / properties / type / descriptionRemoved value: -"Part type; see class docstring for body-field mapping." - removed
Output schema / properties / items / items / properties / work_item_id / descriptionRemoved value: -"Linked Work Item ID; empty unless 'workitem' / 'heading'." - removed
Output schema / properties / items / items / properties / work_item_status / descriptionRemoved value: -"Linked work item status; empty unless 'workitem' / 'heading'." - removed
Output schema / properties / items / items / properties / work_item_type / descriptionRemoved value: -"Linked work item type; empty unless 'workitem' / 'heading'."
- Changed
read_work_item22 fields changed- changed
Output schema / descriptionPrevious value: -"LLM-friendly work-item view returned by ``read_work_item``.\n\nMirrors ``WorkItemDetail`` but exposes ``description`` as Markdown\n(converted from Polarion HTML) instead of the raw ``description_html``.\nRead-only synthesis: the Markdown body cannot be fed back to\n``update_work_item`` (the converter collapses Polarion-specific\nmarkup). For round-trip editing, use\n``get_work_item(include_description_html=True)`` paired with\n``update_work_item(description_html=...)``.\n\n``custom_fields`` keeps rich-text values as\n``{'type': 'text/html', 'value': '<...>'}`` dicts so this dict alone\ncan be copied back into ``update_work_item(custom_fields=...)``."New value: +"LLM-friendly work-item view returned by ``read_work_item``." - removed
Output schema / properties / assignee_ids / descriptionRemoved value: -"Short user IDs of assignees; empty list when unassigned." - removed
Output schema / properties / author_id / descriptionRemoved value: -"Short user ID of the author; empty when unreported." - removed
Output schema / properties / created / descriptionRemoved value: -"ISO-8601 creation timestamp; empty when unreported." - removed
Output schema / properties / custom_fields / descriptionRemoved value: -"Project-defined custom fields keyed by field ID." - removed
Output schema / properties / description / descriptionRemoved value: -"Body as Markdown; read-only — do NOT feed to update_work_item." - removed
Output schema / properties / document_name / descriptionRemoved value: -"Containing document name; empty when free-floating." - removed
Output schema / properties / hyperlinks / descriptionRemoved value: -"External hyperlinks attached to this work item." - removed
Output schema / properties / hyperlinks / items / properties / role / descriptionRemoved value: -"Hyperlink role id (e.g. 'ref_ext')." - removed
Output schema / properties / hyperlinks / items / properties / title / descriptionRemoved value: -"Human-readable link title; empty when unset." - removed
Output schema / properties / hyperlinks / items / properties / uri / descriptionRemoved value: -"Target URI of the hyperlink." - removed
Output schema / properties / id / descriptionRemoved value: -"Work Item ID (e.g. 'MCPT-001')." - removed
Output schema / properties / outline_number / descriptionRemoved value: -"Hierarchical position (e.g. '1.2.3'); empty outside a document." - removed
Output schema / properties / priority / descriptionRemoved value: -"Priority value as a string (e.g. '90.0'); empty when unset." - removed
Output schema / properties / project_id / descriptionRemoved value: -"Project that contains this work item." - removed
Output schema / properties / resolution / descriptionRemoved value: -"Resolution outcome (e.g. 'fixed'); empty when unresolved." - removed
Output schema / properties / severity / descriptionRemoved value: -"Severity classification (e.g. 'critical'); empty for non-defects." - removed
Output schema / properties / space_id / descriptionRemoved value: -"Containing document's space; empty when free-floating." - removed
Output schema / properties / status / descriptionRemoved value: -"Workflow status (e.g. 'draft', 'approved')." - removed
Output schema / properties / title / descriptionRemoved value: -"Work Item title." - removed
Output schema / properties / type / descriptionRemoved value: -"Work Item type (e.g. 'requirement', 'testCase')." - removed
Output schema / properties / updated / descriptionRemoved value: -"ISO-8601 last-modified timestamp; empty when unreported."
- Changed
update_document7 fields changed- changed
Input schema / properties / dry_run / descriptionPrevious value: -"When True, return payload preview without calling Polarion."New value: +"When True, return the payload preview without writing; enum/custom-field guards still query Polarion, so the document must be readable and the validation endpoint reachable." - removed
Input schema / properties / title / descriptionRemoved value: -"New title (None to leave unchanged)." - removed
Output schema / $defsRemoved value: -{ - "JsonValue": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "items": { - "$ref": "#/$defs/JsonValue" - }, - "type": "array" - }, - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } - ] - } -} - removed
Output schema / properties / dry_run / descriptionRemoved value: -"Whether this was a dry-run." - changed
Output schema / properties / payload_preview / anyOfPrevious value: -[ - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / payload_preview / descriptionRemoved value: -"JSON:API payload sent or previewed; None after real ops." - removed
Output schema / properties / updated / descriptionRemoved value: -"True on a real PATCH; False on dry-run."
- Changed
update_document_comment7 fields changed- removed
Output schema / $defsRemoved value: -{ - "JsonValue": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "items": { - "$ref": "#/$defs/JsonValue" - }, - "type": "array" - }, - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } - ] - } -} - removed
Output schema / properties / comment_id / descriptionRemoved value: -"Short comment ID patched (e.g. 'c42'); None on dry-run." - removed
Output schema / properties / dry_run / descriptionRemoved value: -"Whether this was a dry-run." - changed
Output schema / properties / payload_preview / anyOfPrevious value: -[ - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / payload_preview / descriptionRemoved value: -"JSON:API payload sent or previewed; None after real ops." - removed
Output schema / properties / resolved / descriptionRemoved value: -"The resolved value sent (or that would be sent)." - removed
Output schema / properties / updated / descriptionRemoved value: -"True on a real PATCH; False on dry-run."
- Changed
update_work_item14 fields changed- changed
Input schema / properties / description_html / descriptionPrevious value: -"New raw Polarion HTML body (round-trip shape from get_work_item); '' is a no-op."New value: +"New raw Polarion HTML body (round-trip shape from get_work_item)." - changed
Input schema / properties / dry_run / descriptionPrevious value: -"When True, return payload preview without calling Polarion."New value: +"When True, return the payload preview without writing; enum/custom-field guards still query Polarion, so the work item must be readable and the validation endpoint reachable." - changed
Input schema / properties / hyperlinks / anyOfPrevious value: -[ - { - "items": { - "description": "A single external hyperlink attached to a work item.", - "properties": { - "role": { - "description": "Hyperlink role id (e.g. 'ref_ext').", - "type": "string" - }, - "title": { - "default": "", - "description": "Human-readable link title; empty when unset.", - "type": "string" - }, - "uri": { - "description": "Target URI of the hyperlink.", - "type": "string" - } - }, - "required": [ - "role", - "uri" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "description": "A single external hyperlink attached to a work item.", + "properties": { + "role": { + "type": "string" + }, + "title": { + "default": "", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "required": [ + "role", + "uri" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / severity / descriptionRemoved value: -"New severity classification." - removed
Input schema / properties / title / descriptionRemoved value: -"New title (None to leave unchanged)." - removed
Output schema / $defsRemoved value: -{ - "Hyperlink": { - "description": "A single external hyperlink attached to a work item.", - "properties": { - "role": { - "description": "Hyperlink role id (e.g. 'ref_ext').", - "type": "string" - }, - "title": { - "default": "", - "description": "Human-readable link title; empty when unset.", - "type": "string" - }, - "uri": { - "description": "Target URI of the hyperlink.", - "type": "string" - } - }, - "required": [ - "role", - "uri" - ], - "type": "object" - }, - "JsonValue": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "items": { - "$ref": "#/$defs/JsonValue" - }, - "type": "array" - }, - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } - ] - }, - "WorkItemDetail": { - "description": "Full work-item details returned by ``get_work_item``.\n\nExtends ``WorkItemSummary`` with the description, project context,\nand detail-only metadata (authorship, resolution, severity, outline\nposition, external hyperlinks).\n\n``description_html`` is the round-trip pair for\n``update_work_item(description_html=...)`` and must never pass through\na Markdown converter or sanitizer — doing so strips Polarion-specific\nspans and breaks the round-trip. ``custom_fields`` keeps rich-text\nvalues as ``{'type': 'text/html', 'value': '<...>'}`` dicts so the\nshape round-trips back unchanged.", - "properties": { - "assignee_ids": { - "description": "Short user IDs of assignees; empty list when unassigned.", - "items": { - "type": "string" - }, - "type": "array" - }, - "author_id": { - "default": "", - "description": "Short user ID of the author; empty when unreported.", - "type": "string" - }, - "created": { - "default": "", - "description": "ISO-8601 creation timestamp; empty when unreported.", - "type": "string" - }, - "custom_fields": { - "additionalProperties": true, - "description": "Project-defined custom fields keyed by field ID.", - "type": "object" - }, - "description_html": { - "default": "", - "description": "Raw Polarion HTML body; empty unless the read flag was True.", - "type": "string" - }, - "document_name": { - "default": "", - "description": "Containing document name; empty when free-floating.", - "type": "string" - }, - "hyperlinks": { - "description": "External hyperlinks attached to this work item.", - "items": { - "$ref": "#/$defs/Hyperlink" - }, - "type": "array" - }, - "id": { - "description": "Work Item ID (e.g. 'MCPT-001').", - "type": "string" - }, - "outline_number": { - "default": "", - "description": "Hierarchical position (e.g. '1.2.3'); empty outside a document.", - "type": "string" - }, - "priority": { - "default": "", - "description": "Priority value as a string (e.g. '90.0'); empty when unset.", - "type": "string" - }, - "project_id": { - "description": "Project that contains this work item.", - "type": "string" - }, - "resolution": { - "default": "", - "description": "Resolution outcome (e.g. 'fixed'); empty when unresolved.", - "type": "string" - }, - "severity": { - "default": "", - "description": "Severity classification (e.g. 'critical'); empty for non-defects.", - "type": "string" - }, - "space_id": { - "default": "", - "description": "Containing document's space; empty when free-floating.", - "type": "string" - }, - "status": { - "description": "Workflow status (e.g. 'draft', 'approved').", - "type": "string" - }, - "title": { - "description": "Work Item title.", - "type": "string" - }, - "type": { - "description": "Work Item type (e.g. 'requirement', 'testCase').", - "type": "string" - }, - "updated": { - "default": "", - "description": "ISO-8601 last-modified timestamp; empty when unreported.", - "type": "string" - } - }, - "required": [ - "id", - "title", - "type", - "status", - "project_id" - ], - "type": "object" - } -} - changed
Output schema / properties / changes / additionalPropertiesPrevious value: -{ - "$ref": "#/$defs/JsonValue" -}New value: +true - removed
Output schema / properties / changes / descriptionRemoved value: -"Map of field names to their new values in the PATCH." - changed
Output schema / properties / current / anyOfPrevious value: -[ - { - "$ref": "#/$defs/WorkItemDetail" - }, - { - "type": "null" - } -]New value: +[ + { + "description": "Full work-item details returned by ``get_work_item``.", + "properties": { + "assignee_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "author_id": { + "default": "", + "type": "string" + }, + "created": { + "default": "", + "type": "string" + }, + "custom_fields": { + "additionalProperties": true, + "type": "object" + }, + "description_html": { + "default": "", + "type": "string" + }, + "document_name": { + "default": "", + "type": "string" + }, + "hyperlinks": { + "items": { + "description": "A single external hyperlink attached to a work item.", + "properties": { + "role": { + "type": "string" + }, + "title": { + "default": "", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "required": [ + "role", + "uri" + ], + "type": "object" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "outline_number": { + "default": "", + "type": "string" + }, + "priority": { + "default": "", + "type": "string" + }, + "project_id": { + "type": "string" + }, + "resolution": { + "default": "", + "type": "string" + }, + "severity": { + "default": "", + "type": "string" + }, + "space_id": { + "default": "", + "type": "string" + }, + "status": { + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + }, + "updated": { + "default": "", + "type": "string" + } + }, + "required": [ + "id", + "title", + "type", + "status", + "project_id" + ], + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / current / descriptionRemoved value: -"Post-PATCH state for verification; None on dry-run." - removed
Output schema / properties / dry_run / descriptionRemoved value: -"Whether this was a dry-run." - changed
Output schema / properties / payload_preview / anyOfPrevious value: -[ - { - "additionalProperties": { - "$ref": "#/$defs/JsonValue" - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / payload_preview / descriptionRemoved value: -"JSON:API payload sent or previewed; None after real ops." - removed
Output schema / properties / updated / descriptionRemoved value: -"True on a real update; False on dry-run."
- Added
update_work_item_link - Removed
update_work_item_links
23 tool updates
v0.9.0- First observed
create_document - First observed
create_document_comments - First observed
create_work_item - First observed
create_work_item_links - First observed
delete_work_item_links - First observed
get_document - First observed
get_work_item - First observed
list_document_comments - First observed
list_document_enum_options - First observed
list_documents - First observed
list_projects - First observed
list_work_item_enum_options - First observed
list_work_item_links - First observed
list_work_items - First observed
move_work_item_from_document - First observed
move_work_item_to_document - First observed
read_document - First observed
read_document_parts - First observed
read_work_item - First observed
update_document - First observed
update_document_comment - First observed
update_work_item - First observed
update_work_item_links
TDQS
Scored across 46 tools
Tools are grouped by domain (document, work item, test record) with clear prefixes, and read vs. get vs. list are generally distinct (rendered Markdown vs. raw metadata vs. paginated listing). Some potential confusion exists between get_document/read_document and get_work_item/read_work_item, but descriptions clarify the difference.
Most tools follow a consistent verb_noun pattern (list_, get_, create_, update_) with domain prefixes (document_, work_item_, test_record_). Minor inconsistencies include singular 'comment' in update_document_comment/update_work_item_comment versus plural in list/create, and the use of 'read_' for rendering tools alongside 'get_' for metadata.
At 46 tools, the surface is very large, exceeding the 25+ threshold for a heavy set. While the domain complexity justifies many operations, the count borders on overwhelming, and some tools (e.g., separate attachment/comment tools for each entity type) could potentially be consolidated.
The tool set covers create, read, update, and list for most entities, but delete operations are largely absent: no delete_document, delete_work_item, delete_comment, or delete_attachment. The attachment descriptions explicitly state deletion is unsupported, which is a significant gap for workflows that require removing erroneous uploads.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
An MCP server that provides access to Testiny projects, test cases and test runs
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP (Model Context Protocol) server for Codebeamer ALM. Allows Claude and other MCP clients to read and write projects, trackers, and items in Codebeamer using natural language.1936 npm9MIT
- AlicenseAqualityAmaintenanceAI-native Model Context Protocol (MCP) server for TestRail. Lets Claude, Cursor, Windsurf, and other AI assistants browse projects, create and update test cases, kick off test runs, and record results through natural-language conversation — with strongly-typed tool schemas and per-project custom field validation that helps LLMs generate valid TestRail requests on the first try.281,548 npm37Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA CLI-first Polarion ALM client with MCP server support for AI assistants, enabling natural language interaction with Polarion projects, work items, tests, and plans.4MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that connects your AI IDE to Jira. Query your tickets, active sprint, and issue details directly from GitHub Copilot, Cursor, Claude Desktop, or any MCP-compatible client.24 npmISC