Skip to main content
Glama

OpenProject CE MCP

PyPI Python 3.10+ License: MIT MCP

An MCP server for OpenProject that lets local AI agents read and manage project data through structured, guarded tools.

The server runs as a local subprocess of your MCP client over stdio. It wraps OpenProject API v3 and exposes typed tools for projects, work packages, memberships, versions, boards, time entries, and more.

Reading this on PyPI? All links below point to the GitHub repository — the docs/ pages and images ship in the git repo and source distribution, not in the installed package itself.

Why use this MCP

  • Context-frugal by design — compact, agent-shaped responses instead of raw HAL payloads (~21 fields + ~46 links per item in the raw API). Measured up to −99% tokens per response with select; see Context efficiency for the full numbers.

  • Guarded writes — every write follows a preview-then-confirm pattern; there is no way to bypass it.

  • Defense-in-depth project scope — MCP read/write allowlists restrict the token's effective scope in addition to OpenProject's own server-side permissions.

  • Typed tools, not a raw REST client — one call per intent (list, search, create, update) instead of hand-built HAL requests and link-following.


Related MCP server: OpenProject MCP Server

What you can do

Projects

  • List, create, copy, update, and delete projects

  • Read project configurations, lifecycle phases, and admin context

  • Create, update, and delete memberships and versions; list roles

Work packages

  • List and search work packages with structured filters

  • Create, update, and delete work packages; create subtasks; create, update, and delete relations; add comments (no edit or delete)

  • Upload and delete attachments; add and remove watchers; read activity logs

  • Log, update, and delete time entries

Boards and views

  • Create, read, update, and delete saved boards (queries); read views

Users and groups

  • Read user accounts and group memberships

  • Create, update, lock, unlock, and delete users; add and remove group members

Supporting data

  • Fetch individual wiki pages by id; create, update, and delete news; read and update documents

  • Read and mark notifications; read help texts, working days, and instance configuration

  • Create and inspect grids; inspect custom options

All write operations follow a preview-then-confirm pattern: call a tool once to get a validated preview, then again with confirm=true to execute. There is no way to bypass this.


Scope: Community Edition

This MCP server targets OpenProject Community Edition only. It does not support Enterprise Edition features such as:

  • Placeholder Users

  • Budgets

  • Portfolios

  • Programs

  • Custom Actions

  • Baseline Comparisons

Note: OpenProject Enterprise Edition includes its own MCP server. If you have an Enterprise license, use the official Enterprise MCP instead of this one.


How it works

  • Communicates with the MCP client over stdio — no remote server, no persistent storage

  • Read tools are registered by default, but no project data is accessible until OPENPROJECT_READ_PROJECTS is configured

  • The 5 core write categories are enabled by default, but stay inert until a project is listed in OPENPROJECT_WRITE_PROJECTS — that allowlist, not the category flags, is the real gate; personal-data and admin writes stay opt-in separately

  • Create and update operations validate the payload against OpenProject form endpoints before writing; delete and other simple operations execute directly once confirmed

  • Project scope is enforced server-side: the MCP only exposes what the configured allowlists permit

  • Responses are bounded and paginated — compact summaries, not raw HAL payloads

A core reason to use this MCP instead of calling the OpenProject REST API directly: it returns context-frugal responses instead of raw HAL payloads — and not just for listing. The numbers below are measured against the same three representative work packages (real tiktoken counts, not a bytes/4 approximation); read/search/write/batch calls all land in the same −86% to −99% range. For the full per-call-type breakdown, the tool-catalog size numbers, and how to reproduce them, see Context efficiency.

Response

Tokens

vs. raw API

Raw OpenProject REST API v3 (HAL)

~10,139

baseline

list_work_packages (MCP)

~1,100

−89%

list_work_packages with select (5 fields)

~144

−99%


Install

This quickstart requires pipx; see Installation if it isn't installed yet.

pipx install openproject-ce-mcp
openproject-ce-mcp configure
openproject-ce-mcp --version

configure collects your OpenProject URL, API token, and project scope, then writes the config for the MCP client(s) you choose. Project-scoped is recommended: the server is then available only in the current project. Global makes it available everywhere. Restart your MCP client afterward, then ask it to call get_current_user or list_projects to verify.

See Installation for requirements, updating, source installs, and uninstalling, and Clients for per-client setup guides.


Documentation

Full documentation lives in docs/, starting at the documentation hub:


Configuration essentials

Your client config (.mcp.json, .codex/config.toml, or .vscode/mcp.json) contains your API token — treat it like a password and keep it out of version control; choose your client-specific guide from Clients for the exact .gitignore step. configure writes a minimal config: only the values that differ from a safe default. Read tools are registered by default, and so are the 5 core write categories — but project access stays denied either way until you list projects in OPENPROJECT_READ_PROJECTS (and, for writes, in OPENPROJECT_WRITE_PROJECTS too); that allowlist pair, not the category flags, is the real gate.

See Configuration for the full environment variable reference and what configure --quick vs. --advanced ask.


Security

Prompt Injection

User-provided text (work-package descriptions, comments, news, wiki content) is marked with <user-content> tags and flagged in server instructions as untrusted. Agents should treat this content as data, not as instructions.

See SECURITY.md for the full security model, including prompt injection mitigations, reporting procedures, and supported versions.


Development

git clone -b release/0.3.8 https://github.com/jtauschl/openproject-ce-mcp.git
cd openproject-ce-mcp
uv sync --dev
uv run pytest

main is a frozen snapshot of the last release, not the active development branch. See Development for the full test suite (unit, integration, and Docker test instances).

Available Tools

58 tools
get_attachmentA

Get a single attachment by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
attachment_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
titleYes
authorYes
statusYes
file_nameYes
file_sizeYes
created_atYes
descriptionYes
container_idYes
content_typeYes
download_urlYes
container_typeYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description must convey behavioral traits. The verb 'Get' implies a read-only operation, but no additional context is given about error handling, auth requirements, or whether it returns metadata or file content. The description is minimally adequate but lacks deeper transparency.

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

Conciseness5/5

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

The description is a single concise sentence with no redundant content. It front-loads the action and resource, making it immediately scannable and efficient.

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

Completeness3/5

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

For a simple getter with one parameter, the description is functional but minimal. It does not reference sibling tools or error behavior, though an output schema exists and might cover return details. The text alone leaves some context gaps, but given the tool's simplicity, it is adequate.

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

Parameters3/5

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

The schema has a single required parameter 'attachment_id' with no description. The description's phrase 'by id' confirms that this parameter is the identifier to look up, adding slight clarity. However, it does not explain the scope or format of the ID, though the parameter name itself is self-explanatory. Given 0% schema coverage, the description provides only baseline compensation.

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 retrieves a single attachment by its ID. The verb 'Get' specifies the action, 'attachment' is the resource, and 'single by id' differentiates it from list operations among siblings. This is unambiguous and specific.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool instead of alternatives like list_work_package_attachments or list_work_package_file_links. It does not mention any context, exclusions, or alternative tools, leaving the agent to infer usage solely from the tool name and parameter.

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

get_boardB

Get a saved OpenProject board/query by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
hiddenYes
publicYes
columnsYes
filtersYes
projectYes
sort_byYes
starredYes
group_byYes
can_deleteYes
can_updateYes
created_atYes
project_idYes
timestampsYes
updated_atYes
show_hierarchiesYes
timeline_visibleYes
highlighting_modeYes
include_subprojectsYes
timeline_zoom_levelYes
highlighted_attributesYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It does not state what happens for a non-existent/orphaned board id, whether authentication or workspace context is required, or the return shape beyond the output schema. The description adds only the 'saved' qualifier, which is thin behavioral context.

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

Conciseness5/5

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

The description is a single clear sentence with no filler, front-loading the action and target. Every word contributes meaning.

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

Completeness4/5

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

Given the tool's simplicity (one self-descriptive parameter) and the presence of an output schema, the description sufficiently orients an agent. It lacks some behavioral nuance (e.g., 404 behavior), but for a basic read operation, it is reasonably complete within the provided 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 0%, but there is only one parameter (board_id) whose purpose is self-explanatory from its name and type. The description's 'by id' reinforces the parameter role but adds no format, constraint, or lookup semantics beyond what the schema already conveys. A baseline 3 is appropriate.

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

Purpose4/5

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

The description uses a specific verb ('Get') with a clear resource ('saved OpenProject board/query') and identifies the lookup key ('by id'). It effectively distinguishes from sibling list tools like list_boards and list_grids by indicating retrieval of a single saved entity rather than enumeration.

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

Usage Guidelines3/5

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

The description implies usage context ('saved... by id' suggests retrieving a pre-existing board), but provides no explicit when-to-use guidance, nor does it name alternative tools or exclusion criteria. For a simple getter, the implied usage is adequate but not elaborated.

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

get_categoryB

Get a single category from a project's category list.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes
category_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
projectYes
project_idYes
default_assigneeNo
default_assignee_idNo

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only restates the read intent as 'Get' and scopes the lookup to a project's category list. It does not disclose behavior when the category is missing, whether the operation is purely read-only, what permissions are required, or how errors are surfaced.

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

Conciseness5/5

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

The description is a single short sentence with the core action and scope front-loaded. There is no filler, and every word contributes to identifying the operation. This is appropriately concise for a simple read tool.

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

Completeness3/5

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

The tool is simple and the output schema covers return shape, but the description still leaves gaps: no guidance for choosing this over list_categories, no mention of not-found or error behavior, and no format for the project parameter. An agent can likely invoke it successfully on the happy path, but the description is not fully complete given the absence of annotations and schema descriptions.

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

Parameters2/5

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

Schema description coverage is 0%, so the description was expected to compensate for the bare input schema. It gives only a weak hint that project is the containing project and says nothing about how project should be specified or how category_id should be obtained. The property names and types in the schema carry the bulk of the meaning.

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

Purpose5/5

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

The description uses a specific verb ('Get') with a specific resource ('a single category') and scope ('from a project's category list'). The word 'single' clearly distinguishes it from the sibling tool list_categories, and the category resource separates it from the many other get_* siblings in the tool list.

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

Usage Guidelines3/5

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

The description implies the usage case: retrieve one category by ID from a project. However, it never explicitly states when to prefer this tool over list_categories or any other sibling, and it does not mention prerequisites such as obtaining a category_id from list_categories first. No alternatives or exclusions are provided.

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

get_current_userA

Return the currently authenticated user's profile.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
loginYes

TDQS

A3.6/5.0
Behavior2/5

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

There are no annotations to rely on, and the description does not disclose any behavioral aspects beyond the name, such as authentication requirements, potential errors, or side effects. It merely restates the function without adding operational context.

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

Conciseness5/5

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

The description is a single, lean sentence that conveys the core purpose efficiently. No unnecessary words or redundancy, making it a model of conciseness.

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

Completeness4/5

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

For a simple, parameterless tool with an output schema, the description is essentially complete. However, it could marginally benefit from a hint about when to use this over related 'get' tools, but given the presence of an output schema, it falls just short of perfect.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description does not add parameter-level details, but none are needed. The schema and empty property set already fully cover this aspect.

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 clear verb ('Return') and a specific resource ('currently authenticated user's profile'). It unambiguously differentiates from sibling tools like 'get_my_project_access' by explicitly scoping to the current user's profile.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, no exclusions, and no context about scenarios where it is appropriate. The description only states what it does, leaving the agent without decision-making help.

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

get_documentA

Get a single document by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
titleYes
projectYes
can_updateYes
created_atYes
project_idYes
descriptionYes
attachment_countYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavior. It only says 'Get a single document,' which implies read-only but omits details about error handling, authentication needs, or whether the document must exist. This is minimal and insufficient for a tool with zero annotation support.

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

Conciseness5/5

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

The description is a single concise sentence with no unnecessary words. It is front-loaded and efficiently communicates the tool's core function.

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

Completeness4/5

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

For a simple get tool with one parameter and an output schema, the description is largely complete. It specifies the action and required input, and the output schema handles return details. The only gap is not mentioning the relationship to list_documents, but that is a usage nuance rather than a completeness failure.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. The phrase 'by id' indicates the parameter is an identifier, matching the schema's 'document_id' field. However, it adds little beyond the schema's existing title, lacking context on how to obtain the ID or any formatting constraints.

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 and resource: 'Get a single document by id.' It uses a specific verb (get) with a resource (document) and scoping (by id), distinguishing it from siblings like list_documents.

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 requires a document ID, but does not explicitly explain when to use this vs alternatives (e.g., list_documents to obtain IDs). No exclusions or alternative tools are mentioned, leaving the agent to infer from the sibling list.

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

get_gridA

Get a single dashboard grid by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
grid_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
scopeYes
row_countYes
created_atYes
updated_atYes
column_countYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description is the only source of behavioral information. 'Get' implies a read-only operation, which is generally safe, but the description does not explicitly state side effects, error conditions, or any other behaviors. It is accurate and non-misleading but offers no additional detail, hence a baseline acceptable score of 3.

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 consists of a single, clear sentence that is directly on point. Every word contributes to conveying the tool's purpose. There is no redundancy or wasted text, making it an excellent example of conciseness.

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

Completeness4/5

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

For a simple getter with one required parameter and no nested objects, the description covers the essential functionality. The presence of an output schema means the return value does not need to be described. While it lacks any mention of error handling or edge cases, the low complexity of the tool makes the description adequately complete for its context.

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?

The schema has zero description coverage—there is no description for the 'grid_id' parameter. The description 'by id' adds only minimal semantic value, leaving the agent to infer that the ID is an integer. Since the schema does not explain the parameter and the description does not compensate, the score drops below the baseline of 3.

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

Purpose5/5

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

The description uses a specific verb ('Get') and identifies the exact resource ('a single dashboard grid') and scope ('by id'). It clearly distinguishes itself from sibling 'list_grids' by emphasizing 'single', which is exactly what an agent needs to differentiate the two.

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 context for when to use this tool is implicitly clear (when you have a grid ID and want a single result), but there is no explicit guidance on when not to use it or mention of alternatives. Since the sibling tool 'list_grids' is not mentioned, the usage context is only implied. This matches a score of 3 (minimum viable).

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

get_instance_configurationA

Return instance-level OpenProject configuration and active feature flags.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
host_nameYes
hours_per_dayYes
days_per_monthYes
duration_formatYes
per_page_optionsYes
available_featuresYes
trialling_featuresYes
active_feature_flagsYes
maximum_api_v3_page_sizeYes
maximum_attachment_file_sizeYes

TDQS

A4.3/5.0
Behavior3/5

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

The word 'Return' implies a read-only operation, which is useful since no annotations are provided. However, the description does not disclose auth requirements, response shape, or whether the operation is safe to call repeatedly; for a zero-parameter getter, this is acceptable but not deeply transparent.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that contains no filler and every word contributes meaning. It is appropriately concise for a simple getter 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?

With no parameters, an output schema available, and the description naming precisely what is returned, the description is sufficient for an AI agent to understand and invoke the tool correctly. The ambiguity with project-level config is already mitigated by the 'instance-level' qualifier.

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

Parameters4/5

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

The tool accepts zero parameters, so the schema already fully covers parameter semantics. The description adds the useful context that the output is instance-level configuration and active feature flags, which is sufficient for a no-parameter operation.

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

Purpose5/5

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

The description clearly states a specific action ('Return') and a specific resource ('instance-level OpenProject configuration and active feature flags'). It also distinguishes this from sibling tools like get_project_configuration, which target project-level config.

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 term 'instance-level' gives clear context that this is for global/system-wide configuration rather than project-scoped data. However, it does not explicitly name alternatives or state when not to use it.

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

get_job_statusA

Get the current status of a background job such as project copy.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_status_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
typeYes
statusYes
messageYes
projectYes
project_idYes
created_resource_idYes
created_resource_nameYes
created_resource_typeYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. 'Get the current status' clearly indicates a read operation that returns a snapshot rather than mutating state. However, it does not mention whether the job is removed after retrieval, whether the endpoint is safe to poll repeatedly, or what happens if the job ID is invalid.

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

Conciseness5/5

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

The description is one sentence, front-loaded with the action, and contains no redundant information. The example adds clarity without bloat.

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

Completeness4/5

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

Given the tool has only one required parameter and an output schema, the description is largely sufficient for an agent to understand the tool's purpose. The main missing context is the origin of job_status_id and any polling semantics, but the simplicity keeps this from being a critical gap.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the parameter's meaning. The name job_status_id and the tool description imply the parameter identifies the job, but the description never explicitly states that job_status_id is the ID returned when the background job was created, nor does it explain how to obtain or format it.

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

Purpose5/5

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

The description clearly identifies the verb ('Get'), the resource ('status of a background job'), and gives a concrete example ('project copy'). The 'background job' qualifier distinguishes it from sibling tools like get_status, which likely operate on work package statuses rather than job status.

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 example 'such as project copy' implies it should be used to check on asynchronous background operations, which is useful but indirect. It provides no explicit guidance about when to poll, when not to use it, or how it relates to alternatives like get_status.

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

get_membershipA

Get a compact membership summary by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
membership_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
role_idsYes
can_updateYes
created_atNo
project_idYes
role_namesYes
updated_atNo
principal_idYes
project_nameYes
principal_nameYes
can_update_immediatelyYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description is the only safety signal; 'Get' implies a read-only operation and 'compact summary' hints at the response shape. It does not disclose permissions, error behavior, or handling of unknown ids, but for a simple getter this is minimally acceptable.

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

Conciseness5/5

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

One short sentence with no redundant words; 'Get a compact membership summary by id' is front-loaded and immediately usable.

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

Completeness3/5

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

Given one required parameter and the presence of an output schema, the description is nearly sufficient for a basic get-by-id call. It would be more complete with an explicit pointer to list_project_memberships for discovering ids or a note on membership scope.

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

Parameters2/5

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

Schema description coverage is 0%, but the description's 'by id' does tell the agent that membership_id is the lookup key. It adds no detail on the integer format, source, or validation, so it only partially compensates for the missing schema documentation.

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

Purpose5/5

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

The description uses the specific verb 'Get,' names the resource 'compact membership summary,' and qualifies it by 'id.' This clearly marks it as a single-record fetch and distinguishes it from the plural list_project_memberships sibling.

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

Usage Guidelines3/5

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

There is no explicit when-to-use or alternative guidance. 'by id' implies usage when the caller has a membership id, but list_project_memberships is never mentioned, so the tool cannot be selected against alternatives with full confidence.

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

get_my_project_accessA

Return the current user's membership and inferred access hints for a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
membershipYes
project_idYes
project_nameYes
current_user_idYes
inference_basisYes
current_user_nameYes
project_identifierYes
inferred_can_edit_projectYes
inferred_is_project_adminYes
inferred_can_manage_membershipsYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It clarifies this is a read-style operation and that the result is the current user's own membership with 'inferred' access hints, adding some context, but it does not explain the meaning of 'inferred access hints' or any limitations/error semantics.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word contributes to understanding the tool's core function.

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

Completeness3/5

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

The tool is simple with one parameter and an output schema, so the description need not explain return structure. However, it is incomplete for a tool with no annotations: it lacks guidance on when to use it, what 'inferred access hints' means, and how the project parameter should be supplied, leaving the agent to guess these important aspects.

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?

The single parameter 'project' has zero schema description coverage and the description does not add any meaning beyond the schema's title. The tool description mentions 'for a project' but provides no guidance on ID format, project reference type, or required context, failing to compensate for the low schema 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 clearly states the tool returns the current user's membership and inferred access hints for a specified project, using a specific verb ('Return') and a specific resource. It differentiates itself from siblings like list_project_memberships and get_current_user by focusing on the current user's project-specific access context.

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

Usage Guidelines3/5

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

The description implies usage when needing the current user's project access/membership information, but it provides no explicit guidance on when to use this over alternatives like get_membership or list_project_memberships, nor does it mention exclusions or preferred contexts.

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

get_newsA

Get a single news entry by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
news_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
titleYes
authorYes
projectYes
summaryYes
can_deleteYes
can_updateYes
created_atYes
project_idYes
descriptionYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description adds no behavioral context beyond the read action implied by 'Get'. It does not disclose authentication needs, behavior when the id is not found, or any other side effects or constraints.

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

Conciseness5/5

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

The description is a single, clear sentence with no redundant words or filler. It is appropriately sized for a simple by-id retrieval tool.

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

Completeness4/5

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

Given the tool's low complexity (one required integer parameter and an output schema is present), the description is nearly sufficient. However, it lacks any mention of what the output contains, authentication, or how to handle missing news entries, which prevents a perfect score.

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?

The input schema already defines news_id as an integer. The description's 'by id' only restates the schema's parameter name and does not add meaningful semantics such as format, range, or the significance of the id. With 0% schema description coverage, the description should compensate but does not.

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') and explicitly identifies the resource ('a single news entry') and its lookup criterion ('by id'). This clearly distinguishes it from list_news and other get_* 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 Guidelines3/5

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

The description implies when to use the tool: when you want a single news entry by id. However, it does not explicitly state when not to use it or mention alternatives like list_news, so the guidance remains mostly implicit.

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

get_priorityA

Get a single work package priority by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
priority_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
colorYes
positionYes
is_activeYes
is_defaultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the burden of disclosing behavioral traits. It only says 'Get', which implies a read-only operation, but does not describe return format, error behavior when the ID is not found, authentication requirements, or any side effects. This is minimal behavioral disclosure.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant words. It is appropriately concise for a simple get-by-id tool and every word contributes to conveying the tool's 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?

The description is complete for a simple single-item retrieval tool: it states what is retrieved and how (by id). The presence of an output schema (per context signals) means return values need not be described. However, it would benefit from mentioning how to obtain a priority_id or what happens if the ID is invalid, so it is not fully complete.

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 0%, and the description adds only 'by id', which does not meaningfully clarify the parameter beyond the schema's name and title. It does not explain the integer format, how to discover the ID, or any constraints. The description provides almost no added value for parameter 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 uses a specific verb ('Get') with a clear resource ('work package priority') and scope ('single... by id'), which distinguishes it from sibling tools like list_priorities that return collections. It is unambiguous about what the 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 Guidelines3/5

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

The description implies the user must have or know the priority_id, but it does not explicitly state when to use this tool over alternatives like list_priorities, nor does it mention how to obtain valid IDs. Usage context is implied rather than explicit.

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

get_projectA

Get a compact project summary by id or identifier.

project: numeric id (e.g., 7) or identifier (e.g., "my-project"), not display name.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
activeYes
publicNo
statusNo
favoritedNo
parent_idNo
can_deleteNo
can_updateNo
created_atNo
identifierYes
updated_atNo
descriptionYes
parent_nameNo
status_explanationNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It states that the result is a 'compact project summary', which hints at the response being a summary rather than full details. However, it doesn't disclose if this is a read-only operation, any authentication needs, or what happens if the project is not found. For a simple read operation, the description is adequate but could add more behavioral context (e.g., success/failure behavior, related data included). This is a reasonable middle score considering the simplicity.

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

Conciseness5/5

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

The description is extremely concise: two sentences with zero waste. The first sentence states the core purpose, and the second provides parameter usage details. It is front-loaded with the most important information. This is a model of efficiency.

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 tool is simple (one required parameter) and has an output schema, so the description doesn't need to explain return values. The description covers the purpose and parameter semantics. It might benefit from mentioning what 'compact' means or if there are any typical use cases, but given its simplicity, this is largely complete. The only gap is behavioral transparency around error conditions, but that's minor. This is above average.

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 has a single parameter 'project' with no description (coverage 0%), so the description must add meaning. It does so effectively: it explains that 'project' can be a numeric id (e.g., 7) or an identifier (e.g., 'my-project'), and explicitly states it is not a display name. This adds crucial semantic detail that the schema lacks. Given the low coverage, this is very helpful and earns a 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: 'Get a compact project summary by id or identifier.' It specifies the resource (project) and the action (get), and the input method distinguishes it from sibling tools like list_projects (which lists projects) and get_project_configuration (which retrieves configuration). The phrase 'compact project summary' sets clear expectations.

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: it explains that the parameter can be a numeric id or identifier, and explicitly notes what it is not (not the display name). While it doesn't name alternative tools or explicitly say when not to use this, the guidance is clear enough for an agent to select this tool when wanting a project summary by id. It also differentiates from list_projects implicitly. No exclusions or alternatives are mentioned, which prevents a 5, but this is high quality.

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

get_project_admin_contextB

Return project admin metadata such as lifecycle statuses, parent options, and writable fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
fieldsYes
projectYes
available_statusesYes
available_parent_projectsYes

TDQS

B3.1/5.0
Behavior3/5

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

Without annotations, the verb 'Return' reasonably signals a read-only operation, and the examples clarify the kind of data returned. However, the description does not disclose permission requirements, error behavior, or whether the result is scoped by the current user—gaps that matter for an admin-related tool with no annotation coverage.

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

Conciseness5/5

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

The description is a single front-loaded sentence with concrete examples and no filler. It avoids repeating schema details and communicates the tool's core purpose efficiently.

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

Completeness3/5

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

The tool is simple and an output schema exists, so the description does not need to enumerate return fields. Still, it omits usage context and parameter-value guidance, and the presence of similar sibling tools means the description is only minimally complete for correct selection and invocation.

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?

The schema has 0% description coverage, and the description does not explain the project parameter beyond what the schema title already conveys. An agent is left to guess whether 'project' expects an ID, identifier, or some other form, so the description fails to compensate for the missing schema documentation.

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

Purpose4/5

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

The description states a concrete action ('Return') and a specific resource ('project admin metadata') with useful examples: lifecycle statuses, parent options, and writable fields. It is clear about what the tool provides, though it does not explicitly distinguish itself from similarly named siblings like get_project_configuration or get_project_work_package_context.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. An agent must infer when 'admin metadata' is the right category, and the large sibling list contains several tools with overlapping names and purposes, making that inference risky.

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

get_project_configurationC

Return project-scoped configuration such as internal comment support.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
project_idYes
project_nameYes
hours_per_dayYes
days_per_monthYes
duration_formatYes
per_page_optionsYes
available_featuresYes
trialling_featuresYes
active_feature_flagsYes
maximum_api_v3_page_sizeYes
enabled_internal_commentsYes
maximum_attachment_file_sizeYes

TDQS

C2.7/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of disclosing behavior. It only states that the operation 'returns' data, implying a read, but it does not mention authentication needs, error behavior, what happens when the project doesn't exist, or how the configuration is structured.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wordy filler. It is concise and direct, though it is too terse to provide adequate context for an agent.

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

Completeness2/5

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

While the tool is simple (one parameter), the description omits important orientation cues: what 'project-scoped configuration' means, what configuration categories are included besides 'internal comment support', and how this relates to similar sibling tools. The presence of an output schema does not compensate for the description's lack of context on the input side.

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?

The schema declares a single required 'project' string parameter, but schema description coverage is 0% and the description does not explain what format is expected (e.g., ID, key, href) or how to obtain valid project values. The parameter name itself is only minimally self-explanatory.

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

Purpose4/5

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

The description uses a specific verb ('Return') and resource ('project-scoped configuration'), with a concrete example ('internal comment support') that hints at its scope. It is distinct from sibling tools like get_instance_configuration (global vs project-scoped), though it does not enumerate what other configuration fields are included.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like get_project, get_project_admin_context, or get_project_work_package_context. There are no exclusions, prerequisites, or hints about the intended use case.

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

get_project_phaseA

Get a single project lifecycle phase by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
phase_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
projectYes
created_atYes
project_idYes
start_dateYes
updated_atYes
finish_dateYes
phase_definitionYes
phase_definition_idYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It clearly signals a read operation with 'Get', but it does not disclose not-found behavior, authentication needs, or response error details. Adequate for a simple getter, but minimal.

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

Conciseness5/5

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

A single front-loaded sentence with no filler. Every word contributes to purpose, scope, and parameter semantics.

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 low complexity (one required parameter, no annotations), and the presence of an output schema that documents return values, this description is sufficient for an agent to select and invoke the tool. No additional context seems necessary.

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 0%, so the description must compensate. It does so by mapping phase_id to the target entity via 'by id', giving the parameter meaning as the identifier of the phase. However, it does not specify where the id comes from or any constraints beyond the schema's integer type.

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 states 'Get a single project lifecycle phase by id' with a specific verb, resource, and scope. It clearly distinguishes from sibling tools like get_project_phase_definition and list_project_phase_definitions by emphasizing 'single' and 'by id'.

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?

No explicit when-to-use or alternative guidance is provided. The intended usage is implied: use when you need a specific phase by its id. It does not contrast with the related get_project_phase_definition tool, which could be confused with this one.

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

get_project_phase_definitionA

Get a single project lifecycle phase definition by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
phase_definition_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
created_atYes
start_gateYes
updated_atYes
finish_gateYes

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only states 'Get' without clarifying that this is a read-only operation, that it returns a single object, or any potential errors. It does not add context beyond the action itself, leaving behavioral expectations undisclosed.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no extraneous words. It immediately states the action and resource, making it highly concise and well-structured.

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 simplicity (one parameter, no nested objects, output schema present), the description is complete enough. It does not need to explain return values since the output schema defines the structure, and there are no complex behaviors or side effects to disclose for a simple fetch-by-id operation.

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

Parameters3/5

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

Schema description coverage is 0% (no descriptions in schema properties), so the description must compensate. The phrase 'by id' clarifies that the sole parameter is the identifier, but it does not elaborate on the id's origin, format, or relationship to other entities. This is minimally sufficient but adds little beyond the parameter name 'phase_definition_id'.

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 'Get' with a precise resource ('single project lifecycle phase definition') and explicitly mentions retrieval by id. It clearly distinguishes from sibling tools like list_project_phase_definitions (which lists all) and get_project_phase (which likely retrieves a different entity).

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

Usage Guidelines3/5

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

The description implies usage when you have a specific phase_definition_id, but it does not explicitly state when to prefer this over alternatives, nor does it mention any exclusions or prerequisites. The guidance is implicit rather than explicit, fitting the 'implied usage' category.

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

get_project_work_package_contextC

Return project metadata and, optionally, the writable work-package schema for a given type.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
fieldsYes
project_idYes
project_nameYes
custom_fieldsYes
available_typesYes
selected_type_idYes
available_statusesYes
available_versionsYes
project_identifierYes
selected_type_nameYes
available_categoriesYes
available_prioritiesYes
available_project_phasesYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description bears the burden of behavioral disclosure, yet goes only slightly beyond the tool name — stating it returns 'project metadata' and can 'optionally' return the 'writable work-package schema.' It fails to clarify what the 'writable' semantics are (e.g., side effects, auth requirements, when the type parameter is required). Not a contradiction, but minimally transparent.

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

Conciseness4/5

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

Single, front-loaded sentence with no filler words; reads efficiently and communicates the primary resource in the first few words. Loses one point because the information density could be higher given how little of the tool's purpose is covered.

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

Completeness3/5

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

The tool has low complexity (2 params, no enums, nested objects absent) and an output schema, which lightens the descriptive load. However, the word 'optionally' is ambiguous — the description doesn't clarify when the schema should or shouldn't be requested — and the agent is left without enough to confidently reuse this tool in different scenarios.

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 0%, so the description should compensate by documenting the parameters. The phrase 'for a given type' loosely mirrors the `type` parameter, but neither parameter ('project' nor 'type') is meaningfully explained — the agent can't tell what format/value the 'type' parameter accepts or when it should be omitted.

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

Purpose4/5

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

Uses a clear verb+resource structure ('Return project metadata and, optionally, the writable work-package schema'), accurately describing what the tool does. However, it doesn't distinguish itself from similarly-named siblings like get_project_admin_context or get_project_configuration, so the agent can't readily see what makes this 'context' tool different.

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

Usage Guidelines2/5

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

No when-to-use or alternative tooling is mentioned. Given the close sibling names (get_project_configuration, get_project_admin_context, get_project, get_type, list_work_packages), the description misses a critical opportunity to explain when this tool is preferred over its neighbors.

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

get_sprintB

Get a Backlogs sprint by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
sprint_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
statusYes
created_atYes
start_dateYes
updated_atYes
finish_dateYes
defining_workspaceYes
defining_workspace_idYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. However, it only says 'Get' without disclosing read-only nature, error handling, or expected behavior on missing sprint. It adds minimal behavioral context beyond the obvious.

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?

Description is a single concise sentence, front-loaded with the core action. No unnecessary words.

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

Completeness2/5

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

Given the simplicity of the tool (one parameter, single retrieval), the description is incomplete because it lacks usage guidance and behavioral transparency. However, the output schema exists, so return values are not needed. But the description does not mention alternatives or side effects, making it incomplete for a robust agent decision.

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 0% – description does not explain the sprint_id parameter beyond the schema. The phrase 'by id' implies the parameter is the identifier, but it does not clarify its source or format. Description fails to compensate for missing schema docs.

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 states 'Get a Backlogs sprint by id' – clear verb (Get), specific resource (Backlogs sprint), and retrieval method (by id). Distinguishes from sibling list_sprints functions by indicating single-item retrieval.

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

Usage Guidelines2/5

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

No guidance on when to use vs. alternatives like list_sprints. The description does not mention alternatives or preconditions. It solely states the action without context.

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

get_statusB

Get a single work package status by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
status_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
colorYes
positionYes
is_closedYes
is_defaultYes
is_readonlyNo
default_done_ratioNo
excluded_from_totalsNo

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations and a minimal description, the tool's behavior is not fully disclosed. The word 'get' suggests a read-only operation, but it does not explicitly confirm the absence of side effects, error behavior for invalid ids, or permission requirements. The description lacks transparency about what happens on failure or if the id does not exist.

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

Conciseness5/5

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

The description is a single, clear sentence with no unnecessary words or redundant information. It is concise and to the point, which is ideal for a simple get operation.

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

Completeness2/5

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

The tool lacks an output schema and the description does not mention what the return value will be (e.g., full status object, specific fields). It also omits any error handling or edge-case behavior. For a get operation, this leaves the user guessing about the response format, making the description incomplete.

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

Parameters3/5

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

The single parameter 'status_id' is self-explanatory from its name and type (integer), and the description reiterates that it identifies the status. However, the description does not add any extra context about the id's meaning, range, or format, so it adds little beyond the schema itself. Given the schema covers the parameter, a score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (get), the resource (work package status), and the specific identifier (by id). It distinguishes itself from the list_statuses sibling by indicating it retrieves a single item, making the purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage for retrieving one specific status when an id is known, but it does not explicitly state when to prefer this over list_statuses or when not to use it. It provides no guidance on prerequisites or conditions, so while the intent is clear, usage context is only implied.

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

get_time_entryA

Get a single time entry by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
time_entry_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
userYes
hoursYes
commentYes
ongoingYes
projectYes
activityYes
end_timeYes
spent_onYes
entity_idYes
created_atYes
start_timeYes
updated_atYes
entity_nameYes
entity_typeYes
comment_lengthNo
comment_truncatedNo

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, and the description only states the basic operation. It doesn't disclose potential errors (e.g., not found), side effects (none), or permissions. Behavioral traits are not addressed.

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

Conciseness5/5

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

The description is a single concise sentence with no fluff.

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

Completeness4/5

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

For a simple get-by-id operation, the description covers the essential purpose. It doesn't mention return value, but since output schema is present, that's acceptable. It is adequately complete for the given 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?

The schema has one required integer parameter, and the description only says 'by id'. It doesn't add meaning beyond the schema's title, so it adds minimal value.

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

Purpose5/5

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

The description clearly states the operation (get) and resource (time entry) with the identifier as a parameter, effectively distinguishing it from list operations.

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 doesn't explicitly mention when to use this over list_time_entries or other getters, but the 'by id' implies retrieval of a specific resource. Given the naming convention, a user can infer, but explicit guidance would improve it.

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

get_typeB

Get a single work package type by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
type_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
colorYes
positionYes
created_atNo
is_defaultYes
updated_atNo
is_milestoneYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral transparency. It indicates a read-like 'Get' operation and an id parameter, but does not disclose behavior such as whether a non-existent id returns an error or empty result, any access requirements, or other side-effect-free guarantees. This is minimal information.

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

Conciseness5/5

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

The description is a single, concise sentence that immediately communicates the core operation. There is no wasted wording, and the key qualifier 'single' is front-loaded to clarify the scope.

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

Completeness3/5

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

This is a simple fetch-by-id tool with a minimal schema and an output schema. The description provides the core function but lacks contextual completeness: it does not clarify the relationship to list_types or indicate the retrieval behavior when not found. It is minimally viable but could be improved with one sentence about alternatives or failure semantics.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. The description says 'by id' but never explicitly maps the id to the type_id parameter. It gives no additional context about the parameter beyond what the schema's property name already implies. For a single-parameter tool, this is a notable 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?

The description clearly states the action ('Get') and resource ('a single work package type'), and explicitly notes retrieval is by id. This distinguishes it from list_types (which would return multiple types) and other get_* siblings for different resources.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives. There is no mention that list_types is the appropriate tool for retrieving all types, nor any exclusions or prerequisites. The description simply states what it does, not why or when to use it.

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

get_versionB

Get a compact version summary by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
version_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
statusYes
sharingYes
end_dateYes
created_atNo
start_dateYes
updated_atNo
descriptionYes
defining_projectYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the burden, and 'Get' does indicate a read-only operation while 'compact summary' hints at the output shape. It does not mention error behavior, authentication, or pagination, but for a simple get-by-id tool this is a moderate gap.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundancy. It is appropriately concise for a one-parameter read tool.

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

Completeness4/5

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

Given a single required integer parameter and an output schema, the description is nearly complete for selecting and invoking the tool. It omits a pointer to list_versions for multi-version needs, but the simplicity of the tool limits the impact.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only says 'by id,' which merely restates the version_id parameter without adding source, format, or usage nuance. It does not compensate for the lack of parameter documentation in the schema.

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

Purpose4/5

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

The description uses a specific verb ('Get'), names the resource ('version'), and indicates lookup by ID, which distinguishes it from sibling list_versions. The phrase 'compact version summary' is slightly vague about what is returned, but the core purpose is clear.

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

Usage Guidelines3/5

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

The ID-based lookup implies the tool should be used when a specific version_id is known, rather than for listing versions. However, there is no explicit guidance about when to prefer list_versions or any exclusions/alternatives.

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

get_viewA

Get a single OpenProject view by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
view_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
typeYes
linksYes
queryYes
publicYes
projectYes
starredYes
query_idYes
created_atYes
project_idYes
updated_atYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, and the description only says 'get' which implies a read operation without detailing side effects, return behavior, or error handling. Minimal transparency.

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

Conciseness5/5

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

The description is a single concise sentence with no redundant words, perfectly scoped to the operation.

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

Completeness4/5

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

For a simple get operation, the description is complete in stating what it does. It does not explain return format, but that is likely covered by the output schema. Missing explicit notes on errors or limitations, but acceptable for a basic retrieval.

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 single parameter view_id is explained as 'id' in the description, which conveys that it is the identifier for the view. While minimal, it provides enough meaning given the schema 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 action (get) and the resource (a single OpenProject view) by id, distinguishing it from list_views and other get_* tools.

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

Usage Guidelines3/5

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

The description implies usage for retrieving a specific view by ID but does not explicitly contrast with alternatives like list_views or mention when to prefer this tool over others.

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

get_wiki_pageA

Get a single wiki page by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
wiki_page_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
titleYes
contentYes
projectYes
project_idYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description is the sole source of behavioral information. It conveys a simple read-only 'get' operation, but does not disclose behavior for nonexistent IDs, permission issues, or error conditions.

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

Conciseness5/5

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

The description is one short sentence that is front-loaded with the action and resource. Every word earns its place and there is no redundant detail.

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

Completeness4/5

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

For a simple one-parameter getter with an output schema, the description is largely complete. It could mention that the ID must reference an existing wiki page or note access restrictions, but those are not required given 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 0%, and the description only adds 'by id' without explicitly naming or elaborating on wiki_page_id. The single parameter's title and integer type are self-explanatory, making the minimal description adequate but not enriching.

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

Purpose5/5

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

The description clearly states the verb 'Get', the resource 'wiki page', and the scope 'single ... by id'. This is specific and distinguishes it from sibling tools that target other resources.

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

Usage Guidelines3/5

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

The phrase 'by id' implies that the tool should be used when a wiki page ID is already known, but there is no explicit when-to-use versus alternatives guidance or exclusionary context.

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

get_work_packageA

Get a work package by id, including its full description.

work_package_id: internal id (e.g., 952) or display_id (e.g., "PROJ-51"), not UI display number (e.g., 51) — the same value list_work_packages/ search_work_packages return as each row's id field.

The description is returned in full by default (single work packages are not truncated). Pass text_limit to cap it at that many characters; when the text is cut, description_truncated is true and description_length reports the real length.

ParametersJSON Schema
NameRequiredDescriptionDefault
text_limitNo
work_package_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
typeYes
authorNo
sprintYes
statusYes
projectYes
subjectYes
versionYes
assigneeYes
categoryNo
childrenNo
due_dateYes
durationNo
priorityYes
readonlyNo
ancestorsNo
parent_idYes
created_atNo
display_idYes
spent_timeNo
start_dateYes
updated_atNo
descriptionYes
responsibleYes
lock_versionYes
project_phaseYes
estimated_timeNo
remaining_timeNo
percentage_doneNo
derived_due_dateNo
parent_display_idYes
schedule_manuallyNo
children_truncatedNo
derived_start_dateNo
description_lengthNo
ancestors_truncatedNo
percentage_completeYes
description_truncatedNo
derived_estimated_timeNo
derived_remaining_timeNo
derived_percentage_doneNo
ignore_non_working_daysNo

TDQS

A4.8/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden. It discloses that the full description is returned by default, explains the text_limit parameter's effect, and describes the truncation-related fields (description_truncated, description_length). This is rich behavioral detail.

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

Conciseness5/5

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

The description is compact and front-loaded with the primary purpose. Each sentence adds necessary detail (id formats, truncation behavior) without redundancy or fluff. It is appropriately sized for the tool's 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?

The description covers everything an agent needs: id type ambiguity, default return behavior, and optional text_limit semantics. Since an output schema exists, return values need not be explained. The tool is well-specified for correct invocation.

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

Parameters5/5

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

Schema coverage is 0%, meaning the schema provides no descriptions. The description compensates fully by explaining both parameters: work_package_id (internal or display_id, not UI display number) and text_limit (capping behavior, truncation flags). This adds significant meaning beyond the raw schema.

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

Purpose5/5

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

The description clearly states the tool retrieves a single work package by id, with a direct verb ('Get') and resource ('work package'). It also distinguishes from siblings like list_work_packages and search_work_packages by emphasizing the singular nature and the id field.

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 when to use the tool (you have a specific work_package_id) and clarifies which id values are accepted, even referencing sibling tools for id format. It lacks an explicit 'use this instead of X' but the context is sufficient.

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

get_work_package_activitiesA

Get the activity log for a work package, most recent first.

work_package_id: internal id (e.g., 952) or display_id (e.g., "PROJ-51"), not UI display number.

Comments are capped by default to keep the log compact; pass text_limit to widen (or 0-based semantics via a larger value) the per-comment cap. When a comment is cut, comment_truncated is true and comment_length reports its real length.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
text_limitNo
work_package_idYes

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It explicitly explains ordering (most recent first), comment truncation behavior, how to widen the cap via text_limit, and the fields indicating truncation. This is transparent and useful.

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 every sentence adds value. It is front-loaded with the primary purpose, followed by two clarifying sentences—no fluff.

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

Completeness4/5

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

Given no output schema, the description explains key output fields (comment_truncated, comment_length) and ordering. It could go further by describing the general structure of the activity log, but it is sufficiently complete for a simple getter 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?

Adds significant meaning beyond the schema: explains that work_package_id accepts internal or display ID, and describes the effect of text_limit. However, the limit parameter is not mentioned, leaving a minor 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?

The description clearly states the tool's purpose: "Get the activity log for a work package, most recent first." This uses a specific verb and resource, distinguishing it from sibling tools like get_work_package or get_work_package_relations.

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 useful context on when to use the tool (to retrieve activity logs) and clarifies important parameter semantics like ID formats. However, it does not explicitly exclude alternatives or state when not to use it, though the context is clear.

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

get_work_package_relationsA

Get all relations for a work package (blocks, relates to, duplicates, etc.).

work_package_id: internal id (e.g., 952) or display_id (e.g., "PROJ-51"), not UI display number. type/from_id/to_id reflect how OpenProject actually stored the relation, which does not depend on which work package's relations you query — but can differ from how it was originally requested, since OpenProject canonicalizes some relation types at creation time (e.g. a relation requested as 'precedes' is stored as 'follows' with from_id/to_id swapped; see create_work_package_relation). Use from_id/to_id together with type, not the request you expect to have made, to determine the actual direction. limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
work_package_idYes

TDQS

A4.5/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It explains canonicalization of relation types (precedes stored swapped), that from_id/to_id reflect stored state not the query, and the pagination cap with next_offset. This is thorough and adds significant value.

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 reasonably concise, front-loaded with purpose, but includes somewhat dense technical explanation. Could be slightly cleaner but each 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 no annotations and no output schema, the description covers important behavioral nuances (canonicalization, pagination). It might miss explicit return structure, but for a list endpoint it's acceptable. Also mentions the relation types. Complete enough.

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 has 0% description coverageerver, but the description compensates well: it explains work_package_id accepts internal id or display_id (with example), and explains limit cap and offset pagination. It doesn't explicitly explain offset parameter, but conveys its use via next_offset. Good compensation.

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 retrieves all relations for a work package, listing relation types (blocks, relates to, duplicates). It distinguishes from siblings like list_relations by specifying it's scoped to a specific work package. The verb 'Get' and resource 'all relations for a work package' are specific.

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 detailed guidance on parameter usage (work_package_id accepts internal or display ID, not UI display number). Mentions the pagination mechanism with next_call offset. However, it does not compare to sibling tools like list_relations or state when to prefer one over the other, so it lacks explicit alternatives/exclusions.

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

get_work_packagesA

Get multiple work packages by ID in a single batch call.

Fetches work packages in parallel and returns per-item results. Failed fetches are reported individually without stopping the batch. Maximum 100 IDs per batch.

ids: internal ids (e.g., 952) or display_ids (e.g., "PROJ-51"), not UI display numbers. Duplicate IDs are automatically deduplicated.

select restricts each result's work_package to the given fields (e.g. ["id", "subject", "status"]); an invalid name returns the allowed set. The id/success/error fields on each result are always included regardless of select, so you can still tell which items succeeded.

For batches with many full-detail items, set text_limit and/or select proactively — an unbounded batch of large work packages can exceed the tool-result size limit and get redirected to a file.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYes
selectNo
text_limitNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well: it mentions parallel fetching, per-item failure reporting without stopping the batch, deduplication of IDs, and that id/success/error fields are always included. It also warns about size limits and redirection to a file for large batches. Minor gaps like auth requirements or rate limits are not covered, but for having no annotations, this is strong.

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 well-structured with a leading summary, followed by behavior, parameters, and a warning. Every sentence adds value—no fluff. It front-loads the core purpose and then details constraints and pitfalls. The paragraph breaks improve readability. This is efficient and thorough without being verbose.

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

Completeness4/5

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

Given no output schema, the description explains what results look like (per-item success/error, id/success/error always included), which is important. However, it lacks details on the exact structure of returned items beyond the always-included fields, error handling specifics beyond 'reported individually', and does not clarify whether text_limit applies to select fields. As a tool that returns batch results, this is a minor gap.

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

Parameters4/5

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

Schema coverage is 0%, so the description must fully explain parameters. It explains 'ids' (accepts internal or display IDs, not UI numbers, deduplicated), 'select' (restricts fields, invalid names return allowed set), and 'text_limit' (mentioned as a mitigation for large batches). However, the text_limit description is sparse and lacks specifics on what it limits (e.g., character count per field) and how it interacts with select.

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 multiple work packages by ID in a single batch call', specifying the verb (get), resource (work packages), and scope (batch). It distinguishes from sibling tools like get_work_package (singular) and list_work_packages (list semantics) by emphasizing batch retrieval.

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 ('Get multiple... by ID in a single batch call') and provides critical usage guidance such as maximum 100 IDs per batch, ID formats (internal vs display, not UI numbers), and a warning about large batches. It implies this is for known IDs, contrasting with search/list tools, but does not name alternatives explicitly. The detailed constraints and the proactive advice about text_limit/select give clear usage context.

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

list_actionsA

List API actions exposed by OpenProject.

limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the transparency burden. It states it's a list operation (implying read-only) but doesn't explicitly mention side effects, error conditions, or whether all actions are returned. Given the minimal nature, it's adequate but not fully transparent.

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

Conciseness5/5

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

The description is two concise sentences that cover the tool's purpose and pagination details without any redundancy or fluff. It is well-structured and easy to parse.

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?

There is no output schema, so the description must hint at the return structure. It mentions `next_offset`, suggesting the response includes a pagination token, but doesn't describe the full response format. Given the simplicity of a list operation, this is sufficient, though slightly more detail would be helpful.

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 significant meaning to the parameters: it explains the `limit` cap and default, and how `offset` should be used with `next_offset` for pagination. This goes well beyond the schema's simple type/default definitions, fully clarifying the intended usage.

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 'List API actions exposed by OpenProject.' This provides a specific verb (list) and resource (API actions), and distinguishes it from sibling tools that list specific resources like grids, categories, or projects.

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 pagination behavior ('limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset') which indicates when to use it (to enumerate all actions) and how to handle large result sets. It doesn't explicitly contrast with alternatives, but the purpose is clear enough.

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

list_boardsA

List saved OpenProject boards/queries, optionally scoped to a project.

limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
searchNo
projectNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses pagination behavior: the limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50) and how to page using next_offset. This adds meaningful behavioral context beyond the schema. It does not mention auth or return structure, but the disclosed details are valuable.

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, with the primary purpose in the first sentence and essential pagination details in the second. It is front-loaded and concise, with no extraneous text.

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

Completeness3/5

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

With no output schema and no annotations, the description should explain all parameters and behavior. It covers pagination and basic scope but omits search semantics, project parameter format, and any indication of the return structure. For a moderately simple list tool, this is adequate but has clear gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It mentions limit and offset in the pagination note (though not explicitly naming 'offset' except as next_offset), but search and project parameters are not explained at all. The description adds partial value but fails to clarify all parameter semantics, especially search and project.

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 saved OpenProject boards/queries with optional project scoping. It uses a specific verb ('list') and resource ('boards/queries'), distinguishing it from sibling tools like get_board (single) and list_grids (different resource).

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

Usage Guidelines3/5

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

The description implies usage context (listing boards, optionally scoped to a project) but does not explicitly contrast with alternatives like get_board or list_grids, nor does it state when not to use this tool. No exclusions are provided, so guidance is only implicit.

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

list_capabilitiesA

List API capabilities exposed by OpenProject.

At least one of project or capability_id is required — there is no unfiltered global listing, since one would bypass the project read allowlist.

limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
projectNo
capability_idNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It reveals the required-filter constraint, the pagination cap, and how to page via next_offset. It does not mention authentication or output details, but the core behavioral traits are disclosed.

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

Conciseness5/5

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

Three short paragraphs, front-loaded with the core purpose, and every sentence adds value. The pagination and filter constraints are presented efficiently without repetition or filler.

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

Completeness4/5

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

Given the tool's complexity, the description covers the critical invocation constraints: required filters, the no-global-listing rule, and pagination. There is no output schema to lean on, and the description only hints at the return shape via next_offset, but an agent has enough to call the tool correctly.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It meaningfully explains limit and offset behavior and the requirement for project/capability_id. However, it does not clarify the expected value formats or the relationship between project and capability_id, leaving some parameter semantics under-specified.

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

Purpose4/5

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

States a specific verb and resource ('List API capabilities exposed by OpenProject') and is immediately understandable. It does not explicitly differentiate from similar sibling tools like list_actions or list_roles, but the resource scope is clear enough for an agent to identify the tool's purpose.

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

Usage Guidelines3/5

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

Provides important invocation guidance: at least one of project or capability_id is required, and explains why unfiltered listing is not allowed. However, it does not say when to prefer this tool over alternatives, so usage context is only implied rather than explicit.

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

list_categoriesC

List work-package categories configured for a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

TDQS

C2.8/5.0
Behavior1/5

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

With no annotations, the description should disclose behavioral traits, but it only states the verb 'List' without detailing side effects, permissions, or response characteristics, leaving behavioral expectations vague.

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

Conciseness5/5

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

The description is a single, concise sentence that places the verb upfront, making it efficient and well-structured.

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

Completeness3/5

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

The description is adequate for a simple list operation with one parameter, but it lacks any mention of output format, error behavior, or additional context that might be needed without annotations or an output schema, leaving some gaps.

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?

The description minimally explains that the 'project' parameter identifies the project for which categories are listed, but it does not clarify whether it expects an ID, name, or other identifier, offering limited added meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the action (List) and the specific resource (work-package categories) within the context of a project, distinguishing it from sibling list tools.

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

Usage Guidelines1/5

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

No information is provided about when to use this tool versus alternatives, nor are any conditions or prerequisites mentioned.

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

list_documentsA

List documents, optionally filtered to a single project.

limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap. total is only the count of allowed documents returned on THIS page, not a full count of all matches — the search stops as soon as it has enough, so an exact total would need an extra full walk. Page until next_offset is null.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
projectNo

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the transparency burden. It discloses critical behavioral traits: the limit cap (OPENPROJECT_MAX_PAGE_SIZE), pagination via next_offset, the meaning of 'total' as per-page count only, and early termination of search. This goes far beyond typical list tool descriptions and is essential for correct invocation.

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, using a short first sentence for purpose and a second paragraph for pagination details. Every sentence contributes value, with no redundancy. It is well-structured and front-loaded, making it easy for an agent to parse quickly.

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

Completeness4/5

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

Given no output schema, the description explains behavior thoroughly, including pagination and count limitations. It doesn't specify the return structure or error cases, but for a list tool with moderate complexity, this is sufficient. The provided details are complete enough for safe invocation.

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

Parameters4/5

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

Schema coverage is 0%, so the description must clarify parameters. It explains 'limit' is capped, 'offset' should be set from next_offset for pagination, and 'project' filters results. These insights add meaning to all three parameters, though it doesn't restate types or defaults (already in 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 first sentence explicitly states the action (list) and resource (documents) with an optional filter by project. This clearly distinguishes it from sibling tools like list_grids or list_categories, which target different resource types.

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

Usage Guidelines2/5

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

The description mentions 'optionally filtered to a single project' but does not provide guidance on when to use this tool versus alternatives (e.g., get_document for a single document). No exclusions or alternative recommendations are given, 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_gridsA

List dashboard grids, optionally filtered by scope (page path).

limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap. total is only the count of allowed grids returned on THIS page, not a full count of all matches — the search stops as soon as it has enough, so an exact total would need an extra full walk. Page until next_offset is null.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
scopeNo
offsetNo

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and delivers extensive behavioral detail: limit is capped at OPENPROJECT_MAX_PAGE_SIZE, next_offset should be used for pagination, total reflects only the current page, and the search may stop early. This goes well beyond a simple list and clarifies important edge cases.

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: a one-sentence purpose followed by a focused paragraph on pagination behavior. Every sentence provides useful information 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 no annotations and no output schema, the description covers the essential aspects: what the tool lists, how filtering works, and how pagination behaves. It also explains the non-obvious total semantics, which is critical for correct usage.

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 input schema has no descriptions (0% coverage), so the description must compensate. It explains limit's cap, offset's role in pagination via next_offset, and scope as a page-path filter, giving meaningful context for all three 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 'List dashboard grids' with an optional scope filter by page path, which is a specific verb+resource combination. This distinguishes it from sibling tools like get_grid (singular) and list_views/list_boards by naming the grid resource explicitly.

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

Usage Guidelines3/5

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

The description provides pagination instructions but does not explicitly state when to use this tool over alternatives such as get_grid or list_views. Usage is implied by the tool name and purpose, but no when-not or alternative guidance is given.

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

list_my_open_work_packagesA

List the current user's open assigned work packages.

limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap. This query has no project scope of its own, so total is the real matching count only when OPENPROJECT_READ_PROJECTS is unrestricted ("*"); under a restricted scope, total always falls back to this page's item count, and next_offset/truncated are based on whether this page came back full rather than the server's own total, so nothing here ever reveals how many matches exist in projects you can't see. Page until next_offset is null either way.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

TDQS

A4.8/5.0
Behavior5/5

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

Even though no annotations are provided, the description is exceptionally transparent about the tool's behavior, especially around pagination and project scoping. It candidly discloses a security-relevant subtlety: 'total always falls back to this page's item count... so nothing here ever reveals how many matches exist in projects you can't see.' This goes far beyond a typical description.

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 efficient. The first sentence states the purpose, and the rest explains non-obvious pagination and scoping behavior. Every sentence earns its place; no fluff.

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 this is a filtered list tool with no output schema and no annotations, the description fully compensates. It explains the tool's limits, the meaning of total, next_offset, and truncated under various scopes, and gives a stop condition for pagination. There's nothing missing for an agent to correctly invoke and interpret results.

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 description coverage is 0% because the input schema only has param names and types, no descriptions. The description explains the critical semantics of 'limit' (capped at OPENPROJECT_MAX_PAGE_SIZE) and 'offset' (use next_offset for pagination). This adds substantial meaning beyond the bare schema definitions.

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

Purpose4/5

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

The description clearly states 'List the current user's open assigned work packages' with a specific verb and resource. It also implicitly distinguishes itself from siblings like list_work_packages and search_work_packages by focusing on the current user's open assigned items. However, it doesn't explicitly name an alternative tool, so it falls just short of a 5.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance around pagination: 'limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap.' It also explains the behavior under restricted scopes and instructs to 'Page until next_offset is null either way,' which tells when to stop using the tool's output. This is excellent, actionable guidance.

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

list_newsA

List news entries, optionally filtered by project or title/summary search.

limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap. total is only the count of allowed news entries returned on THIS page, not a full count of all matches — the search stops as soon as it has enough, so an exact total would need an extra full walk. Page until next_offset is null.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
searchNo
projectNo

TDQS

A4.6/5.0
Behavior5/5

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

No annotations are provided, so the description fully bears the burden of transparency. It discloses key behavioral traits: the limit cap (OPENPROJECT_MAX_PAGE_SIZE), the meaning of 'total' (only page count, not all matches), the early termination of search, and the explicit pagination mechanism via next_offset. These are non-obvious and crucial for correct usage, going beyond typical descriptions.

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: first sentence states the primary purpose, followed by a detailed paragraph on pagination and total semantics. No redundant wording; every sentence adds value. The information is front-loaded and the technical details are organized logically.

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 tool involves pagination and subtle total behavior, which the description explains thoroughly. It does not describe the structure of returned news entries, but no output schema exists, so it might be inferred or expected. It also does not mention permissions or side effects, but as a list tool (read-only) this is likely not necessary. Overall, it is complete for the core usage, with minor gaps in return structure and explicit authorization requirements.

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 0%, so the description must compensate. It explains the 'filtered by project or title/summary search' which maps to 'project' and 'search' parameters, and details limit and offset semantics including the cap and offset progression. It adds meaning beyond the schema by clarifying the limit's cap and the offset's role in pagination, though it doesn't elaborate on search syntax or project format.

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 that it lists news entries with optional filters for project and search (title/summary). It uses a specific verb 'List' and resource 'news entries', distinguishing it from sibling tools like get_news (single entry) and list_boards (different resource). It is unambiguous and provides the essential purpose.

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

Usage Guidelines4/5

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

The description gives clear context on when to use the tool: for listing news with optional filtering. It implicitly differentiates from get_news by focusing on list functionality. However, it does not explicitly mention alternatives or when not to use it (e.g., if you need a single news entry, use get_news). The pagination guidance is useful and gives usage direction, but lacks explicit exclusionary language.

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

list_prioritiesA

List all available work package priorities.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It clearly indicates a read-only listing operation, but it does not disclose any additional behavioral details such as response format, sorting, or whether it includes all fields. However, for a simple list tool, this might be sufficient.

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

Conciseness5/5

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

A single, short sentence that is perfectly concise and front-loaded with the 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?

For a tool with no parameters and no output schema, the description is complete enough. It states the action and scope ('all available') without needing extra detail. It could mention the response format, but it's 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?

The tool has zero parameters, and schema coverage is 100% (trivially). The description adds nothing beyond the schema because there are no parameters to explain. Baseline for high coverage is 3.

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

Purpose5/5

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

The description clearly states the action and resource: 'List all available work package priorities.' It uses a specific verb and resource, and it distinguishes from siblings like get_priority by indicating it lists all priorities rather than fetching a specific one.

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

Usage Guidelines3/5

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

The tool's purpose is obvious from the name and description, but it does not explicitly mention when to use it over alternatives like get_priority. The usage context is implied, but no explicit guidance on choosing between tools is provided.

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

list_project_membershipsC

List memberships for a project, including principal and role names.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations provided, so the description bears the full burden. It says 'List... including principal and role names', implying a read operation, but does not disclose whether it includes nested memberships, pagination, or permission requirements. It does not contradict annotations (none provided), but it is minimal.

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

Conciseness4/5

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

The description is one concise sentence, front-loaded with the verb 'List'. It is efficiently written with no filler. However, it is under-specified, so while concise, it misses key details; still, conciseness itself is good.

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

Completeness2/5

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

For a simple list tool with one parameter and no output schema, the description should at least clarify the parameter semantics and possibly common use cases. With 0% schema coverage and no annotations, the description is inadequate to fully understand the tool's behavior, especially given the need to differentiate from sibling tools. It is not complete enough to be reliably invoked.

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 0%, meaning the description does not explain the 'project' parameter beyond its name and type in the schema. The description says 'for a project' implicitly, but does not specify format, examples, or how to identify the project (ID? slug?). Since the tool has only one parameter, the description could easily add context; it fails to do so.

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

Purpose4/5

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

The description 'List memberships for a project, including principal and role names' clearly states the action (list), the resource (memberships), and the scope (for a project). It also indicates the return includes principal and role names, which adds specificity. It distinguishes from siblings like get_membership (single) and list_projects (different resource).

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs. alternatives. Siblings include get_membership, list_roles, list_projects, but the description does not explain when to choose this list over get_membership or any filtering/ordering options. It gives no context on use cases or limitations.

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

list_project_phase_definitionsA

List available project lifecycle phase definitions exposed by OpenProject.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic function ('List available... definitions') without revealing whether the list is global or project-specific, whether authentication is required, how results are paginated, or what the response looks like. The description is minimal and does not add behavioral traits beyond the name itself.

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

Conciseness5/5

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

The description is a single, focused sentence that starts with the verb 'List' and immediately identifies the resource. Every word contributes meaningful context, and there is no redundancy or filler. It is appropriately sized for a tool with zero parameters.

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

Completeness4/5

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

For a zero-parameter, read-only list tool, the description adequately communicates its core purpose and allows correct invocation. However, it lacks explicit disambiguation from related tools such as get_project_phase_definition, and it does not hint at the response format or whether definitions are system-wide or project-scoped. Given the low complexity, the description is nearly complete but could add a phrase to clarify its relationship to phases or definitions.

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 is empty (0 parameters), so there are no parameter semantics to explain. Per the guideline, 0 params results in a baseline of 4. The description does not need to add parameter information, and it correctly implies that invocation requires no arguments.

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

Purpose5/5

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

The description clearly states a list operation ('List') targeting a specific resource ('project lifecycle phase definitions'), distinguishing it from sibling tools like get_project_phase_definition (which retrieves a single definition) and list_project_sprints (which lists a different resource). The scope ('available ... exposed by OpenProject') adds useful context.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention that this is the tool to enumerate definitions, nor does it suggest using get_project_phase_definition for a specific definition. The only implicit clue is the verb 'list', but no exclusions or alternatives are stated.

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

list_projectsA

List visible projects with optional name or identifier search.

select restricts each result row to the given fields (e.g. ["id", "name", "identifier"]); an invalid name returns the allowed set. Common fields: id, name, identifier, active, public, status, parent_name, created_at, updated_at.

limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap. Under a restrictive OPENPROJECT_READ_PROJECTS, total is only the count of allowed projects returned on THIS page, not a full count of all matches — the search stops as soon as it has enough, so an exact total would need an extra full walk. Page until next_offset is null.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
searchNo
selectNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full transparency burden and does so exceptionally well. It discloses the limit cap, next_offset-based pagination, projection behavior, invalid select handling, and the subtle total-count semantics under restrictive OPENPROJECT_READ_PROJECTS, which is exactly the kind of behavioral nuance agents need.

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 front-loaded with the core purpose in the first sentence, then logically organized into select semantics and pagination/total-count details. No sentence is wasted; even the env-specific caveats earn their place by preventing misinference.

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 lacking an output schema, the description covers the essential return semantics: result row fields, total, and next_offset. It also addresses permission-related behavior and pagination edge cases, making it sufficiently complete for an agent to invoke and page through results 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 description coverage is 0%, so the description fully compensates by explaining all four parameters: search by name/identifier, select with field examples and invalid-name behavior, limit capped at OPENPROJECT_MAX_PAGE_SIZE, and offset used with returned next_offset. This adds substantial meaning beyond the raw 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 opens with a specific verb and resource: 'List visible projects with optional name or identifier search.' This clearly distinguishes list_projects from the many get_* and list_* siblings by narrowing scope to visible projects and indicating its searchable fields.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool—listing visible projects, optionally with name/identifier search—and explains key behaviors like pagination and select. It does not explicitly name alternatives or exclusion criteria, but the purpose is specific enough that a capable agent can infer appropriate use.

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

list_project_sprintsA

List Backlogs sprints for a project by id or identifier.

limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap. total is only the count of allowed sprints returned on THIS page, not a full count of all matches — the search stops as soon as it has enough, so an exact total would need an extra full walk. Page until next_offset is null.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
projectYes

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden. It discloses critical behavioral details: the limit is capped at a server-defined maximum, pagination uses next_offset, and the 'total' field is misleading (only counts the current page and may stop early). This is significant transparency beyond the schema, helping the agent manage pagination and interpret results correctly.

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

Conciseness5/5

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

The description is two concise sentences. The first states the purpose, and the second provides essential pagination details. Every word earns its place; there is no fluff or redundancy.

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

Completeness4/5

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

For a simple list tool with no output schema and no annotations, the description covers the key behavioral aspects: pagination, limit cap, and total's meaning. It also clarifies the project identifier format. It could be more complete by describing the returned sprint object structure or mentioning any required permissions, but given the tool's simplicity, it is reasonably complete.

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

Parameters3/5

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

The schema has 0% description coverage, so the description must explain parameters. It implies meaning for limit (capped, used for pagination) and offset (passed via next_offset), but it does not explicitly define them or explain that limit is the page size and offset is the starting index. The 'project' parameter is clarified as 'id or identifier' in the first sentence. Overall, it adds some value but does not fully compensate for the lack of schema documentation.

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

Purpose5/5

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

The description clearly states the tool lists Backlogs sprints for a project by id or identifier. It uses a specific verb, object, and scope that distinguishes it from sibling tools like list_sprints (which likely lists all sprints) and get_sprint (which fetches a single sprint). The purpose is unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context: it is for a specific project, identified by id or identifier. It does not explicitly mention alternatives like list_sprints, but the project scoping is implicit. It also gives practical usage guidance on pagination, explaining how to page through results. However, it lacks an explicit 'when not to use' statement, so it doesn't fully guide selection among siblings.

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

list_relationsA

List all relations across the instance, optionally filtered by type (e.g. 'blocks', 'follows').

type/from_id/to_id reflect how OpenProject actually stored the relation (it does not change depending on which work package's relations you're viewing), which can differ from how it was originally requested — OpenProject canonicalizes some relation types at creation time (e.g. a relation requested as 'precedes' is stored as 'follows' with from_id/to_id swapped; see create_work_package_relation). Filtering by relation_type matches the stored (canonical) type, not necessarily the type a caller originally requested when creating it. limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
relation_typeNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It does well by revealing non-obvious behavior: relation types are canonicalized at creation, filtering matches the stored canonical type, and from_id/to_id can be swapped. It also discloses the page-size cap and next_offset pagination behavior, which are important operational traits.

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

Conciseness5/5

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

The description is front-loaded with the core purpose and then packs each sentence with non-obvious, high-value details: canonicalization, type-match semantics, and pagination. No sentence is filler or redundant with the schema.

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 simple schema and absence of annotations, the description covers the most important operational context: instance scope, optional filtering, canonical-type handling, and paginated listing. It could be slightly more complete by explicitly mentioning the shape of the returned relation objects, but the mention of type/from_id/to_id and next_offset provides enough for most usage.

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?

Despite having 0% schema description coverage, the description compensates well: relation_type is explained with examples and canonical-type semantics, limit is explained as capped at OPENPROJECT_MAX_PAGE_SIZE, and offset is tied to the returned next_offset. This adds strong practical meaning beyond the raw schema types.

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: 'List all relations across the instance, optionally filtered by type.' This clearly establishes scope and function, and unlike the sibling get_work_package_relations, it signals instance-wide behavior rather than a single work package's relations.

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 provides strong context about instance-level listing and pagination, but it does not explicitly explain when to prefer this tool over alternatives or when not to use it. The distinction from get_work_package_relations is implied by 'across the instance,' but no alternative tool is named or contrasted.

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

list_remindersA

List the current user's active reminders across all work packages.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It does reveal key behavioral aspects: the tool returns reminders scoped to the current user and filters for active ones, which implies a read-only, personalized query. However, it does not mention edge cases like empty results, pagination, or any side effects, and the phrase 'current user' indirectly suggests authentication but this is not explicit. The description provides adequate but not extensive transparency.

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

Conciseness5/5

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

The description is a single, well-structured sentence of eleven words, front-loading the main verb and object without any unnecessary modifiers or repetition. It conveys resource, scope, and filtering in a highly efficient manner, embodying ideal conciseness.

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

Completeness3/5

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

The tool is simple (zero parameters, no output schema), and the description covers the essential scope: current user, active reminders, all work packages. However, it does not mention the return format, sorting, or pagination, nor does it describe what happens when there are no reminders. While probably sufficient for most use cases, the lack of any return-value or error-behavior details makes it only moderately complete, meriting a score above the minimum but below what a richer description could achieve.

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 takes zero parameters and the input schema is an empty object (100% schema coverage). According to the guidelines, a zero-parameter tool receives a baseline score of 4 because there is no parameter information to convey. The description does not conflict with the empty schema and accurately adds no extra parameter-related detail.

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

Purpose5/5

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

The description uses a specific verb 'list' and precisely identifies the resource as 'the current user's active reminders' with the scope 'across all work packages.' This makes it immediately clear what the tool does and distinguishes it from sibling tools like 'list_work_packages' or 'list_actions,' none of which mention reminders. The singular focus on the current user and active status adds useful specificity.

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

Usage Guidelines3/5

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

The description implies usage for retrieving reminders belonging to the authenticated user and filters for active ones, but it does not explicitly state when to use this versus an alternative tool or provide exclusions. No mention is made of alternatives (e.g., searching by work package) or when not to use it, leaving the usage context partially implicit.

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

list_rolesA

List OpenProject roles visible to the current user.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the transparency burden. It discloses the visibility constraint ('visible to the current user'), but does not mention return format, pagination, or potential empty results. For a simple listing tool this is adequate but not rich.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It states the action, resource, and scope efficiently.

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

Completeness4/5

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

For a zero-parameter listing tool, the description is largely complete: it names the resource and scoping. The lack of output schema means return behavior is not specified, but this is not critical for such a simple list operation.

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

Parameters4/5

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

The tool has zero parameters, so the schema already fully conveys parameter semantics. The description needs to add no parameter detail, and the baseline of 4 is appropriate.

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

Purpose5/5

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

The description uses a specific verb and resource ('List OpenProject roles') and adds a clear scope ('visible to the current user'). It is distinct from sibling tools, none of which target roles.

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

Usage Guidelines4/5

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

The description implies this tool is for retrieving roles accessible to the current user, which gives clear context. There are no explicit exclusions or alternative suggestions, but with no overlapping role-related siblings this is acceptable.

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

list_sprintsA

List Backlogs sprints visible to the current token.

Requires the OpenProject Backlogs module; unavailable instances return a clear not-found message.

limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap. total is only the count of allowed sprints returned on THIS page, not a full count of all matches — the search stops as soon as it has enough, so an exact total would need an extra full walk. Page until next_offset is null.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description fully carries the behavioral burden. It discloses the module requirement, the limit cap, the meaning of total (page count only), and early termination behavior—all beyond what a simple 'list' implies.

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 but information-dense. Each sentence adds value: purpose, prerequisite, pagination details, and total semantics. It is well-organized and front-loaded with the core action.

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 no output schema, the description adequately covers return values (total, next_offset) and pagination. It covers key usage context and edge cases (module requirement, page stopping), making it complete for a list-with-pagination 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 0%, so the description must compensate. It explains limit's cap and default, and offset's role in pagination via next_offset, giving meaningful semantics for both 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 verb 'List' and resource 'Backlogs sprints' with scope 'visible to the current token.' It distinguishes from siblings like get_sprint and list_project_sprints by indicating a global, token-scoped listing.

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 a prerequisite (OpenProject Backlogs module) and explains pagination behavior. However, it does not explicitly name alternative tools like list_project_sprints, so the agent must infer when this global listing is preferred over a project-specific one.

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

list_statusesA

List all available work package statuses.

Read-only: statuses cannot be created or modified via the OpenProject API (Community Edition); configure them in the web admin UI.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description explicitly states that the operation is read-only and that statuses cannot be created or modified via the API, providing clear behavioral expectations. 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 brief and to the point, conveying all necessary information without extraneous content.

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 fully covers what the tool does, its read-only nature, and where to manage statuses, making it complete for an agent to decide and use the 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?

The input schema has no parameters, so the description does not need to elaborate on parameter meanings. The absence of parameters is consistent with the description.

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 that the tool lists all available work package statuses, which is a specific and distinct action. It differentiates from sibling tools by focusing on statuses.

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

Usage Guidelines4/5

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

It implies when to use the tool (when needing to retrieve statuses) and explicitly notes that statuses cannot be modified via API, directing configuration to the web admin UI. It does not explicitly mention alternatives, but the scope is clear.

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

list_time_entriesA

List time entries with optional project, work package, user, and date filters.

work_package_id: internal id (e.g., 952) or display_id (e.g., "PROJ-51"), not UI display number.

limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap. total is only the count of allowed time entries returned on THIS page, not a full count of all matches — the search stops as soon as it has enough, so an exact total would need an extra full walk. Page until next_offset is null.

ParametersJSON Schema
NameRequiredDescriptionDefault
userNo
limitNo
offsetNo
projectNo
spent_on_toNo
spent_on_fromNo
work_package_idNo

TDQS

A4.2/5.0
Behavior4/5

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

While no annotations are present, the description compensates by disclosing critical behavioral details: the meaning of 'total' (page-limited), the early-termination optimization, and the necessity to page via 'next_offset'. This goes beyond the bare minimum, though it could still explain error cases or rate limits. However, the substantial page-walk disclosure deserves high marks.

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 earns its place. The description front-loads the purpose, then dedicates a dense but readable paragraph to pagination gotchas. No fluff, no repetition, and it stays focused on what's not obvious.

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 tool with rich parameters and no output schema, the description covers the critical context: parameter meanings, pagination, and value semantics (total). The only missing piece is clarifying the remaining undocumented params, but the complexity is high and the description handles the hardest parts well.

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?

With 0% schema coverage and 7 parameters, the description carries the full burden. It clarifies 'work_package_id' (internal vs display ID), 'limit' (capped at OPENPROJECT_MAX_PAGE_SIZE), and 'offset' (use next_offset). It misses explaining 'spent_on_from', 'spent_on_to', 'user', and 'project' formats, so it's not perfect, but what's covered is explained precisely.

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

Purpose4/5

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

The description opens with a clear statement: 'List time entries with optional project, work package, user, and date filters.' It uses a specific verb and resource, and the mention of filters helps distinguish it from sibling tools like 'get_time_entry' (singular). However, it doesn't explicitly name a sibling as an alternative, so it falls short of a 5.

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

Usage Guidelines4/5

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

The description implicitly communicates usage via the filtering capability and pagination workaround. However, it doesn't explicitly state when to use this over alternatives or give exclusions. The alternative to use for filtered searches is implied but not named, so it misses the 'explicit alternative' bar.

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

list_time_entry_activitiesA

List available time entry activities.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries full responsibility for disclosing behavior. 'List' clearly implies a non-destructive read operation, but it does not mention output format, ordering, or access requirements. This is acceptable for a likely simple list operation, but lacks contextual depth.

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

Conciseness5/5

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

The description is a single, concise sentence that fully states the tool's purpose. Every word earns its place, and there is no unnecessary elaboration. This is appropriate for a zero-parameter listing tool.

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

Completeness4/5

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

Given the low complexity (zero parameters, no nested objects, no output schema), the description is adequately complete for a simple list action. It could mention what the returned activities look like, but for the apparent simplicity of the tool, the current description suffices.

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 has zero parameters, so the baseline is 4. The description does not need to explain any parameters, and it correctly refrains from adding misleading syntactic details. The term 'available' adds slight semantic value about the scope of the list.

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

Purpose4/5

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

The description 'List available time entry activities' uses a specific verb ('List') and a clear resource ('time entry activities'), making its purpose immediately understandable. It distinguishes itself from sibling tools like list_time_entries and list_categories by naming a distinct resource, though it relies on the tool name for full differentiation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There are no mentions of prerequisites, typical scenarios, or exclusions. The description simply states what it does, leaving the agent to infer usage from the name and sibling context.

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

list_typesA

List all available work package types, optionally filtered by project.

Read-only: types cannot be created or modified via the OpenProject API (Community Edition); configure them in the web admin UI.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds a valuable read-only warning: types cannot be created or modified via the OpenProject API and are configured in the web admin UI. This goes beyond a simple list statement, though it omits details like authentication requirements or pagination.

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 filtering capability, and the second provides an important behavioral caveat. Every sentence earns its place with no 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?

This is a relatively simple tool with one optional parameter and no output schema. The description covers the main purpose, filtering behavior, and an important read-only constraint. It is sufficiently complete for an agent to select and invoke the tool correctly, though it could mention return format or project identifier specifics.

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 provides only a project string field with 0% description coverage. The tool description compensates by explaining that the project parameter is an optional filter, giving semantic meaning that the schema alone lacks. It does not specify the expected format of the project identifier, so it is not a perfect 5.

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 'all available work package types' with an optional project filter. This is a specific verb+resource combination and distinguishes it from sibling tools like get_type, which fetches a single type.

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 when to use this tool (to list types) and provides the context that types are read-only via the API and must be configured in the web admin UI. However, it does not explicitly mention alternatives or when not to use it, such as whether to prefer get_type for a specific type lookup.

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

list_versionsA

List versions globally or for a specific project, optionally filtered by a case-insensitive name substring.

limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap. Without project, total is only the count of allowed versions returned on THIS page, not a full count of all matches — the search stops as soon as it has enough, so an exact total would need an extra full walk. Page until next_offset is null.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
searchNo
projectNo

TDQS

A4.6/5.0
Behavior5/5

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

No annotations present, so the description bears full responsibility. It discloses key behaviors: result cap (limit capped at OPENPROJECT_MAX_PAGE_SIZE), non-standard total behavior (not a full count), and specific pagination instructions. This is exactly the kind of behavioral nuance that isn't obvious from 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.

Conciseness4/5

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

Four sentences, front-loaded with the purpose then details. It's compact but dense with important information. No fluff. Slightly long but justifies it with crucial pagination/total caveats.

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 no output schema, the description provides complete guidance: what it returns (total caveat), how to page, and parameter semantics. For a list tool with 4 optional params and no output schema, this is well-rounded and 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 description coverage is 0%, so the description must compensate. It explains limit (capped, page size), search (case-insensitive substring), and project (context for the search stop). Offset is implied via next_offset. Given these explanations, it adds significant meaning beyond bare parameter names.

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 with explicit scope: 'List versions globally or for a specific project, optionally filtered by a case-insensitive name substring.' It provides the two main dimensions of filtering (project and search), distinguishing it from sibling list tools like list_grids or list_projects.

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 tool and how to paginate: 'Page until next_offset is null.' It also states the limitation without project. However, it doesn't explicitly name alternative tools or provide when-not-to-use guidance, though the context suggests it for listing versions.

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

list_viewsA

List saved OpenProject views, optionally filtered by project or view subtype.

limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap. total is only the count of allowed views returned on THIS page, not a full count of all matches — the search stops as soon as it has enough, so an exact total would need an extra full walk. Page until next_offset is null.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
limitNo
offsetNo
projectNo

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the burden of behavioral disclosure. It explicitly explains the limit cap, the meaning of next_offset for pagination, the non-exhaustive total (only page count), and the early termination of the search. This is critical information an agent needs to use the tool correctly and interpret results properly.

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 front-loaded with the purpose, and the additional sentences about pagination are concise and necessary. It is not overly verbose; each sentence adds important detail. The only minor structural issue is that the pagination paragraph could be integrated into the first sentence for even more brevity, but it remains well-structured.

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 moderate complexity (pagination, non-obvious return semantics) and the absence of an output schema, the description is remarkably complete. It explains exactly how pagination works, what the total shows, and how to traverse all results. It covers all aspects an agent needs to invoke the tool correctly and interpret the response.

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 0%, the description must compensate. It explains that 'project' filters by project and 'type' filters by view subtype, and it clarifies the semantics of 'limit' and 'offset' through the pagination discussion. However, it does not specify acceptable values for project or type, leaving some ambiguity, but the core meaning is conveyed.

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 lists saved OpenProject views with optional filtering by project or subtype. This distinguishes it from sibling tools like list_grids and list_categories, which focus on different resources.

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

Usage Guidelines4/5

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

The description gives clear context for when to use this tool (when listing saved views) and explains pagination behavior, but it does not explicitly mention when not to use it or name alternative tools. The context is clear enough, though it lacks explicit exclusions.

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

list_work_package_attachmentsA

List attachments on a work package.

work_package_id: internal id (e.g., 952) or display_id (e.g., "PROJ-51"), not UI display number.

ParametersJSON Schema
NameRequiredDescriptionDefault
work_package_idYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. 'List' implies a read-only operation and the provided id clarification adds some context, but there is no mention of what the response contains, whether pagination applies, or any permissions. For a simple list operation, this is minimally adequate but lacks depth.

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

Conciseness4/5

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

The description is concise and front-loaded with the key purpose. The id note is placed as a separate paragraph, which is helpful but not redundant. It earns a high score for efficiency, though the id explanation could have been integrated more tightly with the main sentence.

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

Completeness4/5

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

For a tool with one parameter and no output schema, the description is nearly complete: it explains the purpose and the only parameter thoroughly. However, because there is no output schema or annotation, additional details about the return shape or behavior would make it more complete.

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 schema only states that work_package_id accepts an integer or string, but the description adds valuable meaning by explaining that it can be an internal id (952) or display_id ('PROJ-51') and explicitly warns 'not UI display number.' This fully compensates for the 0% schema description coverage and ensures correct invocation.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'List attachments on a work package.' The verb 'list' and the resource 'attachments on a work package' are specific. It does not explicitly distinguish it from the similar sibling tool 'list_work_package_file_links', but the core purpose is unmistakable.

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

Usage Guidelines2/5

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

No usage guidance is provided: there is no explanation of when to choose this over list_work_package_file_links or get_attachment, no prerequisites, and no exclusions. The only extra note clarifies the id format, which is parameter semantics rather than tool-selection guidance.

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

list_work_package_reactionsA

List emoji reactions across a work package's comment activities.

work_package_id: internal id (e.g., 952) or display_id (e.g., "PROJ-51"), not UI display number.

ParametersJSON Schema
NameRequiredDescriptionDefault
work_package_idYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It clarifies the parameter format (internal ID vs display ID) but does not disclose behavioral details such as pagination, response structure, required permissions, or whether reactions are aggregated per comment or globally. This is a basic read-only tool, so the missing details are not critical but leave some gaps.

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

Conciseness5/5

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

The description is two sentences: the first states the purpose, and the second explains the only parameter. It is front-loaded, concise, and every sentence earns its place with no redundancy.

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

Completeness4/5

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

For a simple one-parameter list tool with no annotations and no output schema, the description adequately covers the primary use case and parameter semantics. It could mention response content or limitations, but the low complexity makes the description 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?

The schema only provides a bare anyOf integer/string with zero description coverage. The description adds crucial meaning by explaining work_package_id can be an internal id (e.g., 952) or display_id (e.g., 'PROJ-51') and explicitly notes it is not a UI display number. This fully compensates for the schema's lack of description.

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 emoji reactions across a work package's comment activities, using the specific verb 'List' and resource 'emoji reactions'. It distinguishes itself from sibling tools that handle file links, watchers, or activities.

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

Usage Guidelines4/5

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

The description implies this tool is used when you need emoji reactions for a work package's comments, which is clear from the purpose. It does not explicitly name alternatives or when-not-to-use, but the context is sufficiently clear given the sibling tool names.

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

list_work_packagesA

List work packages with structured filters and no free-text query requirement.

project accepts a numeric ID, exact identifier/slug, or project name; the parameter is named project, not project_id. There is no generic filters=[...] parameter — each filter is its own named argument (version, status, assignee, the date filters, etc.), listed below.

version_status filters by the status of a work package's assigned version: one of 'open', 'closed', or 'locked'.

assignee filters by any user (username, id, or "me"). assignee_me takes precedence.

status/priority filter by exact OpenProject status/priority name or numeric ID (case-insensitive) — not meta-values like 'open'/'closed'; set open_only=true to restrict results to not-closed work packages instead.

Date filters accept YYYY-MM-DD format:

  • created_on/updated_on/due_on: exact date match

  • created_between/updated_between/due_between: inclusive date range [start, end] Cannot specify both _on and _between for the same field.

sort_by accepts a list of sort criteria in format "field:direction" (e.g., ["status:desc", "priority:asc"]). Direction defaults to "asc" if omitted. Common sortable fields: id, subject, status, priority, type, assignee, author, created_at, updated_at, start_date, due_date.

group_by accepts a field name to group results by (e.g., "status", "assignee"). Common groupable fields: status, priority, type, assignee, author, version, category.

select restricts each result row to the given fields (e.g. ["id", "subject", "status"]); an invalid name returns the allowed set. Common fields: id, display_id, subject, type, status, priority, assignee, project, version, parent_id, parent_display_id, start_date, due_date, estimated_time, spent_time, created_at, updated_at, author, category, description, schedule_manually, derived_start_date, derived_due_date, percentage_done, derived_percentage_done, readonly, ignore_non_working_days. parent_display_id is only populated on OpenProject 17.5+ (semantic mode); it stays null on older/classic instances even when parent_id is set.

limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap. total is the real matching count only when the query is provably restricted to OPENPROJECT_READ_PROJECTS server-side — scope is unrestricted, an explicit project was given, or (no project, restricted scope) a server-side filter for the resolved allowed project IDs was sent. Otherwise total falls back to this page's item count, and next_offset/truncated are based on whether this page came back full rather than the server's own total, so nothing here ever reveals how many matches exist in projects you can't see. Because of this, total can read 0 while next_offset is still non-null (a restrictive scope filtered out every match on this page, but the raw server page was full) — that is not an inconsistency, keep paging via next_offset rather than stopping on a low/zero total. Page until next_offset is null either way.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
limitNo
due_onNo
offsetNo
selectNo
statusNo
projectNo
sort_byNo
versionNo
assigneeNo
group_byNo
priorityNo
open_onlyNo
created_onNo
updated_onNo
assignee_meNo
due_betweenNo
version_statusNo
created_betweenNo
updated_betweenNo

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure, and it delivers comprehensively. It reveals non-obvious behaviors: limit capping, total/next_offset semantics under restricted visibility, assignee_me precedence, version_status allowed values, and parent_display_id being version-dependent. It even warns about the counterintuitive total=0 with non-null next_offset case and instructs the agent to keep paging.

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 carefully organized into focused paragraphs, each covering a distinct behavior or parameter group. It front-loads the core purpose and then systematically walks through filters, sorting, grouping, selection, and pagination. Given the tool's 20 parameters and 0% schema coverage, the length is justified and every paragraph 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?

For a list operation with no annotations and no output schema, the description is exceptionally complete: it covers filtering, sorting, grouping, field selection, pagination, and security-aware total semantics. It also provides concrete edge-case handling, such as continuing to page when total reads zero. An agent has enough information to call the tool correctly, interpret results, and avoid common pitfalls.

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?

With schema description coverage at 0%, the description must compensate, and it explains the semantics of nearly all 20 parameters: project formats, status/priority exact matching, date filter inclusivity, sort_by syntax, group_by fields, select behavior, and paging. The only notable omission is the `type` parameter, which appears in the schema but is never explained as a filter in the description. Despite that gap, the parameter-level guidance is far beyond typical 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 first sentence states a specific verb and resource: 'List work packages with structured filters and no free-text query requirement.' This immediately distinguishes the tool from a search-oriented sibling and makes its scope unmistakable. The rest of the description reinforces this by detailing the available filter categories.

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 explicitly frames this as the correct tool for structured filtering and says it has 'no free-text query requirement,' which guides an agent away from free-text search tools. It also provides clear instructions for paging via next_offset and explains when total is meaningful. However, it does not explicitly name sibling tools like search_work_packages or list_my_open_work_packages as alternatives, so some contrast relies on the sibling list.

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

list_work_package_watchersA

List watchers of a work package.

work_package_id: internal id (e.g., 952) or display_id (e.g., "PROJ-51"), not UI display number.

ParametersJSON Schema
NameRequiredDescriptionDefault
work_package_idYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that it lists watchers, with no mention of side effects, authentication requirements, pagination, or read-only nature. This is a minimal disclosure for a list operation, lacking any extra 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 extremely concise, with two sentences, and front-loads the action. The parameter clarification is presented immediately after the main statement, making it easy to scan. Every word adds value, with no filler.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, no output schema), the description is adequately complete. It covers the essential purpose and parameter semantics. However, it does not mention what the response contains or if there are any special behaviors like pagination, but this is minor given the straightforward nature of the operation.

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 only provides a generic 'work_package_id' parameter with anyOf integer/string, but the description adds crucial guidance: it accepts either an internal id (e.g., 952) or display_id (e.g., 'PROJ-51'), and clarifies that the UI display number is not used. This meaningfully improves parameter understanding beyond the raw schema.

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

Purpose5/5

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

The description clearly states the action ('List') and the resource ('watchers of a work package'). It distinguishes from sibling tools like list_work_package_attachments and list_work_package_file_links by specifying the exact resource. The verb-resource combination is unambiguous.

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

Usage Guidelines3/5

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

The description implicitly suggests this tool is for retrieving watchers of a work package, but it does not explicitly state when to use it versus alternatives or provide any exclusion criteria. Since there are no direct sibling tools for watchers, the implied usage is acceptable, but the lack of explicit context keeps it at a 3.

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

search_work_packagesA

Search work packages by free text, optionally scoped to a project.

query matches only the work package subject and numeric ID (OpenProject's native subject_or_id full-text filter) — it does NOT match version, category, description, or other linked-resource fields. To filter by version, use list_work_packages(version=..., project=...) instead.

In parallel with that text/id search, query is always also resolved directly (numeric id or display id like "PROJ-42") the same way get_work_package does. When that resolves to a work package that also satisfies every other filter given here (project/status/assignee/dates/ etc.), it's returned separately as exact_match — never folded into results, and never counted toward total/count/pagination, since a single extra item can't be paginated consistently. Absent (not present in the response at all) when nothing resolves, when the resolved item fails a filter, or when it's already present in results via the text match. select applies to exact_match the same way it applies to each results row.

Without project, the search runs globally across every project readable under OPENPROJECT_READ_PROJECTS, not just one project — pass project explicitly to scope results to it.

Set status to restrict results to an exact OpenProject status name or numeric ID — not a meta-value like 'open'/'closed'. Set open_only=true to return only open (not-closed) work packages. Set assignee_me=true to return only work packages assigned to the current user.

assignee filters by any user (username, id, or "me"). assignee_me takes precedence.

priority filters by priority name or numeric ID (case-insensitive).

Date filters accept YYYY-MM-DD format:

  • created_on/updated_on/due_on: exact date match

  • created_between/updated_between/due_between: inclusive date range [start, end] Cannot specify both _on and _between for the same field.

sort_by accepts a list of sort criteria in format "field:direction" (e.g., ["status:desc", "priority:asc"]). Direction defaults to "asc" if omitted. Common sortable fields: id, subject, status, priority, type, assignee, author, created_at, updated_at, start_date, due_date.

group_by accepts a field name to group results by (e.g., "status", "assignee"). Common groupable fields: status, priority, type, assignee, author, version, category.

select restricts each result row to the given fields (e.g. ["id", "subject", "status"]); an invalid name returns the allowed set. Common fields: id, display_id, subject, type, status, priority, assignee, project, version, parent_id, parent_display_id, start_date, due_date, estimated_time, spent_time, created_at, updated_at, author, category, description, schedule_manually, derived_start_date, derived_due_date, percentage_done, derived_percentage_done, readonly, ignore_non_working_days. parent_display_id is only populated on OpenProject 17.5+ (semantic mode); it stays null on older/classic instances even when parent_id is set.

limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap. total is the real matching count only when the query is provably restricted to OPENPROJECT_READ_PROJECTS server-side — scope is unrestricted, or an explicit project was given. Otherwise (no project, restricted scope) total falls back to this page's item count, and next_offset/truncated are based on whether this page came back full rather than the server's own total, so nothing here ever reveals how many matches exist in projects you can't see. Because of this, total can read 0 while next_offset is still non-null (a restrictive scope filtered out every match on this page, but the raw server page was full) — that is not an inconsistency, keep paging via next_offset rather than stopping on a low/zero total. Page until next_offset is null either way.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
due_onNo
offsetNo
selectNo
statusNo
projectNo
sort_byNo
assigneeNo
group_byNo
priorityNo
open_onlyNo
created_onNo
updated_onNo
assignee_meNo
due_betweenNo
created_betweenNo
updated_betweenNo

TDQS

A5/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden—and it delivers extensively. It discloses the exact_match parallel resolution, its absence conditions, the total/count/pagination fallback behavior for restricted scopes, the security reason behind it, and version-dependent parent_display_id behavior.

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

Conciseness5/5

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

Although long, the description is efficiently structured: a clear opening purpose, then logically grouped parameter semantics, scoping rules, pagination caveats, and field nuances. Every sentence adds operational value, and critical limitations like exact_match and total fallback are front-loaded enough to prevent misuse.

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 an 18-parameter tool with no output schema and no annotations, this description is remarkably complete. It covers match behavior, filters, date handling, sorting, grouping, selection, pagination, total fallback, scope restrictions, and even OpenProject version differences—leaving no significant gap for safe invocation.

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 description coverage is 0%, so the description must compensate, and it does comprehensively. It explains query semantics, date formats and inclusive ranges, _on/_between exclusivity, assignee_me precedence, sort direction defaults, groupable fields, select behavior, limit cap, and offset continuation—far beyond the bare schema names.

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: 'Search work packages by free text, optionally scoped to a project.' It further distinguishes itself from siblings by explicitly routing version-filtering to list_work_packages and by clarifying that the query matches only subject and numeric ID, not other 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?

The description gives explicit when-to-use guidance and names alternatives: 'To filter by version, use list_work_packages(version=..., project=...) instead.' It also explains scoping behavior with and without project, status/assignee/priority filtering semantics, and pagination via next_offset, leaving little to inference.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv0.3.8
    • Changedget_category2 fields changed
      • removedOutput schema / properties / is_default
        Removed value: -{
        -  "title": "Is Default",
        -  "type": "boolean"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "project_id",
        -  "project",
        -  "is_default"
        -]New value: +[
        +  "id",
        +  "name",
        +  "project_id",
        +  "project"
        +]
    • Changedget_job_status4 fields changed
      • removedOutput schema / properties / created_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "title": "Created At"
        -}
      • removedOutput schema / properties / percentage_complete
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "number"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "title": "Percentage Complete"
        -}
      • removedOutput schema / properties / updated_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "title": "Updated At"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "type",
        -  "status",
        -  "message",
        -  "created_at",
        -  "updated_at",
        -  "percentage_complete",
        -  "project_id",
        -  "project",
        -  "created_resource_type",
        -  "created_resource_id",
        -  "created_resource_name"
        -]New value: +[
        +  "id",
        +  "type",
        +  "status",
        +  "message",
        +  "project_id",
        +  "project",
        +  "created_resource_type",
        +  "created_resource_id",
        +  "created_resource_name"
        +]
    • Changedget_project_admin_context1 field changed
      • addedOutput schema / $defs / ProjectRef / description
        Added value: +"Lightweight project picklist entry -- id/identifier/name only.\n\nUsed where a caller needs to pick a project by reference (e.g. a parent\nproject) but not read its full description/status: the full ProjectSummary\nwould cost a description/status_explanation (up to 1200 chars) per\ncandidate for no benefit to that use case."
  2. 58 tool updatesv0.3.7
    • Changedget_attachment3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "title",
        -  "file_name",
        -  "file_size",
        -  "description",
        -  "content_type",
        -  "status",
        -  "author",
        -  "container_type",
        -  "container_id",
        -  "created_at",
        -  "download_url",
        -  "url"
        -]New value: +[
        +  "id",
        +  "title",
        +  "file_name",
        +  "file_size",
        +  "description",
        +  "content_type",
        +  "status",
        +  "author",
        +  "container_type",
        +  "container_id",
        +  "created_at",
        +  "download_url"
        +]
    • Changedget_board3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "project_id",
        -  "project",
        -  "public",
        -  "hidden",
        -  "starred",
        -  "include_subprojects",
        -  "show_hierarchies",
        -  "timeline_visible",
        -  "timeline_zoom_level",
        -  "highlighting_mode",
        -  "group_by",
        -  "columns",
        -  "sort_by",
        -  "highlighted_attributes",
        -  "timestamps",
        -  "filters",
        -  "created_at",
        -  "updated_at",
        -  "can_update",
        -  "can_delete",
        -  "url"
        -]New value: +[
        +  "id",
        +  "name",
        +  "project_id",
        +  "project",
        +  "public",
        +  "hidden",
        +  "starred",
        +  "include_subprojects",
        +  "show_hierarchies",
        +  "timeline_visible",
        +  "timeline_zoom_level",
        +  "highlighting_mode",
        +  "group_by",
        +  "columns",
        +  "sort_by",
        +  "highlighted_attributes",
        +  "timestamps",
        +  "filters",
        +  "created_at",
        +  "updated_at",
        +  "can_update",
        +  "can_delete"
        +]
    • Changedget_category3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "project_id",
        -  "project",
        -  "is_default",
        -  "url"
        -]New value: +[
        +  "id",
        +  "name",
        +  "project_id",
        +  "project",
        +  "is_default"
        +]
    • Changedget_current_user3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "login",
        -  "url"
        -]New value: +[
        +  "id",
        +  "name",
        +  "login"
        +]
    • Changedget_document4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / attachments_url
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "title": "Attachments Url"
        -}
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "title",
        -  "project_id",
        -  "project",
        -  "description",
        -  "created_at",
        -  "attachment_count",
        -  "attachments_url",
        -  "can_update",
        -  "url"
        -]New value: +[
        +  "id",
        +  "title",
        +  "project_id",
        +  "project",
        +  "description",
        +  "created_at",
        +  "attachment_count",
        +  "can_update"
        +]
    • Changedget_grid3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "row_count",
        -  "column_count",
        -  "scope",
        -  "created_at",
        -  "updated_at",
        -  "url"
        -]New value: +[
        +  "id",
        +  "row_count",
        +  "column_count",
        +  "scope",
        +  "created_at",
        +  "updated_at"
        +]
    • Changedget_instance_configuration1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_job_status4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / links
        Removed value: -{
        -  "items": {
        -    "type": "string"
        -  },
        -  "title": "Links",
        -  "type": "array"
        -}
      • removedOutput schema / properties / url
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "title": "Url"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "type",
        -  "status",
        -  "message",
        -  "created_at",
        -  "updated_at",
        -  "percentage_complete",
        -  "project_id",
        -  "project",
        -  "created_resource_type",
        -  "created_resource_id",
        -  "created_resource_name",
        -  "links",
        -  "url"
        -]New value: +[
        +  "id",
        +  "type",
        +  "status",
        +  "message",
        +  "created_at",
        +  "updated_at",
        +  "percentage_complete",
        +  "project_id",
        +  "project",
        +  "created_resource_type",
        +  "created_resource_id",
        +  "created_resource_name"
        +]
    • Changedget_membership3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "principal_id",
        -  "principal_name",
        -  "project_id",
        -  "project_name",
        -  "role_ids",
        -  "role_names",
        -  "can_update",
        -  "can_update_immediately",
        -  "url"
        -]New value: +[
        +  "id",
        +  "principal_id",
        +  "principal_name",
        +  "project_id",
        +  "project_name",
        +  "role_ids",
        +  "role_names",
        +  "can_update",
        +  "can_update_immediately"
        +]
    • Changedget_my_project_access3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / $defs / MembershipSummary / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / $defs / MembershipSummary / required
        Previous value: -[
        -  "id",
        -  "principal_id",
        -  "principal_name",
        -  "project_id",
        -  "project_name",
        -  "role_ids",
        -  "role_names",
        -  "can_update",
        -  "can_update_immediately",
        -  "url"
        -]New value: +[
        +  "id",
        +  "principal_id",
        +  "principal_name",
        +  "project_id",
        +  "project_name",
        +  "role_ids",
        +  "role_names",
        +  "can_update",
        +  "can_update_immediately"
        +]
    • Changedget_news3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "title",
        -  "summary",
        -  "description",
        -  "project_id",
        -  "project",
        -  "author",
        -  "created_at",
        -  "can_update",
        -  "can_delete",
        -  "url"
        -]New value: +[
        +  "id",
        +  "title",
        +  "summary",
        +  "description",
        +  "project_id",
        +  "project",
        +  "author",
        +  "created_at",
        +  "can_update",
        +  "can_delete"
        +]
    • Changedget_priority1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_project3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "identifier",
        -  "active",
        -  "description",
        -  "url"
        -]New value: +[
        +  "id",
        +  "name",
        +  "identifier",
        +  "active",
        +  "description"
        +]
    • Changedget_project_admin_context5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / $defs / ProjectRef / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / $defs / ProjectRef / required
        Previous value: -[
        -  "id",
        -  "identifier",
        -  "name",
        -  "url"
        -]New value: +[
        +  "id",
        +  "identifier",
        +  "name"
        +]
      • removedOutput schema / $defs / ProjectSummary / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / $defs / ProjectSummary / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "identifier",
        -  "active",
        -  "description",
        -  "url"
        -]New value: +[
        +  "id",
        +  "name",
        +  "identifier",
        +  "active",
        +  "description"
        +]
    • Changedget_project_configuration3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "project_id",
        -  "project_name",
        -  "maximum_attachment_file_size",
        -  "maximum_api_v3_page_size",
        -  "per_page_options",
        -  "duration_format",
        -  "hours_per_day",
        -  "days_per_month",
        -  "active_feature_flags",
        -  "available_features",
        -  "trialling_features",
        -  "enabled_internal_comments",
        -  "url"
        -]New value: +[
        +  "project_id",
        +  "project_name",
        +  "maximum_attachment_file_size",
        +  "maximum_api_v3_page_size",
        +  "per_page_options",
        +  "duration_format",
        +  "hours_per_day",
        +  "days_per_month",
        +  "active_feature_flags",
        +  "available_features",
        +  "trialling_features",
        +  "enabled_internal_comments"
        +]
    • Changedget_project_phase3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "project_id",
        -  "project",
        -  "phase_definition_id",
        -  "phase_definition",
        -  "start_date",
        -  "finish_date",
        -  "created_at",
        -  "updated_at",
        -  "url"
        -]New value: +[
        +  "id",
        +  "name",
        +  "project_id",
        +  "project",
        +  "phase_definition_id",
        +  "phase_definition",
        +  "start_date",
        +  "finish_date",
        +  "created_at",
        +  "updated_at"
        +]
    • Changedget_project_phase_definition3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "start_gate",
        -  "finish_gate",
        -  "created_at",
        -  "updated_at",
        -  "url"
        -]New value: +[
        +  "id",
        +  "name",
        +  "start_gate",
        +  "finish_gate",
        +  "created_at",
        +  "updated_at"
        +]
    • Changedget_project_work_package_context3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / $defs / VersionSummary / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / $defs / VersionSummary / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "status",
        -  "sharing",
        -  "start_date",
        -  "end_date",
        -  "defining_project",
        -  "description",
        -  "url"
        -]New value: +[
        +  "id",
        +  "name",
        +  "status",
        +  "sharing",
        +  "start_date",
        +  "end_date",
        +  "defining_project",
        +  "description"
        +]
    • Changedget_sprint4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / status_href
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "title": "Status Href"
        -}
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "status",
        -  "status_href",
        -  "start_date",
        -  "finish_date",
        -  "defining_workspace_id",
        -  "defining_workspace",
        -  "created_at",
        -  "updated_at",
        -  "url"
        -]New value: +[
        +  "id",
        +  "name",
        +  "status",
        +  "start_date",
        +  "finish_date",
        +  "defining_workspace_id",
        +  "defining_workspace",
        +  "created_at",
        +  "updated_at"
        +]
    • Changedget_status3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "is_default",
        -  "is_closed",
        -  "color",
        -  "position",
        -  "url"
        -]New value: +[
        +  "id",
        +  "name",
        +  "is_default",
        +  "is_closed",
        +  "color",
        +  "position"
        +]
    • Changedget_time_entry3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "project",
        -  "entity_type",
        -  "entity_id",
        -  "entity_name",
        -  "user",
        -  "activity",
        -  "hours",
        -  "spent_on",
        -  "start_time",
        -  "end_time",
        -  "ongoing",
        -  "comment",
        -  "created_at",
        -  "updated_at",
        -  "url"
        -]New value: +[
        +  "id",
        +  "project",
        +  "entity_type",
        +  "entity_id",
        +  "entity_name",
        +  "user",
        +  "activity",
        +  "hours",
        +  "spent_on",
        +  "start_time",
        +  "end_time",
        +  "ongoing",
        +  "comment",
        +  "created_at",
        +  "updated_at"
        +]
    • Changedget_type3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "color",
        -  "position",
        -  "is_default",
        -  "is_milestone",
        -  "url"
        -]New value: +[
        +  "id",
        +  "name",
        +  "color",
        +  "position",
        +  "is_default",
        +  "is_milestone"
        +]
    • Changedget_version3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "status",
        -  "sharing",
        -  "start_date",
        -  "end_date",
        -  "defining_project",
        -  "description",
        -  "url"
        -]New value: +[
        +  "id",
        +  "name",
        +  "status",
        +  "sharing",
        +  "start_date",
        +  "end_date",
        +  "defining_project",
        +  "description"
        +]
    • Changedget_view3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "type",
        -  "name",
        -  "project_id",
        -  "project",
        -  "query_id",
        -  "query",
        -  "public",
        -  "starred",
        -  "created_at",
        -  "updated_at",
        -  "links",
        -  "url"
        -]New value: +[
        +  "id",
        +  "type",
        +  "name",
        +  "project_id",
        +  "project",
        +  "query_id",
        +  "query",
        +  "public",
        +  "starred",
        +  "created_at",
        +  "updated_at",
        +  "links"
        +]
    • Changedget_wiki_page4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / attachments_url
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "title": "Attachments Url"
        -}
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "title",
        -  "project_id",
        -  "project",
        -  "content",
        -  "attachments_url",
        -  "url"
        -]New value: +[
        +  "id",
        +  "title",
        +  "project_id",
        +  "project",
        +  "content"
        +]
    • Changedget_work_package5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / activities_url
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "title": "Activities Url"
        -}
      • removedOutput schema / properties / relations_url
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "title": "Relations Url"
        -}
      • removedOutput schema / properties / url
        Removed value: -{
        -  "title": "Url",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "display_id",
        -  "subject",
        -  "type",
        -  "status",
        -  "priority",
        -  "project_phase",
        -  "assignee",
        -  "responsible",
        -  "project",
        -  "version",
        -  "sprint",
        -  "parent_id",
        -  "parent_display_id",
        -  "start_date",
        -  "due_date",
        -  "percentage_complete",
        -  "lock_version",
        -  "description",
        -  "url",
        -  "activities_url",
        -  "relations_url"
        -]New value: +[
        +  "id",
        +  "display_id",
        +  "subject",
        +  "type",
        +  "status",
        +  "priority",
        +  "project_phase",
        +  "assignee",
        +  "responsible",
        +  "project",
        +  "version",
        +  "sprint",
        +  "parent_id",
        +  "parent_display_id",
        +  "start_date",
        +  "due_date",
        +  "percentage_complete",
        +  "lock_version",
        +  "description"
        +]
    • Changedget_work_package_activities1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_work_package_relations1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_work_packages1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_actions1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_boards1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_capabilities1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_categories1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_documents1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_grids1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_my_open_work_packages1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_news1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_priorities1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_project_memberships1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_project_phase_definitions1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_project_sprints1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_projects1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_relations1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_reminders1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_roles1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_sprints1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_statuses1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_time_entries1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_time_entry_activities1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_types1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_versions1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_views1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_work_package_attachments1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_work_package_file_links1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_work_package_reactions1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_work_package_watchers1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_work_packages1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsearch_work_packages1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
  3. 7 tool updatesv0.3.5
    • Changedget_job_status2 fields changed
      • changedInput schema / properties / job_status_id / type
        Previous value: -"integer"New value: +"string"
      • changedOutput schema / properties / id / anyOf
        Previous value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedget_my_project_access2 fields changed
      • removedOutput schema / properties / project_links
        Removed value: -{
        -  "items": {
        -    "type": "string"
        -  },
        -  "title": "Project Links",
        -  "type": "array"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "project_id",
        -  "project_name",
        -  "project_identifier",
        -  "current_user_id",
        -  "current_user_name",
        -  "membership",
        -  "project_links",
        -  "inferred_is_project_admin",
        -  "inferred_can_edit_project",
        -  "inferred_can_manage_memberships",
        -  "inference_basis"
        -]New value: +[
        +  "project_id",
        +  "project_name",
        +  "project_identifier",
        +  "current_user_id",
        +  "current_user_name",
        +  "membership",
        +  "inferred_is_project_admin",
        +  "inferred_can_edit_project",
        +  "inferred_can_manage_memberships",
        +  "inference_basis"
        +]
    • Changedget_project_admin_context4 fields changed
      • addedOutput schema / $defs / ProjectRef
        Added value: +{
        +  "properties": {
        +    "id": {
        +      "title": "Id",
        +      "type": "integer"
        +    },
        +    "identifier": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "title": "Identifier"
        +    },
        +    "name": {
        +      "title": "Name",
        +      "type": "string"
        +    },
        +    "url": {
        +      "title": "Url",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "identifier",
        +    "name",
        +    "url"
        +  ],
        +  "title": "ProjectRef",
        +  "type": "object"
        +}
      • changedOutput schema / properties / available_parent_projects / items / $ref
        Previous value: -"#/$defs/ProjectSummary"New value: +"#/$defs/ProjectRef"
      • removedOutput schema / properties / project_links
        Removed value: -{
        -  "items": {
        -    "type": "string"
        -  },
        -  "title": "Project Links",
        -  "type": "array"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "project",
        -  "available_statuses",
        -  "available_parent_projects",
        -  "fields",
        -  "project_links"
        -]New value: +[
        +  "project",
        +  "available_statuses",
        +  "available_parent_projects",
        +  "fields"
        +]
    • Changedget_time_entry2 fields changed
      • addedOutput schema / properties / comment_length
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Comment Length"
        +}
      • addedOutput schema / properties / comment_truncated
        Added value: +{
        +  "default": false,
        +  "title": "Comment Truncated",
        +  "type": "boolean"
        +}
    • Changedget_work_package2 fields changed
      • changedOutput schema / properties / ancestors / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {
        -        "type": "string"
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "additionalProperties": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / children / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {
        -        "type": "string"
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "additionalProperties": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedget_work_package_relations2 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Limit"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 1,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedlist_relations2 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Limit"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 1,
        +  "title": "Offset",
        +  "type": "integer"
        +}
  4. 51 tool updatesv0.3.3
    • Addedget_attachment
    • Addedget_board
    • Addedget_category
    • Addedget_current_user
    • Addedget_document
    • Addedget_grid
    • Addedget_instance_configuration
    • Addedget_job_status
    • Addedget_membership
    • Addedget_my_project_access
    • Addedget_priority
    • Addedget_project
    • Addedget_project_admin_context
    • Addedget_project_configuration
    • Addedget_project_phase_definition
    • Addedget_project_work_package_context
    • Addedget_sprint
    • Addedget_time_entry
    • Addedget_type
    • Addedget_version
    • Addedget_view
    • Addedget_wiki_page
    • Addedget_work_package
    • Addedget_work_package_activities
    • Addedget_work_package_relations
    • Addedget_work_packages
    • Addedlist_actions
    • Addedlist_boards
    • Addedlist_capabilities
    • Addedlist_categories
    • Addedlist_documents
    • Addedlist_grids
    • Addedlist_news
    • Addedlist_priorities
    • Addedlist_project_memberships
    • Addedlist_project_phase_definitions
    • Addedlist_projects
    • Addedlist_relations
    • Addedlist_reminders
    • Addedlist_roles
    • Addedlist_sprints
    • Addedlist_time_entries
    • Addedlist_time_entry_activities
    • Addedlist_types
    • Addedlist_versions
    • Addedlist_views
    • Addedlist_work_package_attachments
    • Addedlist_work_package_file_links
    • Addedlist_work_package_reactions
    • Addedlist_work_packages
    • Addedsearch_work_packages
  5. 59 tool updatesv0.3.0
    • Removedget_attachment
    • Removedget_board
    • Removedget_category
    • Removedget_current_user
    • Removedget_document
    • Removedget_grid
    • Removedget_group
    • Removedget_instance_configuration
    • Removedget_job_status
    • Removedget_membership
    • Removedget_my_preferences
    • Removedget_my_project_access
    • Removedget_priority
    • Removedget_project
    • Removedget_project_admin_context
    • Removedget_project_configuration
    • Removedget_project_phase_definition
    • Removedget_project_work_package_context
    • Changedget_status3 fields changed
      • addedOutput schema / properties / default_done_ratio
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Default Done Ratio"
        +}
      • addedOutput schema / properties / excluded_from_totals
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Excluded From Totals"
        +}
      • addedOutput schema / properties / is_readonly
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Is Readonly"
        +}
    • Removedget_time_entry
    • Removedget_type
    • Removedget_user
    • Removedget_version
    • Removedget_view
    • Removedget_wiki_page
    • Removedget_work_package
    • Removedget_work_package_activities
    • Removedget_work_package_relations
    • Removedget_work_packages
    • Removedlist_actions
    • Removedlist_boards
    • Removedlist_capabilities
    • Removedlist_categories
    • Removedlist_documents
    • Removedlist_grids
    • Removedlist_groups
    • Removedlist_news
    • Removedlist_notifications
    • Removedlist_principals
    • Removedlist_priorities
    • Removedlist_project_memberships
    • Removedlist_project_phase_definitions
    • Addedlist_project_sprints
    • Removedlist_projects
    • Removedlist_relations
    • Removedlist_reminders
    • Removedlist_roles
    • Removedlist_time_entries
    • Removedlist_time_entry_activities
    • Removedlist_types
    • Removedlist_users
    • Removedlist_versions
    • Removedlist_views
    • Removedlist_work_package_attachments
    • Removedlist_work_package_file_links
    • Removedlist_work_package_reactions
    • Removedlist_work_packages
    • Removedsearch_work_packages
    • Removedupdate_my_preferences
  6. 48 tool updatesv0.2.3
    • Removedget_custom_option
    • Removedget_help_text
    • Removedget_query_column
    • Removedget_query_filter
    • Removedget_query_filter_instance_schema
    • Removedget_query_operator
    • Removedget_query_sort_by
    • Changedget_work_package17 fields changed
      • addedInput schema / properties / text_limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Text Limit"
        +}
      • addedOutput schema / properties / ancestors
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Ancestors"
        +}
      • addedOutput schema / properties / ancestors_truncated
        Added value: +{
        +  "default": false,
        +  "title": "Ancestors Truncated",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / author
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Author"
        +}
      • addedOutput schema / properties / category
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Category"
        +}
      • addedOutput schema / properties / children
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Children"
        +}
      • addedOutput schema / properties / children_truncated
        Added value: +{
        +  "default": false,
        +  "title": "Children Truncated",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / created_at
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Created At"
        +}
      • addedOutput schema / properties / derived_estimated_time
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Derived Estimated Time"
        +}
      • addedOutput schema / properties / derived_remaining_time
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Derived Remaining Time"
        +}
      • addedOutput schema / properties / description_length
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Description Length"
        +}
      • addedOutput schema / properties / description_truncated
        Added value: +{
        +  "default": false,
        +  "title": "Description Truncated",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / duration
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Duration"
        +}
      • addedOutput schema / properties / estimated_time
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Estimated Time"
        +}
      • addedOutput schema / properties / remaining_time
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Remaining Time"
        +}
      • addedOutput schema / properties / spent_time
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Spent Time"
        +}
      • addedOutput schema / properties / updated_at
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Updated At"
        +}
    • Changedget_work_package_activities2 fields changed
      • addedInput schema / properties / text_limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Text Limit"
        +}
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "ActivitySummary": {
        -      "properties": {
        -        "comment": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Comment"
        -        },
        -        "created_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Created At"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "type": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Type"
        -        },
        -        "user": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "User"
        -        },
        -        "version": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Version"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "type",
        -        "version",
        -        "user",
        -        "comment",
        -        "created_at"
        -      ],
        -      "title": "ActivitySummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/ActivitySummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "ActivityListResult",
        -  "type": "object"
        -}New value: +null
    • Changedget_work_package_relations1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "RelationSummary": {
        -      "properties": {
        -        "description": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Description"
        -        },
        -        "from_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "From Id"
        -        },
        -        "from_subject": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "From Subject"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "to_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "To Id"
        -        },
        -        "to_subject": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "To Subject"
        -        },
        -        "type": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Type"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "type",
        -        "description",
        -        "from_id",
        -        "from_subject",
        -        "to_id",
        -        "to_subject"
        -      ],
        -      "title": "RelationSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/RelationSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "RelationListResult",
        -  "type": "object"
        -}New value: +null
    • Addedget_work_packages
    • Changedlist_actions1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "ActionSummary": {
        -      "properties": {
        -        "description": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Description"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "string"
        -        },
        -        "modules": {
        -          "items": {
        -            "type": "string"
        -          },
        -          "title": "Modules",
        -          "type": "array"
        -        },
        -        "name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Name"
        -        },
        -        "url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Url"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "name",
        -        "description",
        -        "modules",
        -        "url"
        -      ],
        -      "title": "ActionSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "limit": {
        -      "title": "Limit",
        -      "type": "integer"
        -    },
        -    "next_offset": {
        -      "anyOf": [
        -        {
        -          "type": "integer"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "title": "Next Offset"
        -    },
        -    "offset": {
        -      "title": "Offset",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/ActionSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    },
        -    "total": {
        -      "title": "Total",
        -      "type": "integer"
        -    },
        -    "truncated": {
        -      "title": "Truncated",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "offset",
        -    "limit",
        -    "total",
        -    "count",
        -    "next_offset",
        -    "truncated",
        -    "results"
        -  ],
        -  "title": "ActionListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_boards1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "BoardSummary": {
        -      "properties": {
        -        "can_delete": {
        -          "title": "Can Delete",
        -          "type": "boolean"
        -        },
        -        "can_update": {
        -          "title": "Can Update",
        -          "type": "boolean"
        -        },
        -        "filter_count": {
        -          "title": "Filter Count",
        -          "type": "integer"
        -        },
        -        "hidden": {
        -          "title": "Hidden",
        -          "type": "boolean"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "include_subprojects": {
        -          "title": "Include Subprojects",
        -          "type": "boolean"
        -        },
        -        "name": {
        -          "title": "Name",
        -          "type": "string"
        -        },
        -        "project": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project"
        -        },
        -        "project_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project Id"
        -        },
        -        "public": {
        -          "title": "Public",
        -          "type": "boolean"
        -        },
        -        "show_hierarchies": {
        -          "title": "Show Hierarchies",
        -          "type": "boolean"
        -        },
        -        "starred": {
        -          "title": "Starred",
        -          "type": "boolean"
        -        },
        -        "timeline_visible": {
        -          "title": "Timeline Visible",
        -          "type": "boolean"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "name",
        -        "project_id",
        -        "project",
        -        "public",
        -        "hidden",
        -        "starred",
        -        "include_subprojects",
        -        "show_hierarchies",
        -        "timeline_visible",
        -        "filter_count",
        -        "can_update",
        -        "can_delete",
        -        "url"
        -      ],
        -      "title": "BoardSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "limit": {
        -      "title": "Limit",
        -      "type": "integer"
        -    },
        -    "next_offset": {
        -      "anyOf": [
        -        {
        -          "type": "integer"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "title": "Next Offset"
        -    },
        -    "offset": {
        -      "title": "Offset",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/BoardSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    },
        -    "total": {
        -      "title": "Total",
        -      "type": "integer"
        -    },
        -    "truncated": {
        -      "title": "Truncated",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "offset",
        -    "limit",
        -    "total",
        -    "count",
        -    "next_offset",
        -    "truncated",
        -    "results"
        -  ],
        -  "title": "BoardListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_capabilities1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "CapabilitySummary": {
        -      "properties": {
        -        "action_id": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Action Id"
        -        },
        -        "action_name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Action Name"
        -        },
        -        "context": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Context"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "string"
        -        },
        -        "name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Name"
        -        },
        -        "principal_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Principal Id"
        -        },
        -        "principal_name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Principal Name"
        -        },
        -        "url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Url"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "name",
        -        "action_id",
        -        "action_name",
        -        "principal_id",
        -        "principal_name",
        -        "context",
        -        "url"
        -      ],
        -      "title": "CapabilitySummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "limit": {
        -      "title": "Limit",
        -      "type": "integer"
        -    },
        -    "next_offset": {
        -      "anyOf": [
        -        {
        -          "type": "integer"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "title": "Next Offset"
        -    },
        -    "offset": {
        -      "title": "Offset",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/CapabilitySummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    },
        -    "total": {
        -      "title": "Total",
        -      "type": "integer"
        -    },
        -    "truncated": {
        -      "title": "Truncated",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "offset",
        -    "limit",
        -    "total",
        -    "count",
        -    "next_offset",
        -    "truncated",
        -    "results"
        -  ],
        -  "title": "CapabilityListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_categories1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "CategorySummary": {
        -      "properties": {
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "is_default": {
        -          "title": "Is Default",
        -          "type": "boolean"
        -        },
        -        "name": {
        -          "title": "Name",
        -          "type": "string"
        -        },
        -        "project": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project"
        -        },
        -        "project_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project Id"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "name",
        -        "project_id",
        -        "project",
        -        "is_default",
        -        "url"
        -      ],
        -      "title": "CategorySummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/CategorySummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "CategoryListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_documents1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "DocumentSummary": {
        -      "properties": {
        -        "attachment_count": {
        -          "title": "Attachment Count",
        -          "type": "integer"
        -        },
        -        "can_update": {
        -          "title": "Can Update",
        -          "type": "boolean"
        -        },
        -        "created_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Created At"
        -        },
        -        "description": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Description"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "project": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project"
        -        },
        -        "project_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project Id"
        -        },
        -        "title": {
        -          "title": "Title",
        -          "type": "string"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "title",
        -        "project_id",
        -        "project",
        -        "description",
        -        "created_at",
        -        "attachment_count",
        -        "can_update",
        -        "url"
        -      ],
        -      "title": "DocumentSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "limit": {
        -      "title": "Limit",
        -      "type": "integer"
        -    },
        -    "next_offset": {
        -      "anyOf": [
        -        {
        -          "type": "integer"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "title": "Next Offset"
        -    },
        -    "offset": {
        -      "title": "Offset",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/DocumentSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    },
        -    "total": {
        -      "title": "Total",
        -      "type": "integer"
        -    },
        -    "truncated": {
        -      "title": "Truncated",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "offset",
        -    "limit",
        -    "total",
        -    "count",
        -    "next_offset",
        -    "truncated",
        -    "results"
        -  ],
        -  "title": "DocumentListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_grids1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "GridSummary": {
        -      "properties": {
        -        "column_count": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Column Count"
        -        },
        -        "created_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Created At"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "row_count": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Row Count"
        -        },
        -        "scope": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Scope"
        -        },
        -        "updated_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Updated At"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "row_count",
        -        "column_count",
        -        "scope",
        -        "created_at",
        -        "updated_at",
        -        "url"
        -      ],
        -      "title": "GridSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/GridSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "GridListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_groups1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "GroupSummary": {
        -      "properties": {
        -        "can_delete": {
        -          "title": "Can Delete",
        -          "type": "boolean"
        -        },
        -        "can_update": {
        -          "title": "Can Update",
        -          "type": "boolean"
        -        },
        -        "created_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Created At"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "member_count": {
        -          "title": "Member Count",
        -          "type": "integer"
        -        },
        -        "name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Name"
        -        },
        -        "updated_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Updated At"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "name",
        -        "member_count",
        -        "created_at",
        -        "updated_at",
        -        "can_update",
        -        "can_delete",
        -        "url"
        -      ],
        -      "title": "GroupSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "limit": {
        -      "title": "Limit",
        -      "type": "integer"
        -    },
        -    "next_offset": {
        -      "anyOf": [
        -        {
        -          "type": "integer"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "title": "Next Offset"
        -    },
        -    "offset": {
        -      "title": "Offset",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/GroupSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    },
        -    "total": {
        -      "title": "Total",
        -      "type": "integer"
        -    },
        -    "truncated": {
        -      "title": "Truncated",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "offset",
        -    "limit",
        -    "total",
        -    "count",
        -    "next_offset",
        -    "truncated",
        -    "results"
        -  ],
        -  "title": "GroupListResult",
        -  "type": "object"
        -}New value: +null
    • Removedlist_help_texts
    • Changedlist_my_open_work_packages1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "WorkPackageSummary": {
        -      "properties": {
        -        "assignee": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Assignee"
        -        },
        -        "description": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Description"
        -        },
        -        "display_id": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Display Id"
        -        },
        -        "due_date": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Due Date"
        -        },
        -        "has_description": {
        -          "title": "Has Description",
        -          "type": "boolean"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "percentage_complete": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Percentage Complete"
        -        },
        -        "priority": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Priority"
        -        },
        -        "project": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project"
        -        },
        -        "project_phase": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project Phase"
        -        },
        -        "responsible": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Responsible"
        -        },
        -        "start_date": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Start Date"
        -        },
        -        "status": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Status"
        -        },
        -        "subject": {
        -          "title": "Subject",
        -          "type": "string"
        -        },
        -        "type": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Type"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        },
        -        "version": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Version"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "display_id",
        -        "subject",
        -        "type",
        -        "status",
        -        "priority",
        -        "project_phase",
        -        "assignee",
        -        "responsible",
        -        "project",
        -        "version",
        -        "start_date",
        -        "due_date",
        -        "percentage_complete",
        -        "description",
        -        "has_description",
        -        "url"
        -      ],
        -      "title": "WorkPackageSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "limit": {
        -      "title": "Limit",
        -      "type": "integer"
        -    },
        -    "next_offset": {
        -      "anyOf": [
        -        {
        -          "type": "integer"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "title": "Next Offset"
        -    },
        -    "offset": {
        -      "title": "Offset",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/WorkPackageSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    },
        -    "total": {
        -      "title": "Total",
        -      "type": "integer"
        -    },
        -    "truncated": {
        -      "title": "Truncated",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "offset",
        -    "limit",
        -    "total",
        -    "count",
        -    "next_offset",
        -    "truncated",
        -    "results"
        -  ],
        -  "title": "WorkPackageListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_news1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "NewsSummary": {
        -      "properties": {
        -        "author": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Author"
        -        },
        -        "can_delete": {
        -          "title": "Can Delete",
        -          "type": "boolean"
        -        },
        -        "can_update": {
        -          "title": "Can Update",
        -          "type": "boolean"
        -        },
        -        "created_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Created At"
        -        },
        -        "description": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Description"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "project": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project"
        -        },
        -        "project_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project Id"
        -        },
        -        "summary": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Summary"
        -        },
        -        "title": {
        -          "title": "Title",
        -          "type": "string"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "title",
        -        "summary",
        -        "description",
        -        "project_id",
        -        "project",
        -        "author",
        -        "created_at",
        -        "can_update",
        -        "can_delete",
        -        "url"
        -      ],
        -      "title": "NewsSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "limit": {
        -      "title": "Limit",
        -      "type": "integer"
        -    },
        -    "next_offset": {
        -      "anyOf": [
        -        {
        -          "type": "integer"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "title": "Next Offset"
        -    },
        -    "offset": {
        -      "title": "Offset",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/NewsSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    },
        -    "total": {
        -      "title": "Total",
        -      "type": "integer"
        -    },
        -    "truncated": {
        -      "title": "Truncated",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "offset",
        -    "limit",
        -    "total",
        -    "count",
        -    "next_offset",
        -    "truncated",
        -    "results"
        -  ],
        -  "title": "NewsListResult",
        -  "type": "object"
        -}New value: +null
    • Removedlist_non_working_days
    • Changedlist_notifications1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "NotificationSummary": {
        -      "properties": {
        -        "created_at": {
        -          "title": "Created At",
        -          "type": "string"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "project_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project Id"
        -        },
        -        "project_name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project Name"
        -        },
        -        "read": {
        -          "title": "Read",
        -          "type": "boolean"
        -        },
        -        "reason": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Reason"
        -        },
        -        "subject": {
        -          "title": "Subject",
        -          "type": "string"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        },
        -        "work_package_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Work Package Id"
        -        },
        -        "work_package_subject": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Work Package Subject"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "subject",
        -        "reason",
        -        "read",
        -        "project_id",
        -        "project_name",
        -        "work_package_id",
        -        "work_package_subject",
        -        "created_at",
        -        "url"
        -      ],
        -      "title": "NotificationSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/NotificationSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    },
        -    "total": {
        -      "title": "Total",
        -      "type": "integer"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "total",
        -    "results"
        -  ],
        -  "title": "NotificationListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_principals1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "PrincipalSummary": {
        -      "properties": {
        -        "email": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Email"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "login": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Login"
        -        },
        -        "name": {
        -          "title": "Name",
        -          "type": "string"
        -        },
        -        "status": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Status"
        -        },
        -        "type": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Type"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "type",
        -        "name",
        -        "login",
        -        "email",
        -        "status",
        -        "url"
        -      ],
        -      "title": "PrincipalSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "limit": {
        -      "title": "Limit",
        -      "type": "integer"
        -    },
        -    "next_offset": {
        -      "anyOf": [
        -        {
        -          "type": "integer"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "title": "Next Offset"
        -    },
        -    "offset": {
        -      "title": "Offset",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/PrincipalSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    },
        -    "total": {
        -      "title": "Total",
        -      "type": "integer"
        -    },
        -    "truncated": {
        -      "title": "Truncated",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "offset",
        -    "limit",
        -    "total",
        -    "count",
        -    "next_offset",
        -    "truncated",
        -    "results"
        -  ],
        -  "title": "PrincipalListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_priorities1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "PrioritySummary": {
        -      "properties": {
        -        "color": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Color"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "is_active": {
        -          "title": "Is Active",
        -          "type": "boolean"
        -        },
        -        "is_default": {
        -          "title": "Is Default",
        -          "type": "boolean"
        -        },
        -        "name": {
        -          "title": "Name",
        -          "type": "string"
        -        },
        -        "position": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Position"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "name",
        -        "is_default",
        -        "is_active",
        -        "color",
        -        "position"
        -      ],
        -      "title": "PrioritySummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/PrioritySummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "PriorityListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_project_memberships1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "MembershipSummary": {
        -      "properties": {
        -        "can_update": {
        -          "title": "Can Update",
        -          "type": "boolean"
        -        },
        -        "can_update_immediately": {
        -          "title": "Can Update Immediately",
        -          "type": "boolean"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "principal_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Principal Id"
        -        },
        -        "principal_name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Principal Name"
        -        },
        -        "project_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project Id"
        -        },
        -        "project_name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project Name"
        -        },
        -        "role_ids": {
        -          "items": {
        -            "type": "integer"
        -          },
        -          "title": "Role Ids",
        -          "type": "array"
        -        },
        -        "role_names": {
        -          "items": {
        -            "type": "string"
        -          },
        -          "title": "Role Names",
        -          "type": "array"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "principal_id",
        -        "principal_name",
        -        "project_id",
        -        "project_name",
        -        "role_ids",
        -        "role_names",
        -        "can_update",
        -        "can_update_immediately",
        -        "url"
        -      ],
        -      "title": "MembershipSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/MembershipSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "MembershipListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_project_phase_definitions1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "ProjectPhaseDefinition": {
        -      "properties": {
        -        "created_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Created At"
        -        },
        -        "finish_gate": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Finish Gate"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "name": {
        -          "title": "Name",
        -          "type": "string"
        -        },
        -        "start_gate": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Start Gate"
        -        },
        -        "updated_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Updated At"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "name",
        -        "start_gate",
        -        "finish_gate",
        -        "created_at",
        -        "updated_at",
        -        "url"
        -      ],
        -      "title": "ProjectPhaseDefinition",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/ProjectPhaseDefinition"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "ProjectPhaseDefinitionListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_projects2 fields changed
      • addedInput schema / properties / select
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Select"
        +}
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "ProjectSummary": {
        -      "properties": {
        -        "active": {
        -          "anyOf": [
        -            {
        -              "type": "boolean"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Active"
        -        },
        -        "can_delete": {
        -          "default": false,
        -          "title": "Can Delete",
        -          "type": "boolean"
        -        },
        -        "can_update": {
        -          "default": false,
        -          "title": "Can Update",
        -          "type": "boolean"
        -        },
        -        "created_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Created At"
        -        },
        -        "description": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Description"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "identifier": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Identifier"
        -        },
        -        "name": {
        -          "title": "Name",
        -          "type": "string"
        -        },
        -        "parent_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Parent Id"
        -        },
        -        "parent_name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Parent Name"
        -        },
        -        "public": {
        -          "anyOf": [
        -            {
        -              "type": "boolean"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Public"
        -        },
        -        "status": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Status"
        -        },
        -        "status_explanation": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Status Explanation"
        -        },
        -        "updated_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Updated At"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "name",
        -        "identifier",
        -        "active",
        -        "description",
        -        "url"
        -      ],
        -      "title": "ProjectSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "limit": {
        -      "title": "Limit",
        -      "type": "integer"
        -    },
        -    "next_offset": {
        -      "anyOf": [
        -        {
        -          "type": "integer"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "title": "Next Offset"
        -    },
        -    "offset": {
        -      "title": "Offset",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/ProjectSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    },
        -    "total": {
        -      "title": "Total",
        -      "type": "integer"
        -    },
        -    "truncated": {
        -      "title": "Truncated",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "offset",
        -    "limit",
        -    "total",
        -    "count",
        -    "next_offset",
        -    "truncated",
        -    "results"
        -  ],
        -  "title": "ProjectListResult",
        -  "type": "object"
        -}New value: +null
    • Removedlist_query_filter_instance_schemas
    • Changedlist_relations1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "RelationSummary": {
        -      "properties": {
        -        "description": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Description"
        -        },
        -        "from_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "From Id"
        -        },
        -        "from_subject": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "From Subject"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "to_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "To Id"
        -        },
        -        "to_subject": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "To Subject"
        -        },
        -        "type": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Type"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "type",
        -        "description",
        -        "from_id",
        -        "from_subject",
        -        "to_id",
        -        "to_subject"
        -      ],
        -      "title": "RelationSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/RelationSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "RelationListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_reminders1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "ReminderSummary": {
        -      "properties": {
        -        "creator": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Creator"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "note": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Note"
        -        },
        -        "remind_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Remind At"
        -        },
        -        "url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Url"
        -        },
        -        "work_package_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Work Package Id"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "remind_at",
        -        "note",
        -        "work_package_id",
        -        "creator",
        -        "url"
        -      ],
        -      "title": "ReminderSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/ReminderSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "ReminderListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_roles1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "RoleSummary": {
        -      "properties": {
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "name": {
        -          "title": "Name",
        -          "type": "string"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "name",
        -        "url"
        -      ],
        -      "title": "RoleSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/RoleSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "RoleListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_statuses1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "StatusSummary": {
        -      "properties": {
        -        "color": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Color"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "is_closed": {
        -          "title": "Is Closed",
        -          "type": "boolean"
        -        },
        -        "is_default": {
        -          "title": "Is Default",
        -          "type": "boolean"
        -        },
        -        "name": {
        -          "title": "Name",
        -          "type": "string"
        -        },
        -        "position": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Position"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "name",
        -        "is_default",
        -        "is_closed",
        -        "color",
        -        "position",
        -        "url"
        -      ],
        -      "title": "StatusSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/StatusSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "StatusListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_time_entries1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "TimeEntrySummary": {
        -      "properties": {
        -        "activity": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Activity"
        -        },
        -        "comment": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Comment"
        -        },
        -        "created_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Created At"
        -        },
        -        "end_time": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "End Time"
        -        },
        -        "entity_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Entity Id"
        -        },
        -        "entity_name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Entity Name"
        -        },
        -        "entity_type": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Entity Type"
        -        },
        -        "hours": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Hours"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "ongoing": {
        -          "title": "Ongoing",
        -          "type": "boolean"
        -        },
        -        "project": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project"
        -        },
        -        "spent_on": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Spent On"
        -        },
        -        "start_time": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Start Time"
        -        },
        -        "updated_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Updated At"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        },
        -        "user": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "User"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "project",
        -        "entity_type",
        -        "entity_id",
        -        "entity_name",
        -        "user",
        -        "activity",
        -        "hours",
        -        "spent_on",
        -        "start_time",
        -        "end_time",
        -        "ongoing",
        -        "comment",
        -        "created_at",
        -        "updated_at",
        -        "url"
        -      ],
        -      "title": "TimeEntrySummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "limit": {
        -      "title": "Limit",
        -      "type": "integer"
        -    },
        -    "next_offset": {
        -      "anyOf": [
        -        {
        -          "type": "integer"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "title": "Next Offset"
        -    },
        -    "offset": {
        -      "title": "Offset",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/TimeEntrySummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    },
        -    "total": {
        -      "title": "Total",
        -      "type": "integer"
        -    },
        -    "truncated": {
        -      "title": "Truncated",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "offset",
        -    "limit",
        -    "total",
        -    "count",
        -    "next_offset",
        -    "truncated",
        -    "results"
        -  ],
        -  "title": "TimeEntryListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_time_entry_activities1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "TimeEntryActivitySummary": {
        -      "properties": {
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "is_default": {
        -          "title": "Is Default",
        -          "type": "boolean"
        -        },
        -        "name": {
        -          "title": "Name",
        -          "type": "string"
        -        },
        -        "position": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Position"
        -        },
        -        "projects": {
        -          "items": {
        -            "type": "string"
        -          },
        -          "title": "Projects",
        -          "type": "array"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "name",
        -        "position",
        -        "is_default",
        -        "projects",
        -        "url"
        -      ],
        -      "title": "TimeEntryActivitySummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/TimeEntryActivitySummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "TimeEntryActivityListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_types1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "TypeSummary": {
        -      "properties": {
        -        "color": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Color"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "is_default": {
        -          "title": "Is Default",
        -          "type": "boolean"
        -        },
        -        "is_milestone": {
        -          "title": "Is Milestone",
        -          "type": "boolean"
        -        },
        -        "name": {
        -          "title": "Name",
        -          "type": "string"
        -        },
        -        "position": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Position"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "name",
        -        "color",
        -        "position",
        -        "is_default",
        -        "is_milestone",
        -        "url"
        -      ],
        -      "title": "TypeSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/TypeSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "TypeListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_users2 fields changed
      • addedInput schema / properties / select
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Select"
        +}
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "UserSummary": {
        -      "properties": {
        -        "admin": {
        -          "anyOf": [
        -            {
        -              "type": "boolean"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Admin"
        -        },
        -        "avatar_url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Avatar Url"
        -        },
        -        "created_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Created At"
        -        },
        -        "email": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Email"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "locked": {
        -          "anyOf": [
        -            {
        -              "type": "boolean"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Locked"
        -        },
        -        "login": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Login"
        -        },
        -        "name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Name"
        -        },
        -        "status": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Status"
        -        },
        -        "updated_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Updated At"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "name",
        -        "login",
        -        "email",
        -        "status",
        -        "admin",
        -        "locked",
        -        "avatar_url",
        -        "created_at",
        -        "updated_at",
        -        "url"
        -      ],
        -      "title": "UserSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "limit": {
        -      "title": "Limit",
        -      "type": "integer"
        -    },
        -    "next_offset": {
        -      "anyOf": [
        -        {
        -          "type": "integer"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "title": "Next Offset"
        -    },
        -    "offset": {
        -      "title": "Offset",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/UserSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    },
        -    "total": {
        -      "title": "Total",
        -      "type": "integer"
        -    },
        -    "truncated": {
        -      "title": "Truncated",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "offset",
        -    "limit",
        -    "total",
        -    "count",
        -    "next_offset",
        -    "truncated",
        -    "results"
        -  ],
        -  "title": "UserListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_versions1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "VersionSummary": {
        -      "properties": {
        -        "defining_project": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Defining Project"
        -        },
        -        "description": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Description"
        -        },
        -        "end_date": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "End Date"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "name": {
        -          "title": "Name",
        -          "type": "string"
        -        },
        -        "sharing": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Sharing"
        -        },
        -        "start_date": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Start Date"
        -        },
        -        "status": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Status"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "name",
        -        "status",
        -        "sharing",
        -        "start_date",
        -        "end_date",
        -        "defining_project",
        -        "description",
        -        "url"
        -      ],
        -      "title": "VersionSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "limit": {
        -      "title": "Limit",
        -      "type": "integer"
        -    },
        -    "next_offset": {
        -      "anyOf": [
        -        {
        -          "type": "integer"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "title": "Next Offset"
        -    },
        -    "offset": {
        -      "title": "Offset",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/VersionSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    },
        -    "total": {
        -      "title": "Total",
        -      "type": "integer"
        -    },
        -    "truncated": {
        -      "title": "Truncated",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "offset",
        -    "limit",
        -    "total",
        -    "count",
        -    "next_offset",
        -    "truncated",
        -    "results"
        -  ],
        -  "title": "VersionListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_views1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "ViewSummary": {
        -      "properties": {
        -        "created_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Created At"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "name": {
        -          "title": "Name",
        -          "type": "string"
        -        },
        -        "project": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project"
        -        },
        -        "project_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project Id"
        -        },
        -        "public": {
        -          "title": "Public",
        -          "type": "boolean"
        -        },
        -        "query": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Query"
        -        },
        -        "query_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Query Id"
        -        },
        -        "starred": {
        -          "title": "Starred",
        -          "type": "boolean"
        -        },
        -        "type": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Type"
        -        },
        -        "updated_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Updated At"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "type",
        -        "name",
        -        "project_id",
        -        "project",
        -        "query_id",
        -        "query",
        -        "public",
        -        "starred",
        -        "created_at",
        -        "updated_at",
        -        "url"
        -      ],
        -      "title": "ViewSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "limit": {
        -      "title": "Limit",
        -      "type": "integer"
        -    },
        -    "next_offset": {
        -      "anyOf": [
        -        {
        -          "type": "integer"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "title": "Next Offset"
        -    },
        -    "offset": {
        -      "title": "Offset",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/ViewSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    },
        -    "total": {
        -      "title": "Total",
        -      "type": "integer"
        -    },
        -    "truncated": {
        -      "title": "Truncated",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "offset",
        -    "limit",
        -    "total",
        -    "count",
        -    "next_offset",
        -    "truncated",
        -    "results"
        -  ],
        -  "title": "ViewListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_work_package_attachments1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "AttachmentSummary": {
        -      "properties": {
        -        "author": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Author"
        -        },
        -        "container_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Container Id"
        -        },
        -        "container_type": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Container Type"
        -        },
        -        "content_type": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Content Type"
        -        },
        -        "created_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Created At"
        -        },
        -        "description": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Description"
        -        },
        -        "download_url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Download Url"
        -        },
        -        "file_name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "File Name"
        -        },
        -        "file_size": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "File Size"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "status": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Status"
        -        },
        -        "title": {
        -          "title": "Title",
        -          "type": "string"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "title",
        -        "file_name",
        -        "file_size",
        -        "description",
        -        "content_type",
        -        "status",
        -        "author",
        -        "container_type",
        -        "container_id",
        -        "created_at",
        -        "download_url",
        -        "url"
        -      ],
        -      "title": "AttachmentSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/AttachmentSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "AttachmentListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_work_package_file_links1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "FileLinkSummary": {
        -      "properties": {
        -        "created_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Created At"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "storage_id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Storage Id"
        -        },
        -        "storage_name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Storage Name"
        -        },
        -        "title": {
        -          "title": "Title",
        -          "type": "string"
        -        },
        -        "updated_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Updated At"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "title",
        -        "storage_id",
        -        "storage_name",
        -        "created_at",
        -        "updated_at",
        -        "url"
        -      ],
        -      "title": "FileLinkSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/FileLinkSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "FileLinkListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_work_package_reactions1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "EmojiReactionSummary": {
        -      "properties": {
        -        "count": {
        -          "title": "Count",
        -          "type": "integer"
        -        },
        -        "emoji": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Emoji"
        -        },
        -        "reaction": {
        -          "title": "Reaction",
        -          "type": "string"
        -        },
        -        "users": {
        -          "items": {
        -            "type": "string"
        -          },
        -          "title": "Users",
        -          "type": "array"
        -        }
        -      },
        -      "required": [
        -        "reaction",
        -        "emoji",
        -        "count",
        -        "users"
        -      ],
        -      "title": "EmojiReactionSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/EmojiReactionSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "EmojiReactionListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_work_package_watchers1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "WatcherSummary": {
        -      "properties": {
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "login": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Login"
        -        },
        -        "name": {
        -          "title": "Name",
        -          "type": "string"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "name",
        -        "login",
        -        "url"
        -      ],
        -      "title": "WatcherSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/WatcherSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "count",
        -    "results"
        -  ],
        -  "title": "WatcherListResult",
        -  "type": "object"
        -}New value: +null
    • Changedlist_work_packages14 fields changed
      • addedInput schema / properties / assignee
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Assignee"
        +}
      • addedInput schema / properties / created_between
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Created Between"
        +}
      • addedInput schema / properties / created_on
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Created On"
        +}
      • addedInput schema / properties / due_between
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Due Between"
        +}
      • addedInput schema / properties / due_on
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Due On"
        +}
      • addedInput schema / properties / group_by
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Group By"
        +}
      • removedInput schema / properties / has_description
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "title": "Has Description"
        -}
      • addedInput schema / properties / priority
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Priority"
        +}
      • addedInput schema / properties / select
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Select"
        +}
      • addedInput schema / properties / sort_by
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sort By"
        +}
      • addedInput schema / properties / status
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Status"
        +}
      • addedInput schema / properties / updated_between
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Updated Between"
        +}
      • addedInput schema / properties / updated_on
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Updated On"
        +}
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "WorkPackageSummary": {
        -      "properties": {
        -        "assignee": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Assignee"
        -        },
        -        "description": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Description"
        -        },
        -        "display_id": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Display Id"
        -        },
        -        "due_date": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Due Date"
        -        },
        -        "has_description": {
        -          "title": "Has Description",
        -          "type": "boolean"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "percentage_complete": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Percentage Complete"
        -        },
        -        "priority": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Priority"
        -        },
        -        "project": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project"
        -        },
        -        "project_phase": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project Phase"
        -        },
        -        "responsible": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Responsible"
        -        },
        -        "start_date": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Start Date"
        -        },
        -        "status": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Status"
        -        },
        -        "subject": {
        -          "title": "Subject",
        -          "type": "string"
        -        },
        -        "type": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Type"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        },
        -        "version": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Version"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "display_id",
        -        "subject",
        -        "type",
        -        "status",
        -        "priority",
        -        "project_phase",
        -        "assignee",
        -        "responsible",
        -        "project",
        -        "version",
        -        "start_date",
        -        "due_date",
        -        "percentage_complete",
        -        "description",
        -        "has_description",
        -        "url"
        -      ],
        -      "title": "WorkPackageSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "limit": {
        -      "title": "Limit",
        -      "type": "integer"
        -    },
        -    "next_offset": {
        -      "anyOf": [
        -        {
        -          "type": "integer"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "title": "Next Offset"
        -    },
        -    "offset": {
        -      "title": "Offset",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/WorkPackageSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    },
        -    "total": {
        -      "title": "Total",
        -      "type": "integer"
        -    },
        -    "truncated": {
        -      "title": "Truncated",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "offset",
        -    "limit",
        -    "total",
        -    "count",
        -    "next_offset",
        -    "truncated",
        -    "results"
        -  ],
        -  "title": "WorkPackageListResult",
        -  "type": "object"
        -}New value: +null
    • Removedlist_working_days
    • Removedrender_text
    • Changedsearch_work_packages12 fields changed
      • addedInput schema / properties / assignee
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Assignee"
        +}
      • addedInput schema / properties / created_between
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Created Between"
        +}
      • addedInput schema / properties / created_on
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Created On"
        +}
      • addedInput schema / properties / due_between
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Due Between"
        +}
      • addedInput schema / properties / due_on
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Due On"
        +}
      • addedInput schema / properties / group_by
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Group By"
        +}
      • addedInput schema / properties / priority
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Priority"
        +}
      • addedInput schema / properties / select
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Select"
        +}
      • addedInput schema / properties / sort_by
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sort By"
        +}
      • addedInput schema / properties / updated_between
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Updated Between"
        +}
      • addedInput schema / properties / updated_on
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Updated On"
        +}
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "WorkPackageSummary": {
        -      "properties": {
        -        "assignee": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Assignee"
        -        },
        -        "description": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Description"
        -        },
        -        "display_id": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Display Id"
        -        },
        -        "due_date": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Due Date"
        -        },
        -        "has_description": {
        -          "title": "Has Description",
        -          "type": "boolean"
        -        },
        -        "id": {
        -          "title": "Id",
        -          "type": "integer"
        -        },
        -        "percentage_complete": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Percentage Complete"
        -        },
        -        "priority": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Priority"
        -        },
        -        "project": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project"
        -        },
        -        "project_phase": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Project Phase"
        -        },
        -        "responsible": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Responsible"
        -        },
        -        "start_date": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Start Date"
        -        },
        -        "status": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Status"
        -        },
        -        "subject": {
        -          "title": "Subject",
        -          "type": "string"
        -        },
        -        "type": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Type"
        -        },
        -        "url": {
        -          "title": "Url",
        -          "type": "string"
        -        },
        -        "version": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Version"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "display_id",
        -        "subject",
        -        "type",
        -        "status",
        -        "priority",
        -        "project_phase",
        -        "assignee",
        -        "responsible",
        -        "project",
        -        "version",
        -        "start_date",
        -        "due_date",
        -        "percentage_complete",
        -        "description",
        -        "has_description",
        -        "url"
        -      ],
        -      "title": "WorkPackageSummary",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "count": {
        -      "title": "Count",
        -      "type": "integer"
        -    },
        -    "limit": {
        -      "title": "Limit",
        -      "type": "integer"
        -    },
        -    "next_offset": {
        -      "anyOf": [
        -        {
        -          "type": "integer"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "title": "Next Offset"
        -    },
        -    "offset": {
        -      "title": "Offset",
        -      "type": "integer"
        -    },
        -    "results": {
        -      "items": {
        -        "$ref": "#/$defs/WorkPackageSummary"
        -      },
        -      "title": "Results",
        -      "type": "array"
        -    },
        -    "total": {
        -      "title": "Total",
        -      "type": "integer"
        -    },
        -    "truncated": {
        -      "title": "Truncated",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "offset",
        -    "limit",
        -    "total",
        -    "count",
        -    "next_offset",
        -    "truncated",
        -    "results"
        -  ],
        -  "title": "WorkPackageListResult",
        -  "type": "object"
        -}New value: +null
    • Changedupdate_my_preferences1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$defs": {
        -    "UserPreferences": {
        -      "properties": {
        -        "auto_hide_popups": {
        -          "anyOf": [
        -            {
        -              "type": "boolean"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Auto Hide Popups"
        -        },
        -        "comment_sort_descending": {
        -          "anyOf": [
        -            {
        -              "type": "boolean"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Comment Sort Descending"
        -        },
        -        "id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Id"
        -        },
        -        "lang": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Lang"
        -        },
        -        "notifications_reminder_time": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Notifications Reminder Time"
        -        },
        -        "time_zone": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Time Zone"
        -        },
        -        "updated_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Updated At"
        -        },
        -        "warn_on_leaving_unsaved": {
        -          "anyOf": [
        -            {
        -              "type": "boolean"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "title": "Warn On Leaving Unsaved"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "lang",
        -        "time_zone",
        -        "comment_sort_descending",
        -        "warn_on_leaving_unsaved",
        -        "auto_hide_popups",
        -        "notifications_reminder_time",
        -        "updated_at"
        -      ],
        -      "title": "UserPreferences",
        -      "type": "object"
        -    }
        -  },
        -  "properties": {
        -    "action": {
        -      "title": "Action",
        -      "type": "string"
        -    },
        -    "confirmed": {
        -      "title": "Confirmed",
        -      "type": "boolean"
        -    },
        -    "message": {
        -      "title": "Message",
        -      "type": "string"
        -    },
        -    "payload": {
        -      "additionalProperties": true,
        -      "title": "Payload",
        -      "type": "object"
        -    },
        -    "ready": {
        -      "title": "Ready",
        -      "type": "boolean"
        -    },
        -    "requires_confirmation": {
        -      "title": "Requires Confirmation",
        -      "type": "boolean"
        -    },
        -    "result": {
        -      "anyOf": [
        -        {
        -          "$ref": "#/$defs/UserPreferences"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ]
        -    }
        -  },
        -  "required": [
        -    "action",
        -    "confirmed",
        -    "requires_confirmation",
        -    "ready",
        -    "message",
        -    "payload",
        -    "result"
        -  ],
        -  "title": "UserPreferencesWriteResult",
        -  "type": "object"
        -}New value: +null
  7. 74 tool updatesv0.2.2
    • First observedget_attachment
    • First observedget_board
    • First observedget_category
    • First observedget_current_user
    • First observedget_custom_option
    • First observedget_document
    • First observedget_grid
    • First observedget_group
    • First observedget_help_text
    • First observedget_instance_configuration
    • First observedget_job_status
    • First observedget_membership
    • First observedget_my_preferences
    • First observedget_my_project_access
    • First observedget_news
    • First observedget_priority
    • First observedget_project
    • First observedget_project_admin_context
    • First observedget_project_configuration
    • First observedget_project_phase
    • First observedget_project_phase_definition
    • First observedget_project_work_package_context
    • First observedget_query_column
    • First observedget_query_filter
    • First observedget_query_filter_instance_schema
    • First observedget_query_operator
    • First observedget_query_sort_by
    • First observedget_status
    • First observedget_time_entry
    • First observedget_type
    • First observedget_user
    • First observedget_version
    • First observedget_view
    • First observedget_wiki_page
    • First observedget_work_package
    • First observedget_work_package_activities
    • First observedget_work_package_relations
    • First observedlist_actions
    • First observedlist_boards
    • First observedlist_capabilities
    • First observedlist_categories
    • First observedlist_documents
    • First observedlist_grids
    • First observedlist_groups
    • First observedlist_help_texts
    • First observedlist_my_open_work_packages
    • First observedlist_news
    • First observedlist_non_working_days
    • First observedlist_notifications
    • First observedlist_principals
    • First observedlist_priorities
    • First observedlist_project_memberships
    • First observedlist_project_phase_definitions
    • First observedlist_projects
    • First observedlist_query_filter_instance_schemas
    • First observedlist_relations
    • First observedlist_reminders
    • First observedlist_roles
    • First observedlist_statuses
    • First observedlist_time_entries
    • First observedlist_time_entry_activities
    • First observedlist_types
    • First observedlist_users
    • First observedlist_versions
    • First observedlist_views
    • First observedlist_work_package_attachments
    • First observedlist_work_package_file_links
    • First observedlist_work_package_reactions
    • First observedlist_work_package_watchers
    • First observedlist_work_packages
    • First observedlist_working_days
    • First observedrender_text
    • First observedsearch_work_packages
    • First observedupdate_my_preferences

TDQS

B3.2/5.0
Disambiguation3/5

Tools generally target distinct resources (projects, work packages, sprints, wiki pages, etc.), but some overlap exists: list_ relations vs get_work_package_relations, and get_project vs get_project_admin_context vs get_project_configuration may cause selection confusion. However, most tools are clearly named by their resource and action.

Naming Consistency4/5

The server consistently uses the verb_noun pattern with list_ for collections and get_ for single items. Minor inconsistencies like get_work_package_relations (plural but returns a list) and mixed use of list_ for some single-resource collections exist, but overall the convention is predictable.

Tool Count2/5

58 tools is exceptionally high for an MCP server, exceeding the typical 3–15 range by a wide margin. This is likely to overwhelm agents and create decision fatigue, even if each tool covers a distinct resource.

Completeness2/5

The server is purely read-only—there are no create, update, or delete tools for any resource. While it covers many entities (projects, work packages, wiki pages, news, documents, sprints, boards), the lack of any mutation operations represents a significant gap for typical project management workflows.

Maintenance

ActivityActive
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that connects Claude Desktop to your OpenProject instance, allowing you to manage projects, tasks, and time entries through natural language.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server enabling AI agents to interact with OpenProject API v3 for project management, including creating and managing work packages, projects, comments, time entries, boards, and user dashboards.
    42
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jtauschl/openproject-ce-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server