Skip to main content
Glama

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

CI Publish PyPI Python 3.13+ License: MIT

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.

mcp-server-polarion demo

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-polarion

Other clients (VS Code, Claude Desktop, Cursor) — see Client Configuration.

Tools

Read

Tool

Description

list_projects

List accessible projects

list_documents

List documents in a project

list_work_items

List work items in a project (Lucene/SQL query)

list_test_runs

List test runs in a project (Lucene query, templates filter)

get_test_run

Get test run details, optionally with the raw HTML report body

list_test_records

List a test run's execution records, one per test case iteration

get_test_record

Get one test record's execution comment and test-case revision

get_sql_query_recipes

Fetch copy-paste SQL recipes for advanced queries

get_html_recipes

Fetch copy-paste Polarion HTML templates for raw-HTML body edits

get_document

Get document metadata, optionally with the raw body HTML

read_document

Render a document end-to-end as Markdown

read_document_parts

List a document's structural parts with embedded work item metadata

get_work_item

Get work item details with the body as raw HTML

read_work_item

Get work item details with the body as Markdown

list_work_item_links

List a work item's outgoing or incoming links

list_document_attachments

List a document's attachments with file name, size, and author

get_document_attachment_content

Fetch an image attachment for viewing (bitmap as image, SVG as text)

list_work_item_attachments

List a work item's attachments with file name, size, and author

get_work_item_attachment_content

Fetch a work item image attachment for viewing (bitmap as image, SVG as text)

list_test_record_attachments

List a test record's attachments with file name, size, and author

get_test_record_attachment_content

Fetch a test record image attachment for viewing (bitmap as image, SVG as text)

list_document_comments

List a document's comments with thread relationships

list_work_item_comments

List a work item's comments with thread relationships

list_document_enum_options

Resolve valid enum ids for a document field

list_work_item_enum_options

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_work_items

Create one or more work items in a single request

update_work_items

Update fields, body, or workflow status on one or more work items

create_document

Create a new document

update_document

Update document metadata, body, or workflow status

copy_document

Copy a document to a new name, space, or project

create_test_runs

Create one or more test runs, optionally from a template

create_test_records

Record test-case execution results on a test run

update_test_runs

Update title, status, group, or custom fields on one or more test runs

update_test_records

Update result, comment, or defect link on one or more test records of a test run

create_work_item_links

Create one or more outgoing links from a source work item

update_work_item_link

Update suspect / revision on one outgoing link

delete_work_item_links

Delete one or more outgoing links from a source work item

move_work_item_to_document

Attach a work item to a document at a chosen position

move_work_item_from_document

Detach a work item from its document

create_document_attachments

Upload one or more local files as document attachments

create_work_item_attachments

Upload one or more local files as work item attachments

create_test_record_attachments

Upload one or more local files as test record attachments

create_document_comments

Add one or more comments or replies to a document

create_work_item_comments

Add one or more comments or replies to a work item

update_document_comment

Resolve or re-open a document comment

update_work_item_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 uv

No other installation is needed — uvx mcp-server-polarion downloads and runs the server automatically.

Environment Variables

Variable

Description

Example

POLARION_URL

Base URL of your Polarion instance

https://polarion.example.com

POLARION_TOKEN

Personal Access Token for authentication

your-personal-access-token

POLARION_MAX_REQUESTS_PER_SECOND

Optional. Client-side request rate cap — raise it to match your deployment's throttle, or set 0 to disable pacing. Writes keep a fixed extra pause regardless (default: 1)

1

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-polarion

Contributing

Bug reports and pull requests are welcome — see CONTRIBUTING.md for branch, commit, and review conventions.

License

MIT

Available Tools

46 tools
copy_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoPreview payload without writing; guards still query Polarion.
revisionNoCopy the source as of this revision (HEAD if omitted).
space_idYesSource space ID ('_default' = default space).
project_idYesSource project ID.
document_nameYesSource document name.
target_space_idNoDestination space (source space if omitted).
target_project_idNoDestination project (source project if omitted).
target_document_nameYesNew document name; must not already exist at the destination.
remove_outgoing_linksNoStrip outgoing links from copied items (kept if omitted).
link_original_items_with_roleNoLink each copied item back to its original with this workitem-link-role id (e.g. 'duplicates').

Output Schema

ParametersJSON Schema
NameRequiredDescription
copiedYes
dry_runYes
document_nameYes
payload_previewYes
target_space_idYes
target_project_idYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesDocument type (e.g. 'req_specification', 'generic').
titleYesHuman-readable document title.
statusNoInitial workflow status (project default if omitted).
dry_runNoPreview payload without writing; guards still query Polarion.
space_idYesSpace ID ('_default' = default space).
project_idYesPolarion project ID.
auto_suspectNoFlag linked work items suspect on change.
custom_fieldsNoKeyed by Polarion field ID (copy keys from a sibling document); rich-text values as {'type':'text/html','value':...}.
document_nameYesDocument name (e.g. 'MySpecV1'); unique within space_id, appears in the document URL.
home_page_contentNoMarkdown body; converted to sanitized HTML.
rendering_layout_typesNoWork item type IDs the document will hold (e.g. ['softwarerequirement']); each gets a section layout.
uses_outline_numberingNoEnable auto outline numbers (1, 1.1, ...).

Output Schema

ParametersJSON Schema
NameRequiredDescription
createdYes
dry_runYes
document_nameYes
payload_previewYes

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoPreview payload without calling Polarion.
space_idYesSpace ID ('_default' = default space).
project_idYesPolarion project ID.
attachmentsYesFiles to upload in one request.
document_nameYesDocument name within space_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
createdYes
dry_runYes
attachment_idsYes
payload_previewYes

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoPreview payload without writing; guards still query Polarion.
commentsYesComments to create in one request.
space_idYesSpace ID ('_default' = default space).
project_idYesPolarion project ID.
document_nameYesDocument name within space_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
createdYes
dry_runYes
comment_idsYes
payload_previewYes

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoPreview payload without calling Polarion.
iterationNoRecord iteration number (0-based).
project_idYesPolarion project ID.
attachmentsYesFiles to upload in one request.
test_run_idYesTest run ID (e.g. 'TR-2026-01').
test_case_idYesFull test case work item ID 'project/WI-id' as returned by list_test_records.

Output Schema

ParametersJSON Schema
NameRequiredDescription
createdYes
dry_runYes
attachment_idsYes
payload_previewYes

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesTest records to create in one request (1-50).
dry_runNoPreview payload without writing; guards still query Polarion.
project_idYesPolarion project ID.
test_run_idYesTest run ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
createdYes
dry_runYes
record_idsNo
payload_previewNo

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesTest runs to create in one request (1-50).
dry_runNoPreview payload without writing; guards still query Polarion.
project_idYesPolarion project ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
createdYes
dry_runYes
test_run_idsNo
payload_previewNo

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoPreview payload without calling Polarion.
project_idYesPolarion project ID.
attachmentsYesFiles to upload in one request.
work_item_idYesWork item ID within project_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
createdYes
dry_runYes
attachment_idsYes
payload_previewYes

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoPreview payload without writing; guards still query Polarion.
commentsYesComments to create in one request.
project_idYesPolarion project ID.
work_item_idYesWork item ID, e.g. 'MCPT-001'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
createdYes
dry_runYes
comment_idsYes
payload_previewYes

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesWork items to create in one request (1-50).
dry_runNoPreview payload without writing; guards still query Polarion.
project_idYesPolarion project ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
createdYes
dry_runYes
work_item_idsNo
payload_previewNo

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

get_documentA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
space_idYesSpace ID ('_default' = default space).
project_idYesPolarion project ID.
document_nameYesDocument name within space_id.
include_home_page_content_htmlNoFill content_html with raw HTML for round-trip editing.

Output Schema

ParametersJSON Schema
NameRequiredDescription
typeNo
titleYes
statusNo
createdNo
updatedNo
author_idNo
author_nameNo
auto_suspectNo
content_htmlNo
custom_fieldsNo
last_updated_by_idNo
last_updated_by_nameNo
rendering_layout_typesNo
uses_outline_numberingNo

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_contentA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
space_idYesSpace ID ('_default' = default space).
project_idYesPolarion project ID.
attachment_idYesAttachment id (bare filename token) from list_document_attachments.
document_nameYesDocument name within space_id.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_recipesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
recipesYes

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_recipesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
recipesYes

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_recordA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
iterationNoRecord iteration number (0-based).
project_idYesPolarion project ID.
test_run_idYesTest run ID (e.g. 'TR-2026-01').
test_case_idYesFull test case work item ID 'project/WI-id' as returned by list_test_records.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
resultNo
durationNo
executedNo
defect_idNo
iterationNo
project_idYes
test_run_idYes
comment_htmlNo
test_case_idYes
executed_by_idNo
executed_by_nameNo
test_case_revisionNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the input schema 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.

Purpose5/5

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

The description uses a specific verb ('Get 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.

Usage Guidelines5/5

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_contentA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
iterationNoRecord iteration number (0-based).
project_idYesPolarion project ID.
test_run_idYesTest run ID (e.g. 'TR-2026-01').
test_case_idYesFull test case work item ID 'project/WI-id' as returned by list_test_records.
attachment_idYesAttachment id ({testCaseId}_{fileName} token) from list_test_record_attachments.

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds 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.

Purpose5/5

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.

Usage Guidelines5/5

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_runA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesPolarion project ID.
test_run_idYesTest run ID (e.g. 'TR-2026-01').
include_home_page_content_htmlNoFill content_html with the run's raw HTML report body.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
typeYes
queryNo
titleYes
statusYes
createdNo
updatedNo
group_idNo
space_idNo
author_idNo
project_idYes
author_nameNo
finished_onNo
is_templateNo
template_idNo
content_htmlNo
custom_fieldsNo
document_nameNo
select_test_cases_byNo
use_report_from_templateNo

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_itemA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesPolarion project ID.
work_item_idYesWork item ID (e.g. 'MCPT-001').
include_description_htmlNoFill description_html with raw HTML for round-trip editing.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
typeYes
titleYes
statusYes
createdNo
updatedNo
priorityNo
severityNo
space_idNo
author_idNo
hyperlinksNo
project_idYes
resolutionNo
author_nameNo
assignee_idsNo
custom_fieldsNo
document_nameNo
assignee_namesNo
outline_numberNo
description_htmlNo

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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_contentA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesPolarion project ID.
work_item_idYesWork item ID within project_id.
attachment_idYesAttachment id (bare filename token) from list_work_item_attachments.

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given there is no output schema, 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_attachmentsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
space_idYesSpace ID ('_default' = default space).
page_sizeNo
project_idYesPolarion project ID.
page_numberNo
document_nameYesDocument name within space_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
itemsYes
has_moreNo
page_sizeYes
total_countYes

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_commentsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
space_idYesSpace ID ('_default' = default space).
page_sizeNo
project_idYesPolarion project ID.
page_numberNo
document_nameYesDocument name within space_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
itemsYes
has_moreNo
page_sizeYes
total_countYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_optionsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
field_idYese.g. 'status', 'type', or a custom field id.
page_sizeNo
project_idYesPolarion project ID.
page_numberNo
document_typeYese.g. 'systemReqSpecification'; '~' = type-agnostic.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
itemsYes
has_moreNo
page_sizeYes
total_countYes

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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

The description uses a specific verb ('list') and 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.

Usage Guidelines5/5

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_documentsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNo
project_idYesPolarion project ID.
page_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
itemsYes
has_moreNo
page_sizeYes
total_countYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_projectsA
Read-only

List accessible Polarion projects — the source of project ids.

Lucene query allows trailing wildcards (name:ILCU*); leading ones are rejected.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional Lucene filter (e.g. 'name:ILCU*'); trailing wildcards only.
page_sizeNo
page_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
itemsYes
has_moreNo
page_sizeYes
total_countYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

The description uses a specific verb ('List') and resource ('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.

Usage Guidelines4/5

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_attachmentsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
iterationNoRecord iteration number (0-based).
page_sizeNo
project_idYesPolarion project ID.
page_numberNo
test_run_idYesTest run ID (e.g. 'TR-2026-01').
test_case_idYesFull test case work item ID 'project/WI-id' as returned by list_test_records.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
itemsYes
has_moreNo
page_sizeYes
total_countYes

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_recordsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
resultNoFilter by result enum ID (e.g. 'passed', 'failed', 'blocked').
page_sizeNo
project_idYesPolarion project ID.
page_numberNo
test_run_idYesTest run ID (e.g. 'TR-2026-01').

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
itemsYes
has_moreNo
page_sizeYes
total_countYes

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_runsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional 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_sizeNo
templatesNoList template blueprints instead of actual run instances.
project_idYesPolarion project ID.
page_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
itemsYes
has_moreNo
page_sizeYes
total_countYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_attachmentsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNo
project_idYesPolarion project ID.
page_numberNo
work_item_idYesWork item ID within project_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
itemsYes
has_moreNo
page_sizeYes
total_countYes

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_commentsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNo
project_idYesPolarion project ID.
page_numberNo
work_item_idYesWork item ID, e.g. 'MCPT-001'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
itemsYes
has_moreNo
page_sizeYes
total_countYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_optionsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
field_idYese.g. 'status', 'type', 'severity', 'priority', or a custom field id.
page_sizeNo
project_idYesPolarion project ID.
page_numberNo
work_item_typeYese.g. 'task', 'requirement'; '~' = type-agnostic.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
itemsYes
has_moreNo
page_sizeYes
total_countYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_itemsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional Lucene filter (e.g. 'type:requirement', 'title:SRS*') OR a 'SQL:(...)' prefix for native SQL.
page_sizeNo
project_idYesPolarion project ID.
page_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
itemsYes
has_moreNo
page_sizeYes
total_countYes

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_documentA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoPreview payload without calling Polarion.
project_idYesPolarion project ID.
work_item_idYesWork item ID (e.g. 'MCPT-042').

Output Schema

ParametersJSON Schema
NameRequiredDescription
movedYes
dry_runYes
payload_previewYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_documentA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoPreview payload without calling Polarion.
project_idYesPolarion project ID.
next_part_idNoInsert BEFORE this part ID; exclusive with previous_part_id.
work_item_idYesWork item ID (e.g. 'MCPT-042').
target_space_idYesTarget space ID ('_default' = default space).
previous_part_idNoInsert AFTER this part ID; exclusive with next_part_id.
target_document_nameYesTarget document name within target_space_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
movedYes
dry_runYes
payload_previewYes

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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

For a tool with 7 parameters 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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_documentA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
space_idYesSpace ID ('_default' = default space).
page_sizeNo
project_idYesPolarion project ID.
page_numberNo
document_nameYesDocument name within space_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
contentYes
has_moreNo
page_sizeYes
part_countYes
total_partsYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_partsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
space_idYesSpace ID ('_default' = default space).
page_sizeNo
project_idYesPolarion project ID.
page_numberNo
document_nameYesDocument name within space_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
itemsYes
has_moreNo
page_sizeYes
total_countYes

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_itemA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesPolarion project ID.
work_item_idYesWork item ID (e.g. 'MCPT-001').

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
typeYes
titleYes
statusYes
createdNo
updatedNo
priorityNo
severityNo
space_idNo
author_idNo
hyperlinksNo
project_idYes
resolutionNo
author_nameNo
descriptionNo
assignee_idsNo
custom_fieldsNo
document_nameNo
assignee_namesNo
outline_numberNo

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_documentA
DestructiveIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoNew document type (e.g. 'req_specification').
titleNoNew document title.
statusNoNew status; prefer workflow_action for real transitions.
dry_runNoPreview payload without writing; guards still query Polarion.
space_idYesSpace ID ('_default' = default space).
project_idYesPolarion project ID.
auto_suspectNoFlag linked work items suspect on change.
custom_fieldsNoPartial; rich-text values as {'type':'text/html','value':...}.
document_nameYesDocument name within space_id.
workflow_actionNoWorkflow action ID.
home_page_content_htmlNoNew 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_typesNoWork item type IDs that render their fields in this document; REPLACES the current set, so pass every type to keep.
uses_outline_numberingNoEnable auto outline numbers (1, 1.1, ...).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dry_runYes
updatedYes
payload_previewYes

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_commentA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoPreview payload without calling Polarion.
resolvedYesNew resolved state.
space_idYesSpace ID ('_default' = default space).
comment_idYesShort comment ID (e.g. 'c42' from list_document_comments).
project_idYesPolarion project ID.
document_nameYesDocument name within space_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dry_runYes
updatedYes
resolvedYes
comment_idYes
payload_previewYes

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_recordsA
DestructiveIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesPer-record changes (1-50); unset fields stay unchanged.
dry_runNoPreview payload without writing; guards still query Polarion.
project_idYesPolarion project ID.
test_run_idYesTest run ID (e.g. 'TR-2026-01').

Output Schema

ParametersJSON Schema
NameRequiredDescription
dry_runYes
updatedYes
record_idsNo
payload_previewNo

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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

The description states a specific verb and resource: '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.

Usage Guidelines5/5

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_runsA
DestructiveIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesPer-run changes (1-50); unset fields stay unchanged.
dry_runNoPreview payload without writing; guards still query Polarion.
project_idYesPolarion project ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dry_runYes
updatedYes
test_run_idsNo
payload_previewNo

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_commentA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoPreview payload without calling Polarion.
resolvedYesNew resolved state.
comment_idYesShort comment ID (e.g. 'c42' from list_work_item_comments).
project_idYesPolarion project ID.
work_item_idYesWork item ID, e.g. 'MCPT-001'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dry_runYes
updatedYes
resolvedYes
comment_idYes
payload_previewYes

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_itemsA
DestructiveIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesPer-item changes (1-50). hyperlinks/assignee_ids REPLACE the stored lists — read each item first and pass full lists, not deltas.
dry_runNoPreview payload without writing; guards still query Polarion.
project_idYesPolarion project ID.
change_type_toNoNew work-item type for EVERY item; RESETS status.
workflow_actionNoWorkflow action ID (e.g. 'close'); applies to EVERY item.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dry_runYes
updatedYes
work_item_idsNo
payload_previewNo

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 17 tool updatesv2.1.0
    • Changedcreate_document1 field changed
      • addedInput schema / properties / rendering_layout_types
        Added 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."
        +}
    • Addedcreate_document_comments
    • Addedcreate_test_record_attachments
    • Addedcreate_test_records
    • Addedcreate_test_runs
    • Addedcreate_work_item_attachments
    • Addedcreate_work_item_links
    • Changedget_document1 field changed
      • addedOutput schema / properties / rendering_layout_types
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Addedget_document_attachment_content
    • Addedget_html_recipes
    • Addedget_test_record
    • Addedget_test_record_attachment_content
    • Addedget_work_item_attachment_content
    • Addedlist_document_attachments
    • Addedlist_projects
    • Addedmove_work_item_to_document
    • Changedupdate_document1 field changed
      • addedInput schema / properties / rendering_layout_types
        Added 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."
        +}
  2. 20 tool updatesv2.0.0
    • Removedcreate_document_comments
    • Removedcreate_test_record_attachments
    • Addeddelete_work_item_links
    • Addedget_sql_query_recipes
    • Removedget_test_record_attachment_content
    • Addedget_test_run
    • Removedlist_document_attachments
    • Addedlist_documents
    • Removedlist_projects
    • Addedlist_test_record_attachments
    • Addedlist_test_records
    • Addedlist_test_runs
    • Addedlist_work_item_comments
    • Addedlist_work_item_enum_options
    • Addedlist_work_item_links
    • Addedmove_work_item_from_document
    • Addedread_work_item
    • Addedupdate_document
    • Addedupdate_document_comment
    • Addedupdate_work_item_link
  3. 37 tool updatesv2.0.0
    • Addedcopy_document
    • Changedcreate_document4 fields changed
      • addedInput schema / properties / document_name
        Added value: +{
        +  "description": "Document name (e.g. 'MySpecV1'); unique within space_id, appears in the document URL.",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • removedInput schema / properties / module_name
        Removed value: -{
        -  "description": "Document identifier (e.g. 'MySpecV1'); unique within space_id, appears in the document URL.",
        -  "minLength": 1,
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "project_id",
        -  "space_id",
        -  "module_name",
        -  "title",
        -  "type"
        -]New value: +[
        +  "project_id",
        +  "space_id",
        +  "document_name",
        +  "title",
        +  "type"
        +]
      • changedOutput schema / description
        Previous value: -"Result of a ``create_document`` operation."New value: +"``create_document`` result."
    • Addedcreate_document_attachments
    • Changedcreate_document_comments5 fields changed
      • changedInput schema / properties / comments / items / description
        Previous value: -"Common fields for a comment to create; base for type-specific specs."New value: +"Common create fields; base for type-specific specs."
      • removedInput schema / properties / comments / items / properties / author_id
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • changedInput schema / properties / document_name / description
        Previous value: -"Document name within ``space_id``."New value: +"Document name within space_id."
      • changedInput schema / properties / dry_run / description
        Previous value: -"Preview payload without calling Polarion."New value: +"Preview payload without writing; guards still query Polarion."
      • changedOutput schema / description
        Previous value: -"Result of a comment-create operation."New value: +"Comment-create result."
    • Addedcreate_test_record_attachments
    • Removedcreate_test_runs
    • Changedcreate_work_item_comments4 fields changed
      • changedInput schema / properties / comments / items / description
        Previous 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)."
      • removedInput schema / properties / comments / items / properties / author_id
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • changedInput schema / properties / dry_run / description
        Previous value: -"Preview payload without calling Polarion."New value: +"Preview payload without writing; guards still query Polarion."
      • changedOutput schema / description
        Previous value: -"Result of a comment-create operation."New value: +"Comment-create result."
    • Removedcreate_work_item_links
    • Changedcreate_work_items3 fields changed
      • changedInput schema / properties / items / items / description
        Previous value: -"One work item to create via ``create_work_items``."New value: +"One work item to create via create_work_items."
      • changedInput schema / properties / items / items / properties / hyperlinks / anyOf
        Previous 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"
        +  }
        +]
      • changedOutput schema / description
        Previous value: -"Result of a ``create_work_items`` operation."New value: +"``create_work_items`` result."
    • Removeddelete_work_item_links
    • Changedget_document10 fields changed
      • addedInput schema / properties / include_home_page_content_html
        Added value: +{
        +  "default": false,
        +  "description": "Fill content_html with raw HTML for round-trip editing.",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / include_homepage_content_html
        Removed value: -{
        -  "default": false,
        -  "description": "Fill content_html with raw HTML for round-trip editing.",
        -  "type": "boolean"
        -}
      • changedOutput schema / description
        Previous value: -"Full details of a Polarion document returned by ``get_document``."New value: +"Full Polarion document detail from ``get_document``."
      • removedOutput schema / properties / author
        Removed value: -{
        -  "default": "",
        -  "type": "string"
        -}
      • addedOutput schema / properties / author_id
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • addedOutput schema / properties / author_name
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • addedOutput schema / properties / created
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • removedOutput schema / properties / last_updated_by
        Removed value: -{
        -  "default": "",
        -  "type": "string"
        -}
      • addedOutput schema / properties / last_updated_by_id
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • addedOutput schema / properties / last_updated_by_name
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
    • Removedget_html_recipes
    • Removedget_sql_query_recipes
    • Addedget_test_record_attachment_content
    • Changedget_work_item5 fields changed
      • changedInput schema / properties / include_description_html / description
        Previous value: -"Fill ``description_html`` with raw HTML for round-trip editing."New value: +"Fill description_html with raw HTML for round-trip editing."
      • changedOutput schema / description
        Previous value: -"Full work-item details returned by ``get_work_item``."New value: +"Full work-item detail from ``get_work_item``."
      • addedOutput schema / properties / assignee_names
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / author_name
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • changedOutput schema / properties / hyperlinks / items / description
        Previous value: -"A single external hyperlink attached to a work item."New value: +"Single external hyperlink on a work item."
    • Addedlist_document_attachments
    • Changedlist_document_comments4 fields changed
      • changedInput schema / properties / document_name / description
        Previous value: -"Document name within ``space_id``."New value: +"Document name within space_id."
      • changedOutput schema / properties / items / items / description
        Previous value: -"A single comment returned by the comment list tools."New value: +"Single comment from comment list tools."
      • removedOutput schema / properties / items / items / properties / author_id
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • addedOutput schema / properties / items / items / properties / author_name
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
    • Changedlist_document_enum_options1 field changed
      • changedOutput schema / properties / items / items / description
        Previous value: -"Single enum option returned by ``list_*_enum_options``."New value: +"Single enum option from ``list_*_enum_options``."
    • Removedlist_documents
    • Changedlist_projects1 field changed
      • changedOutput schema / properties / items / items / description
        Previous value: -"Summary of a Polarion project returned by ``list_projects``."New value: +"Polarion project summary from ``list_projects``."
    • Removedlist_test_runs
    • Addedlist_work_item_attachments
    • Removedlist_work_item_comments
    • Removedlist_work_item_enum_options
    • Removedlist_work_item_links
    • Changedlist_work_items3 fields changed
      • changedOutput schema / properties / items / items / description
        Previous value: -"Compact work-item representation for list and search results."New value: +"Compact work-item view for list + search results."
      • removedOutput schema / properties / items / items / properties / assignee_ids
        Removed value: -{
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / items / items / properties / author_name
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
    • Removedmove_work_item_from_document
    • Removedmove_work_item_to_document
    • Changedread_document_parts1 field changed
      • changedOutput schema / properties / items / items / description
        Previous value: -"A single part (heading or work item) within a Polarion document."New value: +"Single part (heading or work item) within Polarion document."
    • Removedread_work_item
    • Removedupdate_document
    • Removedupdate_document_comment
    • Addedupdate_test_records
    • Addedupdate_test_runs
    • Changedupdate_work_item_comment1 field changed
      • changedOutput schema / description
        Previous value: -"Shared result of a comment-resolve update, across all comment types."New value: +"Comment-resolve update result, shared across comment types."
    • Removedupdate_work_item_link
    • Changedupdate_work_items4 fields changed
      • changedInput schema / properties / items / items / description
        Previous 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."
      • changedInput schema / properties / items / items / properties / description_html / description
        Previous 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."
      • changedInput schema / properties / items / items / properties / hyperlinks / anyOf
        Previous 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"
        +  }
        +]
      • changedOutput schema / description
        Previous value: -"Result of an ``update_work_items`` operation."New value: +"``update_work_items`` result."
  4. 15 tool updatesv1.4.1
    • Changedcreate_document2 fields changed
      • addedInput schema / properties / auto_suspect
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Flag linked work items suspect on change."
        +}
      • addedInput schema / properties / uses_outline_numbering
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Enable auto outline numbers (1, 1.1, ...)."
        +}
    • Changedcreate_document_comments1 field changed
      • addedInput schema / properties / comments / items / additionalProperties
        Added value: +false
    • Addedcreate_test_runs
    • Changedcreate_work_item_comments1 field changed
      • addedInput schema / properties / comments / items / additionalProperties
        Added value: +false
    • Changedcreate_work_item_links1 field changed
      • addedInput schema / properties / links / items / additionalProperties
        Added value: +false
    • Changedcreate_work_items2 fields changed
      • addedInput schema / properties / items / items / additionalProperties
        Added value: +false
      • changedInput schema / properties / items / items / properties / hyperlinks / anyOf
        Previous 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"
        +  }
        +]
    • Changeddelete_work_item_links1 field changed
      • addedInput schema / properties / links / items / additionalProperties
        Added value: +false
    • Changedget_document2 fields changed
      • addedOutput schema / properties / auto_suspect
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / uses_outline_numbering
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
    • Addedget_html_recipes
    • Changedget_work_item1 field changed
      • addedOutput schema / properties / hyperlinks / items / additionalProperties
        Added value: +false
    • Addedlist_test_runs
    • Changedread_work_item1 field changed
      • addedOutput schema / properties / hyperlinks / items / additionalProperties
        Added value: +false
    • Changedupdate_document3 fields changed
      • addedInput schema / properties / auto_suspect
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Flag linked work items suspect on change."
        +}
      • changedInput schema / properties / home_page_content_html / description
        Previous 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."
      • addedInput schema / properties / uses_outline_numbering
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Enable auto outline numbers (1, 1.1, ...)."
        +}
    • Removedupdate_work_item
    • Addedupdate_work_items
  5. 24 tool updatesv1.4.0
    • Changedcreate_document7 fields changed
      • changedInput schema / properties / custom_fields / description
        Previous 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':...}."
      • changedInput schema / properties / dry_run / description
        Previous 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."
      • changedInput schema / properties / home_page_content / description
        Previous value: -"Optional Markdown body; converted to sanitized HTML on write."New value: +"Markdown body; converted to sanitized HTML."
      • changedInput schema / properties / module_name / description
        Previous 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."
      • changedInput schema / properties / space_id / description
        Previous value: -"Space ID (use '_default' for the default space)."New value: +"Space ID ('_default' = default space)."
      • changedInput schema / properties / status / description
        Previous value: -"Optional initial workflow status (project default applies if omitted)."New value: +"Initial workflow status (project default if omitted)."
      • changedInput schema / properties / title / description
        Previous value: -"Human-readable document title (required, non-empty)."New value: +"Human-readable document title."
    • Changedcreate_document_comments5 fields changed
      • changedInput schema / properties / comments / description
        Previous value: -"One or more comments to create in a single request."New value: +"Comments to create in one request."
      • changedInput schema / properties / comments / items / description
        Previous value: -"One comment to create via ``create_document_comments``."New value: +"Common fields for a comment to create; base for type-specific specs."
      • changedInput schema / properties / dry_run / description
        Previous value: -"When True, return payload preview without calling Polarion."New value: +"Preview payload without calling Polarion."
      • changedInput schema / properties / space_id / description
        Previous value: -"Space ID (use '_default' for the default space)."New value: +"Space ID ('_default' = default space)."
      • changedOutput schema / description
        Previous value: -"Result of a ``create_document_comments`` operation."New value: +"Result of a comment-create operation."
    • Addedcreate_work_item_comments
    • Changedcreate_work_item_links3 fields changed
      • changedInput schema / properties / dry_run / description
        Previous value: -"When True, return payload preview without calling Polarion."New value: +"Preview payload without writing; guards still query Polarion."
      • changedInput schema / properties / links / description
        Previous 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)."
      • changedInput schema / properties / work_item_id / description
        Previous value: -"Source work item ID (the links' outgoing endpoint)."New value: +"Source work item ID."
    • Changedcreate_work_items2 fields changed
      • changedInput schema / properties / dry_run / description
        Previous 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."
      • changedInput schema / properties / items / description
        Previous 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)."
    • Changeddelete_work_item_links3 fields changed
      • changedInput schema / properties / dry_run / description
        Previous value: -"When True, return payload preview without calling Polarion."New value: +"Preview payload without deleting; the pre-read still queries Polarion."
      • changedInput schema / properties / links / description
        Previous value: -"One or more existing outgoing links to delete (1-50)."New value: +"Existing outgoing links to delete (1-50)."
      • changedInput schema / properties / work_item_id / description
        Previous value: -"Source work item ID (the links' outgoing endpoint)."New value: +"Source work item ID."
    • Changedget_document6 fields changed
      • changedInput schema / properties / document_name / description
        Previous value: -"Document name within the space (spaces handled automatically)."New value: +"Document name within space_id."
      • changedInput schema / properties / include_homepage_content_html / description
        Previous 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."
      • changedInput schema / properties / space_id / description
        Previous value: -"Space ID containing the document (e.g. '_default')."New value: +"Space ID ('_default' = default space)."
      • addedOutput schema / properties / author
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • addedOutput schema / properties / last_updated_by
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • addedOutput schema / properties / updated
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
    • Changedget_work_item2 fields changed
      • changedInput schema / properties / include_description_html / description
        Previous 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."
      • changedInput schema / properties / work_item_id / description
        Previous value: -"Work Item ID (e.g. 'MCPT-001')."New value: +"Work item ID (e.g. 'MCPT-001')."
    • Changedlist_document_comments4 fields changed
      • changedInput schema / properties / document_name / description
        Previous value: -"Document name within the space."New value: +"Document name within ``space_id``."
      • changedInput schema / properties / space_id / description
        Previous value: -"Space ID containing the document (e.g. '_default')."New value: +"Space ID ('_default' = default space)."
      • changedOutput schema / properties / items / items / description
        Previous value: -"A single document comment returned by ``list_document_comments``."New value: +"A single comment returned by the comment list tools."
      • addedOutput schema / properties / items / items / properties / title
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
    • Changedlist_document_enum_options2 fields changed
      • changedInput schema / properties / document_type / description
        Previous value: -"Document type id (e.g. 'systemReqSpecification'). Pass '~' for type-agnostic options."New value: +"e.g. 'systemReqSpecification'; '~' = type-agnostic."
      • changedInput schema / properties / field_id / description
        Previous value: -"Field id (e.g. 'status', 'type', or a custom field id)."New value: +"e.g. 'status', 'type', or a custom field id."
    • Changedlist_documents4 fields changed
      • addedOutput schema / properties / items / items / properties / author
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • addedOutput schema / properties / items / items / properties / last_updated_by
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • addedOutput schema / properties / items / items / properties / status
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • addedOutput schema / properties / items / items / properties / updated
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
    • Addedlist_work_item_comments
    • Changedlist_work_item_enum_options2 fields changed
      • changedInput schema / properties / field_id / description
        Previous 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."
      • changedInput schema / properties / work_item_type / description
        Previous value: -"Work item type id (e.g. 'task', 'requirement'). Pass '~' for type-agnostic options."New value: +"e.g. 'task', 'requirement'; '~' = type-agnostic."
    • Changedlist_work_item_links1 field changed
      • changedInput schema / properties / work_item_id / description
        Previous value: -"Work Item ID (e.g. 'MCPT-001')."New value: +"Work item ID (e.g. 'MCPT-001')."
    • Changedmove_work_item_from_document3 fields changed
      • changedInput schema / properties / dry_run / description
        Previous value: -"When True, return payload preview without calling Polarion."New value: +"Preview payload without calling Polarion."
      • changedInput schema / properties / project_id / description
        Previous value: -"Project containing the work item."New value: +"Polarion project ID."
      • changedInput schema / properties / work_item_id / description
        Previous value: -"Short ID of an EXISTING work item (e.g. 'MCPT-042')."New value: +"Work item ID (e.g. 'MCPT-042')."
    • Changedmove_work_item_to_document6 fields changed
      • changedInput schema / properties / dry_run / description
        Previous value: -"When True, return payload preview without calling Polarion."New value: +"Preview payload without calling Polarion."
      • changedInput schema / properties / next_part_id / description
        Previous 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."
      • changedInput schema / properties / previous_part_id / description
        Previous 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."
      • changedInput schema / properties / project_id / description
        Previous value: -"Project containing the work item."New value: +"Polarion project ID."
      • changedInput schema / properties / target_space_id / description
        Previous value: -"Target space ID (use '_default' for the default space)."New value: +"Target space ID ('_default' = default space)."
      • changedInput schema / properties / work_item_id / description
        Previous value: -"Short ID of an EXISTING work item (e.g. 'MCPT-042')."New value: +"Work item ID (e.g. 'MCPT-042')."
    • Changedread_document2 fields changed
      • changedInput schema / properties / document_name / description
        Previous value: -"Document name within the space."New value: +"Document name within space_id."
      • changedInput schema / properties / space_id / description
        Previous value: -"Space ID containing the document."New value: +"Space ID ('_default' = default space)."
    • Changedread_document_parts2 fields changed
      • changedInput schema / properties / document_name / description
        Previous value: -"Document name within the space."New value: +"Document name within space_id."
      • changedInput schema / properties / space_id / description
        Previous value: -"Space ID containing the document."New value: +"Space ID ('_default' = default space)."
    • Changedread_work_item1 field changed
      • changedInput schema / properties / work_item_id / description
        Previous value: -"Work Item ID (e.g. 'MCPT-001')."New value: +"Work item ID (e.g. 'MCPT-001')."
    • Changedupdate_document7 fields changed
      • changedInput schema / properties / custom_fields / description
        Previous 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':...}."
      • changedInput schema / properties / document_name / description
        Previous value: -"Document name within ``space_id``."New value: +"Document name within space_id."
      • changedInput schema / properties / dry_run / description
        Previous 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."
      • changedInput schema / properties / home_page_content_html / description
        Previous 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."
      • changedInput schema / properties / space_id / description
        Previous value: -"Space ID (use '_default' for the default space)."New value: +"Space ID ('_default' = default space)."
      • changedInput schema / properties / status / description
        Previous value: -"New workflow status; prefer ``workflow_action`` for real transitions."New value: +"New status; prefer workflow_action for real transitions."
      • changedInput schema / properties / workflow_action / description
        Previous value: -"Workflow action ID; must be paired with at least one attribute field."New value: +"Workflow action ID."
    • Changedupdate_document_comment5 fields changed
      • changedInput schema / properties / comment_id / description
        Previous 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)."
      • changedInput schema / properties / dry_run / description
        Previous value: -"When True, return payload preview without calling Polarion."New value: +"Preview payload without calling Polarion."
      • changedInput schema / properties / resolved / description
        Previous value: -"New resolved state for the comment."New value: +"New resolved state."
      • changedInput schema / properties / space_id / description
        Previous value: -"Space ID (use '_default' for the default space)."New value: +"Space ID ('_default' = default space)."
      • changedOutput schema / description
        Previous value: -"Result of an ``update_document_comment`` operation."New value: +"Shared result of a comment-resolve update, across all comment types."
    • Changedupdate_work_item12 fields changed
      • changedInput schema / properties / change_type_to / description
        Previous value: -"Change work-item type; RESETS status; must be paired with at least one body field."New value: +"New work-item type; RESETS status."
      • changedInput schema / properties / custom_fields / description
        Previous 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':...}."
      • changedInput schema / properties / description_html / description
        Previous 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."
      • changedInput schema / properties / dry_run / description
        Previous 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."
      • changedInput schema / properties / due_date / description
        Previous value: -"New due date 'YYYY-MM-DD'."New value: +"'YYYY-MM-DD'."
      • changedInput schema / properties / include_current_description_html / description
        Previous 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."
      • changedInput schema / properties / initial_estimate / description
        Previous value: -"New Polarion duration (e.g. '5 1/2d', '1w 2d')."New value: +"Polarion duration (e.g. '5 1/2d', '1w 2d')."
      • changedInput schema / properties / priority / description
        Previous value: -"New priority string (e.g. '50.0')."New value: +"e.g. '50.0'."
      • changedInput schema / properties / resolution / description
        Previous value: -"New resolution outcome; prefer ``workflow_action`` so workflow rules apply."New value: +"Prefer workflow_action so workflow rules apply."
      • changedInput schema / properties / status / description
        Previous value: -"New workflow status; prefer ``workflow_action`` for real transitions."New value: +"New status; prefer workflow_action for real transitions."
      • changedInput schema / properties / work_item_id / description
        Previous value: -"Short ID of an EXISTING work item (e.g. 'MCPT-042')."New value: +"Work item ID (e.g. 'MCPT-042')."
      • changedInput schema / properties / workflow_action / description
        Previous value: -"Workflow action ID (e.g. 'close'); must be paired with at least one body field."New value: +"Workflow action ID (e.g. 'close')."
    • Addedupdate_work_item_comment
    • Changedupdate_work_item_link7 fields changed
      • changedInput schema / properties / dry_run / description
        Previous value: -"When True, return payload preview without calling Polarion."New value: +"Preview payload without calling Polarion."
      • changedInput schema / properties / revision / description
        Previous value: -"New revision pin; None leaves the existing pin unchanged."New value: +"New revision pin; None = unchanged."
      • changedInput schema / properties / role / description
        Previous value: -"Link role id of the existing link."New value: +"Role id of the existing link."
      • changedInput schema / properties / suspect / description
        Previous value: -"New suspect flag value; None leaves it unchanged."New value: +"New suspect flag; None = unchanged."
      • changedInput schema / properties / target_project_id / description
        Previous value: -"Target's project; defaults to the source's project."New value: +"Defaults to the source's project."
      • changedInput schema / properties / target_work_item_id / description
        Previous value: -"Target work item ID (the link's incoming endpoint)."New value: +"Target work item ID."
      • changedInput schema / properties / work_item_id / description
        Previous value: -"Source work item ID (the link's outgoing endpoint)."New value: +"Source work item ID."
  6. 1 tool updatev1.2.0
    • Changedlist_documents1 field changed
      • addedOutput schema / properties / items / items / properties / type
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
  7. 26 tool updatesv1.1.0
    • Changedcreate_document8 fields changed
      • changedInput schema / properties / custom_fields / description
        Previous 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':...}``."
      • changedInput schema / properties / dry_run / description
        Previous 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."
      • removedOutput schema / $defs
        Removed 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"
        -      }
        -    ]
        -  }
        -}
      • removedOutput schema / properties / created / description
        Removed value: -"True on a real create; False on dry-run."
      • removedOutput schema / properties / document_name / description
        Removed value: -"Module name of the new document; None on dry-run."
      • removedOutput schema / properties / dry_run / description
        Removed value: -"Whether this was a dry-run."
      • changedOutput schema / properties / payload_preview / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/$defs/JsonValue"
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / payload_preview / description
        Removed value: -"JSON:API payload sent or previewed; None after real ops."
    • Changedcreate_document_comments12 fields changed
      • changedInput schema / properties / comments / items / description
        Previous 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``."
      • removedInput schema / properties / comments / items / properties / author_id / description
        Removed value: -"Author user ID."
      • removedInput schema / properties / comments / items / properties / parent_comment_id / description
        Removed value: -"Short comment ID for replies; omit for top-level."
      • removedInput schema / properties / comments / items / properties / resolved / description
        Removed value: -"Initial resolved state."
      • removedInput schema / properties / comments / items / properties / text / description
        Removed value: -"Comment body text."
      • removedInput schema / properties / comments / items / properties / text_format / description
        Removed value: -"MIME type of ``text``."
      • removedOutput schema / $defs
        Removed 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"
        -      }
        -    ]
        -  }
        -}
      • removedOutput schema / properties / comment_ids / description
        Removed value: -"Short IDs in Polarion's return order; empty on dry-run."
      • removedOutput schema / properties / created / description
        Removed value: -"True on a real create; False on dry-run."
      • removedOutput schema / properties / dry_run / description
        Removed value: -"Whether this was a dry-run."
      • changedOutput schema / properties / payload_preview / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/$defs/JsonValue"
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / payload_preview / description
        Removed value: -"JSON:API payload sent or previewed; None after real ops."
    • Removedcreate_work_item
    • Changedcreate_work_item_links13 fields changed
      • changedInput schema / properties / links / description
        Previous 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)."
      • removedInput schema / properties / links / items / properties / revision / description
        Removed value: -"Optional revision pin; defaults to current HEAD."
      • removedInput schema / properties / links / items / properties / role / description
        Removed value: -"Link role id (e.g. 'parent')."
      • removedInput schema / properties / links / items / properties / suspect / description
        Removed value: -"Mark the link as suspect."
      • removedInput schema / properties / links / items / properties / target_project_id / description
        Removed value: -"Target's project; defaults to the source's project."
      • removedInput schema / properties / links / items / properties / target_work_item_id / description
        Removed value: -"Target work item ID."
      • addedInput schema / properties / links / maxItems
        Added value: +50
      • removedOutput schema / $defs
        Removed 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"
        -      }
        -    ]
        -  }
        -}
      • removedOutput schema / properties / created / description
        Removed value: -"True on a real create; False on dry-run."
      • removedOutput schema / properties / dry_run / description
        Removed value: -"Whether this was a dry-run."
      • removedOutput schema / properties / link_ids / description
        Removed value: -"Composite 5-segment link ids in input order; empty on dry-run."
      • changedOutput schema / properties / payload_preview / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/$defs/JsonValue"
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / payload_preview / description
        Removed value: -"JSON:API payload sent or previewed; None after real ops."
    • Addedcreate_work_items
    • Changeddelete_work_item_links14 fields changed
      • changedInput schema / properties / links / description
        Previous value: -"One or more existing outgoing links to delete."New value: +"One or more existing outgoing links to delete (1-50)."
      • removedInput schema / properties / links / items / properties / role / description
        Removed value: -"Link role id; must match exactly."
      • removedInput schema / properties / links / items / properties / target_project_id / description
        Removed value: -"Target's project; defaults to the source's project."
      • removedInput schema / properties / links / items / properties / target_work_item_id / description
        Removed value: -"Target work item ID."
      • addedInput schema / properties / links / maxItems
        Added value: +50
      • removedOutput schema / $defs
        Removed 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"
        -      }
        -    ]
        -  }
        -}
      • changedOutput schema / description
        Previous 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."
      • removedOutput schema / properties / deleted / description
        Removed value: -"True on a real delete; False on dry-run."
      • addedOutput schema / properties / deleted_link_ids
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / dry_run / description
        Removed value: -"Whether this was a dry-run."
      • removedOutput schema / properties / link_ids / description
        Removed value: -"Composite 5-segment ids reconstructed from the request refs."
      • addedOutput schema / properties / not_found_link_ids
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / payload_preview / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/$defs/JsonValue"
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / payload_preview / description
        Removed value: -"JSON:API payload sent or previewed; None after real ops."
    • Changedget_document6 fields changed
      • changedOutput schema / description
        Previous 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``."
      • removedOutput schema / properties / content_html / description
        Removed value: -"Raw Polarion HTML body; empty unless the read flag was True."
      • removedOutput schema / properties / custom_fields / description
        Removed value: -"Project-defined custom fields keyed by field ID."
      • removedOutput schema / properties / status / description
        Removed value: -"Document workflow status (e.g. 'draft', 'approved')."
      • removedOutput schema / properties / title / description
        Removed value: -"Document title."
      • removedOutput schema / properties / type / description
        Removed value: -"Document type (e.g. 'req_specification')."
    • Addedget_sql_query_recipes
    • Changedget_work_item22 fields changed
      • changedOutput schema / description
        Previous 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``."
      • removedOutput schema / properties / assignee_ids / description
        Removed value: -"Short user IDs of assignees; empty list when unassigned."
      • removedOutput schema / properties / author_id / description
        Removed value: -"Short user ID of the author; empty when unreported."
      • removedOutput schema / properties / created / description
        Removed value: -"ISO-8601 creation timestamp; empty when unreported."
      • removedOutput schema / properties / custom_fields / description
        Removed value: -"Project-defined custom fields keyed by field ID."
      • removedOutput schema / properties / description_html / description
        Removed value: -"Raw Polarion HTML body; empty unless the read flag was True."
      • removedOutput schema / properties / document_name / description
        Removed value: -"Containing document name; empty when free-floating."
      • removedOutput schema / properties / hyperlinks / description
        Removed value: -"External hyperlinks attached to this work item."
      • removedOutput schema / properties / hyperlinks / items / properties / role / description
        Removed value: -"Hyperlink role id (e.g. 'ref_ext')."
      • removedOutput schema / properties / hyperlinks / items / properties / title / description
        Removed value: -"Human-readable link title; empty when unset."
      • removedOutput schema / properties / hyperlinks / items / properties / uri / description
        Removed value: -"Target URI of the hyperlink."
      • removedOutput schema / properties / id / description
        Removed value: -"Work Item ID (e.g. 'MCPT-001')."
      • removedOutput schema / properties / outline_number / description
        Removed value: -"Hierarchical position (e.g. '1.2.3'); empty outside a document."
      • removedOutput schema / properties / priority / description
        Removed value: -"Priority value as a string (e.g. '90.0'); empty when unset."
      • removedOutput schema / properties / project_id / description
        Removed value: -"Project that contains this work item."
      • removedOutput schema / properties / resolution / description
        Removed value: -"Resolution outcome (e.g. 'fixed'); empty when unresolved."
      • removedOutput schema / properties / severity / description
        Removed value: -"Severity classification (e.g. 'critical'); empty for non-defects."
      • removedOutput schema / properties / space_id / description
        Removed value: -"Containing document's space; empty when free-floating."
      • removedOutput schema / properties / status / description
        Removed value: -"Workflow status (e.g. 'draft', 'approved')."
      • removedOutput schema / properties / title / description
        Removed value: -"Work Item title."
      • removedOutput schema / properties / type / description
        Removed value: -"Work Item type (e.g. 'requirement', 'testCase')."
      • removedOutput schema / properties / updated / description
        Removed value: -"ISO-8601 last-modified timestamp; empty when unreported."
    • Changedlist_document_comments13 fields changed
      • removedInput schema / properties / page_number / description
        Removed value: -"Page number to retrieve (1-based, default 1)."
      • removedInput schema / properties / page_size / description
        Removed value: -"Number of comments per page (1-100, default 100)."
      • changedInput schema / properties / space_id / description
        Previous value: -"Space ID that contains the document (use '_default' for the default space)."New value: +"Space ID containing the document (e.g. '_default')."
      • removedOutput schema / properties / has_more / description
        Removed value: -"True if more pages follow."
      • changedOutput schema / properties / items / items / description
        Previous 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``."
      • removedOutput schema / properties / items / items / properties / author_id / description
        Removed value: -"User ID of the author; None when unknown."
      • removedOutput schema / properties / items / items / properties / child_comment_ids / description
        Removed value: -"Direct reply comment IDs in declaration order."
      • removedOutput schema / properties / items / items / properties / created / description
        Removed value: -"ISO-8601 creation timestamp."
      • removedOutput schema / properties / items / items / properties / id / description
        Removed value: -"Comment ID (e.g. 'MyCommentId')."
      • removedOutput schema / properties / items / items / properties / parent_comment_id / description
        Removed value: -"Parent comment ID for replies; None on top-level."
      • removedOutput schema / properties / items / items / properties / resolved / description
        Removed value: -"True when the comment is marked resolved."
      • removedOutput schema / properties / items / items / properties / text / description
        Removed value: -"Comment body verbatim."
      • removedOutput schema / properties / items / items / properties / text_format / description
        Removed value: -"MIME type of ``text`` as reported by Polarion."
    • Changedlist_document_enum_options10 fields changed
      • removedInput schema / properties / page_number / description
        Removed value: -"Page number to retrieve (1-based, default 1)."
      • removedInput schema / properties / page_size / description
        Removed value: -"Number of options per page (1-100, default 100)."
      • removedOutput schema / properties / has_more / description
        Removed value: -"True if more pages follow."
      • changedOutput schema / properties / items / items / description
        Previous 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``."
      • removedOutput schema / properties / items / items / properties / default / description
        Removed value: -"True when this option is the project default."
      • removedOutput schema / properties / items / items / properties / description / description
        Removed value: -"Option description; empty when Polarion has none."
      • removedOutput schema / properties / items / items / properties / hidden / description
        Removed value: -"True when the option is hidden in the UI; avoid selecting."
      • removedOutput schema / properties / items / items / properties / id / description
        Removed value: -"Option id; pass verbatim to write tools."
      • removedOutput schema / properties / items / items / properties / name / description
        Removed value: -"Human-readable display name."
      • removedOutput schema / properties / items / items / properties / terminal / description
        Removed value: -"For status fields, True for workflow end-states."
    • Changedlist_documents5 fields changed
      • removedInput schema / properties / page_number / description
        Removed value: -"Page number to retrieve (1-based, default 1)."
      • removedInput schema / properties / page_size / description
        Removed value: -"Number of documents per page (1-100, default 100)."
      • removedOutput schema / properties / has_more / description
        Removed value: -"True if more pages follow."
      • removedOutput schema / properties / items / items / properties / document_name / description
        Removed value: -"Document name within the space."
      • removedOutput schema / properties / items / items / properties / space_id / description
        Removed value: -"Space containing the document (e.g. '_default')."
    • Changedlist_projects4 fields changed
      • removedInput schema / properties / page_number / description
        Removed value: -"Page number to retrieve (1-based, default 1)."
      • removedInput schema / properties / page_size / description
        Removed value: -"Number of projects per page (1-100, default 100)."
      • removedOutput schema / properties / has_more / description
        Removed value: -"True if more pages follow."
      • removedOutput schema / properties / items / items / properties / active / description
        Removed value: -"False means archived."
    • Changedlist_work_item_enum_options10 fields changed
      • removedInput schema / properties / page_number / description
        Removed value: -"Page number to retrieve (1-based, default 1)."
      • removedInput schema / properties / page_size / description
        Removed value: -"Number of options per page (1-100, default 100)."
      • removedOutput schema / properties / has_more / description
        Removed value: -"True if more pages follow."
      • changedOutput schema / properties / items / items / description
        Previous 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``."
      • removedOutput schema / properties / items / items / properties / default / description
        Removed value: -"True when this option is the project default."
      • removedOutput schema / properties / items / items / properties / description / description
        Removed value: -"Option description; empty when Polarion has none."
      • removedOutput schema / properties / items / items / properties / hidden / description
        Removed value: -"True when the option is hidden in the UI; avoid selecting."
      • removedOutput schema / properties / items / items / properties / id / description
        Removed value: -"Option id; pass verbatim to write tools."
      • removedOutput schema / properties / items / items / properties / name / description
        Removed value: -"Human-readable display name."
      • removedOutput schema / properties / items / items / properties / terminal / description
        Removed value: -"For status fields, True for workflow end-states."
    • Changedlist_work_item_links14 fields changed
      • removedInput schema / properties / direction / description
        Removed value: -"'forward' (outgoing) or 'back' (incoming); call twice if both needed."
      • removedInput schema / properties / page_number / description
        Removed value: -"Page number to retrieve (1-based, default 1)."
      • removedInput schema / properties / page_size / description
        Removed value: -"Number of links per page (1-100, default 100)."
      • removedOutput schema / properties / has_more / description
        Removed value: -"True if more pages follow."
      • changedOutput schema / properties / items / items / description
        Previous 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."
      • removedOutput schema / properties / items / items / properties / direction / description
        Removed value: -"'forward' for outgoing links, 'back' for incoming."
      • removedOutput schema / properties / items / items / properties / document_name / description
        Removed value: -"Linked item's document name; empty when not module-bound."
      • removedOutput schema / properties / items / items / properties / id / description
        Removed value: -"Linked Work Item ID (e.g. 'MCPT-002')."
      • removedOutput schema / properties / items / items / properties / role / description
        Removed value: -"Link role (e.g. 'parent'); None on back-direction links."
      • removedOutput schema / properties / items / items / properties / space_id / description
        Removed value: -"Linked item's document space; empty when not module-bound."
      • removedOutput schema / properties / items / items / properties / status / description
        Removed value: -"Linked work item workflow status; empty when unreported."
      • removedOutput schema / properties / items / items / properties / suspect / description
        Removed value: -"True when the link is marked as suspect."
      • removedOutput schema / properties / items / items / properties / title / description
        Removed value: -"Linked Work Item title."
      • removedOutput schema / properties / items / items / properties / type / description
        Removed value: -"Linked work item type; empty when unreported."
    • Changedlist_work_items13 fields changed
      • removedInput schema / properties / page_number / description
        Removed value: -"Page number to retrieve (1-based, default 1)."
      • removedInput schema / properties / page_size / description
        Removed value: -"Number of work items per page (1-100, default 100)."
      • removedOutput schema / properties / has_more / description
        Removed value: -"True if more pages follow."
      • changedOutput schema / properties / items / items / description
        Previous 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."
      • removedOutput schema / properties / items / items / properties / assignee_ids / description
        Removed value: -"Short user IDs of assignees; empty list when unassigned."
      • removedOutput schema / properties / items / items / properties / document_name / description
        Removed value: -"Containing document name; empty when free-floating."
      • removedOutput schema / properties / items / items / properties / id / description
        Removed value: -"Work Item ID (e.g. 'MCPT-001')."
      • removedOutput schema / properties / items / items / properties / priority / description
        Removed value: -"Priority value as a string (e.g. '90.0'); empty when unset."
      • removedOutput schema / properties / items / items / properties / space_id / description
        Removed value: -"Containing document's space; empty when free-floating."
      • removedOutput schema / properties / items / items / properties / status / description
        Removed value: -"Workflow status (e.g. 'draft', 'approved')."
      • removedOutput schema / properties / items / items / properties / title / description
        Removed value: -"Work Item title."
      • removedOutput schema / properties / items / items / properties / type / description
        Removed value: -"Work Item type (e.g. 'requirement', 'testCase')."
      • removedOutput schema / properties / items / items / properties / updated / description
        Removed value: -"ISO-8601 last-modified timestamp; empty when unreported."
    • Changedmove_work_item_from_document5 fields changed
      • removedOutput schema / $defs
        Removed 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"
        -      }
        -    ]
        -  }
        -}
      • removedOutput schema / properties / dry_run / description
        Removed value: -"Whether this was a dry-run."
      • removedOutput schema / properties / moved / description
        Removed value: -"True on a real move; False on dry-run."
      • changedOutput schema / properties / payload_preview / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/$defs/JsonValue"
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / payload_preview / description
        Removed value: -"Request payload sent or previewed; None after real ops."
    • Changedmove_work_item_to_document5 fields changed
      • removedOutput schema / $defs
        Removed 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"
        -      }
        -    ]
        -  }
        -}
      • removedOutput schema / properties / dry_run / description
        Removed value: -"Whether this was a dry-run."
      • removedOutput schema / properties / moved / description
        Removed value: -"True on a real move; False on dry-run."
      • changedOutput schema / properties / payload_preview / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/$defs/JsonValue"
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / payload_preview / description
        Removed value: -"Request payload sent or previewed; None after real ops."
    • Changedread_document9 fields changed
      • removedInput schema / properties / page_number / description
        Removed value: -"Page number to retrieve (1-based, default 1)."
      • removedInput schema / properties / page_size / description
        Removed value: -"Number of parts per page (1-100, default 100)."
      • changedOutput schema / description
        Previous 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``)."
      • removedOutput schema / properties / content / description
        Removed value: -"Rendered Markdown for this page."
      • removedOutput schema / properties / has_more / description
        Removed value: -"True when more pages of parts follow."
      • removedOutput schema / properties / page / description
        Removed value: -"Current page number (1-based)."
      • removedOutput schema / properties / page_size / description
        Removed value: -"Maximum number of parts per page."
      • removedOutput schema / properties / part_count / description
        Removed value: -"Number of parts consumed on this page."
      • removedOutput schema / properties / total_parts / description
        Removed value: -"Total parts across the entire document."
    • Changedread_document_parts16 fields changed
      • removedInput schema / properties / page_number / description
        Removed value: -"Page number to retrieve (1-based, default 1)."
      • removedInput schema / properties / page_size / description
        Removed value: -"Number of parts per page (1-100, default 100)."
      • removedOutput schema / properties / has_more / description
        Removed value: -"True if more pages follow."
      • changedOutput schema / properties / items / items / description
        Previous 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."
      • removedOutput schema / properties / items / items / properties / content / description
        Removed value: -"Part body in Markdown; empty unless body lives here."
      • removedOutput schema / properties / items / items / properties / description / description
        Removed value: -"Linked work item body as Markdown; only set on 'workitem' parts."
      • removedOutput schema / properties / items / items / properties / external / description
        Removed value: -"True when the part is re-used from another project (read-only)."
      • removedOutput schema / properties / items / items / properties / id / description
        Removed value: -"Short part identifier (e.g. 'workitem_MCPT-042')."
      • removedOutput schema / properties / items / items / properties / level / description
        Removed value: -"Heading level (1-4) for heading parts; 0 otherwise."
      • removedOutput schema / properties / items / items / properties / next_part_id / description
        Removed value: -"Short ID of the next part; empty on the last part."
      • removedOutput schema / properties / items / items / properties / outline_number / description
        Removed value: -"Hierarchical position (e.g. '1.2.3'); empty for prose / widgets."
      • removedOutput schema / properties / items / items / properties / title / description
        Removed value: -"Part title or heading text."
      • removedOutput schema / properties / items / items / properties / type / description
        Removed value: -"Part type; see class docstring for body-field mapping."
      • removedOutput schema / properties / items / items / properties / work_item_id / description
        Removed value: -"Linked Work Item ID; empty unless 'workitem' / 'heading'."
      • removedOutput schema / properties / items / items / properties / work_item_status / description
        Removed value: -"Linked work item status; empty unless 'workitem' / 'heading'."
      • removedOutput schema / properties / items / items / properties / work_item_type / description
        Removed value: -"Linked work item type; empty unless 'workitem' / 'heading'."
    • Changedread_work_item22 fields changed
      • changedOutput schema / description
        Previous 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``."
      • removedOutput schema / properties / assignee_ids / description
        Removed value: -"Short user IDs of assignees; empty list when unassigned."
      • removedOutput schema / properties / author_id / description
        Removed value: -"Short user ID of the author; empty when unreported."
      • removedOutput schema / properties / created / description
        Removed value: -"ISO-8601 creation timestamp; empty when unreported."
      • removedOutput schema / properties / custom_fields / description
        Removed value: -"Project-defined custom fields keyed by field ID."
      • removedOutput schema / properties / description / description
        Removed value: -"Body as Markdown; read-only — do NOT feed to update_work_item."
      • removedOutput schema / properties / document_name / description
        Removed value: -"Containing document name; empty when free-floating."
      • removedOutput schema / properties / hyperlinks / description
        Removed value: -"External hyperlinks attached to this work item."
      • removedOutput schema / properties / hyperlinks / items / properties / role / description
        Removed value: -"Hyperlink role id (e.g. 'ref_ext')."
      • removedOutput schema / properties / hyperlinks / items / properties / title / description
        Removed value: -"Human-readable link title; empty when unset."
      • removedOutput schema / properties / hyperlinks / items / properties / uri / description
        Removed value: -"Target URI of the hyperlink."
      • removedOutput schema / properties / id / description
        Removed value: -"Work Item ID (e.g. 'MCPT-001')."
      • removedOutput schema / properties / outline_number / description
        Removed value: -"Hierarchical position (e.g. '1.2.3'); empty outside a document."
      • removedOutput schema / properties / priority / description
        Removed value: -"Priority value as a string (e.g. '90.0'); empty when unset."
      • removedOutput schema / properties / project_id / description
        Removed value: -"Project that contains this work item."
      • removedOutput schema / properties / resolution / description
        Removed value: -"Resolution outcome (e.g. 'fixed'); empty when unresolved."
      • removedOutput schema / properties / severity / description
        Removed value: -"Severity classification (e.g. 'critical'); empty for non-defects."
      • removedOutput schema / properties / space_id / description
        Removed value: -"Containing document's space; empty when free-floating."
      • removedOutput schema / properties / status / description
        Removed value: -"Workflow status (e.g. 'draft', 'approved')."
      • removedOutput schema / properties / title / description
        Removed value: -"Work Item title."
      • removedOutput schema / properties / type / description
        Removed value: -"Work Item type (e.g. 'requirement', 'testCase')."
      • removedOutput schema / properties / updated / description
        Removed value: -"ISO-8601 last-modified timestamp; empty when unreported."
    • Changedupdate_document7 fields changed
      • changedInput schema / properties / dry_run / description
        Previous 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."
      • removedInput schema / properties / title / description
        Removed value: -"New title (None to leave unchanged)."
      • removedOutput schema / $defs
        Removed 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"
        -      }
        -    ]
        -  }
        -}
      • removedOutput schema / properties / dry_run / description
        Removed value: -"Whether this was a dry-run."
      • changedOutput schema / properties / payload_preview / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/$defs/JsonValue"
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / payload_preview / description
        Removed value: -"JSON:API payload sent or previewed; None after real ops."
      • removedOutput schema / properties / updated / description
        Removed value: -"True on a real PATCH; False on dry-run."
    • Changedupdate_document_comment7 fields changed
      • removedOutput schema / $defs
        Removed 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"
        -      }
        -    ]
        -  }
        -}
      • removedOutput schema / properties / comment_id / description
        Removed value: -"Short comment ID patched (e.g. 'c42'); None on dry-run."
      • removedOutput schema / properties / dry_run / description
        Removed value: -"Whether this was a dry-run."
      • changedOutput schema / properties / payload_preview / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/$defs/JsonValue"
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / payload_preview / description
        Removed value: -"JSON:API payload sent or previewed; None after real ops."
      • removedOutput schema / properties / resolved / description
        Removed value: -"The resolved value sent (or that would be sent)."
      • removedOutput schema / properties / updated / description
        Removed value: -"True on a real PATCH; False on dry-run."
    • Changedupdate_work_item14 fields changed
      • changedInput schema / properties / description_html / description
        Previous 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)."
      • changedInput schema / properties / dry_run / description
        Previous 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."
      • changedInput schema / properties / hyperlinks / anyOf
        Previous 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"
        +  }
        +]
      • removedInput schema / properties / severity / description
        Removed value: -"New severity classification."
      • removedInput schema / properties / title / description
        Removed value: -"New title (None to leave unchanged)."
      • removedOutput schema / $defs
        Removed 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"
        -  }
        -}
      • changedOutput schema / properties / changes / additionalProperties
        Previous value: -{
        -  "$ref": "#/$defs/JsonValue"
        -}New value: +true
      • removedOutput schema / properties / changes / description
        Removed value: -"Map of field names to their new values in the PATCH."
      • changedOutput schema / properties / current / anyOf
        Previous 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"
        +  }
        +]
      • removedOutput schema / properties / current / description
        Removed value: -"Post-PATCH state for verification; None on dry-run."
      • removedOutput schema / properties / dry_run / description
        Removed value: -"Whether this was a dry-run."
      • changedOutput schema / properties / payload_preview / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": {
        -      "$ref": "#/$defs/JsonValue"
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / payload_preview / description
        Removed value: -"JSON:API payload sent or previewed; None after real ops."
      • removedOutput schema / properties / updated / description
        Removed value: -"True on a real update; False on dry-run."
    • Addedupdate_work_item_link
    • Removedupdate_work_item_links
  8. 23 tool updatesv0.9.0
    • First observedcreate_document
    • First observedcreate_document_comments
    • First observedcreate_work_item
    • First observedcreate_work_item_links
    • First observeddelete_work_item_links
    • First observedget_document
    • First observedget_work_item
    • First observedlist_document_comments
    • First observedlist_document_enum_options
    • First observedlist_documents
    • First observedlist_projects
    • First observedlist_work_item_enum_options
    • First observedlist_work_item_links
    • First observedlist_work_items
    • First observedmove_work_item_from_document
    • First observedmove_work_item_to_document
    • First observedread_document
    • First observedread_document_parts
    • First observedread_work_item
    • First observedupdate_document
    • First observedupdate_document_comment
    • First observedupdate_work_item
    • First observedupdate_work_item_links

TDQS

A3.9/5.0

Scored across 46 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count2/5

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.

Completeness2/5

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

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    AI-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.
    28
    1,548 npm
    37
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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 npm
    ISC