Skip to main content
Glama
rillsoft

Rillsoft Project MCP server

Official

Rillsoft Project MCP server

Deutsch

Rillsoft AI is the AI gateway to Rillsoft Project, the specialist solution for multi-project resource and capacity planning in mid-sized industrial companies: an MCP server built into Rillsoft Project 10, on top of its scheduling engine – not on top of a task list.

The server runs inside the visible, running Rillsoft Project on Windows and exposes the open project to an AI assistant or a script over the Model Context Protocol: project structure and schedule, roles, people, teams, machines and material, candidate search and staffing assistants, capacity analysis, baselines and plan/actual comparison, progress and status date, the resource pool, undo and redo.

This repository contains documentation, client configuration and the npm launcher (launcher.js, see Install via npx). The server itself is part of the Rillsoft Project 10 desktop application; the launcher only forwards to it, and there is no hosted endpoint.

Full documentation: https://rillsoft.ai/en/mcp/

At a glance

Endpoint

http://127.0.0.1:3928/mcp

Protocol

MCP over Streamable HTTP, revision 2025-06-18

Reach

127.0.0.1 only – no cloud service, nothing is sent to Rillsoft

Requirement

Rillsoft Project 10 on Windows

Access protection

optional API key, read-only mode, browser origins rejected

Trade-off

an MCP call carries no user identity and reaches exactly one Rillsoft Project instance

Related MCP server: arcgis-pro-mcp-free

What it is not

  • Not a task, to-do or Kanban tool, and not a platform for chat, wiki or team collaboration.

  • Not a standalone AI product or chat plug-in, but AI access to Rillsoft Project as a whole – product, editions and pricing are on www.rillsoft.com.

  • Not an AI that schedules on its own: Rillsoft Project calculates dates, workload and the critical path; the AI reads the result.

  • Not a cloud service: the server is reachable on 127.0.0.1 only, inside the open Rillsoft Project. Rillsoft sends nothing; what your AI client sends is governed by its provider's privacy policy.

  • Not a team server: there is no remote access.

  • Not a portfolio editor: portfolios can be opened and evaluated, but not changed.

Set up

  1. Enable the server. In Rillsoft Project open Settings → MCP server, set the active switch and leave read-only mode switched on for now. Alternatively start RillPrj.exe /mcp (port 3928) or RillPrj.exe /mcp:8123 (another port) for one session. Check: the status line shows "running on port 3928".

  2. Connect your AI client with clients/generic.json:

    {
      "mcpServers": {
        "rillsoft-project": {
          "type": "http",
          "url": "http://127.0.0.1:3928/mcp"
        }
      }
    }

    With an API key set in the settings, use clients/generic-api-key.json (Authorization: Bearer <KEY>). Ready-made entries per client:

    Client

    File

    Where it goes

    Verified

    Claude Code

    claude-code.mcp.json

    .mcp.json in the project folder, or claude mcp add --transport http rillsoft-project http://127.0.0.1:3928/mcp

    12 Oct 2026, 2.1.296

    Claude Desktop

    claude-desktop.json

    claude_desktop_config.json (Settings → Developer → Edit Config); bridge mcp-remote needs Node.js

    12 Oct 2026, 2.31226

    Codex

    codex.toml

    ~/.codex/config.toml, or codex mcp add rillsoft-project --url http://127.0.0.1:3928/mcp

    12 Oct 2026, CLI 0.162

    VS Code

    vscode.mcp.json

    .vscode/mcp.json

    12 Oct 2026, 1.117

    Cursor

    cursor.mcp.json

    ~/.cursor/mcp.json

    per vendor documentation

    Claude Code and VS Code need Rillsoft Project 10 build 10.0.625 or later. Any other client that speaks MCP over Streamable HTTP uses the address above; its documentation names the field names. Check: the client lists the server's tools – in read-only mode only the read-only ones. /mcp is exact, /mcp/ is a 404.

  3. Ask the first question, for example: Summarize the current project status: dates, progress, open conflicts, in five paragraphs. Shipped industry examples with synthetic data let you try it without your own projects.

Every mutating call is one ordinary undo step in Rillsoft Project – you take it back with Ctrl+Z like any of your own edits.

Step by step with success checks: Get started.

Install via npx (launcher)

For catalogues, registries and clients that only start stdio servers there is an npm package, @rillsoft/rillsoft-project-mcp (prepared in this repository, not yet published). It is a launcher, not the server:

  • With Rillsoft Project 10 running it forwards every request over stdio to the endpoint http://127.0.0.1:3928/mcp. The address is fixed; there is no environment variable for the address and no API key. If an API key is set in Rillsoft Project, the launcher reports the 401 – use the HTTP configuration above instead. For diagnostics only, RILLSOFT_MCP_LOG=<file> writes the requests and answers of a session to a log file.

  • Without Rillsoft Project (not running, or not Windows) it answers initialize and tools/list itself from tools-list.json – the same 118 tools as the program – and every tools/call with isError: true and a hint. This is what lets catalogues show the tools on Linux.

{
  "mcpServers": {
    "rillsoft-project": {
      "command": "npx",
      "args": ["-y", "@rillsoft/rillsoft-project-mcp"]
    }
  }
}

Requires Node.js 18 or later; real results only on Windows with Rillsoft Project 10 running. Customers do not need the launcher: the configurations above connect directly to the running program.

If something is stuck

Symptom

Cause and remedy

400

session or protocol revision missing – send initialize, then include Mcp-Session-Id and MCP-Protocol-Version: 2025-06-18

401

an API key is set; the client needs Authorization: Bearer <KEY>

403

the request carries an Origin header as browsers send it; use an MCP client, not a browser page

no port after a crash

the auto-recovery dialog is waiting; answer it or start RillPrj.exe /mcp

server does not listen immediately

it starts a few seconds after the program

Tool catalogue and contract

Tool names carry the prefix rillsoft_ and are English in every language build; arguments, result fields, enum values and error codes are stable, messages follow the language of the running Rillsoft Project. How tools/list, schemas, errors, undo, read-only mode and sessions work: Developers: the MCP server contract.

The complete tool catalogue – 118 tools of Rillsoft Project 10.0.626.0 with title, access class, parameters and description – is in TOOLS.md. It is generated from tools/list of the running program by scripts/generate_tools.py, never edited by hand; the raw result, including the output schemas, is in tools-list.json.

Provider

Rillsoft GmbH, Leonberg, Germany – software for scheduling, resource and multi-project planning. Rillsoft Project is proprietary software; this repository contains its MCP documentation and the launcher.

License

The documentation and the tool catalogue in this repository are licensed under CC BY 4.0; the launcher code (launcher.js) under the MIT License. Rillsoft Project itself, including its MCP server, is proprietary software of Rillsoft GmbH and is not covered by either license.

Available Tools

118 tools
rillsoft_analysis_option_listList analysis optionsA
Read-onlyIdempotent

Reports the supported views with the groupings (named ones and every 2D/3D/4D combination of the grouping menu), presentations and secondary views each of them permits, the value sets for secondaryChart and costCurve, and the view state currently set (view, grouping, presentation, time filter, secondary view). Ask this before rillsoft_view_state_apply to learn which combinations exist; pass view to get only the one view you need. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNorestrict views[] to this one view; omit for all views. Pass it whenever you already know which view you are going to set - the full list is large (about 1 400 level sequences)

Output Schema

ParametersJSON Schema
NameRequiredDescription
viewsYesall analysis views, or only the one named in the argument view
costCurvesYespermitted cost curves
currentStateYesthe analysis state currently set
secondaryChartsYesresource types that can be shown in the resource chart

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds genuinely new context by spelling out the content of the result (groupings, presentations, secondary views, value sets, current view state) and noting it can be scoped; the 'read-only, no undo step' clause largely restates the annotations rather than adding to them.

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

Conciseness4/5

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

Two dense sentences that are front-loaded with the return content and then the usage instruction. Efficient and free of filler, though the first sentence is long and packs a lot of enumeration.

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

Completeness5/5

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

With an output schema present, the description needn't document return values, yet it still frames what the listing contains and when to use it. Combined with 100% schema coverage and full annotations, an agent has everything needed to select and invoke it correctly.

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

Parameters3/5

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

Schema coverage is 100% and the schema description already documents the single 'view' parameter, its enum values, and the rationale for scoping. The description only reinforces the same point ('pass view to get only the one view you need'), which is useful routing but adds no semantics beyond the schema.

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

Purpose5/5

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

States a specific verb (Reports/Lists) and resource (supported analysis options: views, groupings, presentations, secondary views) and enumerates exactly what is returned. It distinguishes itself from siblings by naming rillsoft_view_state_apply as the natural consumer of this information.

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

Usage Guidelines5/5

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

Explicitly says to call this before rillsoft_view_state_apply to learn which combinations exist, and gives a concrete alternative path ('pass view to get only the one view you need'). Both the when-to-use and the when/what-else are stated.

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

rillsoft_analysis_report_getRead analysis reportA
Read-onlyIdempotent

Reads the resource or capacity view currently visible as a flat YAML report: reference lists plus items carrying demand (and in capacity views supply) in the time grid of the visible calendar scale. The scope is that one visible view, not the whole project - which view it is comes from rillsoft_view_state_get, and rillsoft_view_state_apply switches it. It takes no parameters. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
yamlYesthe report as YAML, the same text as in content[0].text

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new context beyond that: the flat YAML output shape, the view-scoped (not project-wide) behavior, and 'no undo step.' Return details are not repeated, which is fine since an output schema exists.

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?

Front-loaded with the verb+resource+format, followed by scope and dependency information that earns its place. Slight redundancy: 'Read-only' restates readOnlyHint and 'It takes no parameters' restates the empty schema, but the overall structure is tight and non-padded.

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 zero-parameter, read-only tool with an output schema, the description supplies everything an agent needs: scope, output format, the view-state prerequisite tools, and the fact that no undo exists. Nothing material is missing.

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, so there is nothing for the schema to document and the baseline is 4. The description sensibly confirms 'It takes no parameters,' which is the only parameter-relevant statement available.

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 gives a specific verb+resource+format: it 'Reads the resource or capacity view currently visible as a flat YAML report.' It also defines the scope precisely ('that one visible view, not the whole project'). It does not contrast against the sibling report tool rillsoft_variance_report_get, keeping it 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 Guidelines4/5

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

It gives clear operational context: which view is read comes from rillsoft_view_state_get and rillsoft_view_state_apply switches it, so the agent knows the prerequisite chain. However it does not state when to prefer this tool over alternatives such as rillsoft_variance_report_get, so no explicit exclusions are present.

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

rillsoft_baseline_createCreate baselineA
Destructive

Creates a baseline as a snapshot of the current state of the project and selects it. With replaceAll:true the existing baselines are deleted first - that is the destructive part of this tool. Switching between existing baselines goes through rillsoft_baseline_select, and the planned-versus-actual comparison itself through rillsoft_variance_report_get. Refused in a portfolio: there is no baseline there, not even per project. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoname of the baseline; defaults to the project name plus a timestamp
replaceAllNotrue = delete the existing baselines first (defaults to false)

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYesname of the created baseline
uuidYesUUID of the created baseline
numberYesnumber of the created baseline
selectionYesthe selected baseline

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and non-idempotent, but the description adds real value beyond them: it localizes the destruction to the replaceAll:true path, notes the portfolio refusal, and mentions 'One undo step' (reversibility). It does not give a return payload or what the new baseline looks like, but the output schema covers that, so this is close to complete.

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

Conciseness5/5

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

Four tight sentences, each earning its place: core action, the destructive flag path, sibling routing, and portfolio refusal plus undo. Front-loaded with the verb and the destructive caveat early.

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 two-parameter mutation with an output schema, it covers the action, the destructive branch, reversibility ('one undo step'), a domain restriction (no portfolio baselines), and how to reach related tools. Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents both parameters. The description still adds meaning beyond the schema by attaching the destructive consequence to the replaceAll:true flag and clarifying that the created baseline is selected. This makes the flag's side effect explicit rather than just a boolean 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?

States a specific verb ('creates a baseline') and resource with concrete semantics: a snapshot of the current project state that also gets selected. It explicitly distinguishes itself from rillsoft_baseline_select and rillsoft_variance_report_get, so the agent can route between baseline siblings without opening schemas.

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

Usage Guidelines5/5

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

Explicit when-to-use alternatives: switching baselines goes through rillsoft_baseline_select, comparison through rillsoft_variance_report_get. It also names a when-not condition ('Refused in a portfolio'), which no sibling sibling makes redundant. Nothing is left to inference.

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

rillsoft_baseline_deleteDelete baselineA
Destructive

Deletes a baseline; where it was the selected one, the selection falls back to the dynamic baseline. Only that snapshot goes - the project keeps its planning data untouched. Listing what exists goes through rillsoft_baseline_list. Refused in a portfolio: there is no baseline there, not even per project. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
numberYesbaseline number from rillsoft_baseline_list

Output Schema

ParametersJSON Schema
NameRequiredDescription
plansYesall baselines of the project
selectionYesthe selected baseline

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the destructiveHint=true annotation: it discloses that selection falls back to the dynamic baseline, that only the snapshot is removed while project planning data stays intact, that portfolios are refused, and that the action is 'one undo step'. These are exactly the side effects and reversibility facts an agent needs.

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

Conciseness5/5

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

Four short sentences, front-loaded with the action and consequence, each carrying distinct information (fallback, data preservation, sibling routing, portfolio restriction, undo). No filler.

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

Completeness5/5

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

With annotations covering the safety profile and an output schema present, the description supplies the remaining behavioral context - reversibility, data impact, and environmental restriction - leaving nothing material for an agent to guess.

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

Parameters3/5

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

Schema description coverage is 100% - the number parameter is fully documented as coming from rillsoft_baseline_list, which the description echoes. The description adds no syntax or format detail beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb (Deletes) and resource (a baseline), then distinguishes it from the sibling rillsoft_baseline_list for enumeration. An agent can immediately tell this is the removal operation versus create/select/list in the baseline family.

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?

Names the alternative (listing goes through rillsoft_baseline_list) and gives a clear when-not condition (refused in a portfolio, no baseline exists there). It lacks explicit guidance on when to delete versus re-select, but the routing to the relevant sibling is clear.

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

rillsoft_baseline_listList baselinesA
Read-onlyIdempotent

Reads the baselines of the project (number, name, uuid) and the active selection (number, dynamic, name). Number 0 while baselines exist means the dynamic baseline. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
plansYesall baselines of the project
selectionYesthe selected baseline

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotent/non-destructive, so 'Read-only, no undo step' is partly redundant, but the 'no undo step' phrasing adds that the call does not create a history entry. The domain rule 'Number 0 while baselines exist means the dynamic baseline' is genuine behavioral context not present in any structured field.

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?

Three short sentences, front-loaded with the resource and return shape, with no filler. The dynamic-baseline rule is dense but earns its place because it is non-obvious.

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

Completeness4/5

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

With no parameters, an output schema covering return values, and annotations covering the safety profile, the description is essentially complete; the only omission is any hint of when to prefer this over the other baseline_* tools.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline of 4 applies; the description correctly spends no space on argument semantics and instead describes what is returned.

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 ('Reads') and resource ('the baselines of the project') and even enumerates the returned fields (number, name, uuid) plus the active selection. An agent can distinguish it from baseline_create/delete/select by the read verb, though the description never explicitly names those siblings.

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

Usage Guidelines3/5

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

Usage is only implied: it reads baseline state, so an agent infers 'use this to inspect baselines before selecting or deleting one.' No explicit when-to-use, prerequisites, or named alternatives (baseline_select, baseline_delete) are given.

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

rillsoft_baseline_selectSelect baselineA
Idempotent

Selects the baseline used for the planned-versus-actual comparison. It only moves the selection; no baseline is created or deleted here (rillsoft_baseline_create and rillsoft_baseline_delete do that), and the comparison itself is read through rillsoft_variance_report_get. Refused in a portfolio: there is no baseline there, not even per project. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
numberYesbaseline number from rillsoft_baseline_list; 0 = the dynamic baseline, combined per task out of all baselines

Output Schema

ParametersJSON Schema
NameRequiredDescription
selectionYesthe selected baseline

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare idempotent=true and destructive=false, and the description usefully adds that the operation is a single undo step and that it is refused in a portfolio (a real error condition). It stops short of describing what happens to the previously selected baseline, but the added context is substantive.

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 tight sentences, front-loaded with the core action, then the boundary with siblings, then the refusal condition and undo behavior. Every sentence carries distinct information.

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

Completeness5/5

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

An output schema exists, so return values need not be described. The description covers the mutation, its scope, sibling boundaries, the undo cost, and the failure case, which is everything an agent needs to invoke it correctly.

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

Parameters3/5

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

Schema coverage is 100% and the schema itself explains the 'number' parameter including the 0 = dynamic baseline semantics. The description adds no parameter-level detail beyond that, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Selects the baseline') and scopes it to the planned-versus-actual comparison. It explicitly distinguishes itself from the sibling tools that create/delete baselines and the one that reads the comparison.

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?

Names the alternatives (rillsoft_baseline_create, rillsoft_baseline_delete, rillsoft_variance_report_get) with the condition that selects each, and states an explicit exclusion: it is refused in a portfolio. Nothing is left to inference.

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

rillsoft_calendar_createCreate calendarA

Creates a calendar; without 'week' it takes the default weekly model, Monday to Friday 08:00-12:00;13:00-17:00. Inside an open unit of work only.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNocode of the calendar; it has to be unique across the pool, but it may stay empty
nameNoname of the calendar
weekNoweekly model: { sun, mon, tue, wed, thu, fri, sat } carrying shifts such as "08:00-12:00;13:00-17:00"; empty means a day off
colorNocolor as #RRGGBB
notesNonotes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoid of the calendar
codeNocode of the calendar; missing when none is set
nameNoname of the calendar
outcomeYeswhat the call did

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false). The description adds two genuinely non-obvious behaviors on top: the implicit default weekly model (Mon–Fri 08:00-12:00;13:00-17:00) and the transactional precondition requiring an open unit of work.

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

Conciseness4/5

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

Two short clauses, no filler, and the most surprising fact (the implicit default weekly model) is front-loaded. The trailing precondition is terse to the point of being slightly cryptic, but nothing is wasted.

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 5-param mutation tool with a full schema, an output schema, and annotations, the description covers the two things structured data can't: implicit defaulting and the required transactional context. It omits error behavior and how the created calendar is identified, which are minor given the output schema exists.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema by defining the meaning of an omitted 'week' parameter — a default value the schema does not state. That is real added semantic value for the one parameter whose absence matters most.

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 ('Creates a calendar') and immediately clarifies the default modeling behavior when 'week' is omitted. It does not name sibling tools (rillsoft_calendar_update, rillsoft_calendar_source_import), so an agent must infer the distinction from the name alone.

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 'Inside an open unit of work only' is a real precondition that tells the agent when the call is legal, which is more than most definitions offer. However, there is no guidance on choosing this tool over calendar_source_import or calendar_update, and no statement about what to do if no unit of work is open.

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

rillsoft_calendar_deleteDelete calendarA
Destructive

Deletes a calendar. Where at least one idref_calendar points at it, the call is refused and names what refers to it - that reference lives inside the pool and would point nowhere. The last calendar of a pool stays. Inside an open unit of work only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoid of the calendar; give exactly one of 'id', 'code' and 'name'
codeNocode of the calendar
nameNoname of the calendar

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoid of the calendar
codeNocode of the calendar; missing when none is set
nameNoname of the calendar
outcomeYeswhat the call did

TDQS

A3.9/5.0
Behavior5/5

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

Goes well beyond the destructiveHint annotation by disclosing the referential-integrity rule (refused and named when referenced, because the pool reference would dangle), the invariant that the last calendar of a pool survives, and the requirement to be inside an open unit of work. These are exactly the multi-step and rollback-relevant facts an agent needs before invoking a destructive operation.

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

Conciseness4/5

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

Four short sentences, front-loaded with the core action and then the failure and invariant clauses in priority order. The clause 'that reference lives inside the pool and would point nowhere' is slightly convoluted but earns its place by justifying the refusal.

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?

An output schema exists, so return values need no explanation, and the description still covers refusal behavior, invariants and transaction scope. It omits permission/authorization requirements, but otherwise the destructive path is adequately framed.

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

Parameters3/5

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

Schema description coverage is 100% and the schema itself states 'give exactly one of id, code and name', so the parameter contract is fully carried by structured data. The description adds nothing about the identifier options, which matches the baseline of 3 when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb and resource ('Deletes a calendar'), which is unambiguous and clearly distinct from the create/update/list siblings. It does not explicitly name an alternative, but the delete semantic is not confusable with any 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?

It gives real preconditions — the call is refused when an idref_calendar references the calendar, and it must run 'inside an open unit of work' — which shapes when the call can succeed. However, it never contrasts with calendar_update or any sibling, and it does not explain how to resolve a refusal, so guidance 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.

rillsoft_calendar_listList calendarsA
Read-onlyIdempotent

Reads calendars of the master data: the weekly scheme (shifts per weekday sun..sat, empty meaning a day off) and the exception days (public and special days) within the period. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNocalendar id from rillsoft_resource_pool_catalog_list; empty means every calendar
toNofinish of the period, DD.MM.YYYY hh:mm; defaults to the project finish
fromNobegin of the period for exception days, DD.MM.YYYY hh:mm; defaults to the project start

Output Schema

ParametersJSON Schema
NameRequiredDescription
toYesfinish of the evaluated period, DD.MM.YYYY hh:mm
fromYesbegin of the evaluated period, DD.MM.YYYY hh:mm
calendarsYesthe calendars of the resource pool

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, and the description reinforces this with "Read-only, no undo step." Beyond the safety profile it adds genuine domain behavior: what an empty weekday slot means (a day off) and that exception days cover public and special days. It does not describe pagination or result shape, but that is partly covered by the output 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?

A single dense sentence that front-loads the verb and the returned data model, with the read-only caveat appended. Every clause carries information (weekly scheme, sun..sat order, empty = day off, exception day types), though the parenthetical stacking makes it slightly heavy.

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

Completeness4/5

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

With annotations covering the safety profile and an output schema covering the return structure, the description supplies the remaining domain context an agent needs: what a calendar record consists of and what the period filters delimit. Only the routing against sibling calendar tools is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters, including the id source and the DD.MM.YYYY hh:mm formats. The description only echoes the period-scoping idea ("within the period"), adding no syntax or default behavior beyond what the schema states, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("Reads calendars of the master data") and enumerates what the calendars contain: the weekly scheme with shifts per weekday and the exception days. That is far more specific than the bare title, though it never names how it differs from near siblings such as rillsoft_calendar_source_get or rillsoft_calendar_create/update.

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

Usage Guidelines2/5

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

The description implies the read scope ("within the period") but gives no when-to-use, no when-not, and no alternative tool. An agent gets no routing help against the calendar_source_get or resource_pool_catalog_list siblings, and must infer from the schema that id must be sourced elsewhere.

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

rillsoft_calendar_source_getRead holiday sourceA
Read-onlyIdempotent

Reads the holiday source without changing anything: which source calendars exist, and which years do they carry days for? The pool is never changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNohttps URL or absolute path of a holiday source (.xml); it defaults to the source of the program language

Output Schema

ParametersJSON Schema
NameRequiredDescription
sourceYesevaluated source, URL or file path
calendarsYescalendars of the source

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, and the description largely restates that safety profile ("without changing anything", "never changed"). The scoping detail that the resource pool is untouched, and that coverage is reported per source calendar/year, adds some value beyond the annotations but not rich behavioral context.

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

Conciseness4/5

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

Two short sentences with the read-only nature front-loaded, and the second sentence reinforces the guarantee before the payoff. Slightly redundant, since "without changing anything" and "never changed" make the same point twice.

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 read-only getter with a full output schema, complete parameter documentation and covering annotations, the description is sufficient; an agent knows what it returns and that nothing is mutated. Only the routing versus sibling calendar tools is left unstated.

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

Parameters3/5

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

Schema description coverage is 100% for the single optional source parameter, including its HTTPS/path format and the default-to-program-language behavior. The description adds nothing about the parameter, so the schema-driven baseline of 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ("Reads the holiday source") and clarifies the returned content: which source calendars exist and which years they cover. It implicitly contrasts with the write-oriented sibling rillsoft_calendar_source_import, but never names that alternative 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?

Usage is only implied: the read-before-import workflow is inferable from the name and the sibling import tool, but the description never states when to call this versus rillsoft_calendar_source_import or rillsoft_calendar_list. No exclusions or prerequisites are given.

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

rillsoft_calendar_source_importAdopt holidaysA
DestructiveIdempotent

Adopts the holidays of a source calendar into a pool calendar. What gets replaced is a whole year at a time: a year the source carries days for is overwritten completely, company holidays entered by hand in that year included, while a year without source data stays untouched. The only guard against that is 'years'. The answer names the days removed and the days created per year. Inside an open unit of work only.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearsNothe years to adopt, either an array such as [2026, 2027] or an object { from, to }; it defaults to every year the source carries
sourceNohttps URL or absolute path of a holiday source (.xml); it defaults to the source of the program language
sourceCalendarYesname (preferred) or id of a calendar of the source; rillsoft_calendar_source_get reports them
targetCalendarYes{ id } or { code } or { name } of the pool calendar to fill

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoid of the calendar
codeNocode of the calendar; missing when none is set
nameNoname of the calendar
yearsYesbalance per year
sourceYesevaluated source, URL or file path
createdYesdays created in total
outcomeYeswhat the call did
sourceCalendarYesname of the adopted source calendar

TDQS

A4.7/5.0
Behavior5/5

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

Annotations flag destructiveHint=true, but the description goes well beyond that by disclosing the exact blast radius: whole-year replacement, hand-entered company holidays in that year are lost, years without source data are untouched. It also states what the response contains (days removed and created per year) and the transactional precondition.

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?

Front-loads purpose, then behavior, then the guard parameter, then the return, then the precondition. Every sentence carries information an agent needs; no filler or restatement of the title.

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 destructive, nested-schema, open-world operation this is complete: annotations cover safety, the output schema covers return shape, and the description covers destruction scope, guard behavior, and the transaction requirement. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine semantics for 'years' by framing it as the sole protection against the whole-year overwrite. It does not add syntax details (array vs {from,to}) beyond what the schema already documents.

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

Purpose5/5

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

States a specific verb+resource pair ('adopts the holidays of a source calendar into a pool calendar'), which is unambiguous against siblings like rillsoft_calendar_source_get (read) or rillsoft_calendar_create (create). An agent can identify this as the bulk-import operation without opening the schema.

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

Usage Guidelines4/5

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

Gives a hard precondition ('Inside an open unit of work only') and identifies 'years' as the only guard against the overwrite, which tells the agent how to use the tool safely. It does not, however, name alternative tools or explicitly say 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.

rillsoft_calendar_updateUpdate calendarA
DestructiveIdempotent

Changes a calendar as a partial update, so only the fields given take effect, and replaces its exception days inside a range you name explicitly. Days outside that range stay as they are. Inside an open unit of work only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoid of the calendar; give exactly one of 'id', 'code' and 'name'
codeNocode of the calendar
nameNoname of the calendar, the fallback for pools without codes; renaming goes through 'newName'
weekNoweekly model; only the weekdays given are changed
colorNocolor as #RRGGBB
notesNonotes
rangeNo{ year } or { from, to } (DD.MM.YYYY); exception days are replaced inside that range only
newCodeNonew code of the calendar; it has to stay unique across the pool
newNameNonew name of the calendar
exceptionDaysNoexception days inside the range, each of them { date, shift (optional, empty meaning a day off), asWeekday (optional) }. An empty array clears exactly that range.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoid of the calendar
codeNocode of the calendar; missing when none is set
nameNoname of the calendar
rangeNothe replaced range; only when exception days were changed
createdNoexception days created; only with a replaced range
outcomeYeswhat the call did
removedNoexception days removed; only with a replaced range
unchangedNoexception days left unchanged; only with a replaced range

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds valuable scope detail: exception days are replaced only inside the named range while days outside stay as they are. This precisely bounds the destructive behavior in a way annotations cannot.

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?

Three short, front-loaded sentences with the partial-update contract stated first and the precondition last. No wasted text, though the final fragmentary 'Inside an open unit of work only' is slightly clipped.

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

Completeness4/5

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

With an output schema, full schema coverage, and safety annotations present, the description only needs to add behavioral nuance, which it does via the range-replacement rule. It is essentially complete for an agent to call it correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all 10 parameters, setting the baseline at 3. The description reinforces the range-scoped behavior of exceptionDays and the partial-update contract, but adds no syntax or format detail beyond the schema.

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

Purpose4/5

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

States a specific verb ('changes a calendar as a partial update') and resource, and clarifies the mutation is partial rather than full. It reads clearly against siblings like rillsoft_calendar_create and rillsoft_calendar_delete, though it never names them explicitly.

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

Usage Guidelines4/5

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

Provides a real precondition ('inside an open unit of work only') and clarifies partial-update semantics so the agent knows omitted fields are untouched. It does not explicitly route between update/create/delete alternatives, so it stops short of a 5.

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

rillsoft_document_ris_createAttach RIS documentA

Stores a local file as a new document in the document management of the Rillsoft Integration Server and hangs it on a task, a subproject or the project itself - the 'Add' button of the documents page. Today the server accepts documents on tasks only: a subproject or the project itself answers ris_not_found (the text says why), so give the uuid of a task. Takes effect on the server at once: no undo step, the project itself is not marked as changed, and rillsoft_history_undo does not take it back; rillsoft_document_ris_delete removes it. Requires the project to be stored on the server (rillsoft_project_ris_save_as first for a new one), the DMS license function and the create role; refused in an open portfolio, as in the documents dialog; the answer is the document as the server holds it afterwards.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesabsolute path of the local file to store; its file name becomes the document name
uuidNoUUID of the task or subproject the document hangs on; missing = the project itself
folderIdYesid of the DMS folder the document goes into, from folders[] of rillsoft_document_ris_list
descriptionNodescription stored with the document

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYesfile name of the document
noteNohints of the product path; missing when there were none
uuidYesUUID of the element the document hangs on - a task, a subproject or the project itself
fileSizeYessize of the stored file in bytes
folderIdYesid of the DMS folder the document lies in
createdAtYestime the document was stored, DD.MM.YYYY hh:mm; empty when the server reports none
projectIdYesid of the project the document belongs to
documentIdYesid of the document on the server; what _get, _update and _delete take
folderPathYesnames of the DMS folders from the root, joined by ' / '; empty when the folder is unknown to the tree
descriptionYesdescription; empty when none is set
elementNameYesname of that element
createdUserNameYesuser who stored it; empty when the server reports none

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover only the read/write/idempotency profile, but the description adds rich context the annotations cannot: immediate effect with no undo (history_undo does not take it back), the project is not marked as changed, refusal in an open portfolio, auth/license requirements, and that the response is the stored document.

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 purpose and key constraint are front-loaded and nearly every clause carries operational value (undo behavior, prerequisite tools, restrictions). It is, however, a dense run-on paragraph that could be structured with clearer breaks to improve parseability.

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 mutation tool with an output schema and annotations present, the description covers prerequisites, side effects, restrictions, and return value, leaving nothing an agent would need in order to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters. The description reinforces usage (task uuid needed, folderId from rillsoft_document_ris_list) but adds no syntax or format detail beyond what the schema provides, matching the baseline for full 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?

States a specific verb+resource: stores a local file as a new DMS document on the Rillsoft Integration Server and attaches it to a task/subproject/project, explicitly likening it to the 'Add' button. This clearly distinguishes it from siblings like rillsoft_document_ris_update and rillsoft_document_ris_delete.

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?

Gives explicit when-to-use conditions and constraints: documents are accepted on tasks only today, subproject/project answers ris_not_found, so pass a task uuid. It also points to rillsoft_document_ris_delete for removal and states prerequisites (project stored, DMS license, create role).

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

rillsoft_document_ris_deleteDelete RIS documentA
DestructiveIdempotent

Deletes one document of the open project from the document management of the Rillsoft Integration Server - the 'Delete' button of the documents page. The server deactivates it (soft delete; an administrator can restore it there). Takes effect at once: no undo step, the project itself is not marked as changed. A document that is already gone answers ris_not_found. rillsoft_document_ris_create is the counterpart. Runs with the login of the desktop session; needs the delete role.

ParametersJSON Schema
NameRequiredDescriptionDefault
documentIdYesid of the document, from rillsoft_document_ris_list

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNohints of the product path; missing when there were none
deletedYesalways true - a failure is an error, not a false
remainingYesdocuments still hanging on the same element
documentIdYesid of the document that was deleted

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the destructiveHint=true annotation by disclosing that the delete is a soft delete (server deactivates it, admin can restore), that it takes effect immediately with no undo, that the project is not marked changed, that a missing document returns ris_not_found, and that it runs as the desktop session login requiring the delete role. This is exactly the operational detail annotations cannot carry.

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?

Front-loads the core action, then layers side constraints, error behavior, counterpart tool, and auth requirement in compact clauses with no wasted sentences. Dense but efficient; slightly jammed into one paragraph.

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?

An output schema exists, so return values need not be described. The description still covers the semantics an agent needs: soft-delete behavior, irreversibility, error case, permission requirement, and session context.

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

Parameters3/5

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

Schema description coverage is 100% and documentId is already documented as coming from rillsoft_document_ris_list. The description only adds the scoping notion 'of the open project', so per the high-coverage baseline a 3 is appropriate.

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

Purpose5/5

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

States a specific verb (deletes) and resource (one document of the open project in the RIS document management), and anchors it to a concrete UI surface ('the Delete button of the documents page'). It also names its counterpart rillsoft_document_ris_create, so an agent can distinguish it from create/update/get/list siblings.

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?

Gives clear context for when this applies (deleting a document from the open project via the documents page) and points to rillsoft_document_ris_create as the counterpart operation. It does not explicitly enumerate when NOT to use it (e.g., folder_ris_delete vs document deletion), so it falls just short of a 5.

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

rillsoft_document_ris_getDownload RIS documentA
Read-onlyIdempotent

Downloads one document of the open project from the document management of the Rillsoft Integration Server into a local file - the 'Download' button of the documents page, with the target path given instead of asked. An existing file at path is refused unless overwrite:true; on any failure no partial file is left behind. The document itself is not changed; rillsoft_document_ris_list names the ids. Runs with the login of the desktop session. No undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesabsolute path of the file to write, including the file name; the file is written, not opened
overwriteNotrue = replace a file that already exists at path
documentIdYesid of the document, from rillsoft_document_ris_list

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYesfile name of the document
pathYespath of the file that was written
uuidYesUUID of the element the document hangs on - a task, a subproject or the project itself
fileSizeYessize of the stored file in bytes
folderIdYesid of the DMS folder the document lies in
createdAtYestime the document was stored, DD.MM.YYYY hh:mm; empty when the server reports none
projectIdYesid of the project the document belongs to
documentIdYesid of the document on the server; what _get, _update and _delete take
folderPathYesnames of the DMS folders from the root, joined by ' / '; empty when the folder is unknown to the tree
descriptionYesdescription; empty when none is set
elementNameYesname of that element
bytesWrittenYesbytes written to that file
createdUserNameYesuser who stored it; empty when the server reports none

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive. Description adds valuable beyond-annotation behavior: an existing file is refused unless overwrite:true, no partial file is left on failure, runs with desktop session login. Does not mention output schema contents, but those are declared.

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?

Dense but front-loaded: purpose first, then overwrite rule, failure safety, and session context. Each sentence carries distinct information. Slightly long sentence but no filler.

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

Completeness5/5

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

Covers purpose, id source, overwrite semantics, failure safety, session authentication, and 'no undo' irreversibility. With a rich schema (100% coverage) and output schema, the description provides everything an agent needs to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters (path, overwrite, documentId) are fully documented in the schema. The description adds semantic context for path ('target path given instead of asked') and overwrite refusal behavior, but mostly reiterates schema content. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb+resource ('Downloads one document of the open project from the document management') and maps it to a concrete UI analogue ('the Download button of the documents page'). Clearly distinguishes from siblings by contrasting the target path being given instead of asked, and points to rillsoft_document_ris_list for ids.

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

Usage Guidelines4/5

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

Provides clear usage context: which document source, where ids come from (rillsoft_document_ris_list), and the overwrite behavior condition. Does not explicitly name when to prefer rillsoft_document_ris_update/create, but the download purpose is unambiguous against those siblings.

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

rillsoft_document_ris_listList RIS documentsA
Read-onlyIdempotent

Lists the documents the document management (DMS) of the Rillsoft Integration Server holds for the open project - files hanging on a task, a subproject or the project itself - together with the DMS folder tree of the client. In an open RIS portfolio it lists the documents of every loaded project (each names its projectId; the answer carries portfolioId), and downloading, updating and deleting work there too - only creating is refused, as in the documents dialog. Each document names the element it hangs on (uuid), its folder (folderId, folderPath) and the documentId the other document tools take. Requires a project opened from the server (rillsoft_project_ris_open) or stored there (rillsoft_project_ris_save_as); a new or file-based project has no documents. Reads the server every time; runs with the login of the desktop session. Read-only, no undo step. Not to be confused with the project files rillsoft_project_file_open handles.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidNoUUID of a task, subproject or the project itself: only the documents hanging on that element; missing = every document of the project

Output Schema

ParametersJSON Schema
NameRequiredDescription
serverYesURL of the Rillsoft Integration Server the desktop session is logged in to
foldersYesthe DMS folder tree of the client, root first
clientIdYesid of the logged-in client; -1 while none is selected
userNameYesuser name of the desktop session
documentsYesthe documents of the open project, or of the one element given by uuid; at most 10000, more than that is an error
projectIdYesid of the open project on the server; -1 while a portfolio is open, each document then names its own
portfolioIdNoid of the open portfolio on the server; only while a RIS portfolio is open

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, open-world. The description adds real value beyond them: it reads the server every call, runs with the desktop session login, and has no undo step. It also explains the portfolio-vs-project output difference (portfolioId returned, projectId per project). It does not discuss auth failure modes or result size/pagination, keeping it from a 5.

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

Conciseness3/5

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

Information-dense but long-winded, with heavy em-dash clauses and interleaved portfolio, download, prerequisite and output details. The core 'what it lists' is front-loaded, but the middle sentences ramble and could be tightened without losing content.

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

Completeness4/5

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

Given an output schema exists, the description needn't enumerate return fields, yet it usefully names the identifying fields (uuid, folderId, folderPath, documentId). With a single optional param, annotations, and output schema, the description covers the prerequisites and portfolio edge cases an agent needs; only failure/auth specifics are absent.

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

Parameters4/5

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

Schema coverage is 100%, so the schema documents the uuid parameter fully. The description reinforces the semantics by explaining that omitting uuid returns every document, and that each returned document carries uuid/folderId/folderPath/documentId – meaningfully linking the parameter to the output.

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

Purpose5/5

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

States a specific verb and resource ('Lists the documents the DMS... holds') and scopes it to the open project, including which elements documents hang on. Explicitly distinguishes itself from the sibling rillsoft_project_file_open and from the document create tool, so an agent can route correctly.

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?

Gives explicit prerequisites (project must be opened via rillsoft_project_ris_open or saved via rillsoft_project_ris_save_as; new/file-based projects have none) and states what is and isn't supported in a portfolio (read/update/delete work, create is refused). Names the sibling not to be confused with.

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

rillsoft_document_ris_updateUpdate RIS documentA
Destructive

Changes the description, the DMS folder and/or the content of one document in the document management of the Rillsoft Integration Server - editing the description in the list, dragging it into a folder and the 'Upload' button of the documents page. At least one of description, folderId and path is required; the element the document hangs on cannot be changed (delete and attach again). Replacing the content with path is destructive: the stored file is overwritten and its name follows the new file. Takes effect on the server at once - no undo step, the project itself is not marked as changed. Without a path and without a difference nothing is sent. Runs with the login of the desktop session; needs the modify role.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoabsolute path of a local file whose content replaces the stored file; the document takes that file's name
folderIdNoid of the DMS folder to move the document into
documentIdYesid of the document, from rillsoft_document_ris_list
descriptionNonew description

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYesfile name of the document
noteNohints of the product path; missing when there were none
uuidYesUUID of the element the document hangs on - a task, a subproject or the project itself
fileSizeYessize of the stored file in bytes
folderIdYesid of the DMS folder the document lies in
createdAtYestime the document was stored, DD.MM.YYYY hh:mm; empty when the server reports none
projectIdYesid of the project the document belongs to
documentIdYesid of the document on the server; what _get, _update and _delete take
folderPathYesnames of the DMS folders from the root, joined by ' / '; empty when the folder is unknown to the tree
descriptionYesdescription; empty when none is set
elementNameYesname of that element
createdUserNameYesuser who stored it; empty when the server reports none

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations (destructiveHint=true, idempotentHint=false): it explains that path replacement overwrites the stored file and renames the document to the new file's name, that changes apply server-side immediately with no undo, that the project is not marked as changed, that it runs under the desktop session login, and that the modify role is required. This is exactly the extra behavioral context the annotations cannot convey.

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?

Front-loaded with the core action and the required-parameter constraint, and every clause carries real information (destructiveness, no undo, role requirement). It is dense and somewhat run-on, and the UI-action mapping (dragging, 'Upload' button) is slightly verbose, but nothing is filler.

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

Completeness5/5

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

An output schema exists, so return values need not be described. Combined with the schema, the description covers auth requirements, side effects (overwrite/no undo/rename), the no-op condition, and the immovable-parent constraint, leaving no material gap for correct invocation.

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

Parameters4/5

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

Schema description coverage is 100%, so the per-field meanings are already documented (baseline 3). The description adds cross-parameter semantics the schema cannot express: the at-least-one-of constraint across description/folderId/path, and the consequence that replacing content via path also renames the document.

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

Purpose5/5

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

States a specific verb ('Changes') and the exact resources touched (description, DMS folder, and/or document content) within the Rillsoft Integration Server document management. It maps the operation to concrete UI actions (edit in list, drag into folder, Upload button), which distinguishes it from rillsoft_document_ris_create/delete/get without opening a schema.

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

Usage Guidelines4/5

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

Explicitly states the precondition that at least one of description, folderId, or path is required, and rules out changing the parent element ('cannot be changed - delete and attach again'), plus the no-op case ('without a path and without a difference nothing is sent'). It does not name sibling tools as alternatives by name, but the when/when-not conditions are clear.

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

rillsoft_element_deleteDelete elementA
Destructive

Deletes a task or a subproject, together with its dependencies respectively its content. Here element means a task or a subproject - this is the generic way that takes either. Where you know which of the two you have, rillsoft_task_delete and rillsoft_subproject_delete say so in the name and refuse the other kind. The main project cannot be deleted. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the task or subproject

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYesUUID of the element that was deleted

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already mark this destructive and non-idempotent, and the description goes beyond that by disclosing cascade scope (dependencies / subproject content are removed with the element), the protected resource (main project cannot be deleted), and reversibility ('One undo step'). These are exactly the behavioral facts an agent needs before committing a destructive call.

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 destructive scope and the protected-root constraint are front-loaded, and every sentence carries information. The third sentence ('Here element means a task or a subproject - this is the generic way that takes either') slightly restates what the opening sentence already implied, which is the only real 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?

An output schema exists, so return values need not be described. With cascade behavior, the undeletable project, the undo guarantee, and routing to the two kind-specific siblings all covered, an agent has everything needed to call this correctly and safely.

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

Parameters3/5

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

There is a single required parameter with 100% schema description coverage, so the schema already defines uuid as the task/subproject identifier and the description adds nothing further (no format, no way to obtain the UUID). Baseline 3 applies when the schema carries the parameter semantics.

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

Purpose5/5

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

The description states a specific verb (deletes) and resource (task or subproject), and explicitly defines the ambiguous term 'element' so the agent knows the tool is the polymorphic variant. It also names the two sibling tools that handle single kinds, so an agent can distinguish this tool from rillsoft_task_delete and rillsoft_subproject_delete without opening a schema.

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

Usage Guidelines5/5

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

It gives an explicit selection rule: use this generic tool when the element kind is unknown, and use rillsoft_task_delete / rillsoft_subproject_delete when the kind is known ('they refuse the other kind'). It also states an exclusion — 'The main project cannot be deleted' — which prevents a whole class of failed calls.

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

rillsoft_element_moveMove elementA

Moves elements - here an element is a task or a subproject. Give exactly one of position with newParentUuid, direction, or extractFromSubproject. RP reassigns the WBS codes; dependencies and assignments survive. Display rows stay valid: where only part of a row moves away, the row is split cleanly. In a portfolio no element changes its project and none goes directly below the portfolio, as in the user interface; with direction the projects themselves can be reordered at portfolio level. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidNoUUID of the task or subproject; give either uuid or uuids. After a rillsoft_task_split one UUID stands for every part of that task, and they then move together
uuidsNoUUIDs of several elements that move together. This is the only way to move a display row built from different tasks in one piece; a nested selection is resolved for you, so a child moves with its subproject
numberNonarrows an ambiguous UUID down to one part; only together with uuid
positionNozero-based target position below the parent; empty appends at the end
directionNoa relative step by one display row, as in the user interface. Only together with uuid. Where the element sits at the edge already, the answer is moved:false and no undo step is created
newParentUuidNoUUID of the new parent subproject; empty keeps the current parent and changes the position only
extractFromSubprojectNotrue = one level up, below the grandparent

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsNoWBS code
nameNoname
uuidNoUUID of the element
movedYesfalse = the row was already at the edge; 'reason' says why
startNostart, DD.MM.YYYY hh:mm
finishNofinish, DD.MM.YYYY hh:mm
numberNonumber of the element; unique even for split tasks
reasonNowhy nothing was moved; only with moved:false
elementsNoall moved elements with their new parent
parentUuidNoUUID of the parent project or subproject

TDQS

A4.1/5.0
Behavior5/5

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

Adds substantial behavioral context beyond the annotations: WBS codes are reassigned, dependencies and assignments survive, display rows split cleanly when partially moved, portfolio-level restrictions apply, direction can reorder projects at portfolio level, and the operation is one undo step. Annotations only give basic flags, so the description carries useful operational detail.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and parameter rule, then layered with behavioral details. It is appropriately sized for a complex move operation, though the abbreviation 'RP' is unexplained and a couple of clauses could be tighter.

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 rich schema, output schema, and annotations, the description covers the key behavioral constraints an agent needs: parameter combination rules, data preservation, undo behavior, display-row integrity, and portfolio limitations. Nothing critical appears missing for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents parameters in detail. The description still adds meaning by tying 'position' to 'newParentUuid', clarifying the role of 'direction' for portfolio-level project reordering, and explaining the element concept for uuid/uuids, though much of the combination logic is already 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?

States a specific verb and resource ('Moves elements') and clarifies that an element is a task or subproject, which helps distinguish the resource. However, it does not explicitly differentiate from siblings like rillsoft_element_reorder, so an agent may still need to infer which move/reorder tool to pick.

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 gives clear parameter combination rules ('exactly one of position with newParentUuid, direction, or extractFromSubproject') and some portfolio context, but it does not state when to use this tool instead of alternatives such as rillsoft_element_reorder or rillsoft_element_subproject_group. Usage is largely implied.

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

rillsoft_element_reorderReorder childrenA
Idempotent

Reorders every direct child of a subproject completely and deterministically; a child is an element, meaning a task or a subproject. RP reassigns the WBS codes. An order that separates a display row is refused and names the UUIDs affected. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
parentUuidNoUUID of the subproject; empty = the main project
dissolveRowsNotrue = an order that separates a display row dissolves that row instead of being refused (defaults to false)
orderedUuidsYesevery direct child of the parent in the order wanted, each of them exactly once

Output Schema

ParametersJSON Schema
NameRequiredDescription
childrenYesthe direct children in their new order
parentUuidYesUUID of the project or subproject whose children were reordered

TDQS

A4/5.0
Behavior5/5

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

It discloses behavior well beyond the annotations: WBS codes are reassigned, an order that separates a display row is refused and names affected UUIDs, dissolveRows can override that refusal, and the operation is a single undo step. These are concrete mutation and error-handling details an agent needs.

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 action and packs important constraints into compact sentences. Every sentence contributes operational meaning without padding.

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 definition covers what the tool does, its mutation behavior, refusal condition, override option, and undo semantics. With an output schema and annotations present, it is largely complete; the main missing element is explicit guidance on when to choose this tool over sibling reorder/move tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already documented. The description adds some useful context by defining what a 'child' is, but most parameter-level meaning is already present in the schema.

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

Purpose5/5

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

The description gives a specific verb ('Reorders') and resource ('every direct child of a subproject'), then defines a child as a task or subproject. This is precise enough to distinguish it from more general element movement or project sorting tools.

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

Usage Guidelines2/5

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

The description explains the operation and its refusal behavior, but it does not say when to use this tool instead of alternatives such as rillsoft_element_move or rillsoft_project_sort. Usage is only implied by the tool's purpose.

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

rillsoft_element_subproject_groupGroup elements into subprojectA

Creates a subproject and pulls the named elements into it - an element being a task or a subproject. This groups elements that already exist; creating an empty subproject goes through rillsoft_subproject_create. In a portfolio the elements must lie inside a project - at portfolio level a new subproject would be a project, which the user interface does not offer either. One undo step, which takes the new subproject away again as well. The answer names the new subproject (uuid, wbs) and the elements that were moved.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoname of the new subproject; left empty it takes the name of the element where there is exactly one, and stays empty otherwise
uuidNoshorthand for a single element
uuidsNoUUIDs of the elements that move into the new subproject; all of them below the same project or subproject

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
elementsYesthe elements grouped into the new subproject
parentUuidYesUUID of the parent project or subproject

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly=false, destructive=false, and idempotent=false, so the safety profile is covered. The description adds genuinely new context: single-undo semantics that also remove the new subproject, and the portfolio-level restriction. It does not discuss permissions/auth, keeping it short of a 5.

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

Conciseness4/5

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

Front-loads the core action, then the alternative, then constraints, undo, and return content. Every sentence carries information, though the prose is dense and slightly run-on, costing some readability.

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

Completeness5/5

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

For a mutation tool with an output schema present, the description covers the alternative path, the portfolio precondition, undo behavior, and the shape of the response. An agent has everything needed to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so uuid/uuids/name semantics are already documented in the schema. The description only restates that elements are named and adds that an element is a task or subproject, adding marginal value over the structured fields.

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

Purpose5/5

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

States a specific compound action (creates a subproject and pulls named elements into it) and defines 'element' as a task or subproject. It also names the sibling it is NOT (rillsoft_subproject_create for empty subprojects), so an agent can distinguish it immediately.

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

Usage Guidelines5/5

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

Explicitly routes the empty-subproject case to rillsoft_subproject_create and states the portfolio-level precondition (elements must lie inside a project, since a portfolio-level subproject would be a project). Both when-to-use and when-not-to-use are covered.

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

rillsoft_fixed_element_listList fixed elementsA
Read-onlyIdempotent

Lists every fixed element of the project - an element here being a task, a milestone or a subproject - whose dates are pinned. These are exactly the elements rillsoft_project_reschedule leaves in place - to reschedule a project freely, release them first through rillsoft_task_update or rillsoft_subproject_update with fixed:false. projectFixed reports the same for the main project. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYesnumber of fixed elements
projectFixedYestrue = the main project itself is fixed
fixedElementsYesall fixed tasks, milestones and subprojects

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds context beyond the annotations: 'Read-only, no undo step' clarifies there is no history entry, and the explanation of fixed elements' relationship to rescheduling provides domain-specific behavioral insight. However, it does not describe output shape or pagination, so a 4 is appropriate.

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 four sentences and front-loads the core purpose before elaborating on rescheduling context and the read-only note. Every sentence adds value, though the projectFixed aside is slightly tangential. It remains tighter than most definitions without sacrificing necessary context.

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

Completeness5/5

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

Given the tool has zero parameters, an output schema, and full annotations, the description is complete. It explains the domain concept, the tool's role in the rescheduling workflow, and safety behavior. Nothing an agent needs in order to call this tool correctly is missing.

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, so the baseline score is 4. The description does not introduce any parameters and instead focuses on semantics and usage, which is correct for a parameterless tool. No additional parameter meaning is needed.

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

Purpose5/5

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

The description states a specific verb (Lists), resource (fixed element of the project), and defines the element types (task, milestone, subproject) whose dates are pinned. It explicitly distinguishes from sibling rillsoft_project_reschedule by describing the exact relationship between them. An agent can identify the tool's purpose without opening any schema.

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

Usage Guidelines5/5

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

It names the alternative behavior (reschedule leaves fixed elements in place) and points to the tools needed to change state (rillsoft_task_update or rillsoft_subproject_update with fixed:false). The condition for using this tool is clear: to find fixed elements before attempting a free reschedule. It also notes the main project equivalent via projectFixed.

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

rillsoft_folder_ris_createCreate RIS folderA

Creates a subfolder in the project folder tree of the logged-in client on the Rillsoft Integration Server - the 'New folder' button of the folder dialog. Takes effect on the server at once: no undo step; rillsoft_folder_ris_delete removes it. An unknown parent is refused before anything is sent. Runs with the login of the desktop session.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesname of the new folder
parentFolderIdYesid of the folder the new one goes into, from rillsoft_folder_ris_list; root folders cannot be created

Output Schema

ParametersJSON Schema
NameRequiredDescription
leftYesleft index of the nested-set tree
nameYesname of the folder
pathYesnames from the root, joined by ' / '
uuidYesUUID of the folder
depthYes0 at a root folder, 1 below it, and so on
rightYesright index of the nested-set tree
folderIdYesid of the folder on the server; what the other folder tools and rillsoft_project_ris_save_as take
descriptionYesdescription; empty when none is set
folderCountYessubfolders directly below this folder
projectCountYesprojects lying directly in this folder (subfolders not counted)
parentFolderIdNoid of the parent folder; missing at a root folder

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that the change is immediate with no undo step, names the inverse tool, states the pre-flight validation behavior for an unknown parent, and pins the auth context to the logged-in desktop session. Annotations (destructiveHint=false, idempotentHint=false) are consistent with a create that destroys nothing itself and is reversed by delete.

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?

Purpose is front-loaded in the first clause, followed by effect, reversal, validation, and auth context — four compact sentences with no filler. Slightly dense but every sentence carries distinct information.

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

Completeness5/5

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

For a mutation tool with an output schema, the description covers what it does, its side effects, reversal path, validation failure mode, and execution identity. Nothing an agent needs in order to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters (name, parentFolderId) are documented in the schema, including the 'root folders cannot be created' constraint. The description adds no format, syntax, or naming-rule detail beyond that, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Creates a subfolder in the project folder tree') plus the exact UI affordance it mirrors, so an agent can identify it against rillsoft_folder_ris_list/update/move. It explicitly names rillsoft_folder_ris_delete as the reversal path, sharpening the distinction from siblings.

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?

Gives clear operating context: immediate server effect, reversal only through rillsoft_folder_ris_delete, and that an unknown parent is rejected pre-send. It stops short of explicit 'use X when Y' routing for the other folder siblings (list, update, move).

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

rillsoft_folder_ris_deleteDelete RIS folderA
DestructiveIdempotent

Deletes an empty project folder of the logged-in client on the Rillsoft Integration Server - the 'Delete folder' button of the folder dialog. A folder that still holds subfolders or projects is refused (ris_folder_not_empty); nothing disappears silently. The server deactivates the folder (soft delete). Takes effect at once: no undo step. rillsoft_folder_ris_create is the counterpart. Runs with the login of the desktop session.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderIdYesid of the folder, from rillsoft_folder_ris_list

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYesalways true - a failure is an error, not a false
folderIdYesid of the folder that was deleted

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover the safety profile (destructive=true, idempotent=true, openWorld=true), and the description adds real value beyond them: it is a soft delete (server deactivates the folder), there is no undo, it takes effect immediately, nothing is removed silently, and it runs under the desktop session login. It also surfaces the specific error code for the refusal case.

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?

Front-loaded with the action and scope, and every clause carries information (UI mapping, refusal rule, soft-delete semantics, irreversibility, counterpart, auth context). It runs to six short clauses, which is a touch verbose, but no sentence is filler.

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

Completeness5/5

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

Covers scope, precondition/refusal behavior, side effects, reversibility and execution context. An output schema exists so return values need not be described, and the annotations carry the safety hints, leaving nothing an agent needs missing.

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

Parameters3/5

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

Schema description coverage is 100% and the single folderId parameter is already documented with its origin (rillsoft_folder_ris_list). The description adds no syntax, format or constraint detail about the parameter, so the baseline of 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Deletes an empty project folder ... on the Rillsoft Integration Server') with scope (logged-in client, empty folders only). It also names the sibling counterpart (rillsoft_folder_ris_create), so it is distinguishable from the other delete tools in the family.

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

Usage Guidelines5/5

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

Explicit when-not condition: a folder holding subfolders or projects is refused with ris_folder_not_empty. It names the counterpart tool rillsoft_folder_ris_create and points at rillsoft_folder_ris_list as the source of folderId, giving the agent clear routing.

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

rillsoft_folder_ris_listList RIS foldersA
Read-onlyIdempotent

Lists the project folder tree of the logged-in client on the Rillsoft Integration Server - the tree of the 'Open from database' dialog - with parentFolderId, path and depth per folder, so no nested-set arithmetic is needed; the folderId is what rillsoft_project_ris_save_as and the other folder tools take. Not the DMS folder tree of the documents (rillsoft_document_ris_list). Runs with the login of the desktop session. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
permissionNoonly folders the logged-in user holds this permission for; project_read is the defaultproject_read

Output Schema

ParametersJSON Schema
NameRequiredDescription
serverYesURL of the Rillsoft Integration Server the desktop session is logged in to
foldersYesevery folder the permission allows, in tree order (root first, children right after their parent)
clientIdYesid of the logged-in client; -1 while none is selected
userNameYesuser name of the desktop session
permissionYesthe permission the tree was filtered by

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint, so safety is covered. The description still adds genuine context: it runs under the desktop session login, corresponds to a specific dialog, and restates that there is no undo step. It stops short of describing pagination or tree-size limits, so not a 5.

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

Conciseness4/5

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

Front-loaded with purpose, then exclusions, then auth/behavior — a sensible order with little waste. 'Read-only, no undo step' partially duplicates the annotations, which keeps it from being maximally tight.

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

Completeness5/5

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

With an output schema present it needn't explain return values, and it doesn't over-explain them. Purpose, routing to the correct sibling, the consuming tools, and the auth/session context are all present, leaving nothing an agent needs before calling.

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

Parameters3/5

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

Schema description coverage is 100% and the single 'permission' enum is fully documented in the schema (default project_read, meaning of each value). The description says nothing further about the parameter, so the baseline 3 for schema-does-the-work applies.

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

Purpose5/5

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

States a specific verb and resource ('Lists the project folder tree'), identifies the concrete UI surface ('the tree of the Open from database dialog'), and lists the returned fields (parentFolderId, path, depth). It also names the sibling it is NOT (rillsoft_document_ris_list) so the agent can distinguish it without opening a schema.

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

Usage Guidelines5/5

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

Provides an explicit exclusion ('Not the DMS folder tree of the documents (rillsoft_document_ris_list)') and states the downstream consumers of the output, naming rillsoft_project_ris_save_as and 'the other folder tools'. That covers both when to use it and where its output flows, which is exactly what routes an agent correctly.

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

rillsoft_folder_ris_moveMove RIS folderA
Idempotent

Moves a project folder of the logged-in client on the Rillsoft Integration Server under another folder or next to it, with its subfolders and projects - dragging in the folder dialog, plus the sibling positions the server offers. A folder cannot go under itself or one of its subfolders (ris_folder_cycle). Renaming is rillsoft_folder_ris_update; a project changes its folder through rillsoft_project_ris_save_as. Takes effect at once: no undo step. Runs with the login of the desktop session.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderIdYesid of the folder to move, from rillsoft_folder_ris_list
positionNowhere it lands relative to targetFolderId; last_child (the default) is what dragging in the dialog doeslast_child
targetFolderIdYesthe folder it is placed under (first_child, last_child) or next to (prev_sibling, next_sibling)

Output Schema

ParametersJSON Schema
NameRequiredDescription
leftYesleft index of the nested-set tree
nameYesname of the folder
pathYesnames from the root, joined by ' / '
uuidYesUUID of the folder
depthYes0 at a root folder, 1 below it, and so on
rightYesright index of the nested-set tree
folderIdYesid of the folder on the server; what the other folder tools and rillsoft_project_ris_save_as take
descriptionYesdescription; empty when none is set
folderCountYessubfolders directly below this folder
projectCountYesprojects lying directly in this folder (subfolders not counted)
parentFolderIdNoid of the parent folder; missing at a root folder

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare write/idempotent/non-destructive, and the description adds real behavioral context: 'Takes effect at once: no undo step', the cycle restriction, and that it runs under the desktop session login. It stops short of describing server-side error behavior or side effects on contained projects beyond the move itself.

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

Conciseness4/5

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

Front-loads the core action, and each clause carries information (scope, alternative tools, constraint, immediacy, session). The 'dragging in the folder dialog, plus the sibling positions the server offers' fragment is slightly loose, but overall it is efficient rather than padded.

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

Completeness5/5

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

With an output schema present, 100% param coverage, and rich annotations, the description only needs to add routing and behavioral caveats — which it does, including the no-undo warning and the clone/cycle rule. An agent has everything needed to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so folderId, targetFolderId, and the position enum are already fully documented. The description gestures at the semantics ('under another folder or next to it', 'the sibling positions the server offers') but adds little beyond the schema's own worst-case 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?

Starts with a specific verb+resource ('Moves a project folder ... on the Rillsoft Integration Server') and clarifies the scope (with subfolders and projects, under or next to a target). It actively distinguishes itself from siblings by naming rillsoft_folder_ris_update for renaming and rillsoft_project_ris_save_as for changing a project's folder.

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

Usage Guidelines5/5

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

Explicitly routes the agent: renaming belongs to rillsoft_folder_ris_update, and moving a project to another folder belongs to rillsoft_project_ris_save_as. It also states the condition that selects this tool (reparenting/reordering a folder) and the constraint case (ris_folder_cycle).

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

rillsoft_folder_ris_updateRename RIS folderA
Idempotent

Renames a project folder of the logged-in client on the Rillsoft Integration Server - editing the label in the folder dialog. The same name again sends nothing. Moving a folder is rillsoft_folder_ris_move. Takes effect on the server at once: no undo step. Runs with the login of the desktop session.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesnew name
folderIdYesid of the folder, from rillsoft_folder_ris_list

Output Schema

ParametersJSON Schema
NameRequiredDescription
leftYesleft index of the nested-set tree
nameYesname of the folder
pathYesnames from the root, joined by ' / '
uuidYesUUID of the folder
depthYes0 at a root folder, 1 below it, and so on
rightYesright index of the nested-set tree
folderIdYesid of the folder on the server; what the other folder tools and rillsoft_project_ris_save_as take
descriptionYesdescription; empty when none is set
folderCountYessubfolders directly below this folder
projectCountYesprojects lying directly in this folder (subfolders not counted)
parentFolderIdNoid of the parent folder; missing at a root folder

TDQS

A4.3/5.0
Behavior4/5

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

Adds real behavioral facts beyond the annotations: changes take effect on the server immediately, there is no undo step, and the call runs under the desktop session login (auth context). The idempotency note ('the same name again sends nothing') usefully reinforces idempotentHint=true. It omits error/edge-case behavior for a rename, which keeps it short of a 5.

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

Conciseness5/5

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

Front-loaded with the verb and resource, then a sequence of short, information-dense sentences covering the no-op case, the alternative tool, permanence, and auth. No filler or restatement of the title.

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?

An output schema exists, so return values need not be explained, and the annotations cover the safety profile. For a two-parameter rename with a fully documented schema, the description supplies everything an agent needs: scope, permanence, idempotency, the sibling to use for moving, and the auth context.

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

Parameters3/5

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

Schema description coverage is 100% ('new name', 'id of the folder, from rillsoft_folder_ris_list'), so the schema already carries parameter meaning. The description adds only the framing that this edits the folder's label; no additional format or constraint detail. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource (renames a project folder on the Rillsoft Integration Server) plus scope (logged-in client) and clarifies it is a label edit, not a general update. It explicitly disambiguates from the closest sibling ('Moving a folder is rillsoft_folder_ris_move'), so an agent can route correctly without opening any schema.

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

Usage Guidelines4/5

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

Provides a concrete alternative for the ambiguous case by naming rillsoft_folder_ris_move, and notes that re-sending the same name is a no-op. It does not explicitly say when to use this vs. folder_ris_create/delete/list, but those are unambiguous from the verb.

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

rillsoft_history_redoRedo commandA

Redoes the undo step taken back last and reports the command that was redone. The counterpart to rillsoft_history_undo; it restores the step and takes nothing away, which is why it carries no destructive hint. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNohints RP would otherwise show as a window; missing when there were none
commandYesname of the command that was undone or redone
moreRedoYestrue = there is more to redo
moreUndoYestrue = there is more to undo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=false and readOnlyHint=false; the description usefully explains the rationale ('restores the step and takes nothing away') and that the redone command is reported. It does not address the non-idempotent hint or how the redo stack behaves, so it adds moderate rather than rich context.

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

Conciseness4/5

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

Three short sentences, front-loaded with the action and immediately followed by the sibling relationship. The trailing fragment 'One undo step.' is terse but earns its place by bounding the scope.

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

Completeness4/5

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

With an output schema covering the returned command and annotations covering the safety profile, the description only needs purpose and counterpart context, both of which it supplies. Remaining gaps (redo-stack state, empty-stack behavior) are minor for a zero-parameter tool.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. Its scope note 'One undo step' correctly signals that no step identifier or count is accepted.

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

Purpose5/5

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

States a specific verb ('Redoes') plus the exact resource ('the undo step taken back last') and names the sibling it is the counterpart of, rillsoft_history_undo. An agent can distinguish this from the undo tool without opening either schema.

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

Usage Guidelines4/5

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

Explicitly frames itself as the counterpart to rillsoft_history_undo, which tells the agent it is the reverse operation used after an undo. It does not state any exclusion (e.g. what happens when the redo stack is empty), so it stops short of full when/when-not guidance.

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

rillsoft_history_undoUndo commandA
Destructive

Undoes the last undo step, including changes made in the user interface, and reports the command that was undone. It walks the command history of the open project; it is not a way to undo a save, and the resource pool has no undo step at all - there the unit of work is closed without saving instead. Taking the step back again goes through rillsoft_history_redo. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNohints RP would otherwise show as a window; missing when there were none
commandYesname of the command that was undone or redone
moreRedoYestrue = there is more to redo
moreUndoYestrue = there is more to undo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds genuine context beyond that: it reports the undone command, scopes the operation to the open project's history, and discloses boundary behavior for saves and the resource pool.

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?

Three compact sentences, front-loaded with the core action and then the boundaries. Mostly efficient, though 'including changes made in the user interface' is slightly opaque and adds little.

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?

An output schema exists, so return values need not be explained, and there are no parameters to document. The description covers scope and edge cases well; only the minor opening ambiguity keeps it from full marks.

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, so the baseline is 4. There is no parameter surface for the description to clarify or obscure, and 'One undo step' usefully signals that a single call performs exactly one step.

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+resource (undo the last command in the open project's history) and explicitly distinguishes itself from the redo sibling and from save-undo. The opening phrase 'Undoes the last undo step' is mildly ambiguous (it could read as a redo), but the following sentences resolve it.

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

Usage Guidelines5/5

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

Explicit when-to-use (walks the command history of the open project), when-not (not a way to undo a save; the resource pool has no undo step and instead closes the unit of work without saving), and names the alternative path (rillsoft_history_redo). Nothing is left to inference.

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

rillsoft_machine_sharing_createShare machineA
DestructiveIdempotent

Lets several tasks share one machine or machine role: the individual assignments go away and the resource is consumed once instead of n times - one crane used by three tasks is one crane. Beware, this loses information: quantity and utilization of the shared entry are the maximum over all participants, exactly as in the 'Share' menu. rillsoft_machine_sharing_release is therefore not an inverse - a task taken back out gets the shared value, not its original one. Afterwards the resource appears in rillsoft_project_tree_get under sharedAssignments[] and no longer under machineAssignments[] or machineRoleAssignments[]. In a portfolio all tasks must belong to the same project - shared use stays within one project. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesshared use is computed for these two kinds only
taskUuidsYesUUIDs of the tasks that shall share the resource from now on; each of them has to carry it on its own today
resourceIdYesid of the machine role or machine from rillsoft_resource_pool_catalog_list

Output Schema

ParametersJSON Schema
NameRequiredDescription
typeYeskind of the shared resource
tasksYesthe tasks involved after the change
resourceIdYesid of the machine role or machine

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already mark the tool as destructive and idempotent, but the description adds substantial behavioral detail: information loss, the shared value being the maximum over participants, the non-inverse relationship with release, the move of the resource from machineAssignments to sharedAssignments, and the single undo step. This is exactly the kind of context annotations cannot convey.

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

Conciseness4/5

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

The description is dense but front-loaded, leading with the core operation before the caveats. Every sentence carries useful information, though it is longer than strictly necessary and could be tightened slightly without losing meaning.

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

Completeness5/5

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

With an output schema present, the description need not explain return values. It fully covers side effects, constraints, reversibility, and post-condition state changes, leaving an agent well equipped to invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description reinforces the constraint that each task must already carry the resource and that the type is limited to machine or machine_role, but adds little syntax or format detail beyond the schema baseline.

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

Purpose5/5

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

The description states a specific verb and resource ('Lets several tasks share one machine or machine role') and immediately distinguishes the operation from sibling tools like rillsoft_machine_sharing_release. An agent can identify exactly what this tool does without opening the schema.

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

Usage Guidelines4/5

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

It gives clear context for use ('several tasks share one machine') and constraints such as 'each of them has to carry it on its own today' and 'all tasks must belong to the same project.' It also warns that rillsoft_machine_sharing_release is not the inverse, which helps prevent misuse. It lacks an explicit when-not or alternative tool recommendation beyond that contrast.

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

rillsoft_machine_sharing_releaseRelease shared useA
DestructiveIdempotent

Takes one task back out of shared use: it gets its individual assignment back, carrying the shared value rather than its original one (see rillsoft_machine_sharing_create). Once the last task is gone, the shared entry disappears. The counterpart of the 'Exclusive' menu entry; one undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYeskind of the shared resource
taskUuidYesUUID of the task that shall carry the resource on its own again
resourceIdYesid of the machine role or machine from rillsoft_resource_pool_catalog_list

Output Schema

ParametersJSON Schema
NameRequiredDescription
typeYeskind of the shared resource
tasksYesthe tasks involved after the change
resourceIdYesid of the machine role or machine

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructive=true, idempotent=true and readOnly=false, so the safety profile is covered. The description adds genuinely non-obvious semantics beyond that: the task regains its individual assignment but carries the shared value rather than its original one, and the shared entry vanishes once the last task is released. That 'original value is not restored' nuance is exactly the kind of context annotations cannot convey.

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?

Three tight clauses, front-loaded with the core action and the resulting state before the sibling reference and undo note. No filler, though the parenthetical cross-reference and menu-name aside are slight extras.

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?

An output schema exists, so return values need not be explained, and the description covers outcome, side effect on the shared entry, reversibility, and the sibling relationship. The only gap is error/edge behavior when the task is not currently in shared use.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the schema and the baseline is 3. The description hints at the single-task scope ('one task', 'the shared entry') but adds no format or enum detail beyond what the schema supplies.

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

Purpose5/5

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

States a specific verb and resource ('Takes one task back out of shared use') and immediately gives the resulting state, distinguishing it from the create counterpart by name. An agent can tell exactly what this does and which sibling mirrors it without opening a schema.

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

Usage Guidelines4/5

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

Explicitly names rillsoft_machine_sharing_create as the counterpart and frames this as the 'Exclusive' menu entry's opposite plus a single undo step, which tells the agent when this tool applies. It stops short of stating when NOT to use it (e.g., what happens if the task is not currently shared).

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

rillsoft_outline_applyApply outline stateA
Read-only

Expands or collapses the visible resource or capacity view - the same effect as the expand and collapse buttons of the ribbon. Give exactly one of outline and openRows; openRows restores a state read before, row by row, which outline alone cannot do once someone has opened rows by hand. In any other view the call fails and points at rillsoft_view_state_apply. No undo step and no change to the plan itself - no task, no assignment, no date moves; that is why this tool counts as read-only. What it does change is the way the project is displayed: the outline state is stored with the project, and going through the user interface marks the document as changed, so a later save writes the new state along. It answers like rillsoft_outline_get.

ParametersJSON Schema
NameRequiredDescriptionDefault
outlineNocollapsed closes everything, level_1 to level_3 open down to that level, expanded opens everything. step_expand and step_collapse move one step, exactly like the ribbon buttons - they depend on where the view stands and are therefore not repeatable. Give either this or openRows
openRowsNoexactly these group rows end up open, every other one closed. Give either this or outline

Output Schema

ParametersJSON Schema
NameRequiredDescription
levelsYesthe grouping levels of the view, outermost first
outlineYesthe absolute state where the view is in one, otherwise mixed
openRowsYesevery group row that is open, in display order. Pass the array back to rillsoft_outline_apply to restore exactly this state
canExpandYestrue = something is still left to expand
canCollapseYestrue = something is still left to collapse

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations by resolving their apparent tension: it explains why a tool that mutates stored display state counts as read-only (no undo step, no task/assignment/date changes) and warns that the outline state persists with the project and a later save writes it along. It also flags non-repeatability of step_expand/step_collapse due to view-dependent state, matching idempotentHint=false.

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?

Front-loads the core effect in the first sentence before the exclusivity rule and the behavioral caveats. It is dense and slightly long, and the 'that is why this tool counts as read-only' clause retreads the readOnlyHint, but each sentence carries actionable information.

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

Completeness5/5

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

For a two-parameter, oneOf-constrained tool with an output schema and full annotation coverage, the description supplies everything an agent needs: the exclusivity rule, the failure mode on wrong views, the persistence side effect, and a pointer to the analogous get tool for the response shape.

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

Parameters4/5

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

Schema coverage is 100% and the schema already documents the enum values and exclusivity, so baseline is 3. The description adds the rationale the schema lacks: openRows exists specifically to replay a state read beforehand when rows were opened by hand, and the two step values move one step rather than to an absolute state.

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

Purpose5/5

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

States a specific verb+resource ('expands or collapses the visible resource or capacity view') and grounds it in a concrete UI analogue ('the same effect as the expand and collapse buttons of the ribbon'). It distinguishes itself from siblings by naming rillsoft_view_state_apply as the tool for other views, and 'answers like rillsoft_outline_get' ties it to its read counterpart.

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

Usage Guidelines5/5

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

Explicit mutual exclusion ('Give exactly one of outline and openRows') plus the condition that selects openRows over outline ('restores a state read before, row by row, which outline alone cannot do'). It also names the fallback tool and the failure condition ('In any other view the call fails and points at rillsoft_view_state_apply'), leaving nothing to inference.

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

rillsoft_outline_getRead outline stateA
Read-onlyIdempotent

Reads how far the visible resource or capacity view is expanded: outline names the absolute state where the view is in one (collapsed, level_1 to level_3, expanded) and mixed where it is not, openRows[] names every group row that is open in the same coordinates the report uses per row, levels[] gives the grouping of the view outermost first, and canExpand and canCollapse say whether anything is left to do. In any other view the call fails and points at rillsoft_view_state_apply. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
levelsYesthe grouping levels of the view, outermost first
outlineYesthe absolute state where the view is in one, otherwise mixed
openRowsYesevery group row that is open, in display order. Pass the array back to rillsoft_outline_apply to restore exactly this state
canExpandYestrue = something is still left to expand
canCollapseYestrue = something is still left to collapse

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint, so safety is covered; 'Read-only, no undo step' is largely redundant. The real added value is the disclosed failure mode (call fails in views other than the visible resource/capacity view) and the error-routing to rillsoft_view_state_apply, which annotations do not convey.

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

Conciseness3/5

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

Purpose is front-loaded, but the long colon-delimited run-on enumerating outline/openRows/levels/canExpand/canCollapse restates what the output schema already documents, so several clauses do not earn their place. The key operational fact (failure in other views) is buried at the end.

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

Completeness4/5

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

With annotations covering safety, an output schema covering return values, and no parameters, the description only needs to frame the tool and its constraints. It does so, adding the view-scoped failure behavior and the correct fallback sibling, so it is essentially complete aside from not routing to outline_apply.

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, so the baseline is 4. The description goes further by naming the returned fields, but that duplicates the output schema rather than clarifying any input semantics.

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

Purpose4/5

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

States a specific verb and resource ('Reads how far the visible resource or capacity view is expanded') and enumerates the exact output fields (outline, openRows[], levels[], canExpand, canCollapse). This is clearly a read of outline state, but it never explicitly contrasts itself with the closest siblings (rillsoft_outline_apply / rillsoft_outline_row_apply), leaving that inference to the agent.

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 an explicit when-not condition: in any other view the call fails and routes the agent to rillsoft_view_state_apply. That names an alternative and the condition that selects it. It does not, however, spell out the read-vs-apply workflow with outline_apply, so guidance is strong but not exhaustive.

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

rillsoft_outline_row_applyApply outline state of one rowA
Read-onlyIdempotent

Opens or closes one single group row of the visible resource or capacity view - the same effect as clicking the plus or minus in front of it. Every other row keeps its state, which is what sets this apart from rillsoft_outline_apply. Rows that become visible this way can be opened the same way, level by level. A row already in the wanted state is left alone and reported back, so the call can be repeated. A row whose parent is still closed is not addressable; open the parent first. In any other view the call fails and points at rillsoft_view_state_apply. Like a click it moves the selection to that row and the property sheet of the info window follows. No undo step and no change to the plan itself - no task, no assignment, no date moves; that is why this tool counts as read-only. What it does change is the way the project is displayed: the outline state is stored with the project, and going through the user interface marks the document as changed, so a later save writes the new state along. It answers like rillsoft_outline_get.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowYescoordinates of the group row to open or close, as rillsoft_outline_get reports them under openRows
actionYesexpand opens the row, collapse closes it

Output Schema

ParametersJSON Schema
NameRequiredDescription
levelsYesthe grouping levels of the view, outermost first
outlineYesthe absolute state where the view is in one, otherwise mixed
openRowsYesevery group row that is open, in display order. Pass the array back to rillsoft_outline_apply to restore exactly this state
canExpandYestrue = something is still left to expand
canCollapseYestrue = something is still left to collapse

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: it explains why readOnlyHint=true is not contradictory (no task/assignment/date changes, no undo step) while still disclosing the side effect that outline state is persisted with the project and marks the document as changed, so a later save writes it. It also confirms idempotency behavior and notes the selection and property sheet follow, like a click.

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?

Front-loaded with the core action and the sibling differentiation, and nearly every sentence carries information. It is on the long side, with some restatement around the read-only rationale ('no task, no assignment, no date moves'), which costs a point.

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 two-parameter, nested-object tool with an output schema and full annotation coverage, the description covers behavior, prerequisites, side effects, failure routing and return shape reference ('answers like rillsoft_outline_get'). Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the nested row object documents every coordinate field, so the baseline is 3. The description adds contextual meaning about addressability (parent must be open) but no new syntax or format detail for the parameters themselves.

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

Purpose5/5

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

States a specific verb and resource: opens or closes one single group row of the visible resource or capacity view, equivalent to clicking the plus/minus. It explicitly contrasts itself with rillsoft_outline_apply, so the agent can separate the two without opening either schema.

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?

Gives explicit when-to-use (single row vs rillsoft_outline_apply's whole-outline effect), prerequisites (a row whose parent is closed is not addressable; open the parent first), and a failure route (other views fail and point at rillsoft_view_state_apply). Nothing is left to inference.

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

rillsoft_portfolio_file_openOpen portfolio fileA
DestructiveIdempotent

Opens exactly one file portfolio (.rpp), which is a list of project files, and replaces the current project. A single project file (.rpj) is refused; rillsoft_project_file_open covers that. The answer carries portfolio:true and projects[] (uuid, name, path, readOnly); lines of the .rpp that point nowhere end up in skipped[], anything else the loader has to say in note. Inside a portfolio the tools work as in a single project, with the limits of the user interface: nothing is created directly below the portfolio, no task or subproject changes its project, no dependency crosses the project boundary in a file portfolio, no baseline, no 'save as'; rillsoft_portfolio_project_files_save writes the changed projects back. No undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesabsolute path of an .rpp portfolio file
discardChangesNotrue = discard unsaved changes of the current project

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
noteNohints about opening; missing when there were none
pathYespath of the file that was opened
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
skippedNoparts that were not loaded; missing when nothing was skipped
projectsNothe projects it contains; only for a portfolio
portfolioYestrue = a portfolio was opened

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already flag destructiveHint/readOnlyHint, but the description adds substantive behavior: the current project is replaced wholesale, the .rpp is refused if it is a single project, there is no undo, and inside a portfolio no creation below the portfolio, no cross-boundary dependencies, no baseline and no 'save as' are permitted. This is well beyond what annotations convey.

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 core action and the sibling split are front-loaded in the first two sentences, and the remaining sentences each carry a distinct constraint. It is dense and long, but little of it is filler.

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

Completeness5/5

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

For a destructive, state-replacing open operation, the description covers refusal behavior, the no-undo consequence, portfolio-specific limits, and the follow-up save tool. Return fields (portfolio:true, projects[], skipped[], note) are restated even though an output schema exists, but the coverage is otherwise complete.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters are already documented in the schema; the description only implies that path must point at an .rpp rather than an .rpj. Baseline 3 applies when the schema carries the parameter documentation.

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

Purpose5/5

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

States a specific verb and resource ('Opens exactly one file portfolio (.rpp)') plus the scope caveat that it 'replaces the current project'. It explicitly distinguishes itself from rillsoft_project_file_open by noting that a .rpj is refused and that the sibling covers it.

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?

Gives an explicit when-not rule (.rpj is refused, use rillsoft_project_file_open) and names the companion write path (rillsoft_portfolio_project_files_save). It also warns 'No undo step', which directly shapes call decisions.

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

rillsoft_portfolio_project_files_saveSave portfolio project filesA
DestructiveIdempotent

Writes the projects of an open file portfolio back into their own .rpj files; only the locked, writable members are saved, and the answer names them under saved[]. The .rpp itself is never written - it is only the list of paths, and there is no 'save as' for it. Where a single project is open, the call is refused (use rillsoft_project_file_save). No undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNohints about saving; missing when there were none
pathYespath of the portfolio file
savedYespaths of the project files that were written
portfolioYesalways true; what gets saved are the project files it contains

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=true, but the description adds real context beyond them: only locked, writable members are saved, the list file is untouched, and there is 'No undo step.' The saved[] naming and refusal conditions are useful. It stops short of describing partial-failure behavior or how writability/lock state is determined, so it is not exhaustive.

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 core action is front-loaded in the opening clause, and every sentence carries information: scope, refusal condition, alternative, and undo behavior. It is dense with semicolons and em-dashes but not padded with filler.

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

Completeness5/5

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

With an output schema present, return values need not be explained, and with zero parameters there is no input surface to document. Combined with annotations covering the destructive/idempotent profile, the description covers the refusal case, the scoping rule, and the lack of undo — everything needed to invoke it correctly.

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

Parameters4/5

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

Zero parameters, so the baseline is 4 and the description does not need to explain inputs. It redirects its detail to output/behavior semantics (saved[] naming) rather than parameter guidance, which 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?

States a specific verb and resource ('Writes the projects of an open file portfolio back into their own .rpj files') and immediately scopes it against siblings by declaring that the .rpp itself is never written and there is no 'save as' for it. An agent can distinguish this from rillsoft_project_file_save and rillsoft_portfolio_ris_save without opening any schema.

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

Usage Guidelines5/5

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

Explicitly states the negative case ('Where a single project is open, the call is refused') and names the exact alternative to use instead ('use rillsoft_project_file_save'). Both the when and the when-not are spelled out with a concrete route.

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

rillsoft_portfolio_ris_createCreate RIS portfolioA

Creates a portfolio of the logged-in client on the Rillsoft Integration Server - the 'New' button of the portfolio dialog - with its kind, folders and projects. Takes effect on the server at once: no undo step; rillsoft_portfolio_ris_delete removes it, rillsoft_portfolio_ris_open loads it. A duplicate name and unknown folder or project ids are refused before anything is sent. Runs with the login of the desktop session.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesname of the new portfolio; must not be in use at the client
combineNotrue = a summary project that may take part in cross-project merging; false = a project portfolio. Cannot be changed later
folderIdsNofolders of the client whose projects belong to the portfolio, from rillsoft_project_ris_list
projectIdsNosingle projects of the client that belong to the portfolio, from rillsoft_project_ris_list

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYesname of the portfolio
noteNohints, such as the portfolio being open right now; missing when there were none
uuidYesUUID of the portfolio
projectsYesthe projects the portfolio resolves to, folders included
folderIdsYesfolders whose projects belong to the portfolio; empty when it lists projects only
isCombineYestrue = a summary project, false = a project portfolio
versionIdYesversion of the portfolio record on the server
lockEnableYestrue = the server allows locking its projects
descriptionYesdescription; empty when none is set
portfolioIdYesid of the portfolio on the server; what _open, _update and _delete take
projectCountYesnumber of projects the portfolio resolves to

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only declare the write/openWorld/idempotent profile; the description adds the important traits: it takes effect on the server immediately with no undo step, it runs under the desktop session login, and duplicate names or unknown folder/project ids are refused before anything is sent. This is substantially more than the annotations convey and consistent with them (destructive=false since it only adds a portfolio).

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?

Front-loaded with the verb and resource, then effect, alternatives, and validation in a compact block. Slightly dense with multiple clauses in one sentence, but every clause adds usable information.

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

Completeness5/5

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

With an output schema present, return values need no explanation, and the description covers the remaining agent-relevant questions: immediacy, reversibility, authorisation context, validation failures, and related tools.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are already documented; the description only loosely restates 'its kind, folders and projects' without adding format or constraint detail beyond the schema. Baseline 3 is appropriate when the schema carries the weight.

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

Purpose5/5

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

States a specific verb (creates) and resource (portfolio of the logged-in client on the RIS), and anchors it to a known UI affordance (the 'New' button of the portfolio dialog). It also names sibling tools (delete/open) so the agent can place it in the portfolio lifecycle without opening schemas.

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

Usage Guidelines4/5

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

Clear context for when this applies and what the natural follow-ups are: rillsoft_portfolio_ris_delete removes it and rillsoft_portfolio_ris_open loads it. It stops short of explicit exclusions (e.g., when to prefer update vs create), so it is strong context rather than full when/when-not routing.

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

rillsoft_portfolio_ris_deleteDelete RIS portfolioA
DestructiveIdempotent

Deletes a portfolio of the logged-in client on the Rillsoft Integration Server - the 'Delete' button of the portfolio dialog. The server deactivates the portfolio record (soft delete); the projects stay untouched. The portfolio that is open right now is refused (portfolio_is_open; call rillsoft_project_create first). Takes effect at once: no undo step. rillsoft_portfolio_ris_create is the counterpart. Runs with the login of the desktop session.

ParametersJSON Schema
NameRequiredDescriptionDefault
portfolioIdYesid of the portfolio, from rillsoft_portfolio_ris_list

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYesalways true - a failure is an error, not a false
portfolioIdYesid of the portfolio that was deleted

TDQS

A4.5/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: it discloses that the delete is a soft delete (record deactivated, projects untouched), that it takes effect immediately with no undo, that an open portfolio is refused, and that it runs under the desktop session login. These are exactly the side-effect and precondition details an agent cannot infer from destructiveHint/idempotentHint alone.

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?

Front-loaded with the core action, then proceeds through side effects, refusal condition, reversibility, and session context. Every sentence contributes distinct information with no filler.

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

Completeness5/5

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

For a destructive single-parameter mutation with an output schema present, the description covers side effects, refusal behavior, reversibility, and execution context. Nothing needed to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100% with a single parameter already documented as 'id of the portfolio, from rillsoft_portfolio_ris_list'. The description adds no additional parameter syntax or format detail, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Deletes a portfolio of the logged-in client on the Rillsoft Integration Server') and identifies the exact UI affordance it mirrors. It also names the counterpart tool (rillsoft_portfolio_ris_create), so an agent can distinguish it from sibling mutations without opening a schema.

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

Usage Guidelines4/5

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

Provides a clear precondition (refused when the portfolio is open, with the portfolio_is_open error) and points to the counterpart create tool, giving real when-to-use context. The remediation hint 'call rillsoft_project_create first' is confusing and possibly incorrect for an open-portfolio state, which keeps it from a 5.

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

rillsoft_portfolio_ris_listList RIS portfoliosA
Read-onlyIdempotent

Lists the portfolios of the logged-in client on the Rillsoft Integration Server - project portfolios and summary projects - with their folders, the projects they resolve to and the portfolioId that rillsoft_portfolio_ris_open takes. Runs with the login of the desktop session and never asks for credentials; the answer names server, userName and clientId. A portfolio file (.rpp) is opened through rillsoft_portfolio_file_open instead. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
combineNoall (the default) lists both kinds, portfolio only project portfolios, combine only summary projectsall

Output Schema

ParametersJSON Schema
NameRequiredDescription
serverYesURL of the Rillsoft Integration Server the desktop session is logged in to
clientIdYesid of the logged-in client; -1 while none is selected
userNameYesuser name of the desktop session
portfoliosYesevery portfolio of the client the user may read; at most 10000 projects in total, more than that is an error
openPortfolioIdNoportfolioId of the open document; only when it is a portfolio of this server

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint false), and the description adds genuinely useful context beyond them: it runs under the desktop session login, never prompts for credentials, and returns server/userName/clientId. It also re-states read-only/no-undo, which is redundant with annotations but harmless.

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?

Purpose and scope are front-loaded, followed by the sibling routing and then the auth/return behavior. Slightly dense with clauses, but every sentence carries information relevant to calling or interpreting the 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?

An output schema exists, so return structure need not be explained, yet the description helpfully names key response fields. Combined with sibling routing and auth behavior, an agent has what it needs; only explicit exclusion conditions are missing.

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

Parameters3/5

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

Schema coverage is 100% and the single 'combine' enum parameter is fully documented in the schema itself, including the meaning of all, portfolio, and combine. The description adds no syntax or semantics for the parameter, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource (lists the logged-in client's RIS portfolios, both project portfolios and summary projects) and explicitly distinguishes itself from the sibling rillsoft_portfolio_ris_open (which consumes the returned portfolioId) and rillsoft_portfolio_file_open (which opens .rpp files). An agent can route correctly without opening any schema.

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

Usage Guidelines4/5

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

Gives clear context for when to use it: to obtain portfolios plus the portfolioId that rillsoft_portfolio_ris_open requires, and explicitly names the alternative path for opening .rpp portfolio files. It does not state explicit exclusions (e.g. when not to call it or prerequisite session state), but the routing guidance is concrete.

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

rillsoft_portfolio_ris_openOpen RIS portfolioA
DestructiveIdempotent

Opens a portfolio of the logged-in client from the Rillsoft Integration Server - all of its projects or a subset - and replaces the current document with a portfolio: the tools work there as in a single project, with the limits of the user interface (nothing directly below the portfolio, no task or subproject changes its project, a dependency across the project boundary becomes a RIS link, no baseline, no 'save as'; documents of the loaded projects can be listed, downloaded, updated and deleted, not created). Projects with a foreign resource pool or that cannot be read are left out and named in skipped. With unsaved changes pending, discardChanges:true is required. Saving goes back through rillsoft_portfolio_ris_save; a portfolio file is opened through rillsoft_portfolio_file_open instead. No undo step - the command history starts over. Runs with the login of the desktop session.

ParametersJSON Schema
NameRequiredDescriptionDefault
lockNooptimistic (the default) takes no locks; pessimistic locks every loaded project that is not read-only on the server for this user until another document is opened - where a lock is already held by someone else, note[] says sooptimistic
projectIdsNosubset of the portfolio's projects to load; missing = every project, ordered by start date
portfolioIdYesid of the portfolio, from rillsoft_portfolio_ris_list
discardChangesNotrue = discard unsaved changes of the current document
readOnlyProjectIdsNoprojects to open read-only inside the portfolio (no lock, left out by rillsoft_portfolio_ris_save); must be among the loaded ones

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
lockYeslock mode the projects were opened with
nameYesname of the portfolio
noteNohints of the loader, such as locks that were not granted; missing when there were none
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
skippedNoprojectIds that were requested but not loaded - a foreign resource pool or an unreadable project; missing when none
clientIdYesid of the client the portfolio belongs to
projectsYesthe projects that were loaded, in display order
isCombineYestrue = a summary project
portfolioYesalways true
portfolioIdYesid of the portfolio on the server

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that the current document is replaced, the UI-imposed limits (nothing directly below the portfolio, cross-project dependencies become RIS links, no baseline, no 'save as'), which operations work on loaded project documents (list/download/update/delete, not create), that unreadable/foreign-pool projects are omitted and named in 'skipped', the discardChanges requirement, and that there is no undo because command history restarts. Matches the destructiveHint=true / idempotentHint=true annotations.

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

Conciseness4/5

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

Front-loaded with the core action, then dense but information-bearing caveats. The long parenthetical is heavy but each clause (limits, skipped projects, discardChanges, save path, undo) earns its place; only minor tightening is possible.

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

Completeness5/5

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

For a complex state-mutating tool with an output schema already present, the description covers side effects, limits, locking implications, skip behavior, the discardChanges prerequisite, redirects to the correct sibling tools, and the loss of undo. Nothing an agent needs in order to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents lock, projectIds, discardChanges and readOnlyProjectIds. The description reinforces discardChanges:true behavior and references 'skipped', but adds little semantic detail beyond what the parameter descriptions already carry; baseline 3 applies.

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

Purpose5/5

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

States a specific verb (Opens) and resource (portfolio of the logged-in client from the Rillsoft Integration Server), and explicitly distinguishes itself from siblings rillsoft_portfolio_file_open (opens a file) and rillsoft_portfolio_ris_save (saving). An agent can tell exactly what this does and how it differs from adjacent tools.

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

Usage Guidelines4/5

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

Names the alternatives and when they apply ('Saving goes back through rillsoft_portfolio_ris_save; a portfolio file is opened through rillsoft_portfolio_file_open instead') and gives the condition for discardChanges:true. Clear context, though it stops short of an explicit 'use this when / not when' framing.

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

rillsoft_portfolio_ris_saveSave RIS portfolioA
DestructiveIdempotent

Writes the open portfolio of the Rillsoft Integration Server back: every project that changed and is not read-only gets a new version on the server (saved names them), cross-project links and the portfolio's configuration, favourites and signature are written along, then the portfolio is reloaded from the server keeping its display state. Nothing changed means nothing written and a note. Refused where the open document is not a portfolio of the server (ris_portfolio_not_open; a single project is saved through rillsoft_project_ris_save, a portfolio file through rillsoft_portfolio_project_files_save). A link cycle stops the save and is named in note. Runs with the login of the desktop session. No undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoversion notes stored with every new project version; at most 2000 characters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNohints, such as nothing having changed or a link cycle; missing when there were none
savedYesthe projects that were written as new versions - changed and not read-only; empty when nothing had changed
portfolioIdYesid of the portfolio on the server

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds substantial context beyond them: versioning semantics (each changed project gets a new version), that links/configuration/favourites/signature are written, that the portfolio is reloaded while preserving display state, that it runs under the desktop session login, and critically that there is no undo step. It also names failure conditions (link cycle stops the save; refused when the open document is not a server portfolio).

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 core write semantics and the alternative-tool routing are front-loaded, and most clauses carry real information (failures, no-undo, session context). It is dense and long for one tool, with some run-on sentences, but little is pure filler.

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

Completeness5/5

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

An output schema exists so return formatting need not be explained, and annotations cover the safety profile. Given a single optional parameter, the description supplies the remaining essentials: precondition (open server portfolio), side effects and permanence, no-op behavior, error codes, and side conditions like link cycles.

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?

Only one parameter and schema description coverage is 100%, so the schema fully documents `notes` including the 2000-character limit. The description references 'a note' and a cycle 'named in note', which are return/status messages rather than the parameter, so it adds no semantics for `notes` itself. Baseline 3 is appropriate.

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

Purpose5/5

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

States a precise verb+resource ('writes the open portfolio of the Rillsoft Integration Server back'), enumerates what is written (changed non-read-only projects, links, configuration, favourites, signature) and explicitly names the sibling tools it is not (rillsoft_project_ris_save, rillsoft_portfolio_project_files_save). An agent can distinguish it from adjacent save tools without opening a schema.

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?

Gives explicit preconditions (an open portfolio of the server, otherwise ris_portfolio_not_open) and routes to the correct alternative for each non-matching case: single project via rillsoft_project_ris_save, portfolio file via rillsoft_portfolio_project_files_save. Also states the no-op case ('nothing changed means nothing written'), so when-to-use and when-not are both covered.

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

rillsoft_portfolio_ris_updateUpdate RIS portfolioA
Idempotent

Renames a portfolio of the logged-in client on the Rillsoft Integration Server and/or replaces its folder and project selection - the properties dialog and the in-place rename of the portfolio dialog. At least one of name, folderIds and projectIds is required; the kind (summary project or portfolio) cannot be changed. Takes effect on the server at once: no undo step. Where the portfolio is open right now, the change shows with the next rillsoft_portfolio_ris_open and note says so. Runs with the login of the desktop session.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNonew name
folderIdsNothe folders the portfolio shall hold from now on (replaces the list; an empty list clears it)
projectIdsNothe single projects the portfolio shall hold from now on (replaces the list; an empty list clears it)
portfolioIdYesid of the portfolio, from rillsoft_portfolio_ris_list

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYesname of the portfolio
noteNohints, such as the portfolio being open right now; missing when there were none
uuidYesUUID of the portfolio
projectsYesthe projects the portfolio resolves to, folders included
folderIdsYesfolders whose projects belong to the portfolio; empty when it lists projects only
isCombineYestrue = a summary project, false = a project portfolio
versionIdYesversion of the portfolio record on the server
lockEnableYestrue = the server allows locking its projects
descriptionYesdescription; empty when none is set
portfolioIdYesid of the portfolio on the server; what _open, _update and _delete take
projectCountYesnumber of projects the portfolio resolves to

TDQS

A4.4/5.0
Behavior5/5

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

Adds context beyond the annotations: changes take effect on the server immediately with no undo step, open portfolios see the change only on the next rillsoft_portfolio_ris_open, and the call runs with the desktop-session login. These are the operational facts an agent needs before a mutation, and they do not contradict destructiveHint=false or idempotentHint=true.

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?

Dense but front-loaded: the rename/replace purpose comes first, then constraints, then side effects. The mention of the desktop UI dialogs is slightly padded for an agent audience but negligible.

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 4-parameter update tool with full schema coverage, an output schema, and safety annotations, the description covers everything material: required inputs, immutability of kind, immediacy/no-undo, visibility timing for open portfolios, and session context.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds the cross-parameter constraint (at least one of name/folderIds/projectIds) which the schema does not express, but otherwise restates what the schema already documents about replacement semantics.

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

Purpose5/5

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

States a specific verb (renames / replaces selection) and resource (portfolio of the logged-in client on the Rillsoft Integration Server), and explicitly carves out what cannot be changed (the kind). It is distinguishable from siblings such as rillsoft_portfolio_ris_create/list/delete without opening any schema.

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

Usage Guidelines4/5

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

Explicitly says 'at least one of name, folderIds and projectIds is required' and that the kind cannot be changed, which rules out misuse. It stops short of naming which sibling to use when the kind must change or when the operation should be an open/save instead.

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

rillsoft_project_conflict_listList conflictsA
Read-onlyIdempotent

Reads the six conflict lists of the info sheet as a flat YAML report: delayed (tasks lagging behind the status date), overload (overallocated resources), resourceLoss (failed resources), unassigned (unassigned resources), partiallyAssigned (partially assigned resources) and crossProjectDependencies (cross-project dependencies together with their float). The same selection as the tabs of that sheet; one task can appear in several lists. Numbers in hours, dates as everywhere else. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNonarrows the report to one category; omit it to get all of them

Output Schema

ParametersJSON Schema
NameRequiredDescription
yamlYesthe conflict report as YAML, the same text as in content[0].text

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description still adds real behavioral context beyond that: one task can appear in several lists (no deduplication), units are hours, dates follow the project convention, and there is no undo step. These are the kind of traits an agent cannot infer from annotations alone.

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 purpose is front-loaded and the trailing sentences are short and information-dense. The six-category enumeration makes the single sentence long, but each item earns its place by defining a selectable category, so it is informative rather than padded.

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?

An output schema exists, so return structure need not be described. Given a single optional enum parameter, the description covers scope, category semantics, overlap behavior, units, and read-only status — everything needed to call it correctly.

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

Parameters4/5

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

Schema coverage is 100% and the enum is self-documenting, so the baseline would be 3. The description goes further by explaining what each category actually means ('delayed (tasks lagging behind the status date)', 'overload (overallocated resources)', 'crossProjectDependencies ... together with their float'), which is semantic value the enum labels alone do not convey.

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

Purpose5/5

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

The description names a specific verb and resource ('Reads the six conflict lists of the info sheet as a flat YAML report') and then enumerates all six categories with a one-phrase gloss for each. This distinguishes it cleanly from sibling report tools such as rillsoft_analysis_report_get and rillsoft_variance_report_get without the agent needing to open any schema.

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?

Usage is implied rather than stated: 'The same selection as the tabs of that sheet' tells the agent the categories correspond to UI tabs, and the schema says to omit 'category' for all lists. But there is no explicit when-to-use guidance versus the other reporting siblings (variance_report_get, analysis_report_get, resource_usage_list), nor any stated preconditions.

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

rillsoft_project_createCreate projectA
Destructive

Creates a new empty project and replaces the one that is open. With unsaved changes pending, discardChanges:true is required. Opening an existing file goes through rillsoft_project_file_open. The command history starts over, so this call cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoname of the new project
discardChangesNotrue = discard unsaved changes of the current project

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and non-idempotent, but the description adds substantial context beyond them: it replaces the currently open project, discards unsaved changes when required, resets the command history, and cannot be undone. These consequences are exactly what an agent needs before invoking a destructive tool.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the primary action and consequence. Every sentence carries distinct, non-redundant information (scope, parameter condition, alternative tool, irreversibility).

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?

An output schema exists so return values needn't be explained. Given the tool's destructive nature, the description covers reversibility, side effects on the open project, the parameter condition, and the alternative tool, leaving no meaningful 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 100%, so the schema already documents both parameters (baseline 3). The description adds real semantic value by stating the condition under which discardChanges must be true, which the schema's terse 'true = discard unsaved changes' does not convey.

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

Purpose5/5

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

States a specific verb+resource ('Creates a new empty project') and clarifies the scope by noting it 'replaces the one that is open.' It also distinguishes itself from the sibling rillsoft_project_file_open, which covers the different task of opening an existing file.

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?

Gives explicit conditional guidance ('With unsaved changes pending, discardChanges:true is required') and names the correct alternative tool for a related-but-distinct task ('Opening an existing file goes through rillsoft_project_file_open'). The agent knows both when to use this and when to route elsewhere.

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

rillsoft_project_file_export_xmlExport project as RIS XMLA
DestructiveIdempotent

Writes the open project into an .xml file in exactly the form the Rillsoft Integration Server receives on upload (rillprj version 13, UTF-8, stylesheet instruction). This is not the older 'save as XML' of the File menu, which follows its own settings. Where that file exists already, overwrite:true is required. The project itself is not touched - neither its path nor its saved state changes - and a portfolio is refused. No undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesabsolute target path of an .xml file
overwriteNotrue = overwrite an existing file

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYespath of the file that was written

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly=false, destructive=true, idempotent=true, openWorld=true, and the description is consistent with them. It adds genuinely useful behavior beyond the annotations: exact output format/encoding, that the project path and saved state are untouched, that portfolios are refused, and that there is no undo step. It stops short of 5 only because it says nothing about permissions or failure modes.

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

Conciseness4/5

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

Front-loaded with the core action, then the format, then the constraints. Every sentence carries information, though the parenthetical format details make the opening sentence dense. Still tight and purposeful overall.

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

Completeness5/5

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

With an output schema present the description need not explain return values, and the rich annotations carry the safety profile. Given that, the description covers format, overwrite condition, non-mutation of the project, portfolio refusal, and no-undo, leaving nothing an agent needs in order to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already defines both parameters, making 3 the baseline. The description adds meaning beyond the schema by specifying that overwrite:true is required when the file already exists, which clarifies the consequence of omitting 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?

States a specific verb and resource (writes the open project into an .xml file) plus the exact target format (rillprj version 13, UTF-8, RIS upload form). It also explicitly distinguishes itself from the older File-menu 'save as XML', so an agent can tell it apart from the other save/ris_save siblings without opening their schemas.

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?

Gives real usage context: overwrite:true is required when the target exists, and a portfolio is refused. It also contrasts the tool with the alternative File-menu save, but it does not explicitly route against the many sibling save tools (project_file_save_as, project_ris_save_as, portfolio_project_files_save), so it stops short of full when-to-use/alternative guidance.

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

rillsoft_project_file_openOpen project fileA
DestructiveIdempotent

Opens exactly one project file (.rpj) and replaces the current project. A portfolio (.rpp) is refused; rillsoft_portfolio_file_open covers that. With unsaved changes pending, discardChanges:true is required. No undo step - the command history starts over. Whatever the loader has to say ends up in note.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesabsolute path of an .rpj project file
discardChangesNotrue = discard unsaved changes of the current project

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
noteNohints about opening; missing when there were none
pathYespath of the file that was opened
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
skippedNoparts that were not loaded; missing when nothing was skipped
projectsNothe projects it contains; only for a portfolio
portfolioYestrue = a portfolio was opened

TDQS

A4.8/5.0
Behavior5/5

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

Beyond annotations (destructiveHint=true, idempotentHint=true), it discloses what actually gets destroyed ('replaces the current project'), the irreversible consequence ('No undo step - the command history starts over'), and the required flag under pending unsaved changes. This is exactly the extra context annotations cannot carry.

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 dense sentences, each load-bearing, with the destructive replacement front-loaded. The closing sentence about 'note' is the one arguable redundancy since an output schema exists, but it is short and orients the caller.

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 destructive open/replace operation the description covers side effects, the undo posture, the discarded-state requirement, and the sibling alternative; return values are covered by the output schema. Nothing needed to call it safely is missing.

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

Parameters4/5

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

Schema coverage is 100% and both parameters are documented there, so the baseline is 3. The description adds conditional meaning the schema lacks: discardChanges:true is required only when unsaved changes are pending, not merely an optional toggle.

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

Purpose5/5

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

States a specific verb and resource ('Opens exactly one project file (.rpj)') plus the scope limit on count and file type. It explicitly separates itself from the portfolio sibling by naming the file extension it refuses, so an agent can route correctly without opening either schema.

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?

Gives an explicit when-not ('A portfolio (.rpp) is refused') and names the correct alternative, rillsoft_portfolio_file_open. It also states the precondition that selects discardChanges:true, covering the only non-obvious call path.

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

rillsoft_project_file_saveSave project fileA
DestructiveIdempotent

Saves the open project under the path it already has. Where it has never been saved, rillsoft_project_file_save_as is required. An open portfolio is refused; there rillsoft_portfolio_project_files_save writes the contained project files back. No undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYespath of the file that was written

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare non-read-only, open-world, idempotent and destructive, so the safety profile is largely covered. The description still adds behavior beyond them: the refusal case for an open portfolio and the fact that there is 'No undo step' (i.e., history_undo cannot revert this write). That is real value, though it does not describe what is overwritten or any permission requirements.

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

Conciseness5/5

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

Three short sentences with zero filler. The core action is front-loaded, followed by the two routing rules and the undo caveat, in descending order of importance.

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?

An output schema exists, so return-value explanation is not needed. For a zero-parameter save operation with full annotation coverage, the description supplies everything an agent needs: the target, the failure/refusal paths, and the irreversibility.

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, so the baseline is 4; there is nothing for the description to disambiguate. The behavioral description of the implicit target (the currently open project path) is the only relevant 'parameter' and it is stated.

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

Purpose5/5

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

States a specific verb and resource ('saves the open project') plus the exact scope ('under the path it already has'), and explicitly names the two sibling tools it is not (save_as, portfolio_project_files_save). An agent can distinguish it from every sibling without opening a schema.

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?

Gives explicit when-to-use routing: when the project has never been saved, use rillsoft_project_file_save_as; when a portfolio is open, this tool is refused and rillsoft_portfolio_project_files_save is the correct call. Both alternatives and their selecting conditions are named.

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

rillsoft_project_file_save_asSave project file asA
DestructiveIdempotent

Saves the project under a new path (.rpj). Where that file exists already, overwrite:true is required. Refused while a portfolio is open; there rillsoft_portfolio_project_files_save saves the contained projects. No undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesabsolute target path of an .rpj file
overwriteNotrue = overwrite an existing file

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYespath of the file that was written

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds value beyond them: the overwrite precondition, the refusal when a portfolio is open, and the critical 'No undo step' warning. This is exactly the behavioral context an agent needs before a destructive write.

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 sentences, all front-loaded with zero filler; the destructive 'No undo step' warning sits last, which is acceptable emphasis rather than padding.

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

Completeness5/5

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

Covers purpose, precondition, failure mode, alternative routing, and reversibility; an output schema exists, so return values need no explanation. Nothing an agent requires to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: 'under a new path' clarifies path semantics and the rule 'Where that file exists already, overwrite:true is required' explains the interaction between the two parameters beyond the per-field 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?

Specific verb + resource ('Saves the project under a new path (.rpj)') that immediately distinguishes it from the sibling rillsoft_project_file_save and from the portfolio save tools. An agent can tell it apart without opening any schema.

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?

Gives explicit when-not guidance ('Refused while a portfolio is open; there rillsoft_portfolio_project_files_save saves the contained projects') and names the condition selecting the alternative. Also states the precondition for the overwrite parameter.

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

rillsoft_project_renumberRenumber projectA
Idempotent

Renumbers the project - the same function as the 'Renumber' menu: pull WBS codes into a gapless sequence, align task numbers with the WBS order, normalize the structure. Worth doing after rillsoft_project_sort or after many rillsoft_element_move calls. In a portfolio only the WBS codes are pulled, as the menu does there - task numbers are assigned per project and stay. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks

TDQS

A4.4/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=true), so the bar is lower, and the description still adds value beyond them: 'One undo step' discloses reversibility, and the portfolio clause explains that task numbers are preserved per project while only WBS codes are pulled. It does not discuss cost on large projects, but the behavioral picture is solid.

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?

Front-loaded with the core action, then the menu equivalence, then the trigger conditions, then the portfolio edge case and undo cost. Every sentence carries information, though the menu-equivalence clause is slightly redundant with the opening verb.

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?

An output schema exists, so return values need no explanation. For a zero-parameter mutation the description supplies what matters: what changes, when to run it, portfolio-specific behavior, and undo cost. Nothing an agent needs to call it correctly is missing.

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?

Zero parameters, so the baseline is 4 and there is nothing for the description to clarify. The mention of portfolio vs. single-project behavior is contextual rather than parameter-related.

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

Purpose5/5

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

States a specific verb and resource ('Renumbers the project') and immediately concretizes it: pull WBS codes into a gapless sequence, align task numbers with WBS order, normalize the structure. The 'same function as the Renumber menu' anchor makes the effect unambiguous even for an agent unfamiliar with the domain.

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?

Gives explicit trigger conditions tied to named siblings: 'Worth doing after rillsoft_project_sort or after many rillsoft_element_move calls.' That is real routing guidance, but there are no when-not conditions or warnings about cases where renumbering would be undesirable.

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

rillsoft_project_rescheduleReschedule projectA
Idempotent

Reschedules the project: the same menu entries as 'Recalculate as early as possible' and 'as late as possible'. Fixed tasks and tasks already begun stay where they are - they are the anchors the rest is aligned to, and nothing moves before the status date. The direction is not stored state but this one-off recalculation; rillsoft_project_tree_get shows the new dates afterwards. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
directionNoearly pulls every task to its earliest possible start (the default), late pushes them to their latest possible finishearly

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
directionYesscheduling direction that was applied
statusDateYesstatus date, DD.MM.YYYY hh:mm

TDQS

A3.7/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing that fixed and already-started tasks act as anchors and don't move, that nothing shifts before the status date, that the direction is a one-off recalculation rather than stored state, and that it consumes exactly one undo step. These mutation-behavior details (persistence, undo cost, anchoring rules) are exactly what annotations cannot convey.

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 compact sentences, purpose front-loaded, no filler. The menu-entry reference is slightly indirect but earns its place by anchoring the behavior to a known UI action.

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?

An output schema exists, so return values need no explanation, and the description covers the essential behavioral contract (anchors, status date, non-persistent direction, single undo). Complete for calling the tool correctly, with only sibling routing left unaddressed.

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

Parameters3/5

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

Schema description coverage is 100% and the enum values are already documented in the schema, so the description adds only the note that the direction is not persisted. That is a useful nuance but not enough to exceed the baseline when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb+resource ('Reschedules the project') and clarifies it maps to the 'Recalculate as early as possible'/'as late as possible' commands, so the operation is unambiguous. It does not explicitly differentiate itself from the nearby sibling rillsoft_project_status_date_reschedule, so it stops short of a 5.

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

Usage Guidelines3/5

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

Usage is implied via the menu-entry analogy and the pointer that rillsoft_project_tree_get shows the new dates afterwards, which hints at the workflow. However, there is no explicit when-to-use/when-not or naming of the alternative reschedule tools (e.g. project_status_date_reschedule, task_progress_recalculate), leaving the agent to infer the choice.

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

rillsoft_project_ris_deleteDelete RIS projectA
DestructiveIdempotent

Deletes a project of the logged-in client on the Rillsoft Integration Server - the 'Delete project' button of the folder dialog. The server deactivates it with all its versions (soft delete; an administrator can restore it there). The project that is open right now, alone or inside the open portfolio, is refused (ris_project_is_open; call rillsoft_project_create first). rillsoft_project_ris_save_as is the counterpart that creates projects; a local file is not touched. Takes effect at once: no undo step. Runs with the login of the desktop session.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesid of the project on the server, from rillsoft_project_ris_list

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYesalways true - a failure is an error, not a false
projectIdYesid of the project that was deleted

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: the delete is a soft delete (deactivation, restorable by an administrator), it takes effect immediately with no undo step, and it runs under the desktop session login. The destructiveHint/idempotentHint flags are already given, but these operational details are genuinely additive.

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?

Front-loads the core action and keeps every clause informative, but the refusal/alternative sentence and the 'local file is not touched' remark make it denser than strictly necessary. Still no filler or repetition.

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?

An output schema exists, so return values need no explanation, and the description covers reversibility, refusal conditions, timing, and session context. Nothing an agent needs to call this correctly is missing.

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

Parameters3/5

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

Only one parameter (projectId) and schema description coverage is 100%, so the schema already carries the meaning including the source list tool. The description adds no format or edge-case detail about the id, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource (deletes a RIS project of the logged-in client) and anchors it to a concrete UI affordance ('Delete project' button of the folder dialog). It also names the sibling it is not (rillsoft_project_ris_save_as) and the related create tool, so an agent can separate it from the many other *_delete siblings.

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

Usage Guidelines5/5

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

Explicitly states when the call will be refused (project open alone or inside the open portfolio, error ris_project_is_open) and what to do instead, and contrasts it with the counterpart that creates projects. It also notes a local file is untouched, which heads off confusion with the project_file_* siblings.

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

rillsoft_project_ris_listList RIS projectsA
Read-onlyIdempotent

Lists the folders and projects of the logged-in client on the Rillsoft Integration Server (RIS) with projectId, versionId, uuid, name, code, path, lock and template flags - the projectId is what rillsoft_project_ris_open takes. Runs with the login of the desktop session and never asks for credentials; the answer names server, userName and clientId. Local project files are opened through rillsoft_project_file_open instead. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
permissionNoonly projects the logged-in user holds this permission for: project_read (the default) lists everything readable, project_modify what may be saved back through rillsoft_project_ris_save, project_create what may be replacedproject_read

Output Schema

ParametersJSON Schema
NameRequiredDescription
serverYesURL of the Rillsoft Integration Server the desktop session is logged in to
foldersYesevery folder of the client the user may see, root first
clientIdYesid of the logged-in client; -1 while none is selected
projectsYesevery project the permission allows, at most 10000; more than that is an error
userNameYesuser name of the desktop session
clientNameYesname of the logged-in client; empty when the server did not answer the lookup
permissionYesthe permission the list was filtered by
openProjectIdNoprojectId of the open document; only when it is a project of this server

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint, but the description adds real context beyond them: it runs under the desktop session login, never prompts for credentials, and the response carries server, userName and clientId. The 'no undo step' phrasing is largely redundant with readOnlyHint=true, keeping this just short of a 5.

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

Conciseness4/5

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

Purpose and return fields are front-loaded, and the routing hints are compact. One clause, 'Read-only, no undo step,' restates the readOnlyHint annotation and could be dropped, but overall the text is dense and earns most of its length.

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

Completeness4/5

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

With an output schema present, the description need not explain return values, yet it helpfully names the key fields and their downstream use. Combined with full annotation coverage and a fully documented parameter, an agent has enough to call it correctly; only the ambiguity against the other RIS/folder list tools is unaddressed.

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

Parameters3/5

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

Schema coverage is 100% and the single 'permission' parameter already has a detailed enum description in the schema, so the baseline is 3. The description adds nothing about the parameter itself (the projectId mention refers to an output field, not an input), so it earns no lift above baseline.

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

Purpose5/5

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

States a specific verb and resource ('Lists the folders and projects of the logged-in client on the Rillsoft Integration Server') and enumerates the returned identity fields (projectId, versionId, uuid, name, code, path, lock, template). It also disambiguates from nearby siblings: local project files go through rillsoft_project_file_open, and the returned projectId is the input for rillsoft_project_ris_open.

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

Usage Guidelines4/5

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

Explicitly names the follow-up tool that consumes its output (rillsoft_project_ris_open) and the alternative for local files (rillsoft_project_file_open), which is exactly the routing an agent needs. It does not, however, address when to prefer it over the similar rillsoft_folder_ris_list or rillsoft_portfolio_ris_list siblings, so the disambiguation is incomplete.

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

rillsoft_project_ris_openOpen RIS projectA
DestructiveIdempotent

Opens a project of the logged-in client from the Rillsoft Integration Server by its projectId (see rillsoft_project_ris_list) and replaces the current project. Templates are refused (ris_template_unsupported); a local .rpj file is opened through rillsoft_project_file_open instead. With unsaved changes pending, discardChanges:true is required. Runs with the login of the desktop session and never asks for credentials. Saving goes back to the server through rillsoft_project_ris_save. No undo step - the command history starts over. Whatever the loader has to say ends up in note.

ParametersJSON Schema
NameRequiredDescriptionDefault
lockNooptimistic (the default) takes no lock and lets the server refuse a save whose version is stale (ris_conflict); pessimistic locks the project on the server for this user until another project is opened - where the lock is already held by someone else, the project opens read-only and note[] says sooptimistic
readOnlyNotrue = open without any lock and refuse rillsoft_project_ris_save
projectIdYesid of the project on the server, from rillsoft_project_ris_list
discardChangesNotrue = discard unsaved changes of the current project

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
lockYeslock mode of the open document
nameYesname
noteNohints of the loader, such as a lock that was not granted; missing when there were none
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
clientIdYesid of the client the project belongs to
readOnlyYestrue = the document is read-only; rillsoft_project_ris_save refuses it
projectIdYesid of the project on the server
versionIdYesid of the version the document holds

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already flag destructive=true, readOnly=false, idempotent=true and openWorld=true, yet the description adds real behavioral context beyond them: no credentials are requested (desktop session login), saving returns to server via rillsoft_project_ris_save, there is no undo because command history restarts, and loader output lands in note. That is meaningful disclosure of side effects and auth behavior.

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

Conciseness4/5

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

Front-loaded with purpose and projectId, then constraints in priority order. It is dense with semicolon-joined clauses and slightly long, but each sentence carries non-redundant information (template refusal, discardChanges gate, no undo, note[]) so nothing is padding.

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

Completeness5/5

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

An output schema exists and the description defers return detail to it while still pointing at note[]. For a destructive, state-replacing open operation with 4 params, it covers auth, alternatives, prerequisites, conflict/lock behavior, and undo loss — nothing an agent needs to invoke it safely is missing.

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

Parameters4/5

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

Schema coverage is 100% (including lock enum semantics and readOnly), so the baseline is 3; the description adds value by tying discardChanges:true to the concrete condition 'with unsaved changes pending' and by noting where the lock-read-only outcome is reported (note[]), not just the schema's field-level 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?

Specific verb+resource+scope: opens a RIS project of the logged-in client identified by projectId, and explicitly replaces the current project. It differentiates itself from siblings by naming rillsoft_project_ris_list (id source) and rillsoft_project_file_open (local .rpj), so an agent can select it without opening any schema.

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

Usage Guidelines5/5

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

Explicit when-to-use and when-not: templates are refused (ris_template_unsupported) and local .rpj files go through rillsoft_project_file_open instead. It also states the precondition that pending unsaved changes require discardChanges:true, which is exactly the routing decision an agent must make before calling.

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

rillsoft_project_ris_saveSave RIS projectA
DestructiveIdempotent

Writes the open project back to the Rillsoft Integration Server as a new version of the project it was opened from (rillsoft_project_ris_open). Creates one new version on the server per call; the document is then reloaded from the server; the UUIDs of every element stay valid, and the command history is kept, so the last steps can still be undone afterwards. Refused where the open document is not a project of the server (ris_project_not_open; use rillsoft_project_ris_save_as to store it there as a new project), where it is open read-only (ris_read_only), or where the server holds a newer version or a foreign lock (ris_conflict - reopen it). A local file is saved through rillsoft_project_file_save. An open portfolio is refused (a portfolio of the Integration Server is saved through rillsoft_portfolio_ris_save). Runs with the login of the desktop session and never asks for credentials. No undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoversion notes stored with the new version on the server; at most 2000 characters

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
lockYeslock mode of the open document
nameYesname
noteNohints of the loader, such as a lock that was not granted; missing when there were none
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
clientIdYesid of the client the project belongs to
readOnlyYestrue = the document is read-only; rillsoft_project_ris_save refuses it
projectIdYesid of the project on the server
versionIdYesid of the version the document holds

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare the write/destructive/open-world profile, and the description adds substantial context beyond them: one new version per call, the document is reloaded, UUIDs stay valid, command history is retained so prior steps remain undoable, no undo step for the save itself, and it runs under the desktop session login without prompting for credentials. The only nuance is that 'one new version per call' sits awkwardly with idempotentHint=true, though this is a minor ambiguity rather than an inversion.

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 core action and its scope are front-loaded, and every subsequent clause (refusals, alternatives, auth, undo) earns its place. It is a dense single block rather than a tightly scoped statement, so slightly less economical than the ideal, but there is no filler.

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

Completeness5/5

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

For a versioning save with several refusal paths, the description covers the action, the side effects, the auth model, the error conditions, and the correct alternative tools. An output schema exists, so return values need not be explained, and annotations cover the safety profile.

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

Parameters3/5

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

There is a single optional parameter (notes) and schema description coverage is 100%, including the 2000-character limit, so the schema already carries the meaning. The description adds nothing about the parameter; the baseline of 3 applies when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource: 'Writes the open project back to the Rillsoft Integration Server as a new version of the project it was opened from (rillsoft_project_ris_open).' It ties the operation to its counterpart open tool and distinguishes it from the sibling save variants (save_as, file_save, portfolio_ris_save).

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

Usage Guidelines5/5

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

Explicitly routes the agent: use rillsoft_project_ris_save_as when the document is not a server project, rillsoft_project_file_save for local files, rillsoft_portfolio_ris_save for portfolios. It also enumerates the exact refusal conditions (ris_project_not_open, ris_read_only, ris_conflict) and what to do in each case.

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

rillsoft_project_ris_save_asSave RIS project asA
DestructiveIdempotent

Stores the open single project - new, a local file or a project of the server - as a new project in a folder of the logged-in client on the Rillsoft Integration Server. Creates one new project with version 1 per call, even when called twice. The document becomes that server project afterwards: rillsoft_project_ris_save writes further versions, a former file path no longer applies; the command history is kept. The new project is held in the optimistic lock mode; reopen it with rillsoft_project_ris_open lock:pessimistic to lock it. A portfolio is refused; a local copy is written through rillsoft_project_file_save_as. Runs with the login of the desktop session and never asks for credentials. No undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoversion notes stored with the first version; at most 2000 characters
folderIdYesid of the folder on the server the new project goes into, from rillsoft_project_ris_list
templateNotrue = store it as a template project (gets a new UUID); templates cannot be opened through MCP afterwards

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
lockYeslock mode of the open document
nameYesname
noteNohints of the loader, such as a lock that was not granted; missing when there were none
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
clientIdYesid of the client the project belongs to
folderIdYesid of the folder the project was stored in
readOnlyYestrue = the document is read-only; rillsoft_project_ris_save refuses it
projectIdYesid of the project on the server
versionIdYesid of the version the document holds

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructive=true, readOnly=false and openWorld=true, yet the description adds genuinely non-redundant behavior: no undo step, history/command history retained, credentials are never requested (session login), the new project is created under optimistic locking, and the former file path is invalidated. The only soft spot is 'one new project with version 1 per call, even when called twice,' which sits uneasily with idempotentHint=true, though it plausibly means versions are not incremented rather than that repeat calls are rejected.

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?

Front-loaded with the action and destination, then layers on routing, lock state and side effects. It is long (seven sentences) but nearly every sentence carries distinct operational value; only the 'called twice' clause is fuzzy enough to cost a point.

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 three-parameter mutation tool with full schema descriptions, an output schema and rich annotations, the description supplies everything else an agent needs: safety profile context (no undo), auth behavior, post-save lock mode, and the sibling to use for the rejected cases. Nothing required for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100%: folderId, notes and template are each documented in the schema itself (including the note that templates cannot be reopened through MCP). The description adds no parameter-level semantics beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Stores the open single project ... as a new project in a folder ... on the Rillsoft Integration Server') and distinguishes itself from near-identical siblings by name (rillsoft_project_ris_save for further versions, rillsoft_project_file_save_as for a local copy). An agent can pick this tool over rillsoft_project_ris_save or rillsoft_project_file_save_as without opening any schema.

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

Usage Guidelines5/5

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

Explicit routing rules are given: portfolios are refused here, local copies go through rillsoft_project_file_save_as, and the created project is afterward managed with rillsoft_project_ris_save. It also tells the agent how to take ownership afterward (reopen with rillsoft_project_ris_open lock:pessimistic), which is exactly the when/where guidance an agent needs.

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

rillsoft_project_sortReorder elementsA
Idempotent

Reorders the elements of the project - the same ordering function as the 'Order by ...' menu. What gets reassigned are the WBS codes; task numbers stay untouched (use rillsoft_project_renumber for those). It acts on the main project and on every subproject; in a portfolio on the portfolio and every project, as the menu does. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
criterionYesordering criterion; matches the 'Order by ...' menu

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
criterionYesordering criterion that was applied

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare mutation (readOnlyHint=false), idempotency, and non-destructiveness. The description adds genuinely new behavioral context: the exact side effect (WBS codes reassigned, task numbers untouched), the scope of application (main project, subprojects, portfolio), and undo granularity ('One undo step').

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

Conciseness5/5

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

Four tight sentences, front-loaded with the core purpose before routing, scope, and undo notes. Each sentence carries distinct information with no filler or repetition.

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?

An output schema exists, so return values need no explanation. Given the single-parameter, fully-covered schema and the annotation-provided safety profile, the description covers the remaining agent needs: side effects, scope, alternative tool, and undo behavior.

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

Parameters4/5

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

Schema coverage is 100% and the enum is fully documented, so the baseline is 3. The description adds meaning by tying the criterion to the 'Order by ...' menu, clarifying the semantics of the enum values beyond the raw field 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?

States a specific verb (reorders) and resource (project elements), then immediately disambiguates the mechanism: WBS codes are reassigned while task numbers stay untouched. It explicitly names the sibling rillsoft_project_renumber as the tool for the other case, so an agent can distinguish it without opening any schema.

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

Usage Guidelines4/5

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

Gives explicit routing to rillsoft_project_renumber for task numbering and clarifies that this mirrors the 'Order by ...' menu, including its scope across projects/subprojects/portfolios. It does not address the related siblings rillsoft_element_reorder or rillsoft_element_move, leaving one routing gap.

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

rillsoft_project_status_date_rescheduleReschedule at status dateA
Idempotent

Reschedules only the unfinished work: every task or part that is not complete at the status date moves behind it; finished work and dates before the status date stay. Does not recompute the whole schedule - that is rillsoft_project_reschedule; does not move the status date itself - that is rillsoft_project_status_date_set. Rolled back as a whole when a fixed milestone would have to move (conflict_rolled_back). One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusDateYesstatus date of the project, DD.MM.YYYY hh:mm

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true, and openWorldHint=false. The description adds valuable behavioral detail beyond those annotations: only unfinished work moves, finished work and pre-status dates stay, conflicts with fixed milestones cause a full rollback, and the operation is a single undo step.

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 behavior, then efficiently names alternatives and rollback behavior. Every sentence adds necessary information, and there is no redundant restating of the title or schema.

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

Completeness5/5

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

Complete for a zero-parameter, stateful project operation. An output schema exists, so return-value details are not needed, and the description covers scope, exclusions, conflict handling, and undo behavior sufficiently for an agent to invoke it correctly.

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

Parameters4/5

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

The tool has zero parameters and schema description coverage is 100%, so the schema carries no additional parameter semantics. Per the calibration rule, a zero-parameter tool with complete schema coverage has a baseline of 4.

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

Purpose5/5

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

States a specific verb and resource: reschedules unfinished work at the status date. It also explicitly distinguishes itself from rillsoft_project_reschedule and rillsoft_project_status_date_set, so an agent can identify its exact scope without opening sibling schemas.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance by describing the limited scope of the operation and names the two alternative tools that should be used for whole-schedule rescheduling and status-date changes. No exclusions are left implicit.

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

rillsoft_project_status_date_setSet status dateA
Idempotent

Sets the status date of the project without recomputing anything. Moving unfinished work behind the new status date is a second, deliberate step through rillsoft_project_status_date_reschedule; recomputing the whole schedule goes through rillsoft_project_reschedule. Values before the project start are lifted to the project start. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusDateYesstatus date, DD.MM.YYYY hh:mm; a value before the project start is lifted to the project start

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusDateYesstatus date of the project, DD.MM.YYYY hh:mm

TDQS

A4.5/5.0
Behavior4/5

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

With readOnlyHint=false, idempotentHint=true and destructiveHint=false already declared, the description still adds real value: 'without recomputing anything' scopes the side effect, and 'one undo step' discloses reversibility granularity. These go beyond what the annotations convey, though return-value shape is left to the output schema.

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

Conciseness5/5

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

Three tightly written sentences, front-loaded with the core action and its scoping constraint, followed by sibling routing and the undo note. Every sentence earns its place with no filler.

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

Completeness5/5

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

For a single-parameter mutation with an output schema and full annotation coverage, the description supplies everything an agent needs: scope of side effects, sibling routing, edge-case handling (values before project start), and undo semantics.

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

Parameters3/5

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

Schema description coverage is 100% and the only parameter is fully documented in the schema, including the pattern and the lift-to-start rule. The description restates the lift behavior rather than adding syntax or format detail beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Sets the status date of the project') and immediately distinguishes itself from the two closely-named siblings rillsoft_project_status_date_reschedule and rillsoft_project_reschedule. An agent can tell exactly which of the three it needs without opening any schema.

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

Usage Guidelines5/5

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

Explicitly names the alternatives and the conditions that select them: moving unfinished work is a separate deliberate step via rillsoft_project_status_date_reschedule, and full recomputation goes via rillsoft_project_reschedule. This is the when/when-not/alternatives pattern at its clearest.

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

rillsoft_project_team_preference_removeRemove preferred teamA
DestructiveIdempotent

Takes the preferred team of a project or subproject back out. The counterpart of rillsoft_project_team_preference_set. An inherited preferred team is removed at the pack that carries it; under preferredTeams[] rillsoft_project_tree_get shows only the entries a pack carries itself. Where the project or subproject does not carry that team, the call fails rather than reporting a silent success. In a portfolio projectUuid names a project or a subproject inside it, as in a single project; an empty projectUuid - the portfolio itself - is refused. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamIdYesid of the team
projectUuidNoUUID of the project or subproject; empty = the main project

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
preferredTeamsYesthe preferred teams of the project or subproject after the change

TDQS

A4.6/5.0
Behavior5/5

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

Well beyond the annotations (destructiveHint=true, idempotentHint=true), the description discloses inheritance semantics, the pack-level removal rule, the failure-not-silent-success behavior, the portfolio restriction on empty projectUuid, and that a single undo step is consumed. This is exactly the behavioral detail an agent needs before calling a destructive mutation.

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?

Front-loaded with the core action, and every sentence carries operational information. The multi-clause sentences are dense but not padded; nothing is wasted, though it reads as more than strictly necessary.

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 two-parameter destructive mutation with an output schema available, the description covers relation to siblings, failure modes, scope rules, and undo cost. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning to projectUuid: in portfolio mode it names a project or a subproject inside it, and an empty value (the portfolio itself) is refused — a constraint the schema's 'empty = the main project' wording does not convey.

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?

Opens with a specific verb+resource ('Takes the preferred team ... back out') and immediately identifies its counterpart, rillsoft_project_team_preference_set, letting an agent distinguish removal from setting without opening either schema.

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

Usage Guidelines4/5

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

It names the counterpart operation and describes concrete conditions — inherited teams are removed at the pack that carries them, and the call fails rather than silently succeeding when the target does not carry the team. It stops short of an explicit 'use set instead when...' routing statement, but 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.

rillsoft_project_team_preference_setSet preferred teamA
Idempotent

Marks a team as the preferred team of a project or subproject. This is not an assignment but a preference, carrying neither utilization nor productivity: it is inherited by every subproject below, it presets the team filter in rillsoft_task_resource_candidate_list and in the dialogs, and it narrows the supply in the capacity view split by project. projectUuid addresses the main project (empty) or any subproject. Read it back through rillsoft_project_tree_get (preferredTeams[]). Team assignments on individual tasks do not exist in this contract; people are assigned through rillsoft_task_employee_assignment_set. In a portfolio projectUuid names a project or a subproject inside it, as in a single project; the portfolio itself carries no preferred team (the user interface offers none there), so an empty projectUuid is refused. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamIdYesid of the team from rillsoft_resource_pool_catalog_list with types:["team"]
projectUuidNoUUID of the project or subproject that carries the preference; empty = the main project

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
preferredTeamsYesthe preferred teams of the project or subproject after the change

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only carry idempotent/non-destructive flags; the description adds substantial behavioral context beyond them: inheritance to every subproject, presetting of the team filter, narrowing of capacity-view supply, the empty-projectUuid refusal, and 'One undo step.' This is exactly the extra behavioral layer annotations cannot express.

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?

Front-loaded with the core action, then progressively adds inheritance, effects, read-back, and edge cases. Dense but nearly every sentence earns its place; a small amount of compaction is possible, keeping it just shy of a 5.

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

Completeness5/5

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

With an output schema present, return values need not be explained. The description covers inheritance, side effects, portfolio behavior, the read-back path, and the undo behavior — everything an agent needs to call this mutation correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds real meaning the schema lacks: projectUuid as empty=main project is echoed, but the portfolio semantics (projectUuid naming a project/subproject inside a portfolio, and the portfolio itself carrying no preference) are not derivable from the schema and genuinely enrich the parameter.

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

Purpose5/5

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

States a specific verb+resource ('marks a team as the preferred team of a project or subproject') and immediately distinguishes it from what it is not ('not an assignment'). It names related siblings (rillsoft_task_employee_assignment_set, rillsoft_task_resource_candidate_list) so an agent can place it in the tool graph without opening other schemas.

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

Usage Guidelines5/5

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

Explicitly says when to use it versus task-level assignment ('Team assignments on individual tasks do not exist in this contract'), names the read-back tool (rillsoft_project_tree_get), and covers the portfolio edge case where an empty projectUuid is refused. Clear when/when-not guidance with named alternatives.

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

rillsoft_project_tree_getRead projectA
Read-onlyIdempotent

Use this to read tasks and dependencies: it returns the whole project as a tree - key data including the status date, subprojects, tasks (UUID, WBS, computed dates, milestone and critical flags, progress and effort) and every dependency. There is no separate task list tool; this is the read path for them. Read-only, no undo step. Each task carries four assignment arrays: assignments[] (roles), employeeAssignments[], machineRoleAssignments[] and machineAssignments[] - empty where the task holds nothing of that resource type. Where several tasks use one machine or machine role together, it appears in none of those arrays but in sharedAssignments[] (type, id, name, quantity, utilization, sharedTaskUuids[] holding the UUIDs of the other tasks involved); that field is absent where the task shares nothing. A task with sameRow:true is drawn on one display row together with its WBS predecessor. With includePositionRange:true the position range per task is reported as well. Beware: the critical field is not a float indicator.

ParametersJSON Schema
NameRequiredDescriptionDefault
includePositionRangeNotrue = report the position range per task as well: earliestStart and latestFinish (DD.MM.YYYY hh:mm) plus startReserveHours and finishReserveHours. Computed against the nearest fixed frame (subproject or project) and never before the status date. Beware: moving a task inside that range CAN drag its successors along - this is the total float of network analysis, not the free float. Subprojects and the main project do not carry these fields; what they show is the envelope of their children, not a range of their own. Requires the Builder.bReserve setting, otherwise the call fails. Defaults to false

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
codeNocode of the element; missing when empty
nameYesname
typeYeskind of the element
uuidYesUUID of the element
colorNobar color as #RRGGBB or 'automatic'
fixedYesdate is fixed
notesNonotes; missing when empty
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
sameRowNotrue = shares one display row with the WBS predecessor; missing otherwise
criticalNotrue = on the critical path; not a float indicator
elementsYeschild elements in WBS order
priorityNopriority in percent; not reported in a portfolio
statusIdNoid of the project status; not reported in a portfolio
fixedTypeNotask type of the resource block; missing while it is undetermined
milestoneNotrue = milestone
portfolioYestrue = the open document is a portfolio
calendarIdNoown calendar; 0 = inherited from the parent element
categoryIdNoid of the project category; not reported in a portfolio
customerIdNoid of the customer; not reported in a portfolio
planNumberNonumber of the plan variant; not reported in a portfolio
statusDateYesstatus date, DD.MM.YYYY hh:mm
assignmentsNorole assignments
effortHoursNoeffort in hours
dependenciesYesall dependencies of the project
latestFinishNolatest possible finish; only with includePositionRange:true
primaryColorNocolor is inherited by child elements
durationHoursNoduration in hours
earliestStartNoearliest possible start; only with includePositionRange:true
effortEditableNoeffort may be entered on the task
preferredTeamsNopreferred teams; missing when none is set
schedulingModeNoscheduling mode; not reported in a portfolio
effortDoneHoursNocompleted effort in hours
progressPercentNoactual progress in percent
teamAssignmentsNoteam assignments; missing when the task carries no team
timeStepMinutesNoinput time grid in minutes
durationStepUnitNounit used to enter a duration
quantityStepUnitNounit used to enter a quantity
sharedAssignmentsNomachine roles and machines shared with other tasks; missing when the task shares nothing
startReserveHoursNostart reserve in hours; only with includePositionRange:true
finishReserveHoursNofinish reserve in hours; only with includePositionRange:true
machineAssignmentsNomachine assignments
employeeAssignmentsNoassignments of specific people
materialAssignmentsNomaterial assignments
dynamicRedistributionNoredistribute effort dynamically; not reported in a portfolio
machineRoleAssignmentsNomachine role assignments
outputQuantityEditableNooutput quantity may be entered on the task
dynamicRedistributionEffectiveNothe switch as the scheduling applies it: true where the project or the task carries it, scheduling is capacity_driven and the task carries named people. A task that only inherits from the project has dynamicRedistribution false and this one true

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the read-only/idempotent safety profile, but the description adds substantial behavioral context beyond them: 'no undo step,' the exact composition of the returned tree, the meaning of the four assignment arrays and the separate sharedAssignments[] case, the absent-field semantics, the sameRow display rule, the Builder.bReserve prerequisite that makes the call fail, and the warning that the 'critical' field is not a float indicator.

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 purpose and scope are front-loaded in the first sentence, and most sentences carry concrete information about the payload rather than filler. It is dense and long, with some overlap between the body text and the includePositionRange schema description, but nothing is gratuitous.

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

Completeness5/5

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

For a complex tree-read tool with one optional parameter, the description covers scope, payload structure, edge cases (sharedAssignments, empty arrays, absent fields), a failure prerequisite, and a semantic warning. An output schema exists, so return-value mechanics need not be restated, and the description still supplies enough framing to call the tool correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema already documents includePositionRange thoroughly. The description goes slightly beyond it by interpreting the result (total float of network analysis vs. free float, and that moving inside the range can drag successors along), which adds decision-relevant nuance even though much of the text overlaps 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 names a specific verb and resource ('read tasks and dependencies'), states the return shape ('the whole project as a tree'), and enumerates the payload (status date, subprojects, tasks with UUID/WBS/dates/flags/progress/effort, and every dependency). It also explicitly distinguishes itself from siblings by asserting 'There is no separate task list tool; this is the read path for them.'

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 clearly frames the tool as the read path for tasks and dependencies and rules out a competing task-list tool, which is strong routing guidance. However, it does not contrast against other read-oriented siblings such as analysis_report_get, resource_usage_list, or property_panel_get, nor state when a lighter read would be preferable.

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

rillsoft_project_updateSet project propertiesA
Idempotent

Sets properties of the main project: key data (name, start, finish, fixing), calendar and color, the master-data references category, status, customer, priority and plan variant, plus scheduling mode, input step widths and the two metric switches. This changes the period of the project, not the time scale of the display (use rillsoft_timescale_apply for that). Subprojects go through rillsoft_subproject_update. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoname of the project
colorNobar color as #RRGGBB or 'automatic'
fixedNofix the project start
startNoproject start, formatted DD.MM.YYYY hh:mm
finishNoproject finish, formatted DD.MM.YYYY hh:mm
priorityNopriority of the project in percent (0 to 100), as in the dialog. In a portfolio refused: the tool addresses the portfolio, the field belongs to each project
statusIdNoid of the project status from rillsoft_resource_pool_catalog_list (types: project_status); 0 = none. In a portfolio refused: the tool addresses the portfolio, the field belongs to each project
calendarIdNoid of the calendar from rillsoft_resource_pool_catalog_list (types: calendar); the main project always carries a concrete id
categoryIdNoid of the project category from rillsoft_resource_pool_catalog_list (types: project_category); 0 = none. In a portfolio refused: the tool addresses the portfolio, the field belongs to each project
customerIdNoid of the customer from rillsoft_resource_pool_catalog_list (types: project_customer); 0 = none. In a portfolio refused: the tool addresses the portfolio, the field belongs to each project
primaryColorNopass the color on to child elements that carry none of their own
effortEditableNoeffort may be entered on the task
schedulingModeNocapacity_driven computes with the calendars and absences of the assigned resources, deadline_driven computes without them. In a portfolio refused: the tool addresses the portfolio, the mode belongs to each project
validationModeNowhat to do where existing elements would fall outside the new period: strict (the default) refuses and names the culprits, extend widens the period to cover what exists, force applies it anyway; effective only together with start or finishstrict
planningVariantNonumber of the plan variant (baseline) of the project; 0 = dynamic. Refused in a portfolio: there is no baseline there, not even per project
timeStepMinutesNoinput time grid in minutes: 1, 5, 10, 15, 30 or 60, at most the grid of the calendar
durationStepUnitNounit used to enter a duration
quantityStepUnitNounit used to enter a quantity
dynamicRedistributionNoredistribute effort dynamically; permitted only with schedulingMode capacity_driven. In a portfolio refused: the tool addresses the portfolio, the switch belongs to each project
outputQuantityEditableNooutput quantity may be entered on the task

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare a non-readOnly, idempotent, non-destructive, closed-world mutation, so the safety bar is partly covered. The description adds genuinely new behavioral context beyond the schema by disclosing "One undo step" and clarifying that the period, not the display time scale, is affected.

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 property inventory is front-loaded in the first sentence, followed by two short routing/behavioral sentences. Slightly long enumeration, but each clause maps to real schema content and nothing is wasted.

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

Completeness4/5

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

With an anyOf-required schema of 20 optional fields, full schema descriptions, an output schema, and annotations supplying the safety profile, the description supplies what an agent needs: purpose, routing to siblings, and undo semantics. Minor gaps remain around partial-update semantics and the anyOf requirement, but the coverage is strong.

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

Parameters3/5

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

Schema description coverage is 100%, so every one of the 20 optional parameters is already documented in the schema, including enum meanings, portfolio refusals and defaults. The description's list of property categories largely restates that structure and adds no format or constraint detail beyond it — the correct 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 opens with a specific verb and resource ("Sets properties of the main project") and enumerates the property groups it touches (key data, calendar/color, master-data references, status, customer, priority, plan variant, scheduling mode, step widths, metric switches). It explicitly distinguishes itself from rillsoft_subproject_update and rillsoft_timescale_apply, so an agent can separate it from its nearest siblings without inspecting schemas.

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

Usage Guidelines4/5

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

It names alternatives with conditions: time-scale display changes go to rillsoft_timescale_apply, subprojects go to rillsoft_subproject_update. That is clear routing, though it does not state when to prefer this over rillsoft_project_create or the property panel sibling tools.

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

rillsoft_property_panel_closeClose property sheetA
Read-onlyIdempotent

Switches the property sheet back to the info sheet. Where the info sheet is open already it does nothing, and that is not an error. No undo step, no change to the project. It answers like rillsoft_property_panel_get.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNoname of the shown element; missing when there is none
typeYeskind of the open property sheet; 'other' for an unknown one
uuidNoUUID of the shown element; missing when there is none
numberNonumber of the shown element; missing when there is none
activeTabNothe tab in front; missing when no property sheet is open
availableTabsYesnames of all tabs of the open property sheet
infoPanelVisibleYestrue = the docking bar is visible

TDQS

A3.8/5.0
Behavior4/5

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

Adds meaningful behavior beyond annotations: idempotent no-op is not an error, no undo step, no project change, and echoes rillsoft_property_panel_get response. This fills gaps annotations don't cover (undo behavior, 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.

Conciseness4/5

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

Two concise sentences, front-loaded with the main action, then behavioral caveats. No waste.

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

Completeness4/5

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

Output schema exists and annotations cover safety/idempotency; description adds undo and no-op semantics and return-shape pointer. Complete enough for a parameterless toggle.

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?

Zero parameters, so baseline 4 applies. No param info needed.

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?

Specific verb ('Switches') and resource ('property sheet back to the info sheet'). Clear what it does, though it doesn't explicitly differentiate from sibling rillsoft_property_panel_open or rillsoft_resource_pool_edit_close, but the name/description pairing is sufficiently distinct.

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?

Implies when to use (to return from property sheet to info sheet) and states the no-op case 'where the info sheet is open already it does nothing'. No explicit alternatives or when-not-to-use guidance vs sibling tools.

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

rillsoft_property_panel_getRead property sheetA
Read-onlyIdempotent

Reads the property sheet in the info window: type (info, task, project, subproject, portfolio, combination, other), uuid, number and name of the element shown, activeTab, availableTabs[] and infoPanelVisible. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNoname of the shown element; missing when there is none
typeYeskind of the open property sheet; 'other' for an unknown one
uuidNoUUID of the shown element; missing when there is none
numberNonumber of the shown element; missing when there is none
activeTabNothe tab in front; missing when no property sheet is open
availableTabsYesnames of all tabs of the open property sheet
infoPanelVisibleYestrue = the docking bar is visible

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds a useful extra: 'no undo step,' which clarifies that this read does not create a history entry. It also lists the return fields, providing behavioral context beyond the annotations.

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

Conciseness5/5

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

Two sentences, front-loaded with the core action, followed by a precise field list. No wasted words.

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

Completeness4/5

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

An output schema exists, so return values are technically covered by it. The description nonetheless enumerates the key fields, which is helpful. The only minor gap is absence of any prerequisite context (e.g., panel open state), but this is not required for calling the tool correctly.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The description appropriately focuses on output fields rather than input parameters, which is consistent with the empty schema.

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

Purpose5/5

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

States a specific verb (Reads) and resource (property sheet in the info window), and enumerates the exact fields returned. This clearly distinguishes it from sibling tools like rillsoft_property_panel_open and rillsoft_property_panel_close.

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 when-not-to-use guidance is given. The read-only nature and the presence of open/close siblings imply a basic context, but prerequisites (e.g., panel must be open) and alternatives are not stated.

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

rillsoft_property_panel_openOpen property sheetA
Read-onlyIdempotent

Shows a task, a subproject or the project in the property sheet of the info window, optionally on a named tab. A hidden info window is shown for that (for the running session only). The element gets selected and scrolled into view along the way - the selection is part of the picture. Purely navigational: values are set through rillsoft_task_update, rillsoft_subproject_update and the other writing tools. No undo step, no change to the project. It answers like rillsoft_property_panel_get.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabNothe tab that shall come to the front; rillsoft_property_panel_get reports the names in availableTabs[]
uuidNoUUID of the task, subproject or project; empty = the main project
numberNonumber of the part where the UUID is ambiguous (a task that was split)

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNoname of the shown element; missing when there is none
typeYeskind of the open property sheet; 'other' for an unknown one
uuidNoUUID of the shown element; missing when there is none
numberNonumber of the shown element; missing when there is none
activeTabNothe tab in front; missing when no property sheet is open
availableTabsYesnames of all tabs of the open property sheet
infoPanelVisibleYestrue = the docking bar is visible

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations by disclosing UI side effects: a hidden info window is shown for the running session only, the element is selected and scrolled into view, and the selection change is part of the result. It also states there is no undo step and no change to the project, which is exactly the extra context annotations cannot carry.

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?

Purpose is front-loaded in the first sentence and every sentence carries information, but the phrasing is a little chatty ('the selection is part of the picture') and the trailing sentence about rillsoft_property_panel_get is a structural afterthought.

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

Completeness4/5

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

With an output schema present and covered by the 'answers like rillsoft_property_panel_get' note, return values need no explanation; purpose, session scope, side effects and the write-tool boundary are all covered. It omits failure behavior for an unknown uuid or tab name, which an agent would need before calling blind.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents tab, uuid and number in detail. The description only restates the optional named tab and implies uuid defaults to the main project; baseline 3 applies when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource ('Shows a task, a subproject or the project in the property sheet of the info window') and scopes it against the writing siblings by declaring itself 'purely navigational'. An agent can distinguish it from rillsoft_property_panel_get and rillsoft_property_panel_close without opening a schema.

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

Usage Guidelines4/5

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

Explicitly routes value changes to rillsoft_task_update / rillsoft_subproject_update and the other writing tools, and cross-references rillsoft_property_panel_get for tab names and response shape. It gives clear context but never states when to prefer this over rillsoft_property_panel_get or rillsoft_row_selection_apply as alternatives.

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

rillsoft_resource_absence_listList absencesB
Read-onlyIdempotent

Reads the absences of a person or a team: holiday, sickness and other time away. The pool is never changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoid; with employee either the id of the person or that of one of their qualification rows. Give exactly one of 'id' and 'code'
toNoonly absences up to this day (DD.MM.YYYY)
codeNocode; a code belonging to several people makes the call fail
fromNoonly absences from this day on (DD.MM.YYYY)
typeNoresource type; employee by defaultemployee
absenceTypeNoonly absences carrying this one-letter type code, as stored in the resource pool. The codes are German initials, not English ones: 'U' for Urlaub (vacation) and 'K' for Krankheit (sick leave) are the common pair, and a pool may define further letters. Leave it out for every type. An unknown letter is not an error - it simply matches nothing, so check rillsoft_resource_absence_list without the filter first
includeTeamsNotrue = report the absences of the teams the person works in as well

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesid of the person or team
nameYesname of the person or team
typeYesresource type
teamsNoabsences of the teams of the person; only with includeTeams:true
absencesYesown absences within the queried period

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, and 'The pool is never changed' largely restates that safety profile rather than extending it. It adds no auth requirements, rate limits, or scoping caveats beyond what the annotations cover, so it is adequate but not additive.

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

Conciseness5/5

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

Two short sentences, purpose front-loaded, no filler. Every clause carries information about scope or effect.

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?

An output schema exists, so return values need not be explained, and the annotations plus 100%-covered schema carry the parameter and safety detail. The description is complete for correct invocation, with only routing against the sync sibling left implicit.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters in detail, including the id/code mutual exclusion and the German one-letter absence codes. The description adds only the loose mapping of 'person or a team' to the resource type, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Reads the absences of a person or a team') and enumerates the content (holiday, sickness, other time away), so an agent understands exactly what is returned. It does not explicitly name or distinguish itself from the nearby sibling rillsoft_resource_absence_sync, so it stops short of a 5.

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

Usage Guidelines2/5

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

No when-to-use statement, no prerequisites, and no alternative named. The only routing hint ('check ... without the filter first') lives in the absenceType schema description rather than the tool description, so the description itself offers essentially no usage guidance.

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

rillsoft_resource_absence_syncReconcile absencesA
DestructiveIdempotent

Mirrors the absences of many people and teams in one call - the daily run of a foreign system. Every entry is resolved and checked first and written only afterwards; one faulty entry leaves the whole run without effect. Inside an open unit of work only.

ParametersJSON Schema
NameRequiredDescriptionDefault
entriesYesper entry { type, id or code, timeWindow (optional), periods }
timeWindowNoa shared { from, to } for the whole call; an entry may bring a window of its own

Output Schema

ParametersJSON Schema
NameRequiredDescription
entriesYesbalance per reconciled entry

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the annotations (destructive/idempotent/not-read-only), the description discloses non-obvious transactional behavior: entries are validated and resolved before any write, the run is all-or-nothing ('one faulty entry leaves the whole run without effect'), and it must execute inside an open unit of work. These are exactly the traits an agent needs to call it safely and are not derivable from the structured fields.

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

Conciseness4/5

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

Three tight sentences, front-loaded with the purpose, then atomicity, then the transaction precondition. No wasted words, though the dashes make it slightly dense.

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 destructive, nested-schema tool with an output schema (so return values need not be explained), the description covers purpose, atomicity, and the transaction requirement. It could be more explicit that mirroring replaces/clears existing absences in the window, but the schema's 'an empty array clears the window' partly covers that.

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

Parameters3/5

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

Schema description coverage is 100%, so the nested entry/timeWindow/periods semantics are already fully documented by the schema, and the description adds no field-level meaning beyond 'many people and teams' and 'every entry'. Baseline 3 is appropriate when the schema carries the parameter burden.

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

Purpose4/5

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

The description gives a specific verb ('mirrors'/reconcile) and resource (absences of many people and teams), plus the batch framing ('in one call - the daily run of a foreign system'). An agent can distinguish it from the singular rillsoft_resource_absence_list by the bulk/mirror semantics, though no sibling is named explicitly.

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 gives clear context for when this applies ('the daily run of a foreign system') and a hard precondition ('Inside an open unit of work only'). It does not, however, name an alternative or state an explicit when-not, so it stops short of the top band.

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

rillsoft_resource_pool_catalog_listList master data catalogsA
Read-onlyIdempotent

Reads the catalogs of the existing master data: role, team, employee, material, machine_role, machine, project_category, project_status, project_customer and calendar - each entry with id and name, people additionally with teamIds, roleIds and personId. The ids fit rillsoft_task_employee_assignment_set, rillsoft_resource_pool_resource_get and the analysis report. The master data is never changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
typesNothe catalogs wanted; empty means all of them
activeOnlyNotrue (the default) = only people whose employment period intersects the project period
searchTextNofilter by name (substring, case does not matter)

Output Schema

ParametersJSON Schema
NameRequiredDescription
rolesNoentries of the catalog
teamsNoentries of the catalog
machinesNoentries of the catalog
materialNoentries of the catalog
calendarsNocalendars of the pool
employeesNoentries of the catalog
machineRolesNoentries of the catalog
projectStatusesNoentries of the catalog
projectCustomersNoentries of the catalog
projectCategoriesNoentries of the catalog

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered; the description's 'master data is never changed' is confirmatory. It adds genuine context beyond annotations: the returned fields (id/name, plus teamIds/roleIds/personId for people) and the cross-tool id interoperability.

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

Conciseness4/5

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

Two dense sentences; the catalog list is front-loaded and every clause carries information. It is text-heavy but not padded, with only minor redundancy in the 'never changed' clause and the duplicated type enumeration.

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?

An output schema exists, so return-value explanation is not strictly required, yet the description still conveys the useful shape of results and how the ids feed other tools. Combined with the 100% schema coverage and clear annotations, an agent has enough to invoke correctly; only explicit usage routing is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents types, activeOnly and searchText, and the description largely restates the enum set rather than adding syntax or edge-case meaning. The only extra signal is the implicit 'empty means all' behavior, which is already in the schema. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource ('Reads the catalogs of the existing master data') and enumerates the exact catalog types covered. An agent can distinguish this from siblings like rillsoft_resource_pool_resource_get or rillsoft_resource_pool_ris_list without opening any schema.

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

Usage Guidelines3/5

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

It implies downstream usage by naming the tools whose ids match (rillsoft_task_employee_assignment_set, rillsoft_resource_pool_resource_get, analysis report), but it gives no explicit when-to-use vs when-not guidance relative to the many sibling list/get tools. Usage is inferable rather than stated.

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

rillsoft_resource_pool_edit_closeClose unit of workA
DestructiveIdempotent

Closes the unit of work and releases the lock. Without save:true the working copy is discarded, and the stored pool stays as it was.

ParametersJSON Schema
NameRequiredDescriptionDefault
saveNotrue = save before closing; false, the default, discards unsaved changes

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathNopath of the pool file; only with source file
rolesYesnumber of qualifications
teamsYesnumber of teams
clientNotenant; only with source ris
sourceYesorigin of the resource pool
workUnitYesstate of the unit of work on the pool
calendarsYesnumber of calendars
employeesYesnumber of people

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, readOnlyHint=false and idempotentHint=true, so the description only needs to add context — and it does, explaining the lock release and that the default path discards the working copy while the stored pool is untouched. That is the key data-loss semantics an agent needs before calling with the default.

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

Conciseness5/5

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

Two sentences, no filler, and the irreversible default behavior is stated immediately after the core action. Every clause carries information the agent needs.

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?

Output schema exists, so return values need no explanation, and the mutation/lock/discard behavior is covered. A minor gap remains around preconditions (must an edit session be open, what happens if none is) given openWorldHint=true.

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

Parameters4/5

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

Schema coverage is 100% and the schema already documents the single boolean, so the baseline is 3. The description goes beyond the schema by spelling out the consequence of omitting save (working copy discarded, stored pool unchanged), which is the semantics that actually drives the parameter choice.

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?

Specific verb ('Closes') plus resource ('the unit of work') with an explicit side-effect (releases the lock), which distinguishes it from the save sibling in the same edit session. It does not name the sibling tools (edit_open / edit_save) as alternatives, so alignment still requires a little inference.

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

Usage Guidelines3/5

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

Usage is implied by the open/save/close family and by the save:true note, but the description never states when to close versus when to save first, nor that uncommitted edits are lost unless save:true. An agent must infer the workflow from the tool name and sibling list.

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

rillsoft_resource_pool_edit_openOpen unit of workA
Idempotent

Opens a unit of work on the resource pool: it locks the pool and creates a working copy. Every writing pool tool is valid inside an open unit of work only, and none of them ever saves on its own. While a unit is open, rillsoft_resource_pool_file_select is blocked.

ParametersJSON Schema
NameRequiredDescriptionDefault
discardChangesNotrue = discard a unit of work that is already open, together with its unsaved changes

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathNopath of the pool file; only with source file
rolesYesnumber of qualifications
teamsYesnumber of teams
clientNotenant; only with source ris
sourceYesorigin of the resource pool
workUnitYesstate of the unit of work on the pool
calendarsYesnumber of calendars
employeesYesnumber of people

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false) by disclosing the locking side effect, the creation of a working copy, and the crucial transactional rule that no pool write tool auto-saves. It also warns which sibling is blocked while the unit is open, which the annotations cannot express.

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 clauses, each earning its place: the action and side effects first, then the transactional rule, then the blocked tool. Front-loaded and free of 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?

An output schema exists so return values need not be explained, and the description covers preconditions, side effects, and the blocked sibling. The minor gap is that it does not name rillsoft_resource_pool_edit_save / rillsoft_resource_pool_edit_close, leaving the agent to infer how the unit is persisted and released.

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

Parameters3/5

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

Schema description coverage is 100% for the single discardChanges parameter, so the schema already carries its meaning ('true = discard a unit of work that is already open, together with its unsaved changes'). The description adds nothing about it, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('opens a unit of work on the resource pool') and immediately explains the concrete effect: it locks the pool and creates a working copy. This distinguishes it cleanly from siblings like rillsoft_resource_pool_edit_close, rillsoft_resource_pool_edit_save, and rillsoft_resource_pool_file_select without the agent needing to open any schema.

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

Usage Guidelines4/5

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

Gives a strong precondition: every writing pool tool is valid only inside an open unit of work, and none of them saves on its own. It also names a blocked alternative (rillsoft_resource_pool_file_select). What it does not state explicitly is the pairing with rillsoft_resource_pool_edit_save / edit_close, so the agent must infer the save-then-close sequence.

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

rillsoft_resource_pool_edit_saveSave unit of workA
DestructiveIdempotent

Checks the working copy against the open projects and writes it back once. The unit of work stays open. Against the Rillsoft Integration Server this creates exactly one new pool version, no matter how many changes the unit holds.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNotrue = save despite conflicts with the open projects (the 'Yes' of the reference editor)

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNohint on conflicts with foreign changes; only when some occurred
pathNopath of the pool file; only with source file
rolesYesnumber of qualifications
teamsYesnumber of teams
clientNotenant; only with source ris
sourceYesorigin of the resource pool
workUnitYesstate of the unit of work on the pool
calendarsYesnumber of calendars
employeesYesnumber of people
versionIdNoid of the created pool version; only with source ris

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly=false, destructive=true, idempotent=true and openWorld. The description goes beyond them by disclosing the conflict check against open projects, the collapsing of many changes into a single saved version, and that the working session remains open afterwards — real behavioral context an agent cannot get from the annotations.

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

Conciseness4/5

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

Three short sentences, front-loaded with the core action and with no filler. The mid-sentence emphasis formatting is slightly unusual but the content is dense and each sentence carries a distinct fact (action, lifecycle, version semantics).

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?

An output schema exists and the annotations cover the safety profile, so the description need not explain returns. It adequately covers the save semantics, conflict behavior and session lifecycle; only the relationship to sibling save/close/ris-save tools is left unaddressed.

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?

Only one parameter and schema description coverage is 100%, so the schema already explains confirm as 'save despite conflicts'. The description's mention of checking the working copy against open projects gives the conflict notion some context, but adds little beyond what the schema states; 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?

States a specific verb (checks/writes back a working copy) and resource (the unit of work / resource pool), and adds precise scope details like writing back only once and producing one pool version. It is distinguishable from generic save siblings, though it never names or contrasts them.

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

Usage Guidelines3/5

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

Usage is only implied: 'The unit of work stays open' hints that a different tool (e.g. resource_pool_edit_close) is needed to finish the session, but the description never says when to prefer this save over close, open, or the ris/project save variants. No explicit when-not guidance.

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

rillsoft_resource_pool_file_selectSelect resource poolA
Idempotent

Switches the global resource pool to a pool file (.xml). Possible only on a new, unmodified project, so call rillsoft_project_create first. No undo step; the setting holds application-wide.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesabsolute path of a resource pool file (.xml, rillprj_reference)

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathNopath of the pool file; only with source file
rolesYesnumber of qualifications
teamsYesnumber of teams
clientNotenant; only with source ris
sourceYesorigin of the resource pool
workUnitYesstate of the unit of work on the pool
calendarsYesnumber of calendars
employeesYesnumber of people

TDQS

A4.2/5.0
Behavior4/5

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

Discloses key behavioral traits beyond annotations: no undo step, setting holds application-wide, and the precondition of a new unmodified project. The annotations declare idempotentHint=true and destructiveHint=false, and the description's 'no undo step' adds nuance. Missing what happens on failure or whether the current pool is preserved.

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 sentences, zero waste, front-loaded with the core action and constraints. Every sentence earns its place.

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

Completeness4/5

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

Given a single-parameter tool with full schema coverage, annotations, and an output schema, the description covers the critical precondition and side effects. It could mention what the output schema returns (e.g., success status) but that's optional.

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

Parameters3/5

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

Schema coverage is 100%, so the path parameter is fully documented in the schema with absolute path and .xml format. The description adds no further parameter meaning beyond referencing the file type, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb ('switches') and resource ('global resource pool') with the file format restriction (.xml). An agent can distinguish this from sibling tools like resource_pool_edit_open or resource_pool_ris_select without opening schemas.

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

Usage Guidelines4/5

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

Explicitly states the precondition: only works on a new unmodified project, so call rillsoft_project_create first. This gives clear when-to-use context, though it doesn't name alternatives for switching pools in other scenarios.

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

rillsoft_resource_pool_getRead resource poolA
Read-onlyIdempotent

Shows the current resource pool source (a file or the Rillsoft Integration Server), how much it holds (roles, teams, people, calendars) and whether a unit of work is open. The pool is never changed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathNopath of the pool file; only with source file
rolesYesnumber of qualifications
teamsYesnumber of teams
clientNotenant; only with source ris
sourceYesorigin of the resource pool
workUnitYesstate of the unit of work on the pool
calendarsYesnumber of calendars
employeesYesnumber of people

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, covering the safety profile. The description adds 'The pool is never changed,' which is redundant with readOnlyHint, and contextual detail about source types and contents, but no new behavioral traits such as auth needs or snapshot semantics. With annotations carrying the main burden, a 3 is appropriate.

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 efficiently enumerates what is shown and ends with the key behavioral guarantee. No filler or redundant sentences.

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 no-parameter, read-only tool with an output schema and rich annotations, the description is complete enough: it explains what is returned and that the pool is unchanged. Nothing needed to invoke the tool correctly is missing, since return details are covered by the output schema.

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

Parameters4/5

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

The tool takes zero parameters, so per the rubric the baseline is 4. There are no parameter semantics for the description to clarify, and the schema is empty.

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 ('Shows') and clearly identifies the resource ('current resource pool source') plus its contents (roles, teams, people, calendars) and state (whether a unit of work is open). This distinguishes it from siblings like rillsoft_resource_pool_resource_get (single resource) and rillsoft_resource_pool_catalog_list (catalog listing).

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 states what the tool returns but gives no explicit when-to-use guidance, no alternatives, and no conditions for calling it versus siblings. Usage is only weakly implied by the read-only framing, matching the calibration case where a clear purpose without usage context scored 2.

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

rillsoft_resource_pool_resource_createCreate master data recordA

Creates a single element in the resource pool. Inside an open unit of work only (rillsoft_resource_pool_edit_open); nothing is stored before rillsoft_resource_pool_edit_save. The group is picked through 'group' and created where it does not exist yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYescatalog the object comes from
fieldsNofields of the new element. Permitted, depending on type: group, name, firstName, lastName, code, rank, email, calendarId, metric, teamId, roleId, machineRoleId, productivity, capacityType, capacity, employedFrom, employedTo, cost, costChange, notes, with employee and team additionally shiftCycles, and with project_customer additionally url, street, postalCode, city, region, country, contactPerson, phone. shiftCycles is the shift calendar as a list of { from, to, calendarId } (dates DD.MM.YYYY, to may be left out for a single day): in each period the named calendar applies instead of the assigned one. The periods must not overlap, and every calendarId has to exist in the pool. Read it back through rillsoft_resource_pool_resource_get

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNointernal id of the element
codeNocode of the element; missing when none is set
nameNoname of the element
typeYescatalog of the element
groupNoname of the group; missing for people and without a group name
outcomeYeswhat the call did

TDQS

A4/5.0
Behavior4/5

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

Annotations only cover the safety profile (not read-only, not destructive, not idempotent, not open-world). The description adds real behavior beyond that: the create is staged inside an edit session and discarded unless save is called, and a missing group is auto-created as a side effect. Error behavior if no edit session is open is left unstated.

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?

Three sentences, purpose front-loaded, each carrying distinct information (what it creates, the edit-session prerequisite, the group side effect). Slightly awkward phrasing in 'The group is picked through group' but nothing wasted.

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?

An output schema exists, so return values need not be described. The transactional prerequisite and the group side effect are covered; the multi-catalog 'type' dimension is left entirely to the schema, which is acceptable given its oneOf structure.

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 nominally 100%, but the field-level descriptions are placeholders like 'value of code', so the baseline is 3. The description earns a bump by explaining the 'group' parameter's semantics: it selects the group and creates it when it does not yet exist.

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

Purpose4/5

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

States a specific verb and resource: 'Creates a single element in the resource pool.' It is distinguishable from the sibling rillsoft_resource_pool_resource_update/delete/get by the create verb, though it never names those siblings explicitly.

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?

Gives a hard prerequisite: it must run 'Inside an open unit of work only (rillsoft_resource_pool_edit_open)' and nothing persists until rillsoft_resource_pool_edit_save. That is strong when-to-use context, but there is no guidance on when to prefer this over resource_update for existing entries.

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

rillsoft_resource_pool_resource_deleteDelete master data recordA
Destructive

Deletes a single element of the resource pool. Where that leaves its group empty, the group goes with it. Inside an open unit of work only. Where something inside the pool still points at the element - a person on the role or team, a machine on the machine kind - the call is refused and names what refers to it, just as rillsoft_calendar_delete does. Assignments inside open projects are not checked: a project carries its own copy of the resource data, so deleting here does not reach into it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNointernal id of the element; give exactly one of 'id' and 'code'
codeNocode of the element; an ambiguous code makes the call fail
typeYescatalog the object comes from

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNointernal id of the element
codeNocode of the element; missing when none is set
nameNoname of the element
typeYescatalog of the element
groupNoname of the group; missing for people and without a group name
outcomeYeswhat the call did

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial behavior beyond the destructiveHint/idempotentHint annotations: cascade deletion of an emptied group, the open-unit-of-work constraint, refusal-with-naming when referrers exist, and the important scope caveat that open-project assignments are a separate copy and untouched. This is exactly the kind of mutation context the annotations cannot convey.

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?

Purpose, cascade behavior and preconditions are front-loaded and dense with useful information. The fragment 'Inside an open unit of work only.' is slightly unpolished but its brevity is intentional and it earns its place as a hard constraint.

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 destructive mutation with an output schema present, the description covers cascade effects, preconditions, refusal semantics, and the project-copy scope limitation, leaving nothing an agent needs in order to call it safely.

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

Parameters3/5

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

Schema coverage is 100%, so the id/code oneOf and the type enum are already fully documented in the schema. The description adds no parameter-level syntax or disambiguation beyond that, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Deletes a single element of the resource pool') and immediately scopes it against siblings by naming rillsoft_calendar_delete as the analogous tool. An agent can tell this apart from rillsoft_element_delete or resource_pool_resource_update without opening the schema.

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

Usage Guidelines4/5

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

Gives a clear precondition ('Inside an open unit of work only') and precise refusal conditions when referenced by a person/role/team/machine. It does not explicitly route to an alternative tool for cases outside an open unit of work, but the context is strong enough to select the tool correctly.

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

rillsoft_resource_pool_resource_getRead master data recordA
Read-onlyIdempotent

Reads the complete master data of one object: a person with their identity, all their roles (efficiency, hourly rate), employment period, calendar, absences and shift cycles; a team with calendar, productivity and members; a customer with postal address and contact. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesid from rillsoft_resource_pool_catalog_list
toNofinish of the period, DD.MM.YYYY hh:mm; defaults to the project finish
fromNobegin of the period for absences and shift cycles, DD.MM.YYYY hh:mm; defaults to the project start
typeYescatalog the object comes from

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesinternal id of the object
toYesfinish of the evaluated period, DD.MM.YYYY hh:mm
urlNoweb address; only with project_customer
codeNocode; missing when none is set
costNoprice per unit of quantity; only with material
fromYesbegin of the evaluated period, DD.MM.YYYY hh:mm
nameYesdisplay name
rankNoprofessional qualification; only with role
typeYescatalog the object comes from
emailNoe-mail address; missing when none is set
groupNogroup the object belongs to; not reported for people
notesNonotes; missing when empty
phoneNophone number; only with project_customer
rolesNoall roles of the person; only with employee
activeNotrue = employed within the project period; only with employee
metricNometric; only with material and machine_role
personNothe person behind the person-by-role entry; only with employee
teamIdNoteam; only with employee and machine, and only when set
addressNopostal address of the customer group; only with project_customer
absencesNoabsences within the evaluated period
calendarNoown calendar; missing when none is set
employedToNoemployed to DD.MM.YYYY; only with employee
hourlyRateNocost rate per hour
employeeIdsNoperson-by-role entries of the team; only with team
memberCountNonumber of members; only with team
shiftCyclesNoshift calendar: the periods in which a calendar other than the assigned one applies. The OWN cycles of the object, complete and not cut to the queried period - what rillsoft_resource_pool_resource_update writes back. Do not confuse this with the display switch view.calendarCycle of rillsoft_view_state_apply, which only shows the shift bars
employedFromNoemployed from DD.MM.YYYY; only with employee
productivityNoproductivity of the team; only with team
contactPersonNocontact person; only with project_customer
machineRoleIdNomachine role; only with machine and only when set
costExceptionsNotime-dependent cost factors
shiftCyclesEffectiveNothe shift calendar as the scheduling applies it: the own cycles plus the ones inherited from the team, resolved day by day. Where both carry the same day, the calendar of the team wins. Only with employee; a team has nothing to inherit from, so there shiftCycles is already the effective list

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so 'Read-only, no undo step' is largely a restatement of what structured data provides. The description adds no behavioral context the annotations lack, e.g. that from/to scope only absences and shift cycles, or what happens for an unknown id/type.

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?

Front-loaded with the verb and resource, then a dense but useful enumeration of per-type payloads, closing with the read-only note. One sentence is long and list-heavy, but no sentence is 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?

An output schema exists so return values need no explanation, and the annotation set covers the safety profile. The description is adequately complete for a single-record read, with only minor gaps: the from/to period semantics and how this tool differs from the other resource-pool read tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does add semantic value by mapping type values to returned content (person/team/customer), but it only covers three of the nine enum values (role, material, machine, machine_role, project_category, project_status, project_customer are unaddressed), and it never mentions the from/to period windows at all.

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 clear verb+resource ('Reads the complete master data of one object') and enumerates what each object type returns (person, team, customer fields), so the agent knows exactly what data comes back. It does not name or differentiate itself from the nearby siblings rillsoft_resource_pool_get and rillsoft_resource_pool_catalog_list, so an agent must infer which of these three resource-pool reads to pick.

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?

Usage is only implied: read one object's master data. There is no explicit when-to-use versus rillsoft_resource_pool_get (pool-level read) or the *_resource_update/create/delete siblings, and no prerequisites such as needing an id obtained from catalog_list. The schema hint on 'id' partially compensates but the description itself offers no routing guidance.

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

rillsoft_resource_pool_resource_updateUpdate master data recordA
Idempotent

Changes a single element of the resource pool as a partial update. Inside an open unit of work only. Absences cannot be changed here; the absence tools cover them.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNointernal id of the element; give exactly one of 'id' and 'code'
codeNocode of the element; an ambiguous code makes the call fail
typeYescatalog the object comes from
fieldsNoonly the fields given are changed; every other attribute stays as it is. Which keys are permitted follows from 'type' - the alternatives below name them per catalog. With employee and team there is shiftCycles as well, the shift calendar as a list of { from, to, calendarId } (dates DD.MM.YYYY, to may be left out for a single day). It is written as a whole: leaving the field out keeps the stored cycle, an empty array deletes it. The periods must not overlap, and every calendarId has to exist in the pool

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNointernal id of the element
codeNocode of the element; missing when none is set
nameNoname of the element
typeYescatalog of the element
groupNoname of the group; missing for people and without a group name
outcomeYeswhat the call did

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds context the annotations do not: the open-unit-of-work precondition and the fact that absences are out of scope. It does not restate what is destroyed, but destructiveHint=false makes that unnecessary.

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 tight sentences, front-loaded with the core action, followed by the precondition and the exclusion. No redundancy and nothing padding the text.

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

Completeness4/5

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

With a rich oneOf schema, full annotation coverage and an output schema, the description only needs to add the operational constraints, which it does via the unit-of-work rule and the absence exclusion. It stops short of tying the update to the resource_pool_edit_open/save workflow, but nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the schema exhaustively documents id/code/type/fields and the per-catalog field sets. The description only adds 'single element' and 'partial update', which the schema's 'only the fields given are changed' already conveys. Baseline 3 is correct when the schema carries the parameter burden.

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

Purpose4/5

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

States a specific verb and resource: 'Changes a single element of the resource pool as a partial update.' The partial-update framing is precise and tells the agent this is not a full overwrite. It distinguishes itself from the absence siblings but never contrasts with resource_create/delete/get, which are the closest neighbors.

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?

Gives an explicit precondition ('Inside an open unit of work only') and an explicit exclusion with the alternative ('Absences cannot be changed here; the absence tools cover them'). It lacks a positive 'when to use this rather than resource_create' statement, but the when-not and alternative routing are clearly present.

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

rillsoft_resource_pool_ris_listList RIS clientsA
Read-onlyIdempotent

Lists the clients of the Rillsoft Integration Server whose resource pool the logged-in user may read - the clientId is what rillsoft_resource_pool_ris_select takes - and reports selectedClientId where the active pool already comes from the server. Runs with the login of the desktop session and never asks for credentials. A pool file is selected through rillsoft_resource_pool_file_select instead. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
serverYesURL of the Rillsoft Integration Server the desktop session is logged in to
clientsYesevery client whose resource pool the user may read
clientIdYesid of the logged-in client; -1 while none is selected
userNameYesuser name of the desktop session
selectedClientIdNoclient of the active resource pool; missing while a pool file is active

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered; the description adds genuinely new context: it runs under the desktop session login, never prompts for credentials, and has no undo step. It also notes the tool surfaces selectedClientId when the active pool comes from the server. Not a full behavioral picture (no mention of failure modes when no pool is reachable), but well beyond the annotations.

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

Conciseness4/5

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

One dense paragraph that front-loads the purpose before the routing and auth notes, which is the right order. It is slightly overpacked with subordinate clauses, but every sentence carries a distinct fact rather than filler.

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

Completeness5/5

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

For a zero-parameter read tool with an output schema and rich annotations, the description supplies the remaining unknowns: permission scoping, auth model, the idempotent/no-undo behavior, and the relationship to the two sibling selection tools. Nothing an agent needs in order to call this correctly is missing.

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, so there is nothing for the description to disambiguate; per the rubric this is a baseline 4. The description does not waste space inventing parameter guidance, which is correct here.

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

Purpose5/5

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

States a specific verb and resource ('Lists the clients of the Rillsoft Integration Server') and immediately scopes it to the logged-in user's readable resource pools, so it is distinguishable from sibling list tools like rillsoft_portfolio_ris_list or rillsoft_project_ris_list. An agent knows exactly what comes back before opening the schema.

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

Usage Guidelines5/5

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

Explicitly names the downstream consumer ('the clientId is what rillsoft_resource_pool_ris_select takes') and names the alternative path for a different case ('A pool file is selected through rillsoft_resource_pool_file_select instead'). This is exactly the when-to-use / when-not-to-use routing an agent needs.

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

rillsoft_resource_pool_ris_selectSelect RIS resource poolA
Idempotent

Switches the global resource pool to the pool of a client on the Rillsoft Integration Server and makes that client the logged-in client of the session (clientId of the other RIS tools). Possible only on a new, unmodified project and without an open unit of work, so call rillsoft_project_create first. A pool file is selected through rillsoft_resource_pool_file_select instead. Runs with the login of the desktop session and never asks for credentials. No undo step; the setting holds application-wide and survives a restart.

ParametersJSON Schema
NameRequiredDescriptionDefault
clientIdYesid of the client on the server whose resource pool becomes the global pool, from rillsoft_resource_pool_ris_list

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathNopath of the pool file; only with source file
rolesYesnumber of qualifications
teamsYesnumber of teams
clientNotenant; only with source ris
sourceYesorigin of the resource pool
workUnitYesstate of the unit of work on the pool
calendarsYesnumber of calendars
employeesYesnumber of people
versionIdYesid of the pool version that was loaded from the server

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations (which cover idempotency and non-destructiveness), the description discloses the session side effect (the client becomes the logged-in client used as clientId by other RIS tools), auth behavior (desktop session login, never prompts for credentials), persistence (application-wide, survives restart), and irreversibility (no undo step). These are exactly the traits annotations cannot convey.

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

Conciseness5/5

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

Front-loads the core action, then layers preconditions, alternative, auth, and persistence in tight sentences. Every sentence carries a distinct constraint or consequence with no filler.

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

Completeness5/5

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

Output schema exists so return values need not be described, and the description fully covers preconditions, side effects, auth, and persistence for a stateful global-setting tool. Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds meaning the schema does not: the selected clientId also becomes the session's logged-in client referenced by the other RIS tools, not just the pool source. That cross-tool consequence is genuinely useful beyond the property 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?

States a specific verb and resource ('Switches the global resource pool to the pool of a client on the RIS') and explicitly separates itself from the similarly named sibling rillsoft_resource_pool_file_select. An agent can distinguish it from the file-select variant without opening either schema.

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?

Gives explicit preconditions ('only on a new, unmodified project and without an open unit of work'), a prerequisite action ('call rillsoft_project_create first'), and the alternative to use otherwise ('rillsoft_resource_pool_file_select'). This is full when/when-not/alternative guidance.

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

rillsoft_resource_usage_listList tasks using a resourceA
Read-onlyIdempotent

Reports per task whether it carries one resource and with which values - the page 'Using tasks' of the capacity planning, read through the contract. Every task of the range appears, carrying or not; alreadyAssigned tells them apart. Per kind exactly its own columns: role and machine_role a count, team a productivity, employee an efficiency and who answers for the task, material an amount and a calculation mode, and everything but material a utilization. Team, employee and machine carry free on top - the capacity left within the task period - and team and employee availability from the calendar; employee adds employeeBalanceHours, absences, the compensator and whom the assignment stands in for. Hours are hours, never the volume unit of the view. Read-only, no undo step. Writing goes through rillsoft_resource_usage_set, which takes five of the six kinds - team assignments on tasks are not part of the write contract.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesresource type; all six kinds are readable
taskUuidsNoUUIDs of the tasks; empty means every task of the visible project or subproject
resourceIdYesid of the resource from rillsoft_resource_pool_catalog_list

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNoname of the resource
typeYesresource type
tasksYesthe tasks evaluated, in the order of the project
resourceIdYesid of the resource in the resource pool

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds real context beyond that: no undo step, that every task in the range appears whether or not it carries a resource (distinguished by alreadyAssigned), and that hours are reported in hours rather than the view's volume unit. Pagination and response shape are left to the output schema.

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

Conciseness3/5

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

The purpose is front-loaded, but the body is a single sprawling run-on sentence with dashes that is hard to parse and mixes return-column detail with usage guidance. It is not padded with filler, but the structure is poor for an agent scanning for the key facts.

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 3-parameter tool with an output schema and full annotation coverage, the description is largely complete: it covers the read/write boundary, the empty-taskUuids semantics (also in schema), and the per-kind column meanings. Nothing critical for invoking it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description goes further by explaining what each enum value of 'type' actually returns (role/machine_role a count, team a productivity, employee an efficiency, material an amount and calculation mode). That meaningfully enriches the enum beyond the schema's one-line 'all six kinds are readable'.

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 opening clause states a specific verb and resource: it reports per task whether a resource is carried and with which values, scoped to the capacity-planning 'Using tasks' page. It also distinguishes itself from the write sibling rillsoft_resource_usage_set. The prose is dense and slightly cryptic ('read through the contract'), which keeps it from a clean 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?

It explicitly states the write path goes through rillsoft_resource_usage_set and adds the important exclusion that team assignments on tasks are not part of the write contract, so an agent knows this tool is the read side. It does not, however, contrast itself with other read siblings such as resource_pool_catalog_list or resource_absence_list.

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

rillsoft_resource_usage_setAssign a resource to several tasksA
Idempotent

Puts one resource on several tasks at once, or takes it off them, with the single values per task - the page 'Using tasks' of the capacity planning, written through the contract. One call is exactly one undo step for all of them, labelled like the page. quantity 0 removes, as with the five single-task tools. Each entry carries only the fields the page offers for that kind (rillsoft_resource_usage_list documents them); a field that belongs to another kind, or one the page merely displays such as free, is refused by name. Every check runs before the change: a single unknown UUID leaves the project untouched and creates no undo step. team is not part of this contract - assigning a team to a task belongs to the Standard edition alone; read it through rillsoft_resource_usage_list and set the preferred team of a project through rillsoft_project_team_preference_set. Beware of the neighbour: rillsoft_task_resource_assignment_fill is the wizard, filling tasks automatically out of their roles and without single values; this one fills exactly the tasks named, with them.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesresource type; team is missing on purpose - see the description
resourceIdYesid of the resource from rillsoft_resource_pool_catalog_list
assignmentsYesone entry per task; each UUID at most once

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNoname of the resource
typeYesresource type
tasksYesthe tasks after the change, in the order of assignments[]
skippedYesskipped tasks with the cause
resourceIdYesid of the resource in the resource pool

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare the safety profile (not read-only, not destructive, idempotent); the description adds unusually valuable behavior: 'One call is exactly one undo step', validation is atomic ('a single unknown UUID leaves the project untouched and creates no undo step'), and out-of-kind fields are 'refused by name'. That is meaningful disclosure beyond structured fields.

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

Conciseness3/5

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

Content is front-loaded with the core action, but the prose is a single dense block with run-on clauses ('with the single values per task - the page "Using tasks" of the capacity planning, written through the contract') that are hard to parse. Little is padding, but the structure impedes fast comprehension.

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

Completeness5/5

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

For a mutation tool with an output schema present, the description covers the remaining gaps: atomic validation, undo granularity, per-type field validity, and routing to alternatives for team and for bulk wizard-style filling. Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100% and each field is already documented, so the baseline is 3. The description still adds cross-cutting semantics the schema cannot express: which fields are valid per resource type, that read-only fields such as 'free' are rejected rather than ignored, and that team-based fields are excluded by contract.

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

Purpose5/5

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

States a specific verb and resource with scope: 'Puts one resource on several tasks at once, or takes it off them.' It further distinguishes itself from the five single-task siblings and from the wizard tool by name, so an agent can differentiate without opening schemas.

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

Usage Guidelines5/5

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

Explicitly covers when-not and alternatives: 'quantity 0 removes', 'team is not part of this contract ... read it through rillsoft_resource_usage_list and set the preferred team ... through rillsoft_project_team_preference_set', and contrasts with 'rillsoft_task_resource_assignment_fill is the wizard'. Nothing about selection is left to inference.

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

rillsoft_row_selection_applyApply row selectionA
Read-onlyIdempotent

Selects one row of the visible resource or capacity view - the same effect as clicking it. The row is scrolled into view and the property sheet of the info window follows, exactly as it does on a click. A row whose parent is collapsed is not addressable; open it first through rillsoft_outline_apply. In any other view the call fails and points at rillsoft_view_state_apply. No undo step and no change to the plan itself - no task, no assignment, no date moves; that is why this tool counts as read-only. What it does change is the way the project is displayed: the selected row is stored with the project, and going through the user interface marks the document as changed, so a later save writes it along. Pass taskUuid inside row to select a task listed under that row instead of the row itself - the detail rows have no coordinate of their own, they hang below their group row; that is what makes the gantt secondary view show the task with its links. It answers like rillsoft_row_selection_get.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowYescoordinates of the row to select, as rillsoft_outline_get reports them under openRows; add taskUuid to select a task listed under that row instead

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowNocoordinates of the selected row; missing when none is selected
levelNozero-based grouping level of the selected row; missing when none is selected
selectedYesfalse = no row is selected; then row is missing

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses the scroll-into-view side effect, that a collapsed parent row is not addressable, that there is no undo step, and that despite being read-only it persists the selection into the project so a later save writes it along. It even reconciles that nuance with the readOnlyHint annotation, which is exactly the kind of context annotations cannot convey.

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 core behavior is front-loaded and every sentence carries substance, but the passage is long and the closing 'It answers like rillsoft_row_selection_get' is somewhat redundant given an output schema exists. Dense rather than bloated, but not maximally tight.

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 nested-object selection tool it covers prerequisites, failure conditions, side effects, and persistence behavior, and an output schema already carries return shape. An agent has everything needed to call it correctly in one pass.

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 already 100%, so the baseline is 3, but the description adds real meaning: it explains *why* taskUuid selects a detail row ('the detail rows have no coordinate of their own, they hang below their group row') and the downstream effect on the gantt secondary view. It largely reinforces schema text rather than introducing new format details.

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

Purpose5/5

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

States a specific verb and resource ('Selects one row of the visible resource or capacity view') and anchors it to a familiar user action ('the same effect as clicking it'). It explicitly differentiates itself from siblings by naming rillsoft_row_selection_get, rillsoft_outline_apply, and rillsoft_view_state_apply.

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?

Gives explicit when-to-use context, names the failure case ('in any other view the call fails and points at rillsoft_view_state_apply'), and names the prerequisite path for collapsed parents ('open it first through rillsoft_outline_apply'). Alternatives are surfaced rather than left to inference.

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

rillsoft_row_selection_getRead row selectionA
Read-onlyIdempotent

Reads which row of the visible resource or capacity view is selected, in the same coordinates the report uses per row. selected:false means none is. In any other view the call fails and points at rillsoft_view_state_apply. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowNocoordinates of the selected row; missing when none is selected
levelNozero-based grouping level of the selected row; missing when none is selected
selectedYesfalse = no row is selected; then row is missing

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new behavior: the call hard-fails outside resource or capacity views and points to another tool. The trailing 'Read-only, no undo step' largely restates the annotations, so it is useful context but partly redundant.

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?

Three short sentences, front-loaded with what is read and where it applies; nothing is padded. The final read-only clause duplicates the annotations and could be dropped without loss.

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 zero-parameter read tool with an output schema and full annotation coverage, the description covers the remaining gaps: applicable view scope, empty-result semantics, and the failure/fallback path. An agent has everything needed to call it correctly.

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

Parameters4/5

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

The tool takes zero parameters, so per the rubric the baseline is 4. The mention of 'selected:false' describes an output field rather than an input, and the output schema already covers returns.

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

Purpose5/5

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

States a concrete verb+resource ('Reads which row ... is selected') and scopes it to the resource/capacity view, which separates it from the many view/report siblings. It also clarifies the result semantics ('selected:false means none is'), so an agent knows what an empty answer looks like without opening the schema.

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

Usage Guidelines4/5

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

Gives an explicit negative condition ('In any other view the call fails') and routes the agent to rillsoft_view_state_apply in that case, which is real routing guidance. It does not, however, say when reading the selection is the right thing to do versus its setter counterpart rillsoft_row_selection_apply, so the primary usage context is left implicit.

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

rillsoft_session_dialogs_setSet recording mode for message boxesA
Read-onlyIdempotent

Switches the recording mode of this session: with visible true, every following call that would show a message box in the user interface - a warning, a hint, the question about moving fixed dates - shows the real box on screen for screenshots, and a timer closes it after autoCloseSeconds with the answer chosen by autoAnswer. A person who clicks earlier wins. The call that showed a box returns only once the box is closed, so run it in the background and take the picture meanwhile; every other tools/call sent while a box stands is refused with dialog_open and the remaining seconds. Each box shown is reported in _meta.dialogs[] of the answer with title, text, buttons, answer and shownMs. After a server start the mode is off. No undo step, no change to the project. It answers with the state now in force.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNonext (the default) holds for the next mutating call of this session only and is used up by it, whether it showed a box or not; session holds until visible is set to false or the session ends. Ignored when visible is falsenext
visibleYestrue switches the recording mode on, false switches it off. While it is on, every call of this session that would show a message box in the user interface shows that same box on screen, and a timer closes it
autoAnswerNoescape (the default) presses what the Escape key would press - Cancel where there is one, else No, else OK - which is exactly the answer a call gives without the mode, so error code, text and project stay the same. enter presses the default button of the box; on the question about moving fixed dates that is Yes, so the command is carried out and the fixed elements move along - the result then differs from a call without the mode. Ignored when visible is falseescape
autoCloseSecondsNoseconds a box stays on screen before the timer answers it, 1 to 60 (defaults to 10); ignored when visible is false

Output Schema

ParametersJSON Schema
NameRequiredDescription
scopeNonext = the next mutating call uses the mode up, session = it holds until switched off; missing while the mode is off
visibleYestrue = the recording mode is on for this session
autoAnswerNowhat the timer presses: escape = Cancel, else No, else OK; enter = the default button; missing while the mode is off
autoCloseSecondsNoseconds a box stays on screen before the timer answers; missing while the mode is off

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare the safety profile (readOnly/idempotent/non-destructive), yet the description adds substantial behavioural context: the auto-timer with autoCloseSeconds, that a human click pre-empts the timer, that concurrent tools/call are refused with 'dialog_open' plus remaining seconds, and that boxes are reported in _meta.dialogs[]. It also reconciles the state-change nature of the tool with readOnlyHint by explicitly stating 'No undo step, no change to the project' and resetting the mode after a server start.

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

Conciseness3/5

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

The purpose is front-loaded, but the body is a single run-on construction stitched together with dashes and semicolons ('...shows the real box on screen for screenshots, and a timer closes it after autoCloseSeconds...', '...refused with dialog_open and the remaining seconds'), which makes it hard to scan. Every fact is relevant, but the structure costs readability.

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 high-complexity session-mode tool with an output schema, the description covers purpose, side effects, lifecycle and interaction with other calls well, and it need not restate the return shape. The one material hole is the consumption semantics of the default `scope=next` (used up by the next mutating call even if no box appeared), which matters for correct invocation yet appears only in the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (including `scope`) are already documented, which sets the baseline at 3. The prose adds colour for `visible` and `autoAnswer=enter` (fixed dates move, result differs from a non-recorded call), but `scope` — arguably the most error-prone parameter — is never mentioned in the description, so it does not exceed 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 first clause gives a specific verb+resource ('Switches the recording mode of this session') and the remainder immediately operationalises it: subsequent message boxes are shown on screen for screenshots. No sibling in the list competes with it, and no sibling does anything similar, so the agent can identify it instantly.

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 states the operative context clearly: switch the mode on before a call that would raise a message box, run that call in the background, and take the picture meanwhile. The strategy of running the box-showing call in the background is exactly the guidance an agent needs, but there is no explicit 'when not to use' statement and the `scope` choice (next vs session) is left entirely to the schema.

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

rillsoft_subproject_createCreate subprojectA

Creates a subproject (a summary task) and returns its UUID. It creates an empty one - grouping elements that already exist into a new subproject goes through rillsoft_element_subproject_group. Changing it afterwards goes through rillsoft_subproject_update, deleting it through rillsoft_subproject_delete. In a portfolio parentUuid names a project or a subproject inside it - nothing is created directly below the portfolio, as in the user interface. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesname of the subproject
startNostart, DD.MM.YYYY hh:mm; defaults to the start of the parent
finishNofinish, DD.MM.YYYY hh:mm; defaults to the finish of the parent
parentUuidNoUUID of the parent project or subproject; empty = the main project

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare non-readonly, non-idempotent, non-destructive. The description adds real behavioral context beyond them: the operation creates an *empty* subproject, returns its UUID, counts as 'One undo step', and cannot create anything directly below a portfolio. It doesn't cover error/permission behavior, so not a 5.

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

Conciseness5/5

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

Front-loaded with the core action and return value, then alternative routing, then the portfolio edge case, then the undo note. Every sentence carries distinct information with no filler.

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

Completeness5/5

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

An output schema exists so return values need no prose beyond the UUID mention, and annotations carry the safety profile. The description covers the creation scope, the empty-subproject constraint, routing alternatives, and portfolio semantics, leaving nothing an agent needs to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema for parentUuid by explaining its portfolio semantics (names a project or subproject inside it) and the constraint that nothing is created directly below the portfolio. That is genuine added value over the schema's 'empty = the main 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?

States a specific verb (Creates) and resource (subproject, clarified as a summary task) and adds the return value (UUID). It is immediately distinguishable from sibling tools like rillsoft_project_create and rillsoft_task_create.

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

Usage Guidelines5/5

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

Explicitly routes the agent: grouping existing elements goes through rillsoft_element_subproject_group, later modification through rillsoft_subproject_update, deletion through rillsoft_subproject_delete. This is exactly the when-to-use-this-vs-alternatives guidance the dimension rewards.

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

rillsoft_subproject_deleteDelete subprojectA
Destructive

Deletes a subproject together with everything inside it. Refused where the UUID names a task - rillsoft_task_delete does that one, and rillsoft_element_delete takes either kind. The main project cannot be deleted; use rillsoft_project_create for a fresh one. Creating goes through rillsoft_subproject_create, changing through rillsoft_subproject_update. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the subproject

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYesUUID of the subproject that was deleted

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation is known. The description adds meaningful context beyond that: the delete is cascading ('everything inside it'), refused for task UUIDs, and the main project is protected. The 'One undo step' line discloses reversibility, which annotations do not cover. It could have mentioned permission or confirmation requirements, but the coverage 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?

Four sentences, zero waste. The cascade scope is front-loaded, the sibling routing follows, and the undo note closes it. Every sentence carries a distinct operational fact.

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 a destructive single-parameter tool with annotations and an output schema, this description covers the critical unknowns: what gets destroyed (whole subtree), what is refused (task UUIDs), what is protected (main project), which siblings handle adjacent cases, and reversibility (one undo step). Nothing an agent needs to act safely is missing.

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

Parameters3/5

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

Schema coverage is 100% and there is only one parameter (uuid), so schema already fully documents the input. The description adds no parameter-level detail (e.g., format of UUID, whether it must be a subproject UUID vs task UUID – though the refusal clause implies it). Baseline 3 for full schema coverage with minimal added semantics.

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

Purpose5/5

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

States a specific verb and resource (delete subproject) and immediately clarifies the cascading scope ('together with everything inside it') and what cannot be deleted (the main project). It distinguishes itself from sibling delete tools (rillsoft_task_delete, rillsoft_element_delete) by explicit routing.

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

Usage Guidelines5/5

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

Explicitly says when to use rillsoft_task_delete or rillsoft_element_delete instead, and points to rillsoft_project_create for a fresh project. It also covers the refusal case (task UUID). This is a full routing map, not just a hint.

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

rillsoft_subproject_updateUpdate subprojectA
Idempotent

Changes a subproject: name, start, finish, notes, pinning, calendar, color and code. The main project goes through rillsoft_project_update, a task through rillsoft_task_update, and deleting the subproject through rillsoft_subproject_delete. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNocode of the subproject, the free text field of the dialog; an empty string clears it. RP does not check it for uniqueness
nameNonew name
uuidYesUUID of the subproject
colorNobar color as #RRGGBB or 'automatic'
fixedNopin the start of the subproject (true) or release it (false); a pinned subproject stays in place under rillsoft_project_reschedule
notesNonotes on the subproject
startNostart, DD.MM.YYYY hh:mm
finishNofinish, DD.MM.YYYY hh:mm
calendarIdNoid of the calendar from rillsoft_resource_pool_catalog_list (types: calendar); 0 inherits the calendar of the parent element
primaryColorNopass the color on to child elements that carry none of their own

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare idempotent=true, destructive=false and readOnly=false, so the safety profile is covered. The description adds a genuinely non-annotation behavior: 'One undo step,' telling the agent the change is a single reversible history entry. It stops short of saying what happens to fields not supplied (partial vs full update), which would push it to a 5.

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

Conciseness4/5

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

Two tight sentences, front-loaded with the action and fields, followed by the routing alternatives and the undo note. The field enumeration partially duplicates the schema, but it aids quick scanning and keeps the description compact.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and the annotations carry the safety profile. The description covers scope, routing and undo semantics; the only minor gap is behavior for omitted fields on a partial update.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter's meaning, formats and the date pattern are already documented in the schema. The description only echoes the field list and adds no syntax or constraints beyond it, so the baseline of 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Changes a subproject') and enumerates exactly what can be changed (name, start, finish, notes, pinning, calendar, color, code). It also names the sibling tools for the adjacent objects, so an agent can immediately distinguish it from rillsoft_project_update, rillsoft_task_update and rillsoft_subproject_delete.

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

Usage Guidelines5/5

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

Explicitly routes the agent: main project -> rillsoft_project_update, task -> rillsoft_task_update, deletion -> rillsoft_subproject_delete. This is textbook when-to-use-this-vs-alternatives guidance.

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

rillsoft_task_createCreate taskA

Creates a task (RP computes the dates through the calendar) and returns its UUID. Changing it afterwards goes through rillsoft_task_update, moving it in the structure through rillsoft_element_move, deleting it through rillsoft_task_delete. In a portfolio parentUuid names a project or a subproject inside it - nothing is created directly below the portfolio, as in the user interface. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesname of the task
notesNonotes on the task
startNostart, DD.MM.YYYY hh:mm; defaults to the start of the parent
finishNofinish, DD.MM.YYYY hh:mm (durationHours is the alternative)
fixedTypeNotask type: duration, effort, duration_effort (defaults to the application default from the settings). It says which quantity RP holds fixed while computing: duration keeps the duration, effort keeps the effort, duration_effort keeps both. This matches the choice in the task dialog
milestoneNotrue = milestone (duration 0, date fixed)
parentUuidNoUUID of the project or subproject; empty = the main project
durationHoursNoduration in hours (finish is the alternative)

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
milestoneYestrue = the task that was created is a milestone

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the mutation profile is known. The description adds genuine context beyond that: dates are computed by RP through the calendar rather than taken literally, and the operation consumes exactly one undo step. Missing only things like selection/visibility side effects on the newly created task.

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

Conciseness5/5

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

Three sentences: what it does and returns, then the sibling routing, then the parentUuid constraint. Front-loaded with the primary action and no filler; every sentence carries distinct information.

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

Completeness5/5

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

With an output schema present and 100% schema description coverage, the description only needs to carry behavioral and routing context — calendar-driven date computation, undo semantics, sibling routing, and the portfolio constraint all present. Nothing an agent needs to call this correctly is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description earns extra by clarifying parentUuid semantics (it names a project or subproject within a portfolio, and never the portfolio itself), which goes beyond the schema's terse "UUID of the project or subproject; empty = the main 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?

States a specific verb+resource ("Creates a task") plus two concrete outcomes: RP computes dates through the calendar and a UUID is returned. It then names the sibling tools for the adjacent operations (task_update, element_move, task_delete), making it trivially distinguishable from them.

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

Usage Guidelines5/5

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

Explicitly routes the agent to alternatives for follow-up operations (changing, moving, deleting) and states a hard usage constraint for parentUuid: nothing can be created directly below the portfolio, unlike the UI. Both when-to-use and when-not are covered.

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

rillsoft_task_deleteDelete taskA
Destructive

Deletes a task together with its dependencies. Refused where the UUID names a subproject - rillsoft_subproject_delete does that one, and rillsoft_element_delete takes either kind. Creating goes through rillsoft_task_create, changing through rillsoft_task_update. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the task

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYesUUID of the task that was deleted

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructive=true and idempotent=false, but the description adds behavior beyond them: the cascade delete of dependencies, the refusal condition on subproject UUIDs, and the undo implication ('One undo step'). That is substantive disclosure not present in the structured fields.

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

Conciseness4/5

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

Front-loaded with the core action and cascade behavior, then routing information. Dense and mostly waste-free, though the create/update routing sentence is a little incidental to a delete operation.

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

Completeness5/5

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

With an output schema present, return values need not be explained, and annotations cover the safety profile. The description supplies the routing, cascade, refusal, and undo context an agent needs to invoke it correctly.

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

Parameters3/5

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

Only one parameter, documented at 100% coverage in the schema, so the schema does the heavy lifting. The description references UUID semantics (what happens when it names a subproject) but adds no format or syntax detail. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource (deletes a task) and adds scope detail (together with its dependencies). It explicitly distinguishes itself from rillsoft_subproject_delete and rillsoft_element_delete, so an agent can route without opening schemas.

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

Usage Guidelines5/5

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

Explicit when-to-use and when-not: refused if the UUID names a subproject, with the alternative named (subproject_delete), plus element_delete as the either-kind option. It also routes create and change to their siblings, covering the full operation set.

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

rillsoft_task_dependency_createCreate dependencyA
Idempotent

Creates a dependency between two tasks. It links existing tasks; it does not create them, and it does not move them - RP computes the new dates from the link. Removing it again goes through rillsoft_task_dependency_delete. In a portfolio, as in the user interface: across the project boundary a file portfolio refuses the dependency; a portfolio of the Integration Server creates it on the server as a RIS link (finish-start, start-start, finish-finish or start-finish with an absolute lag). One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNofinish_start is the default: the successor begins once the predecessor is done, and a distance in between is allowed. Use finish_start_no_delay only where the successor has to follow immediately with no delay at all. Besides those: start_start (both begin together), finish_finish (both end together) and start_finish (the successor ends when the predecessor begins)finish_start
successorUuidYesUUID of the successor
predecessorUuidYesUUID of the predecessor
dependencyDistanceTypeNoabsolute (the default) counts plain time, calendar counts calendar time, relative counts a share of the task durationabsolute
dependencyDistanceHoursNodistance in hours (with dependencyDistanceType absolute or calendar) respectively a share (relative)

Output Schema

ParametersJSON Schema
NameRequiredDescription
typeYeskind of the created dependency; finish_start is the default
successorUuidYesUUID of the successor
predecessorUuidYesUUID of the predecessor

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly=false, idempotent=true, destructive=false, and the description enriches this with genuine behavioral context: RP recomputes dates from the link, file portfolios refuse cross-project dependencies while an Integration Server portfolio creates a RIS link, and the change consumes one undo step. The refusal/failure condition and undo semantics are exactly what annotations cannot convey.

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?

Front-loads the core action and the negative scoping ('does not create them, does not move them') before the more complex portfolio paragraph. The portfolio sentence is dense and multi-clause but every element carries information; slightly long but not wasteful.

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 write tool with an output schema (so return values needn't be explained) and annotations covering the safety profile, the description closes the remaining gaps: side effects on dates, portfolio-dependent behavior, failure conditions, and undo. An agent has everything needed to invoke it correctly.

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

Parameters3/5

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

Schema coverage is 100%, so all five parameters, both enums, and the distance semantics are already fully documented in the schema. The description echoes the dependency types and lag concept but adds no syntax or format detail beyond what the schema provides, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Creates a dependency between two tasks') and immediately draws the boundary against sibling task_create by clarifying it links existing tasks rather than creating or moving them. An agent can distinguish this from task_create and task_dependency_delete without opening any schema.

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

Usage Guidelines4/5

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

Gives clear context on when this applies (linking existing tasks, date recomputation by RP) and names the removal path (rillsoft_task_dependency_delete). It lacks an explicit when-not or alternative-routing statement beyond the create/delete contrast, but the intended use case is unambiguous.

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

rillsoft_task_dependency_deleteDelete dependencyA
Destructive

Deletes the dependency between two tasks. Only the link goes; both tasks stay, and deleting a task itself goes through rillsoft_task_delete. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNodependency type; omit it to hit the first dependency found for the pair
successorUuidYesUUID of the successor
predecessorUuidYesUUID of the predecessor

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYeskind of the dependency that was deleted

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description still adds real value beyond that: it specifies the blast radius ('Only the link goes; both tasks stay') and the undo behavior ('One undo step'), which is exactly the kind of mutation context annotations cannot convey.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core action and its scope, with the sibling routing and undo note following. No filler 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?

An output schema exists so return values need not be explained, and the description covers scope, sibling routing, and undo depth. It leaves one small gap: it doesn't say what happens when the specified dependency does not exist, which matters given idempotentHint=false.

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

Parameters3/5

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

Schema description coverage is 100%, including the enum and the meaning of omitting the type field, so the schema already carries the parameter burden. The description adds no syntax or selection guidance beyond it, making the baseline 3 appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Deletes the dependency between two tasks') and immediately scopes it against the look-alike sibling by clarifying that the tasks themselves survive and that task removal is handled by rillsoft_task_delete. An agent can distinguish this from rillsoft_task_delete and rillsoft_task_dependency_create without opening any schema.

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

Usage Guidelines4/5

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

Provides a clear routing rule away from this tool for task removal ('deleting a task itself goes through rillsoft_task_delete'), which is the most likely confusion point. It does not, however, cover adjacent cases such as changing a dependency's type instead of deleting it, so it stops short of full when/when-not coverage.

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

rillsoft_task_employee_assignment_setAssign personA
Idempotent

Assigns one specific existing person to a task, or removes that assignment with quantity 0. It touches one task - one person across many tasks goes through rillsoft_resource_usage_set, and filling many tasks at once through rillsoft_task_resource_assignment_fill. The master data stays untouched; an overload over time is a legitimate planning state and shows up in the report. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
quantityYes1 assigns, 0 removes the assignment
taskUuidYesUUID of the task
employeeIdYesid of the person from rillsoft_resource_pool_catalog_list
utilizationNoutilization greater than 0 up to 1 (defaults to 1)

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
employeeAssignmentsYesthe assignments of the task after the change

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare idempotent=true and destructive=false, so the description correctly doesn't restate that. It adds real context beyond the annotations: master data is untouched, an overload over time is a legitimate (non-blocked) planning state surfaced in the report, and the change costs one undo step. Missing only details like required permissions.

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 core action is front-loaded in the first clause, followed by alternatives and side-effect notes. Three tight sentences with no filler or repetition.

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?

An output schema exists, so return values need no explanation. Combined with full schema coverage and rich annotations, the description supplies the routing, reversibility, and validation context an agent needs to call it correctly.

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

Parameters3/5

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

Schema coverage is 100%, so all four parameters (including utilization with its default and bounds) are already documented in the schema. The description restates the quantity=1/0 semantics but adds nothing the schema does not already carry, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Assigns one specific existing person to a task') and covers the inverse operation via 'quantity 0'. It explicitly names the sibling tools it is not (rillsoft_resource_usage_set, rillsoft_task_resource_assignment_fill), so an agent can distinguish it without opening any schema.

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?

Gives explicit routing rules: this tool is for one task–one person, resource_usage_set for one person across many tasks, and task_resource_assignment_fill for filling many tasks at once. When-to-use and the alternatives are both spelled out.

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

rillsoft_task_machine_assignment_setAssign machineA
Idempotent

Assigns one specific existing machine to a task, or removes that assignment with quantity 0. The twin of rillsoft_task_employee_assignment_set; machines carry neither an employment period nor an efficiency. It touches one task - letting several tasks share one machine goes through rillsoft_machine_sharing_create. The master data stays untouched; an overload over time is a legitimate planning state and shows up in the report. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
quantityYes1 assigns, 0 removes the assignment
taskUuidYesUUID of the task
machineIdYesid of the machine from rillsoft_resource_pool_catalog_list
utilizationNoutilization greater than 0 up to 1 (defaults to 1)

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
machineAssignmentsYesthe assignments of the task after the change

TDQS

A4.5/5.0
Behavior4/5

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

Adds real context beyond annotations: master data untouched, overload over time is a legitimate state surfaced in the report, and exactly one undo step. Annotations already cover idempotency, non-destructiveness and non-readOnly. Doesn't state required permissions, but the note about master data staying intact covers the main risk.

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

Conciseness5/5

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

Four tight sentences: action, sibling differentiation, scoping constraint, side effects. The undo-step note is front-loaded at the end as a close, with no filler. 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?

Complete for a mutation tool with an output schema: schema covers all params, annotations cover safety, and the description adds the one behavioral risk (overload is allowed, not an error) plus the undo semantics. An agent can call it correctly from this.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description's only added semantic is the quantity 0 removal case, which the schema already documents; utilization and machineId sourcing are left to the schema.

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

Purpose5/5

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

States a specific verb (assigns) and resource (a specific existing machine to a task), and explicitly covers the removal case via quantity 0. It distinguishes itself from the twin rillsoft_task_employee_assignment_set and from rillsoft_machine_sharing_create by naming both.

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?

Routes clearly: single-machine single-task use here, multi-task sharing through rillsoft_machine_sharing_create, and the employee variant for people. The quantity-0 removal path is spelled out, so an agent knows when to call it for unassignment.

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

rillsoft_task_machine_role_assignment_deriveDerive machine kinds from assignmentsA
DestructiveIdempotent

The 'Derive machine kinds from the assignment' wizard: rebuilds the machine role assignments of each task out of the concrete machines assigned to it - existing machine role assignments are replaced, quantity and volume are formed from those machines. Reports them under machineRoleAssignments[]. People are the mirror case and go through rillsoft_task_role_assignment_derive; setting a single machine kind by hand goes through rillsoft_task_machine_role_assignment_set. One undo step. Tasks without concrete assignments appear with the cause in skipped[].

ParametersJSON Schema
NameRequiredDescriptionDefault
taskUuidsNoUUIDs of the tasks; empty means every eligible task of the visible project or subproject

Output Schema

ParametersJSON Schema
NameRequiredDescription
typeYesresource type
tasksYesthe tasks that were changed
skippedYesskipped tasks with the cause
processedYesnumber of tasks processed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructive=true and idempotent=true, but the description adds what the annotations cannot: existing machine role assignments are replaced, quantity and volume are recomputed, it costs one undo step, and skipped tasks are reported with a cause. That is concrete disclosure of what gets destroyed and what the run produces.

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?

Front-loads the transformation, then alternatives, then caveats (undo step, skipped tasks) in a dense, information-rich paragraph. Every sentence earns its place, though the flow is slightly packed for a single block.

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

Completeness5/5

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

With an output schema present and destructive/idempotent annotations supplied, the description still fills the remaining gaps: replacement semantics, undo cost, and error handling via skipped[]. Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter's meaning (empty = every eligible task of the visible project/subproject) is already documented there. The description reinforces scope indirectly via the skipped[] note but adds no syntax or format detail beyond the schema, so the 3 baseline applies.

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

Purpose5/5

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

States a specific verb (derive/rebuild) and resource (machine role assignments of each task), and explains the transformation precisely: rebuild role assignments from concrete machine assignments, with quantity/volume derived from those machines. It is immediately distinguishable from the sibling set/derive tools, which it names.

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

Usage Guidelines5/5

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

Explicitly routes the agent to alternatives with conditions: people are handled by rillsoft_task_role_assignment_derive, and setting a single machine kind by hand goes through rillsoft_task_machine_role_assignment_set. This covers when to use this tool versus the two nearest competitors.

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

rillsoft_task_machine_role_assignment_setAssign machine roleA
Idempotent

Assigns a machine role from the existing master data to a task, or removes it again with quantity 0. The twin of rillsoft_task_role_assignment_set for the machine park; one undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
quantityYeshow many machines of this machine role; 0 removes the assignment
taskUuidYesUUID of the task
utilizationNoutilization greater than 0 up to 1 (defaults to 1)
machineRoleIdYesid of the machine role from rillsoft_resource_pool_catalog_list

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
machineRoleAssignmentsYesthe assignments of the task after the change

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare non-read-only, idempotent, non-destructive. The description adds that it's 'one undo step', which usefully signals undo granularity. However it doesn't mention what happens to a conflicting assignment, how re-assignment on the same task behaves, or the utilization semantics beyond what the schema says.

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

Conciseness5/5

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

Two tightly written sentences front-load the action, then add scope and sibling context. 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?

An output schema exists so return values need no explanation, and annotations cover the mutation profile. The description includes the master-data source (rillsoft_resource_pool_catalog_list) and undo behavior, though it doesn't clarify the machineRoleId provenance explicitly in the text (schema does). Adequate but one could want more on assignment conflicts.

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

Parameters3/5

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

Schema coverage is 100% and all four parameters are documented in the schema, including quantity=0 removal and utilization bounds. The description only reinforces quantity=0, adding no format or semantics beyond the schema, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb (assigns/removes) and resource (machine role to a task), including the removal edge case (quantity 0). It also explicitly names its sibling rillsoft_task_role_assignment_set as the 'twin' for a different domain, which lets the agent distinguish them.

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 the when (assigning a machine role from master data) and the removal condition (quantity 0), and points to the task_role sibling for contrast. It doesn't explicitly state when to use this versus rillsoft_task_machine_assignment_set or rillsoft_task_machine_role_assignment_derive, so it falls short of a 5.

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

rillsoft_task_material_assignment_setAssign materialA
Idempotent

Assigns material from the existing master data to a task, or removes that assignment with quantity 0. Material carries neither utilization nor capacity: it moves no dates but feeds the cost through quantity and calculation mode. Calling it again changes the existing assignment. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoremark on this assignment
quantityYesquantity in the metric of the material (> 0); 0 removes the assignment
taskUuidYesUUID of the task
materialIdYesid of the material from rillsoft_resource_pool_catalog_list
calculationModeNocalculation mode: fixed, duration, effort, deliverable (defaults to fixed). It says how 'quantity' becomes the consumption: fixed = quantity, duration = duration[h] * quantity, effort = effort[h] * quantity, deliverable = output quantity * quantity

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
noteNohint on the effect of the calculation mode; only when one applies
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
materialAssignmentsYesthe material assignments of the task after the change

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly=false, idempotent=true, destructive=false. The description adds context beyond them: repeat calls modify the existing assignment, the operation is reversible with 'One undo step', and it affects cost but not scheduling dates. Permission/authentication requirements are still unstated, which keeps it from a 5.

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

Conciseness4/5

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

Four short sentences, front-loaded with the core action and its inverse. Slight overhead in retelling the calculation mode's cost role, but each sentence conveys usable information with no filler.

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

Completeness5/5

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

With full schema coverage, an output schema, and annotations covering the safety profile, the remaining burden is the behavioral quirks — upsert semantics, undo reversibility, cost-not-schedule effect — all of which are covered. Nothing an agent needs to call this correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains quantity (metric, 0 removes), materialId provenance, and the calculationMode enum in detail. The description only restates the quantity-0 removal, adding no format or constraint detail beyond the schema — the correct baseline of 3 when structured fields do the work.

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?

Names a specific verb and resource ('Assigns material ... to a task') and states the reverse operation (quantity 0 removes). It implicitly distinguishes itself from the sibling assignment tools (task_employee_assignment_set, task_machine_assignment_set) by specifying that the assignee is material from master data.

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?

Gives a strong selection signal by contrast: material 'carries neither utilization nor capacity: it moves no dates but feeds the cost,' which tells the agent to pick this over date-driving resource assignments. It also notes that calling it again changes the existing assignment (upsert). It does not name the sibling tools explicitly as alternatives, so no exclusions are stated.

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

rillsoft_task_progress_recalculateRecompute progressA
Idempotent

Derives the actual progress of every task from the current status date, computed by RP. It writes progress, not dates - moving unfinished work goes through rillsoft_project_status_date_reschedule, and a single task by hand through rillsoft_task_progress_set. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusDateYesstatus date of the project, DD.MM.YYYY hh:mm

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already disclose readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the write-but-safe profile is covered. The description adds genuinely new behavioral context: it writes progress values rather than dates, and it is a single undo step. It does not state permission requirements or whether progress values can be overwritten non-idempotently, keeping it short of a 5.

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

Conciseness5/5

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

Three dense sentences, front-loaded with the core action before the routing guidance. Every clause conveys distinct information - scope, what is written, where to go instead, and undo cost - with no filler.

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

Completeness5/5

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

An output schema exists, so return values need not be described, and annotations cover the safety profile. For a zero-parameter bulk operation, the description supplies the scope, the two alternatives, and the undo consequence, which is everything an agent needs to invoke it correctly.

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

Parameters4/5

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

The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to clarify. The note that the computation is driven by 'the current status date' implicitly identifies the external input, adding a small amount of 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?

Specific verb ('Derives the actual progress of every task') plus the scope qualifier ('from the current status date, computed by RP') makes the action and its breadth unambiguous. An agent can distinguish it from the single-task and date-moving siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: moving unfinished work goes through rillsoft_project_status_date_reschedule, and adjusting one task by hand goes through rillsoft_task_progress_set. This is a clear when-to-use-this-vs-alternatives statement naming the exact sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_task_progress_setSet progressA
Idempotent

Sets the actual progress of a task (0 to 100 %). It sets one task by hand; deriving the progress of every task from the status date goes through rillsoft_task_progress_recalculate, and the planning data of the task itself through rillsoft_task_update. The value is passed along to predecessors and successors. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the task
progressPercentYesactual progress in percent (0 to 100)

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
effortHoursYeseffort in hours
effortDoneHoursYescompleted effort in hours
progressPercentYesactual progress in percent

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations present, the description still earns credit by disclosing two non-obvious traits: the value propagates to predecessors and successors, and the operation is a single undo step. It doesn't mention permissions or what happens to downstream scheduling beyond propagation, so it's strong but not complete.

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 sentences, zero filler, with the core action first and alternatives and side effects following in priority order. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values needn't be explained, and the description covers scope, alternatives, side effects, and undo behavior. What's missing is only marginal (e.g., whether propagation failure rolls back the change).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters carry descriptions including min/max, so the schema carries parameter semantics. The description only restates the 0–100 % range already in the schema, adding no meaningful param nuance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Sets the actual progress of a task') with an explicit range, and explicitly distinguishes itself from rillsoft_task_progress_recalculate (bulk derivation) and rillsoft_task_update (planning data). An agent can select it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit alternative routing: use this for setting one task by hand, use rillsoft_task_progress_recalculate for deriving progress from the status date, and use rillsoft_task_update for planning data. Both the when and the when-not are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_task_resource_assignment_fillAssign resources automaticallyA

The 'Assign staff' respectively 'Assign machine park' wizard: fills many tasks at once out of their role assignments. One call is exactly one undo step, labelled like the menu entry. An assignment is made only where the task carries the matching role, the resource is not on it yet, it is not already involved through another role, and the balance of that role is still open. The result gives the assignments made per task plus skipped[] with the cause. Only at progress 0 %.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoautomatic (the default) applies the rule behind the 'Select all' button (balance still open, no schedule conflict, and for people 100 % availability on top); selection takes only the pairs given in assignmentsautomatic
typeNoresource type; employee by default. Here resource covers exactly these two - an assistant works on concrete people and machines. The other four resource types (role, team, material, machine_role) are read and written through rillsoft_resource_usage_list and rillsoft_resource_usage_setemployee
taskUuidsNoUUIDs of the tasks; empty means every eligible task of the visible project or subproject, just like the menu entry
assignmentsNoonly with mode selection: an array of { taskUuid, resourceId }
resourceIdsNopreselection like the first wizard page; empty means every resource whose role the tasks call for

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeYesoperating mode chosen
typeYesresource type
tasksYesthe tasks that were changed
skippedYesskipped tasks with the cause
assignedYesnumber of assignments made

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond annotations (which only say non-read-only, non-idempotent, non-destructive): each call is exactly one undo step, the precise conditions under which an assignment is made, and the 0% progress constraint. It also describes the failure reporting (skipped[] with cause).

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?

Dense but front-loaded: the batch-wizard purpose leads, followed by undo semantics and the assignment conditions. Sentences are telegram-style and a bit run-on in the rules list, but nearly every clause carries actionable 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?

For a non-idempotent mutation with an available output schema, the description covers preconditions, undo behavior, and result shape (per-task assignments plus skipped[]). It is nearly complete; the only minor gap is not explicitly pointing to sibling tools for the non-zero-progress case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents mode, type, taskUuids, assignments, and resourceIds. The description adds no syntax or format detail for these parameters beyond what the schema provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: it 'fills many tasks at once out of their role assignments,' framing it as a batch wizard. This distinguishes it from single-assignment siblings like rillsoft_task_employee_assignment_set and rillsoft_task_role_assignment_set. An agent can tell it apart without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear precondition ('Only at progress 0 %') and frames usage via the 'Assign staff'/'Assign machine park' wizard and the 'Select all' menu equivalent. It does not explicitly name alternative tools for assigning resources when this precondition fails, so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_task_resource_assignment_removeTake resources off tasksA
DestructiveIdempotent

The 'Remove staff' respectively 'Remove machine park' wizard: takes the named resources out of many tasks at once - one undo step. A task already begun is split at its progress first, and the completed part keeps its assignment. Completed tasks stay untouched and appear with the cause in skipped[].

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoresource type; employee by default. Here resource covers exactly these two - an assistant works on concrete people and machines. The other four resource types (role, team, material, machine_role) are read and written through rillsoft_resource_usage_list and rillsoft_resource_usage_setemployee
taskUuidsNoUUIDs of the tasks; empty means every eligible task of the visible project or subproject
resourceIdsYesids of the resources to take out; at least one

Output Schema

ParametersJSON Schema
NameRequiredDescription
typeYesresource type
tasksYesthe tasks that were changed
skippedYesskipped tasks with the cause
processedYesnumber of tasks processed

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (destructive=true, idempotent=true), and the description adds meaningful behavior beyond them: tasks already begun are split at their progress, the completed portion keeps its assignment, and completed tasks are left untouched but reported with a cause in skipped[]. This is substantial operational 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?

Two sentences, front-loaded with the wizard identity and batch behavior, then the split/skip semantics. Every clause carries information and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the description still covers scope, the split-at-progress rule, and the skipped[] reporting. Combined with the destructive/idempotent annotations, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the type enum, empty taskUuids semantics, and resourceIds constraints are all documented in the schema. The description adds no new parameter-level syntax or format detail, so it matches the baseline-3 expectation when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('takes the named resources out of many tasks at once') and frames it as the 'Remove staff'/'Remove machine park' wizard. The batch scope plus the resource/task pairing clearly distinguishes it from the per-task set/fill siblings.

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?

Gives clear context for use: a bulk removal across many tasks, executed as 'one undo step'. It does not, however, name an alternative or state when a per-task tool would be preferable, so it falls short of the explicit when/when-not bar for a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_task_resource_candidate_listList candidatesA
Read-onlyIdempotent

Reports per task the roles attached to it (quantity, assigned, balance, balanceOpen) and the candidates matching them - the same set the task dialog shows after the role and team filter. Per candidate: id, name, code, teamId, free (free capacity within the task period), cost, alreadyAssigned, scheduleConflict and reason where it cannot be assigned; with type employee also availability and efficiency. Read-only, no undo step. Filling the slots afterwards goes through rillsoft_task_employee_assignment_set, rillsoft_task_machine_assignment_set or rillsoft_task_resource_assignment_fill.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoresource type; employee by default. Here resource covers exactly these two - an assistant works on concrete people and machines. The other four resource types (role, team, material, machine_role) are read and written through rillsoft_resource_usage_list and rillsoft_resource_usage_setemployee
roleIdsNoids of the roles or machine roles to filter on; empty means every one attached to the task. On opening, the task dialog ticks the first role only - to reproduce exactly its list, pass that id explicitly
taskUuidNoUUID of one task; taskUuids is the alternative
taskUuidsNoUUIDs of several tasks; leave both empty for every task of the visible project or subproject
searchTextNofilter by name, like the search field of the dialog
teamFilterNonarrow further to the team of the task or of its subproject; omit it to get the preset of the dialog (on as soon as a team is carried)
matchingOnlyNotrue (the default) = only resources that carry one of the roles; false = the unfiltered master data, as with the role tick cleared

Output Schema

ParametersJSON Schema
NameRequiredDescription
typeYesresource type
tasksYesthe tasks evaluated

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered; the description reinforces it with 'Read-only, no undo step.' Beyond that it discloses meaningful behavioral detail: what each candidate carries (free capacity within the task period, cost, alreadyAssigned, scheduleConflict and reason), and that employee-type candidates additionally carry availability and efficiency. That is real added context, though it overlaps with the output 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?

Front-loaded with the core purpose, then structured detail on the returned fields, then the routing sentence to the assignment tools. The 'Read-only, no undo step' clause slightly duplicates the annotations, but overall every sentence carries content and nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with 7 optional params, a rich input schema and an output schema, the description covers purpose, default/dialog semantics, candidate field meanings, and the follow-up write path. An agent has everything it needs to select and call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each of the 7 parameters is already documented, including the default-preset behavior of roleIds, teamFilter and matchingOnly. The description adds only a holistic framing - that the result reproduces the dialog's filtered candidate list - rather than per-parameter semantics. Baseline 3 is correct when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource - it reports, per task, the roles attached and the candidate resources matching them - and pins the scope to the exact set the task dialog shows after the role/team filter. It is immediately distinguishable from siblings like rillsoft_task_role_assignment_derive and the assignment_set family, which it names.

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?

Usage context is clear: this is the read/list side, and filling the slots afterwards goes through rillsoft_task_employee_assignment_set, rillsoft_task_machine_assignment_set or rillsoft_task_resource_assignment_fill. That routes the agent to the correct follow-up tools. It does not explicitly state when NOT to use it or contrast with the other list-style siblings (e.g. resource_usage_list), so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_task_role_assignment_deriveDerive roles from assignmentsA
DestructiveIdempotent

The 'Derive roles from the assignment' wizard: rebuilds the role assignments of each task out of the concrete people assigned to it - existing role assignments are replaced, quantity and volume are formed from those people. Reports them under assignments[]. Machine kinds are the mirror case and go through rillsoft_task_machine_role_assignment_derive; setting a single role by hand goes through rillsoft_task_role_assignment_set. One undo step. Tasks without concrete assignments appear with the cause in skipped[].

ParametersJSON Schema
NameRequiredDescriptionDefault
taskUuidsNoUUIDs of the tasks; empty means every eligible task of the visible project or subproject

Output Schema

ParametersJSON Schema
NameRequiredDescription
typeYesresource type
tasksYesthe tasks that were changed
skippedYesskipped tasks with the cause
processedYesnumber of tasks processed

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false. The description adds context beyond annotations: existing role assignments are replaced, quantity/volume are derived, one undo step, and skipped tasks are reported with cause. That is meaningful behavioral disclosure (what is destroyed, undo availability, failure reporting). It doesn't explicitly restate reversibility caveats but the 'One undo step' line covers it well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero waste; scope and replacement semantics are front-loaded, sibling routing follows, and the skipped[] reporting detail closes it out. Every clause 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 mutating tool with one optional param, output schema present, and annotations covering safety, the description supplies the remaining pieces: replacement semantics, derivation source, undo availability, and skipped-task reporting. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema description already explains that empty taskUuids means every eligible task of the visible project/subproject. The description doesn't add syntax or format details beyond that. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('rebuilds the role assignments of each task') and resource ('concrete people assigned to it'), and names the sibling tools this is not (rillsoft_task_machine_role_assignment_derive, rillsoft_task_role_assignment_set). An agent can distinguish it from all siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names two alternatives and the condition that selects each: machine kinds go to rillsoft_task_machine_role_assignment_derive, single-role manual setting goes to rillsoft_task_role_assignment_set. No inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_task_role_assignment_setAssign roleA
Idempotent

Assigns a role (a professional qualification) from the existing pool to a task, or removes it again with quantity 0. A role is the requirement, not the person: filling it with someone concrete goes through rillsoft_task_employee_assignment_set, and rillsoft_task_role_assignment_derive works the other way round and rebuilds roles out of the people already assigned. Machine kinds are the mirror case (rillsoft_task_machine_role_assignment_set). One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleIdYesid of the qualification from rillsoft_resource_pool_catalog_list with types:["role"]
quantityYeshow many people of this role; 0 removes the assignment
taskUuidYesUUID of the task
utilizationNoutilization greater than 0 up to 1 (defaults to 1)

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks
assignmentsYesthe assignments of the task after the change

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-readOnly, idempotent, non-destructive. The description adds genuinely useful behavioral context beyond them: setting quantity 0 removes the assignment, and the operation consumes exactly 'one undo step', which matters for an agent planning revertible actions.

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?

Dense but front-loaded: the core action and its inverse come first, then the disambiguation of siblings. Every sentence carries routing or behavioral information, though the sibling enumeration is tight enough to avoid 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?

With an output schema present, return values need not be explained, and annotations cover the safety profile. The description supplies the role-vs-person conceptual model, the inverse operation, and the undo-step cost, leaving little an agent needs that is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents roleId, quantity, taskUuid and utilization. The description reinforces that quantity 0 removes the assignment (already in the schema) and clarifies the roleId source is a professional qualification from the existing pool, adding only marginal value over the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource (assign a role to a task) plus the inverse operation (remove with quantity 0), and explicitly distinguishes this tool from three named siblings: employee_assignment_set (filling with a person), role_assignment_derive (rebuilds roles from people), and machine_role_assignment_set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It describes exactly when to use this tool versus the alternatives, explaining the conceptual difference between a role (the requirement) and a person or machine, and pointing to the sibling for each case. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_task_splitSplit taskA

Splits a task. Give exactly one of splitTime, completedPart or proportions. Splitting into n parts is a single undo step. The result is parts[] carrying uuid, wbs, number, name, start, finish, durationHours and progressPercent in WBS order. Beware: every part keeps the UUID of the original task, which is what preserves the baseline reference. What is unique is the number; passed as number it addresses one part in rillsoft_task_update, rillsoft_task_split and rillsoft_task_split_options_get. The name stays the same for all parts as well (just as in the user interface); rename them one by one through rillsoft_task_update.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the task
numberNonarrows an ambiguous UUID down to one part; required to split an already split task again
sameRowNodraw the parts on one display row (defaults to true); only together with proportions
linkPartsNocreate a finish_start dependency between the parts (defaults to true); only together with proportions
splitTimeNosplit point, DD.MM.YYYY hh:mm, and it has to lie inside the task; this covers both a starting shift and a conflict point
proportionsNosplit by criterion: { criterion: percent|deliverable|effort|duration|cost, values: [ ... ] }. The values are given in the metric of the criterion (rillsoft_task_split_options_get reports metric and totalValue); whatever remains is appended where it can carry a part
completedPartNotrue = split at the point of progress; the only way permitted once times have been recorded

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYesnumber of parts
partsYesthe parts in WBS order; all carry the UUID of the original task

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false) by disclosing that a multi-part split is a single undo step, that every part retains the original UUID to preserve the baseline reference, that only 'number' is unique, and that names stay identical for all parts. These are exactly the non-obvious behaviors an agent needs and are consistent with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and the required-argument constraint, then layers in behavioral caveats. Dense but every sentence carries distinct information (undo granularity, UUID preservation, naming). Slightly long, with the UUID/name explanation spanning multiple sentences that could be tightened.

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?

Output schema exists, so return-value explanation is not strictly required, yet the description still says the result is parts[] in WBS order. For a non-idempotent mutation with many interacting parameters, this is close to complete; only permission/authorization prerequisites are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description nevertheless adds cross-tool semantics the schema cannot convey: 'number' addresses one part across rillsoft_task_update, rillsoft_task_split and rillsoft_task_split_options_get, and explains why names must be renamed one by one. This is genuinely beyond the property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence 'Splits a task' gives a specific verb and resource, then immediately constrains the operation with the exactly-one-of rule over splitTime, completedPart or proportions. It is distinguishable from siblings like rillsoft_task_update (rename) and rillsoft_task_split_options_get (options) without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the mutual-exclusion constraint ('Give exactly one of...') and a hard pre-condition ('completedPart ... the only way permitted once times have been recorded'). It also routes the agent to rillsoft_task_update for renaming and rillsoft_task_split_options_get for options. No explicit when-not-to-use this tool at all, but 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.

rillsoft_task_split_options_getRead split optionsA
Read-onlyIdempotent

Enumerates the ways a task can be split: completedPart (the point of progress), shiftStarts[] (starting shifts from the quantity profile), conflicts[] (start times of colliding tasks together with resourceType), criteria[] (criterion, metric, totalValue for proportions), plus splittable and timeSheet. Read-only, no undo step. Every point of time it reports can be passed straight to rillsoft_task_split.splitTime without conversion.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the task
numberNonarrows an ambiguous UUID down to one part (see rillsoft_task_split)
resourceTypeNonarrows the conflict points down to one resource type

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYesname of the task
uuidYesUUID of the task
reasonNowhy splitting is impossible; only with splittable:false
criteriaYescriteria for 'proportions'
conflictsYesstart times of colliding tasks
timeSheetYestrue = recorded times are attached to the task
splittableYestrue = at least one way to split is possible
shiftStartsYesstarting shifts from the quantity profile
completedPartNosplit at the point of progress; missing without usable progress

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered; 'read-only, no undo step' largely restates it. The genuine additions are the enumerated return fields and the guarantee that every reported point of time can be handed to splitTime without conversion, which is real behavioral value beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core verb and then enumerates the returned fields compactly. The field list is dense but each entry maps to actual output, and the two trailing sentences earn their place; 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?

With an output schema present, return details are supplementary, and the description still covers the integration path to rillsoft_task_split plus the safety note. Nothing critical for correct invocation is missing, though it doesn't address ambiguity handling of uuid versus number.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so uuid, number and resourceType are already fully documented with an enum. The description contributes no parameter-level meaning (e.g., how number disambiguates, when to set resourceType), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (enumerates) and resource (the ways a task can be split), then itemizes the concrete fields it returns. It also names the sibling rillsoft_task_split and explains the relationship, so an agent can distinguish this read-only options tool from the mutating split tool without inspecting either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly frames the workflow: get the options here, then pass the reported time points straight to rillsoft_task_split.splitTime. That gives strong context for when to call it, though it offers no explicit exclusions or prerequisites (e.g., required task state).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_task_updateUpdate taskA
Idempotent

Changes the planning data of a task: name, dates, duration, notes, fixing, display row, task kind and the dynamic redistribution of the personnel effort. It changes the task itself - moving it in the structure goes through rillsoft_element_move, its progress through rillsoft_task_progress_set, its assignments through the rillsoft_task_*_assignment_set family, and a subproject through rillsoft_subproject_update. One undo step; conflicts are rolled back for you.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNocode of the task, the free text field of the task dialog; an empty string clears it. RP does not check it for uniqueness
nameNonew name
uuidYesUUID of the task
fixedNofix the start date
notesNonew notes
startNonew start, DD.MM.YYYY hh:mm
finishNonew finish, DD.MM.YYYY hh:mm
numberNonarrows an ambiguous UUID down to one part. After a rillsoft_task_split all parts carry the same UUID (they keep the baseline reference); the number from rillsoft_project_tree_get is unique per part
sameRowNotrue = draw on one display row together with the WBS predecessor, false = a row of its own (the 'Show on one row' switch of the task dialog)
fixedTypeNotask type: duration, effort, duration_effort (defaults to the application default from the settings). It says which quantity RP holds fixed while computing: duration keeps the duration, effort keeps the effort, duration_effort keeps both. This matches the choice in the task dialog
calendarIdNocalendar of this task, an id from rillsoft_calendar_list; 0 = none of its own, the calendar of the enclosing subproject or project applies. An id that does not exist is refused with unknown_id
durationHoursNonew duration in hours (0 = milestone)
dynamicRedistributionNospread the personnel effort of this task dynamically over the people of one qualification - the switch on the 'Personnel' tab of the task dialog. Three conditions decide whether it takes effect, and two of them make the call fail rather than promise something that never happens: scheduling has to be capacity_driven (with deadline_driven nothing redistributes at all, the same refusal as at the project), and the project must not carry the switch itself (while it does, it wins, and the task dialog locks its box the same way - switch it off through rillsoft_project_update first). The third one is not an error: without named people on the task - a role alone is not enough - the switch stays without effect. Read both sides back through rillsoft_project_tree_get: dynamicRedistribution is this switch, dynamicRedistributionEffective is what the scheduling really applies. Switching it off puts the distribution back to static

Output Schema

ParametersJSON Schema
NameRequiredDescription
wbsYesWBS code
nameYesname
uuidYesUUID of the element
startYesstart, DD.MM.YYYY hh:mm
finishYesfinish, DD.MM.YYYY hh:mm
numberYesnumber of the element; unique even for split tasks

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false, openWorldHint=false), so safety is covered by structured data. The description adds genuine behavioral context beyond that: 'One undo step; conflicts are rolled back for you' discloses atomicity/rollback semantics, and the dynamicRedistribution note spells out that two precondition failures hard-fail the call while a missing named person silently no-ops. However, no permission/auth requirements or partial-update semantics (what happens to unspecified fields) are stated, so it is not fully load-bearing.

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?

Front-loaded with the verb and the field inventory, then routing, then transactional behavior; no filler sentences. It leans on long, dense compound sentences rather than shorter scannable ones, which costs a little readability but not substance.

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?

Output schema exists, so return values need not be described, and annotations cover the safety profile. Combined with a 13-parameter schema fully documented at 100%, the description still adds the two things an agent needs most: where this tool's responsibility ends (sibling routing) and how failure/rollback behaves.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the per-parameter schema text is unusually rich (including the dynamicRedistribution precondition chain and fixedType enum semantics), so the schema does the heavy lifting. The description only re-lists the affected field names rather than adding syntax, format or interaction details beyond the schema, which matches the baseline-3 rule for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Changes the planning data of a task') and enumerates exactly which fields it owns: name, dates, duration, notes, fixing, display row, task kind, dynamic redistribution. It explicitly carves out the sibling surfaces it does NOT touch (element_move, task_progress_set, the *_assignment_set family, subproject_update), so an agent can separate it from adjacent update tools without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit routing rules: structural moves go to rillsoft_element_move, progress to rillsoft_task_progress_set, assignments to the rillsoft_task_*_assignment_set family, subproject changes to rillsoft_subproject_update. This is a when-not-to-use-this-here map naming the exact alternatives, which is the strongest form of usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_timescale_applyApply time scaleA
Idempotent

Applies the time scale of the time axis - either through level or through unit plus subdivision. A pure display property: tasks, dates, assignments, calendars and baselines stay untouched. One undo step; a level already set creates none.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNotime unit of the time axis; level is the alternative
levelNolevel of the time axis (0 = year, up to the finest level); unit is the alternative
subdivisionNosubdivision of the time unit, 1 to 3 (defaults to 1); year has none

Output Schema

ParametersJSON Schema
NameRequiredDescription
unitNotime unit of the time axis; missing on a level without a named unit
labelYescaption from the user interface, never usable as a key
levelYeslevel of the time axis
subdivisionNosubdivision of the time unit; missing where there is none

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it explains that despite readOnlyHint=false nothing in the project data is touched ('tasks, dates, assignments, calendars and baselines stay untouched'), and it discloses undo semantics including the edge case that re-applying an already-set level produces no undo step. This is exactly the behavioral context annotations cannot carry.

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 tight sentences: purpose first, then the non-destructive guarantee, then undo behavior. No filler, and the most decision-relevant fact (pure display property) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be described, and annotations plus the description together cover safety, idempotency and undo. Nothing needed to invoke the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by framing level and unit+subdivision as alternative ways to set the same property and by tying subdivision to unit, which the schema only encodes structurally via oneOf/dependentRequired.

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 ('Applies') and resource ('the time scale of the time axis'), and clarifies it is a display property. It does not name any sibling tool, but the resource is distinct enough (vs outline_apply, row_selection_apply, view_state_apply) that an agent can route to it correctly.

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 explains the two invocation modes (level, or unit plus subdivision) but never states when to prefer one over the other or when not to use the tool. Usage is implied rather than guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_variance_report_getRead variance reportA
Read-onlyIdempotent

Reads the visible variance view (time_variance, effort_variance or cost_variance) as a flat YAML report: per element the planned value from the active baseline, the actual value from the current computed state, and the variance between them. The scope is that one visible view, not the whole project - rillsoft_view_state_apply switches it, and rillsoft_baseline_select decides which baseline the comparison uses. It takes no parameters. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
yamlYesthe variance report as YAML, the same text as in content[0].text

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, but the description adds real value: the scope is explicitly limited to one visible view rather than the whole project, and it discloses that there is no undo step and no parameters. It still does not describe pagination, size limits, or empty/missing-variance behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action and return shape, then scope, then the no-parameter/no-undo facts. The middle sentence is dense with two cross-references but each clause earns its place; nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return format need not be re-specified, yet the description still summarises the YAML report shape. For a parameterless read tool, scope, dependencies, and mutation risk are all covered, so an agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, and the description explicitly confirms 'It takes no parameters', so there is no ambiguity for the agent. That is the expected baseline-4 handling for a 0-param tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('reads the visible variance view') and immediately enumerates the three view variants it can return, plus the per-element contents (planned, actual, variance). An agent can distinguish this from rillsoft_analysis_report_get or rillsoft_project_tree_get without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly conditions usage on the currently visible view and names the two related tools that determine the output: rillsoft_view_state_apply to switch it and rillsoft_baseline_select to choose the baseline. It does not explicitly state when NOT to use this (e.g. for whole-project reporting), so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_view_columns_applyApply columns of the viewA
Read-onlyIdempotent

Shows, hides, sizes and arranges columns of the list on the left of the visible view - the same effect as the context menu of the column header, dragging its edge and the column arrangement dialog. Give order, columns or both; a call with neither is rejected. Under columns only the columns named are touched, and a column that already stands as asked is left alone, so the call can be repeated. Rejected in plain words: an unknown column name, hiding a column the context menu greys out, a width on a column that stays hidden ({ visible: true, width: X } in one entry shows it and sizes it in one go), and an order that leaves a column out or names one twice. The list at the bottom of a view with a second chart is not addressable. No undo step and no change to the plan itself - no task, no assignment, no date moves; that is why this tool counts as read-only. What it does change is the way the project is displayed: the column state is stored with the project, and going through the user interface marks the document as changed, so a later save writes it along. It answers like rillsoft_view_columns_get.

ParametersJSON Schema
NameRequiredDescriptionDefault
orderNodisplay order of the columns from left to right: the contract names of ALL columns of the view, each exactly once - the same array rillsoft_view_columns_get reports under order. This arranges the column headers; it does not sort the rows, and it does not show or hide anything - a hidden column keeps its place in the list and takes it up once it is shown. A list that leaves a column out or names one twice is rejected, never completed
columnsNothe columns to change - every column left out stays as it is. Each entry needs name and at least one of visible and width

Output Schema

ParametersJSON Schema
NameRequiredDescription
viewYesname of the visible view the columns belong to
orderYescontract names of all columns from left to right - the arrangement of the column headers, not a sorting of the rows. Same sequence as columns[]; pass it back to rillsoft_view_columns_apply to restore the arrangement
columnsYesevery column of the list in display order, hidden ones included

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it explains why readOnlyHint is true (no task, assignment or date moves, no undo step) while disclosing the non-obvious side effect that column state is persisted with the project and marks the document changed so a later save writes it. It also notes the second-chart bottom list is not addressable, and that the call is idempotent/repeatable.

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?

Dense but front-loaded: the effect is stated first, then the calling contract, then rejections, then behavioural notes. Some rejection detail overlaps the schema, but nearly every sentence carries information an agent needs to avoid an invalid call.

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?

An output schema exists so return values need not be described, and the description still notes the answer shape matches rillsoft_view_columns_get. Between the description, annotations and full schema coverage, an agent has everything needed to invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds cross-cutting semantics: order does not sort rows or change visibility, hidden columns keep their place, and showing plus sizing in one entry is allowed while hiding plus width is contradictory. This meaningfully clarifies how the two parameters interact.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb set and resource: shows, hides, sizes and arranges columns of the visible view's left-hand list, and equates the effect to the column header context menu and drag behaviour. It is clearly distinct from rillsoft_view_columns_get, which it explicitly references as the reporting counterpart.

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 spells out the calling contract (give order, columns, or both; neither is rejected) and enumerates rejected inputs in plain words. It also implies the read-first workflow by pointing at rillsoft_view_columns_get, but never states when to prefer this tool over sibling view tools such as rillsoft_view_state_apply or rillsoft_window_layout_apply.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_view_columns_getRead columns of the viewA
Read-onlyIdempotent

Reads the columns of the list on the left of the visible view - the Gantt chart, the three variance views and the resource and capacity views carry one. Per column it gives name (the contract name), caption (the heading in the language of the running program), visible, width in neutral units and toggleable, in display order and hidden columns included. The field order repeats that display order as a plain list of names, ready to be passed back to rillsoft_view_columns_apply. In the network diagram and the bar network diagram there is no such list and the call fails, pointing at rillsoft_view_state_apply. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
viewYesname of the visible view the columns belong to
orderYescontract names of all columns from left to right - the arrangement of the column headers, not a sorting of the rows. Same sequence as columns[]; pass it back to rillsoft_view_columns_apply to restore the arrangement
columnsYesevery column of the list in display order, hidden ones included

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/destructive, yet the description still adds real behavioral context: the per-column payload shape (name, caption, visible, width, toggleable), that hidden columns are included, the ordering guarantee, and the specific failure mode with its redirection. The 'Read-only, no undo step' line reinforces rather than contradicts the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action ('Reads the columns of the list...') before the enumeration and the exception. It is dense and slightly long, but each clause carries a distinct fact (view coverage, column fields, ordering handoff, failure case) with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read tool with an output schema and full annotation coverage, the description covers scope, payload semantics, ordering, failure modes, and the apply handoff. An agent has everything needed to decide and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the rubric baseline is 4. The description's detailed account of the returned field structure adds meaning about the result payload but nothing parameter-related is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource ('Reads the columns of the list on the left of the visible view') and enumerates exactly which view types carry such a list (Gantt, variance, resource/capacity) versus those that do not. An agent can distinguish it from rillsoft_view_columns_apply and the state/view siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit failure condition ('in the network diagram and the bar network diagram there is no such list and the call fails') and routes the agent to the alternative tool (rillsoft_view_state_apply). It also implies the downstream pairing with rillsoft_view_columns_apply. It stops short of stating when to prefer this over rillsoft_view_state_get, so it is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_view_favorite_createCreate favourite viewA

Saves the visible view as a favourite view under 'name': view type, grouping, filter, time window, column layout and time scale as they are right now - rillsoft_view_state_apply and rillsoft_view_columns_apply shape it beforehand. The visible view stays as it is; switching to the favourite goes through rillsoft_view_favorite_select, removing it through rillsoft_view_favorite_delete. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesname of the new favourite view; must not be empty and must not exist yet

Output Schema

ParametersJSON Schema
NameRequiredDescription
currentNoname of the favourite view currently visible; null while a regular view is visible
storageYeswhere the favourites live: in the project file, or per user or per client on the Integration Server
favoritesYesall favourite views of the project in menu order

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is partly covered. The description adds genuinely new context: the visible view is left untouched and the operation costs 'One undo step', which tells the agent the action is reversible via rillsoft_history_undo. It stops short of describing duplicate-name failure behavior or the response, so a 4 rather than 5.

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 core action and captured state are front-loaded in the first clause, and the related-tool routing that follows is useful rather than filler. The single em-dash-chained sentence runs long and mixes action, precondition and cross-references, costing a point on structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter create tool with an output schema, the description covers what is captured, the non-destructive effect on the current view, the undo cost and the sibling tools for the follow-up actions. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'name' parameter is already documented including the 'must not be empty and must not exist yet' constraint, so the schema carries the burden. The description only restates that the state is stored 'under name', adding no format or naming-convention detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Saves the visible view as a favourite view under name') and enumerates exactly what state is captured: view type, grouping, filter, time window, column layout, time scale. It is plainly distinguishable from the sibling favourite_select/delete/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 Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing: shape the view beforehand with rillsoft_view_state_apply and rillsoft_view_columns_apply, switch to a favourite via rillsoft_view_favorite_select, remove it via rillsoft_view_favorite_delete. The conditions that select each alternative are named, not implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_view_favorite_deleteDelete favourite viewA
Destructive

Deletes the favourite view 'name' from the project. The favourite view that is visible right now cannot be deleted - switch to another view with rillsoft_view_state_apply first; any other favourite can go while it stays visible. Only the saved view goes; the project keeps its planning data untouched. Listing what exists goes through rillsoft_view_favorite_list. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesname of the favourite view from rillsoft_view_favorite_list

Output Schema

ParametersJSON Schema
NameRequiredDescription
currentNoname of the favourite view currently visible; null while a regular view is visible
storageYeswhere the favourites live: in the project file, or per user or per client on the Integration Server
favoritesYesall favourite views of the project in menu order

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds real information beyond them: deletion is limited to the saved view while planning data is untouched, and the operation is reversible via 'One undo step.' It still doesn't say what the response contains or whether it errors when the name is unknown.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short sentences, front-loaded with the action and the blocking constraint, then scope, alternative tool, and undo behavior. No filler or restated purpose.

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 single-parameter destructive delete with an output schema available, the description covers the prerequisites, the side-effect boundary, and reversibility. Nothing an agent needs to call it safely is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter with 100% schema coverage, and the schema description already states it is the name from rillsoft_view_favorite_list. The description repeats that sourcing hint without adding format, casing, or matching semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Deletes the favourite view') and immediately scopes it to the 'name' in the current project. It is trivially distinguishable from rillsoft_view_favorite_list (enumeration) and rillsoft_view_favorite_create, both of which it names or implies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the one condition that blocks use (the currently visible favourite view), gives the concrete remedy (switch via rillsoft_view_state_apply), and clarifies that any other favourite is fair game even while visible. It also routes the agent to rillsoft_view_favorite_list to discover valid names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_view_favorite_listList favourite viewsA
Read-onlyIdempotent

Reads the favourite views of the project (name and the view each one was saved from), where they are stored, and which one is visible right now. Switching to one goes through rillsoft_view_favorite_select. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
currentNoname of the favourite view currently visible; null while a regular view is visible
storageYeswhere the favourites live: in the project file, or per user or per client on the Integration Server
favoritesYesall favourite views of the project in menu order

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so 'Read-only, no undo step' largely restates structured data. The description does add some context by noting the visible-now state and the storage location of the entries, but adds no new safety, permission, or side-effect disclosure beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the resource and returned fields, with the navigation hint second. The trailing 'Read-only, no undo step' is redundant against the annotations, which is the only wasted clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't detail return values, and it correctly focuses on scope and the sibling handoff for selection. Nothing essential is missing for a zero-parameter, read-only list tool, though it could note the create/delete counterparts.

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, so the baseline is 4. The description appropriately does not invent parameter semantics and instead describes what the call surfaces.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Reads) and resource (favourite views of the project) and enumerates the salient returned content: name, origin view, storage location, and which is currently visible. An agent can distinguish this from rillsoft_view_favorite_create/delete/select without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to rillsoft_view_favorite_select for the switching action, which is the main adjacent operation. It does not state when not to use the tool or cover the create/delete siblings, so it stops short of full when/when-not coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_view_favorite_selectSelect favourite viewA
Idempotent

Switches the visible view to the favourite view 'name', the same way as the favourites menu: afterwards rillsoft_view_state_get reports 'favorite' next to the underlying view name. It only changes what is shown, nothing in the project - and like every view switch it is no undo step. Creating and deleting favourites go through rillsoft_view_favorite_create and rillsoft_view_favorite_delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesname of the favourite view from rillsoft_view_favorite_list

Output Schema

ParametersJSON Schema
NameRequiredDescription
currentNoname of the favourite view currently visible; null while a regular view is visible
storageYeswhere the favourites live: in the project file, or per user or per client on the Integration Server
favoritesYesall favourite views of the project in menu order

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond annotations: describes the side effect on rillsoft_view_state_get ('reports favorite next to the underlying view name'), clarifies it only changes display (not project data), and notes it is not an undo step. Annotations say readOnlyHint=false but the description clarifies this is a view-only, non-destructive switch, consistent with destructiveHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences front-loading the action, followed by behavioral notes and sibling routing. Every clause 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 1-param switch tool with an output schema present, the description covers the visible effect, the state report, non-undoability, and sibling alternatives. Nothing an agent needs is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter 'name' is fully described in the schema as 'name of the favourite view from rillsoft_view_favorite_list'. The description mentions 'name' but adds no syntax or format guidance beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb 'Switches' and resource 'the visible view to the favourite view name', and explicitly distinguishes from sibling operations for creating/deleting favourites.

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?

Clear context: use to switch to a favourite, and names the create/delete siblings for other operations. However it does not state when to prefer rillsoft_view_state_apply or rillsoft_view_columns_apply over this tool, though those are adjacent concerns.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_view_state_applyApply view stateA
Idempotent

Switches the visible view ('view.name', for example gantt or employee) and sets its state - grouping, presentation, secondary view, time and task filter, time scale, application-wide switches - in the shape of the rillsoft_view_state_get answer: reading it and applying it back restores the state exactly. Informational fields (baseline, note, favorite) are ignored; rillsoft_baseline_select is what switches the baseline, and rillsoft_view_favorite_select is what switches to a favourite view. At least one section is required. One undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoinformational field of the answer, ignored here
viewNothe view part in the shape of the rillsoft_view_state_get answer: name, grouping, display, secondaryView, secondaryChart, costCurve and the view options; everything but the cost curve together forms exactly one undo step
baselineNoinformational field of the answer, ignored here; rillsoft_baseline_select is what switches the baseline
timescaleNo{ level } as in the answer; a step of its own, with the command semantics of rillsoft_timescale_apply
taskFilterNothe task filter in the shape of the answer; active:false clears it, the id lists are absolute - what is not named is deselected. Set on the view named under 'view' and part of that same undo step; a call that carries nothing but taskFilter is no undo step at all, just like the filter dialog
timeFilterNo{ active, from, to }; active:false turns the filter off. Part of that same undo step
applicationNoapplication-wide visibilities including tooltips; persistent and outside undo, just like the ribbon switches

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYeshint on the reach of the values under 'application'
viewYesthe visible view and its view-bound options
baselineYesselected baseline
timescaleYestime scale of the time axis
taskFilterYestask filter of the view: resources, calendars and the three switches
timeFilterYestime filter of the presentation
applicationYesapplication-wide and persistent presentation switches

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the annotations by disclosing undo semantics: view + options form exactly one undo step, timescale is its own step, a taskFilter-only call is no undo step, and application switches are persistent and outside undo. It also states that informational fields (baseline, note, favorite) are ignored rather than applied. Annotations already cover idempotency and non-destructiveness, so this added undo/persistence detail is the real contribution.

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?

A single dense paragraph that front-loads the action and scope before the caveats, and every clause (ignored fields, alternatives, undo granularity) carries information. It is long, but justified by the tool's 7 nested sections, so it stays readable rather than padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, deeply nested apply tool with an output schema present, it covers the essentials an agent needs: restorability from the get-answer shape, ignored fields, required minimum section, undo granularity, and where to go for baseline/favourite selection. Nothing critical to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline expectation is a 3; the description still adds cross-parameter meaning the schema cannot convey, namely which answer fields are informational and ignored on write, that timescale carries rillsoft_timescale_apply semantics, and that taskFilter's id lists are absolute. Useful, but much of the per-field meaning still lives in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action pair ('switches the visible view ... and sets its state') plus the concrete scope (grouping, presentation, secondary view, filters, time scale, application switches). It explicitly distinguishes itself from rillsoft_view_state_get ('in the shape of the ... answer'), rillsoft_baseline_select and rillsoft_view_favorite_select, so an agent can place it among the view/state siblings without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the operating pattern directly ('reading it and applying it back restores the state exactly'), the minimum precondition ('At least one section is required'), and routes two adjacent concerns to other tools: rillsoft_baseline_select for baselines and rillsoft_view_favorite_select for favourite views. That is explicit when-to-use plus named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_view_state_getRead view stateA
Read-onlyIdempotent

Reads the complete visible view state in one answer: 'view' (its name including the task views, grouping, presentation, secondary view together with secondary chart and cost curve; while a favourite view is visible also 'favorite' with its name next to the underlying view), 'timescale', 'timeFilter', 'taskFilter' and 'baseline'. Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYeshint on the reach of the values under 'application'
viewYesthe visible view and its view-bound options
baselineYesselected baseline
timescaleYestime scale of the time axis
taskFilterYestask filter of the view: resources, calendars and the three switches
timeFilterYestime filter of the presentation
applicationYesapplication-wide and persistent presentation switches

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is largely covered. The description still adds value by enumerating the exact state captured (grouping, presentation, secondary view/chart, cost curve, favourite view, baseline) and by noting 'no undo step', which clarifies that reading leaves no history entry.

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?

Front-loaded with the verb and the outcome, and it fits the essential payload description into a single sentence. The deeply nested parenthetical around 'view' makes it slightly harder to parse than it needs to be, but no sentence is wasted.

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?

An output schema exists, so return values need not be explained, yet the description usefully previews the returned keys. For a zero-argument, read-only getter this is essentially complete; the only missing item is an explicit pointer to the apply counterpart.

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, so there is nothing for the description to disambiguate; baseline is 4 per the zero-parameter rule. The description correctly avoids restating an empty 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?

States a specific verb ('Reads') and a specific resource ('the complete visible view state'), then enumerates the payload keys (view, timescale, timeFilter, taskFilter, baseline) so the agent knows exactly what is returned. It does not name its obvious counterpart rillsoft_view_state_apply, so sibling disambiguation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'Reads the complete visible view state in one answer' — an agent can infer this is the read side of view state. However, there is no explicit when-to-use statement, no mention of the apply counterpart, and no stated preconditions (e.g. a project must be open).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_window_layout_applyApply window layoutA
Read-onlyIdempotent

Applies the window state for reproducible screenshots; at least one parameter is required, and sizes left out stay as they are. It answers like rillsoft_window_layout_get. No undo step, no change to the project. The state holds for the running session only.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNowidth of the visible client area in pixels; give it together with height
heightNoheight of the visible client area in pixels; give it together with width
ribbonNostate of the ribbon; minimized shows the tab row only
infoPanelNoshow or hide the info window, the docking bar holding the property sheet
statusBarNoshow or hide the status bar; among other things it shows the path of the resource pool file

Output Schema

ParametersJSON Schema
NameRequiredDescription
dpiYesscreen resolution in dpi
widthYeswidth of the visible area in pixels
heightYesheight of the visible area in pixels
ribbonYesstate of the ribbon
infoPanelYesinfo window visible
maximizedYestrue = window maximized
statusBarYesstatus bar visible
windowWidthYeswidth of the window in pixels
windowHeightYesheight of the window in pixels

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is largely covered. The description adds genuinely non-derivable behavior: partial application (omitted sizes stay as-is), no undo step, no project mutation, and session-only lifetime, which is exactly the kind of scope detail annotations cannot express.

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 sentences, front-loaded with the action and purpose, then requirement, then behavioral caveats. Every clause carries information (requirement, partial update, return-shape reference, no undo, session scope) 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?

With an output schema present, return values need no explanation, and the description still points at rillsoft_window_layout_get for shape. Requirements, reversibility, and lifetime are all covered; only edge behavior (invalid values, whether a project must be open) is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each field is documented, so the baseline is 3. The description adds the partial-update semantic — omitted values are left unchanged — which complements the schema's anyOf at-least-one constraint rather than merely restating 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?

States a specific verb and resource ("Applies the window state") and adds the motivating purpose, reproducible screenshots. It also names its sibling relationship ("answers like rillsoft_window_layout_get"), so an agent can separate the setter from the getter without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear use case (reproducible screenshots) and a concrete prerequisite (at least one parameter required). It does not, however, say when not to use it or contrast it with adjacent layout-affecting tools such as rillsoft_view_state_apply or rillsoft_timescale_apply.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rillsoft_window_layout_getRead window layoutA
Read-onlyIdempotent

Reads the window state: width and height of the visible client area, windowWidth and windowHeight including the frame, dpi, maximized, infoPanel (the docking bar holding the property sheet), statusBar and ribbon (normal or minimized). Read-only, no undo step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dpiYesscreen resolution in dpi
widthYeswidth of the visible area in pixels
heightYesheight of the visible area in pixels
ribbonYesstate of the ribbon
infoPanelYesinfo window visible
maximizedYestrue = window maximized
statusBarYesstatus bar visible
windowWidthYeswidth of the window in pixels
windowHeightYesheight of the window in pixels

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description does not need to carry the safety burden. It still adds useful context with 'no undo step' and field-level semantics like infoPanel being the docking bar holding the property sheet. It stops short of describing permission needs or side effects on the UI.

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?

Front-loaded with the action and resource, then a single packed sentence enumerating fields, closed by a brief safety note. No sentence is wasted.

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 rich annotations and the presence of an output schema, the description is almost complete for a zero-parameter read tool. The only notable omission is routing guidance relative to rillsoft_window_layout_apply.

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 baseline is 4. The empty input schema is fully documented, and the description correctly focuses on returned state rather than inventing parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Reads') and resource ('window state'), and enumerates the returned fields. It does not explicitly differentiate from the sibling rillsoft_window_layout_apply, 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The read-only nature and 'get' naming imply use for inspecting layout state, but the description offers no explicit when-to-use guidance or named alternative such as the apply tool. Usage is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 118 tool updatesv10.0.626
    • First observedrillsoft_analysis_option_list
    • First observedrillsoft_analysis_report_get
    • First observedrillsoft_baseline_create
    • First observedrillsoft_baseline_delete
    • First observedrillsoft_baseline_list
    • First observedrillsoft_baseline_select
    • First observedrillsoft_calendar_create
    • First observedrillsoft_calendar_delete
    • First observedrillsoft_calendar_list
    • First observedrillsoft_calendar_source_get
    • First observedrillsoft_calendar_source_import
    • First observedrillsoft_calendar_update
    • First observedrillsoft_document_ris_create
    • First observedrillsoft_document_ris_delete
    • First observedrillsoft_document_ris_get
    • First observedrillsoft_document_ris_list
    • First observedrillsoft_document_ris_update
    • First observedrillsoft_element_delete
    • First observedrillsoft_element_move
    • First observedrillsoft_element_reorder
    • First observedrillsoft_element_subproject_group
    • First observedrillsoft_fixed_element_list
    • First observedrillsoft_folder_ris_create
    • First observedrillsoft_folder_ris_delete
    • First observedrillsoft_folder_ris_list
    • First observedrillsoft_folder_ris_move
    • First observedrillsoft_folder_ris_update
    • First observedrillsoft_history_redo
    • First observedrillsoft_history_undo
    • First observedrillsoft_machine_sharing_create
    • First observedrillsoft_machine_sharing_release
    • First observedrillsoft_outline_apply
    • First observedrillsoft_outline_get
    • First observedrillsoft_outline_row_apply
    • First observedrillsoft_portfolio_file_open
    • First observedrillsoft_portfolio_project_files_save
    • First observedrillsoft_portfolio_ris_create
    • First observedrillsoft_portfolio_ris_delete
    • First observedrillsoft_portfolio_ris_list
    • First observedrillsoft_portfolio_ris_open
    • First observedrillsoft_portfolio_ris_save
    • First observedrillsoft_portfolio_ris_update
    • First observedrillsoft_project_conflict_list
    • First observedrillsoft_project_create
    • First observedrillsoft_project_file_export_xml
    • First observedrillsoft_project_file_open
    • First observedrillsoft_project_file_save
    • First observedrillsoft_project_file_save_as
    • First observedrillsoft_project_renumber
    • First observedrillsoft_project_reschedule
    • First observedrillsoft_project_ris_delete
    • First observedrillsoft_project_ris_list
    • First observedrillsoft_project_ris_open
    • First observedrillsoft_project_ris_save
    • First observedrillsoft_project_ris_save_as
    • First observedrillsoft_project_sort
    • First observedrillsoft_project_status_date_reschedule
    • First observedrillsoft_project_status_date_set
    • First observedrillsoft_project_team_preference_remove
    • First observedrillsoft_project_team_preference_set
    • First observedrillsoft_project_tree_get
    • First observedrillsoft_project_update
    • First observedrillsoft_property_panel_close
    • First observedrillsoft_property_panel_get
    • First observedrillsoft_property_panel_open
    • First observedrillsoft_resource_absence_list
    • First observedrillsoft_resource_absence_sync
    • First observedrillsoft_resource_pool_catalog_list
    • First observedrillsoft_resource_pool_edit_close
    • First observedrillsoft_resource_pool_edit_open
    • First observedrillsoft_resource_pool_edit_save
    • First observedrillsoft_resource_pool_file_select
    • First observedrillsoft_resource_pool_get
    • First observedrillsoft_resource_pool_resource_create
    • First observedrillsoft_resource_pool_resource_delete
    • First observedrillsoft_resource_pool_resource_get
    • First observedrillsoft_resource_pool_resource_update
    • First observedrillsoft_resource_pool_ris_list
    • First observedrillsoft_resource_pool_ris_select
    • First observedrillsoft_resource_usage_list
    • First observedrillsoft_resource_usage_set
    • First observedrillsoft_row_selection_apply
    • First observedrillsoft_row_selection_get
    • First observedrillsoft_session_dialogs_set
    • First observedrillsoft_subproject_create
    • First observedrillsoft_subproject_delete
    • First observedrillsoft_subproject_update
    • First observedrillsoft_task_create
    • First observedrillsoft_task_delete
    • First observedrillsoft_task_dependency_create
    • First observedrillsoft_task_dependency_delete
    • First observedrillsoft_task_employee_assignment_set
    • First observedrillsoft_task_machine_assignment_set
    • First observedrillsoft_task_machine_role_assignment_derive
    • First observedrillsoft_task_machine_role_assignment_set
    • First observedrillsoft_task_material_assignment_set
    • First observedrillsoft_task_progress_recalculate
    • First observedrillsoft_task_progress_set
    • First observedrillsoft_task_resource_assignment_fill
    • First observedrillsoft_task_resource_assignment_remove
    • First observedrillsoft_task_resource_candidate_list
    • First observedrillsoft_task_role_assignment_derive
    • First observedrillsoft_task_role_assignment_set
    • First observedrillsoft_task_split
    • First observedrillsoft_task_split_options_get
    • First observedrillsoft_task_update
    • First observedrillsoft_timescale_apply
    • First observedrillsoft_variance_report_get
    • First observedrillsoft_view_columns_apply
    • First observedrillsoft_view_columns_get
    • First observedrillsoft_view_favorite_create
    • First observedrillsoft_view_favorite_delete
    • First observedrillsoft_view_favorite_list
    • First observedrillsoft_view_favorite_select
    • First observedrillsoft_view_state_apply
    • First observedrillsoft_view_state_get
    • First observedrillsoft_window_layout_apply
    • First observedrillsoft_window_layout_get

TDQS

A3.9/5.0

Scored across 118 tools

Disambiguation4/5

Many tools target closely related operations: generic vs specific element deletion/move (rillsoft_element_delete vs rillsoft_task_delete/rillsoft_subproject_delete), multiple assignment setters (role, machine role, employee, machine, material), and several view/display tools. However, the descriptions consistently cross-reference and delimit each other, so an attentive agent can usually tell them apart.

Naming Consistency5/5

All tools share a uniform rillsoft_ prefix, snake_case, and a consistent resource_action pattern (e.g., rillsoft_task_create, rillsoft_calendar_update, rillsoft_view_state_apply). There are no mixed conventions or vague verb styles.

Tool Count1/5

With 118 tools, the server is far beyond the typical 3-15 range and even beyond the 50+ threshold for extreme mismatch. Many operations could be consolidated (e.g., generic element tools, multiple view-state tools), making the surface unwieldy despite the domain's breadth.

Completeness5/5

The tool set covers the full project lifecycle: project/task/subproject CRUD, dependencies, resource pool management, calendars, baselines, documents, portfolios, RIS and file operations, scheduling, and view configuration. No obvious dead ends or missing core operations are apparent.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that enables LLMs to read and analyze Microsoft Project schedules, including critical path, resources, and advanced construction planning layers (AWP and LPS) for work packages and Lean planning.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables MCP-capable assistants to control an open ArcGIS Pro project locally over TCP 127.0.0.1, with 68 commands and 167 tools for layers, editing, symbology, layouts, geoprocessing, and arcpy execution.
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to control, automate, and query desktop project-management schedules in real time via native Windows COM, including task/WBS management, resource and cost assignment, baselines, critical path, status reporting, and PDF export.
    MIT