[{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/examples/find-resource-bottleneck/","section":"AI examples in Rillsoft Project","summary":"","title":"Find a resource bottleneck","type":"examples"},{"content":"What do I need? # Rillsoft Project version 10 on Windows; earlier versions have no MCP server. An AI client or a script that speaks the Model Context Protocol over Streamable HTTP in protocol revision 2025-06-18. Older revisions are not accepted by the server. For the first steps a shipped industry example; all data in it is synthetic. Set up in three steps # Start the server, point the client at the endpoint, check one read-only call – the first contact needs nothing more. Every step can be reverted on its own, and no step changes a project.\n1Enable the server # Way Effect RillPrj.exe /mcp server on 127.0.0.1:3928 for this session RillPrj.exe /mcp:8123 server on 127.0.0.1:8123 Settings → MCP server → \u0026ldquo;enable\u0026rdquo; server starts immediately and at every program start on the configured port no flag, setting inactive no listener, no open port The start flag overrides the settings for the session and suppresses the start screen and the auto-recovery prompt so that an unattended start does not hang on a dialog. The status line on the settings page shows whether the server is running, running via flag, blocked (port in use, probably a second instance) or inactive.\n2Connect a client # The endpoint is http://127.0.0.1:\u0026lt;port\u0026gt;/mcp – the path is exact, even /mcp/ is a 404. Configuration of an MCP client:\n{ \u0026#34;mcpServers\u0026#34;: { \u0026#34;rillsoft-project\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;http\u0026#34;, \u0026#34;url\u0026#34;: \u0026#34;http://127.0.0.1:3928/mcp\u0026#34; } } } With an API key set, one header is added:\n{ \u0026#34;mcpServers\u0026#34;: { \u0026#34;rillsoft-project\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;http\u0026#34;, \u0026#34;url\u0026#34;: \u0026#34;http://127.0.0.1:3928/mcp\u0026#34;, \u0026#34;headers\u0026#34;: { \u0026#34;Authorization\u0026#34;: \u0026#34;Bearer \u0026lt;KEY\u0026gt;\u0026#34; } } } } 3First safe test # No call works without initialisation. Three messages are enough, and none of them changes the project:\ninitialize – the server assigns a session; the id is in the response header Mcp-Session-Id. notifications/initialized – the confirmation unlocks the tools. From now on every request carries Mcp-Session-Id and MCP-Protocol-Version. tools/list – the contract: every tool with title, description, input and output schema. A first read-only call is rillsoft_project_tree_get, the complete computed project tree. Every tool answer delivers the result twice: as plain text in content[0].text and machine-readable in structuredContent. At the end a DELETE /mcp with the session id ends the session.\nThe three steps as curl calls in Git Bash # 1. initialize – the session id is in the response header MCP_SESSION=$(curl -s -i -X POST http://127.0.0.1:3928/mcp \\ -H \u0026#34;Content-Type: application/json\u0026#34; \\ -H \u0026#34;Accept: application/json, text/event-stream\u0026#34; \\ -d \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:0,\u0026#34;method\u0026#34;:\u0026#34;initialize\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;protocolVersion\u0026#34;:\u0026#34;2025-06-18\u0026#34;,\u0026#34;capabilities\u0026#34;:{},\u0026#34;clientInfo\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;curl\u0026#34;,\u0026#34;version\u0026#34;:\u0026#34;1.0\u0026#34;}}}\u0026#39; \\ | tr -d \u0026#39;\\r\u0026#39; | awk -F\u0026#39;: \u0026#39; \u0026#39;tolower($1)==\u0026#34;mcp-session-id\u0026#34;{print $2}\u0026#39;) # 2. from now on every call carries session and protocol revision mcp() { curl -s -X POST http://127.0.0.1:3928/mcp \\ -H \u0026#34;Content-Type: application/json\u0026#34; \\ -H \u0026#34;Accept: application/json, text/event-stream\u0026#34; \\ -H \u0026#34;Mcp-Session-Id: $MCP_SESSION\u0026#34; \\ -H \u0026#34;MCP-Protocol-Version: 2025-06-18\u0026#34; -d \u0026#34;$1\u0026#34;; } # 3. the confirmation unlocks the tools mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;method\u0026#34;:\u0026#34;notifications/initialized\u0026#34;}\u0026#39; # the contract: every tool with title, description, input and output schema mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:1,\u0026#34;method\u0026#34;:\u0026#34;tools/list\u0026#34;}\u0026#39; # a first read-only call: the complete computed project tree mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:2,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_project_tree_get\u0026#34;,\u0026#34;arguments\u0026#34;:{}}}\u0026#39; How is access protected? # The API key is optional. Empty means: no authentication. If a key is set in the settings, every request – regardless of how the server was started – requires Authorization: Bearer \u0026lt;KEY\u0026gt;, otherwise the server answers 401. The comparison runs in constant time. The key is needed on multi-user and terminal-server machines, because 127.0.0.1 is machine-wide, not session-wide.\nWhat do read-only mode and licence cover? # In read-only mode tools/list shows exactly the tools of the access class read-only: no task, no assignment, no date, no file, no undo step. Mutating calls – including file, pool and undo tools – return a clear tool error without touching the project.\nSome read-only tools visibly change something: the window tools only the window, the display tools the view state that is saved with the project file (columns, outline, selection). The project counts as modified afterwards. The description of each of these tools states this effect.\nMost tools check no licence; they are as open as the document model. Four follow the licence like their counterpart in the user interface: the candidate list, the assistants \u0026ldquo;assign staff\u0026rdquo; and \u0026ldquo;remove staff\u0026rdquo;, and the role derivation. If the function is missing from the licence, they return an error instead of working silently.\nWhat you see is what the AI gets # The capacity report computes nothing itself. It serialises the visible, already computed view: period from the time filter, grid from the calendar scale, metric from the selected display. Every perspective the AI sets is on screen at the same time – and one Ctrl+Z restores view, structure, time filter and display together. The same applies to every mutation: if Rillsoft Project detects a conflict on completion, it rolls back itself and the tool reports the reason with the project unchanged.\nThe capacity view as it stands on screen – exactly these cells are what the report delivers to the clientGerman UI Without AI: scripts and integrations # Not a chat plug-in but access to Rillsoft Project as a whole – with or without AI, by script, with sample data included. The same endpoint works without an AI assistant. The mcp function from the curl example above already is a script; in PowerShell a call looks like this:\n$body = @\u0026#39; {\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:1,\u0026#34;method\u0026#34;:\u0026#34;tools/list\u0026#34;} \u0026#39;@ curl.exe -s -X POST http://127.0.0.1:3928/mcp ` -H \u0026#34;Content-Type: application/json\u0026#34; ` -H \u0026#34;Mcp-Session-Id: $env:MCP_SESSION\u0026#34; ` -H \u0026#34;MCP-Protocol-Version: 2025-06-18\u0026#34; -d $body Typical uses: mirror absences from the leave system into the resource pool on a rolling basis, pull capacity and plan/actual reports on a schedule, generate projects from templates, set a view reproducibly for a screenshot. Every tool describes input and output as a complete JSON schema; both are enforced at runtime. Field names are English and identical in both directions, so an answer can be passed on to the next call without renaming.\nTwo pitfalls when starting automatically: start Rillsoft Project from PowerShell or cmd, because a POSIX shell such as Git Bash rewrites the /mcp flag into a path. And the server listens only a few seconds after the program has started.\nHow fast does the server respond? # Measured on the largest shipped sample project of the plant engineering package with 650 elements, 637 dependencies and about 1,500 assignments, in the debug build on the reference machine:\nOperation Time open the project 7.8 s (control measurement on another machine: 6.6 s) read the complete tree 2.0 s (control measurement: 1.1 s) memory after opening 102 MB mutating call about 0.4 s on this project, about 0.16 s on a small one Working with a finished project is uncritical. Only the scripted construction of large projects is slow, because every mutating call creates a complete undo snapshot; the whole plant engineering package with twelve projects takes about 16,700 calls.\nWhat about several instances? # Rillsoft Project is a single-document application: one instance, one project, one port. The server binds exclusively to its port; a second instance on the same port fails at start and reports this in the status line. For parallel projects every instance gets its own port (/mcp:3928, /mcp:3929, …) and its own server entry in the client. There is deliberately no automatic port search – the client must know which instance it addresses. There is no project directory and no addressing by project id; a project is opened by its file path.\nHow does the server report errors? # Protocol errors and business rejections are separate: the caller cannot correct a protocol error, but builds the second attempt from a business rejection.\nCase Answer Origin header present HTTP 403 API key set and Authorization wrong HTTP 401 path not exactly /mcp HTTP 404 request after initialize without session or protocol revision HTTP 400 unknown or expired session (30 minutes idle) HTTP 404 – start again with initialize arguments violate the input schema JSON-RPC -32602 with field path, e.g. arguments.timescale.level unknown UUID, conflict, lock, licence, read-only result.isError: true with plain text and a stable code in _meta.errorCode The error text is an agent\u0026rsquo;s self-correction channel. It names the field path, the permitted values or the tool that establishes the missing state. Next to it stands a stable English error code that is the same in the German, English and Russian language versions – a retry rule is built on the code, not on the wording. At most 32 sessions run concurrently; JSON-RPC batches are rejected.\nIf no port opens after a hard program end: the auto-recovery dialog waits for an answer when the server was started via the setting rather than the flag. Answer the recovery files *.mbk under %TEMP%\\Rillsoft or remove them beforehand for scripted runs.\nReference: the ten tool areas # The six cards above summarise; in full, the tools cover ten areas – the grouping of the product documentation. The contract per tool – schemas, access classes, error codes – is described on the developers page; what an area looks like in practice is shown by the linked examples.\nArea What a client does with it Read the project and its conflicts read the complete computed status with dates, float, critical path and assignments; plus the six warning lists of the info panel: delayed, overloaded, lost, unassigned or partially assigned, cross-project Analyse capacity set the resource and capacity view and read it as a report – demand against supply per role, team, person, machine, material (example: find a resource bottleneck) Staff candidates per task with availability, free capacity, cost and schedule conflict; assistants for many tasks Multi-site planning preferred team on the subproject, open the candidate filter, staff across sites (example: staff across sites) Build the project create subprojects, tasks, dependencies, roles, people, machines, material; restructure, split, schedule Baseline and plan/actual create and select baselines, read the three comparison views for time, effort and cost (example: compare the plan with its baseline) Actual data progress per task, status date, status-date scheduling, progress derivation Resource pool read master data; open a work unit, maintain master data, mirror absences, calendars with holiday source, save once Portfolio open a portfolio without dialogs and evaluate the projects it contains Session and display undo and redo, open and save files, control window layout, columns, outline, property panel Next step # The prompt library shows sixteen questions with prerequisites, tool chain and limits. The contract with schemas and error codes is on the developers page. If you want to feel it first, begin with getting started.\n","date":"28 September 2026","externalUrl":null,"permalink":"/en/mcp/","section":"The MCP server in Rillsoft Project","summary":"","title":"The MCP server in Rillsoft Project","type":"mcp"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/who-is-overloaded-next-week/","section":"Prompts","summary":"","title":"Who is overloaded next week?","type":"prompts"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/available-resources-for-project/","section":"Prompts","summary":"","title":"Find available resources for Project X","type":"prompts"},{"content":"Every prompt here is a question in the user\u0026rsquo;s own words that an AI assistant puts to the project open in Rillsoft Project. The prompt page states what you need, what you get, how the answer is produced and where its limits are. The AI reads the answer from the calculated view or conflict list in Rillsoft Project – the calculating happens there.\nThe prompts are grouped in four areas: resources (who is free, who fits), capacity (demand against supply per skill and period), project management (dates, risks, status, baseline), and portfolio and workforce (several projects, staffing across sites).\n","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/","section":"Prompts","summary":"","title":"Prompts","type":"prompts"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/examples/staff-across-sites/","section":"AI examples in Rillsoft Project","summary":"","title":"The right resource despite a site bottleneck","type":"examples"},{"content":"Every example shows a concrete planning question, the data used, the steps in Rillsoft Project with a screenshot, the result and the tools behind it. The calculations happen in Rillsoft Project; the AI sets the view and reads the result.\n“Find a resource bottleneck” and “Compare the plan with its baseline” run against industry packages shipped with the setup. “Staff across sites” uses a Rillsoft GmbH rail construction test project. People, companies and projects are synthetic. The two industry-package examples are validated against Rillsoft Project 10 Build 10.0.623; the rail construction example is derived from the test project.\nWhich example answers your question? # Is a skill short in the portfolio – where, how many hours, in which projects? Then find a resource bottleneck. Is the local team not enough although the group has people? Then staff across sites. Has the plan slipped against its baseline – in dates, effort or cost? Then compare the plan with its baseline.\n","date":"28 September 2026","externalUrl":null,"permalink":"/en/examples/","section":"AI examples in Rillsoft Project","summary":"","title":"AI examples in Rillsoft Project","type":"examples"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/examples/compare-with-baseline/","section":"AI examples in Rillsoft Project","summary":"","title":"Compare the plan status with the baseline","type":"examples"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/missing-skills/","section":"Prompts","summary":"","title":"Which skills are missing for the scheduled work?","type":"prompts"},{"content":"This page describes the contract the MCP server of Rillsoft Project keeps with every client: how a tool is described, how input and output are structured, what an error contains and which rules apply to undo, read-only and session. Starting the server, the handshake and access protection are on the MCP page. The complete tool catalogue is not maintained by hand but generated from tools/list of the released product build; it follows as soon as that build is named.\nWhat an entry in tools/list carries # Field Meaning name canonical name with prefix rillsoft_, unique within the server title short display name, English description selection aid including effect, preconditions and limits, English inputSchema complete JSON schema including nested objects and list items, additionalProperties: false outputSchema schema of the successful structuredContent, equally complete annotations readOnlyHint, destructiveHint, idempotentHint, openWorldHint destructiveHint is conservatively true wherever something is deleted, overwritten, discarded or released with loss. idempotentHint is true only if the same call repeatably has the same effect. openWorldHint is true for file and network access, false for pure access to the document model. The list is sorted ordinally by name so that a client keeps its cache; the order is a sort, not a contract about positions.\nBoth schemas are enforced at runtime. The server validates arguments before the call reaches the application; a structurally invalid call never touches the project and leaves no undo step. Every successful structuredContent is validated against its outputSchema; a violation is an internal error, not a silent delivery.\nLanguage boundary # The server has no session language. It answers every client in the language of the running Rillsoft Project – German, English or Russian. What is read by machines stays the same everywhere:\nLevel DE build EN build RU build Stability tool names, arguments, result fields, enum values English English English identical title, description in tools/list English English English byte-identical error codes (error.data.code, _meta.errorCode) English English English identical error messages, note[], command, label, conflictText German English Russian localised Even a localised message names taskUuid, machine_role or rillsoft_resource_pool_catalog_list unchanged – the reader should be able to build the next call from it.\nField names and value ranges # Arguments and result fields carry English lowerCamelCase names, and the same business value has the same name in both directions: what the project tree returns as durationHours, the task update accepts as durationHours. An answer can be passed on without renaming. Enum values are English lower_snake_case: machine_role, capacity_driven, resource_chart; single-part values stay one word. The five dependency types are finish_start, finish_start_no_delay, start_start, finish_finish and start_finish. Every bounded value range appears as an enum in the inputSchema; the description explains the meaning of the values and draws the line to the neighbouring value. Dates in the format DD.MM.YYYY hh:mm (time optional) or YYYY-MM-DDThh:mm; durations in hours. A date such as 31.02.2026 is rejected instead of silently rounded to 3 March. Objects are addressed by their UUID; every creating call returns it. WBS codes are assigned by Rillsoft Project itself. Readable labels from the user interface are called label; they depend on the language and are not keys. Answer and error # Every tool answer delivers the result twice: as plain text in content[0].text (JSON, YAML for reports) and machine-readable in structuredContent. A business rejection comes as isError: true with the stable code in _meta.errorCode; the first line of the text repeats the code:\n{\u0026#34;id\u0026#34;:9,\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;result\u0026#34;:{\u0026#34;content\u0026#34;:[{\u0026#34;text\u0026#34;:\u0026#34;errorCode: rejected\\nNo task with UUID \u0026#39;xyz\u0026#39; found\u0026#34;,\u0026#34;type\u0026#34;:\u0026#34;text\u0026#34;}],\u0026#34;isError\u0026#34;:true,\u0026#34;_meta\u0026#34;:{\u0026#34;errorCode\u0026#34;:\u0026#34;rejected\u0026#34;}}} The same error in three builds – the code is the identifier, the text the explanation:\nBuild _meta.errorCode content[0].text from line 2 German invalid_date_format Ungültiger Wert für 'start': '32.13.2020' — erwartet wird DD.MM.YYYY hh:mm oder YYYY-MM-DDThh:mm English invalid_date_format Invalid value for 'start': '32.13.2020' - DD.MM.YYYY hh:mm or YYYY-MM-DDThh:mm is expected Russian invalid_date_format Недопустимое значение для 'start': '32.13.2020' — ожидается DD.MM.YYYY hh:mm или YYYY-MM-DDThh:mm Schema violations come as JSON-RPC error -32602 with error.data.code and a language-neutral field path in error.data.field, e.g. arguments.criterion with the list of permitted values. The error classes:\nError class Behaviour schema error (type, required field, unknown field, value range) -32602 before the jump into the application; the project is not touched validation error (unknown UUID, invalid date, unknown id) tool error before the command begins; project untouched conflict on completion (working time, fixed dates, write protection) automatic rollback; tool error with the conflict reason unknown method, batch, lifecycle violation -32601 or -32600 session limit reached -32000 The set of codes is cut at category level – around thirty codes instead of three hundred messages. There is no rejection without a code; where a handler sets none, the collective code rejected applies. Retry rules are built on the code, never on the wording.\nAccess classes, undo and session # Every tool belongs to exactly one access class. It yields both the readOnlyHint and the filtering in read-only mode, so the two cannot diverge.\nClass Rule read-only changes neither task, assignment, date nor file; no undo step. Some tools of this class visibly change window or view state – their description says so mutating exactly one undo step per call, the same path as an action in the user interface; recalculation, critical path and view are updated on completion session file and session operations: create, open, save, export a project, switch the pool, undo and redo. They create no undo step; after creating or opening, the command history starts afresh Undo and redo are tools themselves and operate the same history as the user interface, including steps a person made there. The history stores a complete snapshot per command; very many single calls therefore take time.\nProtocol rules that may differ from what you expect # Only protocol revision 2025-06-18 is negotiated; older revisions are rejected. initialize assigns Mcp-Session-Id; notifications/initialized unlocks the tools. Every further request carries session and MCP-Protocol-Version, otherwise 400. At most 32 sessions, expiry after 30 minutes idle, DELETE /mcp ends one. JSON-RPC batches are rejected. Only the absence of id marks a notification; id: null is a request. params.arguments is required as soon as the tool has parameters; a forgotten arguments would otherwise be a silent call with default values. Paths are absolute (drive or UNC) with the matching extension; listing or deleting files deliberately does not exist. Portfolios have their own open tool; the project tool rejects an .rpp with a hint and vice versa. In a portfolio mutating tools are rejected, the time scale excepted. A walkthrough in eighteen calls # The documented end-to-end sequence across all areas, using the mcp function from the MCP page; \u0026lt;A\u0026gt; is the UUID from the result of the creating call:\n# build and assign mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:1,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_project_create\u0026#34;,\u0026#34;arguments\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;Demo\u0026#34;,\u0026#34;discardChanges\u0026#34;:true}}}\u0026#39; mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:2,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_project_update\u0026#34;,\u0026#34;arguments\u0026#34;:{\u0026#34;start\u0026#34;:\u0026#34;05.10.2026 08:00\u0026#34;,\u0026#34;finish\u0026#34;:\u0026#34;27.11.2026 17:00\u0026#34;,\u0026#34;fixed\u0026#34;:true}}}\u0026#39; mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:3,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_task_create\u0026#34;,\u0026#34;arguments\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;Task A\u0026#34;,\u0026#34;start\u0026#34;:\u0026#34;05.10.2026 08:00\u0026#34;,\u0026#34;durationHours\u0026#34;:16}}}\u0026#39; mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:4,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_task_role_assignment_set\u0026#34;,\u0026#34;arguments\u0026#34;:{\u0026#34;taskUuid\u0026#34;:\u0026#34;\u0026lt;A\u0026gt;\u0026#34;,\u0026#34;roleId\u0026#34;:11001,\u0026#34;quantity\u0026#34;:2}}}\u0026#39; # save a baseline, then change the plan mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:5,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_baseline_create\u0026#34;,\u0026#34;arguments\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;Plan V1\u0026#34;}}}\u0026#39; mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:6,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_task_update\u0026#34;,\u0026#34;arguments\u0026#34;:{\u0026#34;uuid\u0026#34;:\u0026#34;\u0026lt;A\u0026gt;\u0026#34;,\u0026#34;durationHours\u0026#34;:24}}}\u0026#39; # record actual data mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:7,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_task_progress_set\u0026#34;,\u0026#34;arguments\u0026#34;:{\u0026#34;uuid\u0026#34;:\u0026#34;\u0026lt;A\u0026gt;\u0026#34;,\u0026#34;progressPercent\u0026#34;:50}}}\u0026#39; mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:8,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_project_status_date_set\u0026#34;,\u0026#34;arguments\u0026#34;:{\u0026#34;statusDate\u0026#34;:\u0026#34;07.10.2026 08:00\u0026#34;}}}\u0026#39; # plan/actual (time) … mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:9,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_view_state_apply\u0026#34;,\u0026#34;arguments\u0026#34;:{\u0026#34;view\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;time_variance\u0026#34;}}}}\u0026#39; mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:10,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_variance_report_get\u0026#34;,\u0026#34;arguments\u0026#34;:{}}}\u0026#39; # → planned 16 h, actual 24 h, variance 8 h # … and workload, condensed to weeks mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:11,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_view_state_apply\u0026#34;,\u0026#34;arguments\u0026#34;:{\u0026#34;view\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;employee_capacity\u0026#34;}}}}\u0026#39; mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:12,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_timescale_apply\u0026#34;,\u0026#34;arguments\u0026#34;:{\u0026#34;unit\u0026#34;:\u0026#34;week\u0026#34;}}}\u0026#39; mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:13,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_analysis_report_get\u0026#34;,\u0026#34;arguments\u0026#34;:{}}}\u0026#39; # save, take back a slip, reopen the saved state mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:14,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_project_file_save_as\u0026#34;,\u0026#34;arguments\u0026#34;:{\u0026#34;path\u0026#34;:\u0026#34;C:/Projects/Demo.rpj\u0026#34;}}}\u0026#39; mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:15,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_task_update\u0026#34;,\u0026#34;arguments\u0026#34;:{\u0026#34;uuid\u0026#34;:\u0026#34;\u0026lt;A\u0026gt;\u0026#34;,\u0026#34;durationHours\u0026#34;:40}}}\u0026#39; mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:16,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_history_undo\u0026#34;,\u0026#34;arguments\u0026#34;:{}}}\u0026#39; mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:17,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_project_file_save\u0026#34;,\u0026#34;arguments\u0026#34;:{}}}\u0026#39; mcp \u0026#39;{\u0026#34;jsonrpc\u0026#34;:\u0026#34;2.0\u0026#34;,\u0026#34;id\u0026#34;:18,\u0026#34;method\u0026#34;:\u0026#34;tools/call\u0026#34;,\u0026#34;params\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;rillsoft_project_file_open\u0026#34;,\u0026#34;arguments\u0026#34;:{\u0026#34;path\u0026#34;:\u0026#34;C:/Projects/Demo.rpj\u0026#34;,\u0026#34;discardChanges\u0026#34;:true}}}\u0026#39; Every mutating step can be followed live in the visible Rillsoft Project and taken back there individually with Ctrl+Z; the file steps create no undo step. After every mutating call the recalculated plan is available – dates, float, critical path –, not just the changed record; the evaluations in steps 10 and 13 read exactly this state. The documentation closes the walkthrough with a 19th read-only call (rillsoft_project_tree_get) that checks the saved state. The role id in the example comes from the reference pool of the documentation – in your pool the catalogue call returns it.\nWhat follows here # After the contract freeze against the released product build: the catalogue generated from tools/list per tool with purpose, access class, parameters, answer schema, licence and undo notes and a verified example; pages on authentication, security, troubleshooting and changes per product version. Until then: what tools/list of your installation returns is the contract.\n","date":"28 September 2026","externalUrl":null,"permalink":"/en/developers/","section":"Developers: the MCP server contract","summary":"","title":"Developers: the MCP server contract","type":"developers"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/candidates-for-task/","section":"Prompts","summary":"","title":"Which suitable candidates are available for this task?","type":"prompts"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/capacity-bottlenecks-three-months/","section":"Prompts","summary":"","title":"Capacity bottlenecks for the next three months","type":"prompts"},{"content":"Five steps, each with a check that shows it worked. You need an installed Rillsoft Project 10 and an AI client that speaks the Model Context Protocol over HTTP. Everything runs on your machine; nothing is sent to Rillsoft.\nIf you do not use Rillsoft Project yet: product information is on the Rillsoft Project page.\n1. Enable the MCP server # In Rillsoft Project open Settings → MCP server, set the active switch and leave read-only mode switched on for now. The port stays at the default 3928, the API key stays empty.\nCheck: The status line on the same page shows \u0026ldquo;running on port 3928\u0026rdquo;. If it shows \u0026ldquo;enabled but blocked\u0026rdquo;, a second instance occupies the port – close it or enter another port.\n2. Open an industry example # Via File → Open choose from the shipped examples the lead project of the mechanical engineering package: folder 02_maschinenbau, project \u0026ldquo;Montagelinie MX-200\u0026rdquo; (assembly line MX-200; the shipped sample data is in German) – 60 people in seven teams, four projects and a base load in the package. All people, companies and dates in it are synthetic, you cannot break anything – and in read-only mode you cannot change anything anyway.\nCheck: The Gantt chart shows the project with its phases from order clarification to project closure.\n3. Connect your AI client # Enter the server in your client:\n{ \u0026#34;mcpServers\u0026#34;: { \u0026#34;rillsoft-project\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;http\u0026#34;, \u0026#34;url\u0026#34;: \u0026#34;http://127.0.0.1:3928/mcp\u0026#34; } } } The format follows the MCP specification; field names may differ per client – your client\u0026rsquo;s documentation is authoritative. We have verified the connection with Claude and Codex.\nCheck: The client lists the server\u0026rsquo;s tools – in read-only mode only the read-only ones. If the list stays empty, check port and path: /mcp is exact, /mcp/ is a 404.\n4. Ask the first question # Ask in the client:\nSummarize the current project status: dates, progress, open conflicts, in five paragraphs.\nCheck: The answer names the project name, the period and the phases from the Gantt chart and nothing that is not in the project. If the client asks for confirmation per tool call, you see that it uses read-only tools only. More questions are in the prompt library.\n5. Change and take it back with Ctrl+Z # Switch read-only mode off in the settings and ask a mutating question:\nMove the task \u0026ldquo;Fördertechnik-Montage\u0026rdquo; (conveyor assembly) two weeks later and show me how the capacity view for industrial mechanics changes.\nWatch Rillsoft Project: the task moves, the follow-on dates move with it, the capacity view changes. Then press Ctrl+Z in Rillsoft Project.\nCheck: The Gantt chart jumps back to the starting state. Every mutating call by the AI is an ordinary editing step – you take it back like any of your own. The difference to moving a date by hand: Rillsoft Project recalculates follow-on dates and capacity – the AI only gave the instruction.\nIf something is stuck # Symptom Cause and remedy client reports 400 session or protocol revision missing in the request – the client must send initialize and then include Mcp-Session-Id and MCP-Protocol-Version: 2025-06-18 client reports 401 an API key is set in the settings; the client needs Authorization: Bearer \u0026lt;KEY\u0026gt; client reports 403 the request carries an Origin header as browsers send it; the server rejects that. Use an MCP client, not a browser page no port after a crash the auto-recovery dialog is waiting for an answer. Answer it or start Rillsoft Project with RillPrj.exe /mcp server does not listen immediately it starts a few seconds after the program; wait briefly start from a script fails start Rillsoft Project from PowerShell or cmd – Git Bash rewrites the /mcp flag into a path Afterwards # The MCP page explains server, access protection and scripts without AI, the developers page the contract with schemas and error codes. The examples show three cases step by step on the shipped industry packages.\n","date":"28 September 2026","externalUrl":null,"permalink":"/en/get-started/","section":"Get started","summary":"","title":"Get started","type":"get-started"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/demand-vs-capacity-by-week/","section":"Prompts","summary":"","title":"Compare demand with available capacity by week","type":"prompts"},{"content":"The AI connection is built into Rillsoft Project itself – there is no Rillsoft cloud endpoint. Which way fits depends only on whether Rillsoft Project already runs on your machine.\nWhich way is right for me? # If Rillsoft Project 10 already runs on your machine, path 1 is all you need: switch on the MCP server, register your AI client – five steps, each with a check. If you do not know Rillsoft Project yet, path 2 takes you through the free 30-day version with the industry examples; the MCP server is built into Rillsoft Project 10. Path 3 is the cloud variant for teams – until it is confirmed that its desktop client contains the MCP server, path 1 remains the safe start.\n","date":"28 September 2026","externalUrl":null,"permalink":"/en/connect/","section":"Three ways to Rillsoft AI","summary":"","title":"Three ways to Rillsoft AI","type":"connect"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/shared-machine-bottleneck/","section":"Prompts","summary":"","title":"Which shared machines create the largest bottleneck?","type":"prompts"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/capacity-after-rescheduling/","section":"Prompts","summary":"","title":"How does the capacity view change if work is rescheduled?","type":"prompts"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/delayed-tasks-no-buffer/","section":"Prompts","summary":"","title":"Which tasks are delayed or have no free float left?","type":"prompts"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/biggest-risks/","section":"Prompts","summary":"","title":"What are the biggest risks for Project X?","type":"prompts"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/project-status-summary/","section":"Prompts","summary":"","title":"Summarize the current project status","type":"prompts"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/compare-with-baseline/","section":"Prompts","summary":"","title":"Compare the current plan with the selected baseline","type":"prompts"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/projects-competing-for-resources/","section":"Prompts","summary":"","title":"Which projects compete for the same resources?","type":"prompts"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/phase-starts-two-weeks-later/","section":"Prompts","summary":"","title":"What happens in Project X if phase Y starts two weeks later?","type":"prompts"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/outside-preferred-team/","section":"Prompts","summary":"","title":"Find qualified people outside the preferred team","type":"prompts"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/prompts/import-project-from-excel/","section":"Prompts","summary":"","title":"Turn my Excel sheet into a project in Rillsoft Project","type":"prompts"},{"content":"","date":"28 September 2026","externalUrl":null,"permalink":"/en/","section":"Rillsoft AI – Rillsoft Project meets AI","summary":"","title":"Rillsoft AI – Rillsoft Project meets AI","type":"page"},{"content":"rillsoft.ai is a service of Rillsoft GmbH. Publisher and party responsible for the content is Rillsoft GmbH. \u0026ldquo;Rillsoft AI\u0026rdquo; is a product designation of Rillsoft GmbH, not a separate provider. The German version of this page is the legally binding one; this English version is a translation.\nInformation pursuant to § 5 DDG (German Digital Services Act) # Provider:Rillsoft GmbH Mollenbachstr. 14 71229 Leonberg, Germany Represented by:Dimitri Sapunou (Managing Director) Phone:+49 7152 30725570 E-mail:info@rillsoft.de Website:www.rillsoft.de Commercial register:Amtsgericht Leonberg, HRB 3053 VAT ID:DE222015909 Responsible for content pursuant to § 18 (2) MStV # Dimitri Sapunou, Rillsoft GmbH, Mollenbachstr. 14, 71229 Leonberg, Germany.\nLiability for content # This website has been created with the greatest possible care. We cannot, however, guarantee that its content is correct, complete or up to date. As a service provider we are responsible for our own content on these pages under general law pursuant to § 7 (1) DDG. Pursuant to §§ 8 to 10 DDG we are not obliged to monitor transmitted or stored third-party information or to investigate circumstances that indicate unlawful activity.\nThe content on rillsoft.ai describes how Rillsoft Project works together with AI assistants and scripts through its built-in MCP server. Prompts, answers and examples shown serve as illustrations. They do not guarantee a correct, complete or decision-ready AI answer and do not replace project-specific, legal or tax advice. Suitability for a specific use case must be checked in each individual case.\nSample data # All projects, people, companies, places and cost figures shown on rillsoft.ai come from the industry packages shipped with Rillsoft Project or from Rillsoft GmbH test projects and are synthetic. Any resemblance to real persons or companies would be coincidental.\nLiability for links # Our website contains links to external third-party websites, in particular to other services of Rillsoft GmbH (e.g. https://www.rillsoft.de), over whose content we have no control. We therefore cannot accept any liability for this third-party content. The respective provider or operator is always responsible for the content of linked pages. Should we become aware of legal infringements, we will remove such links immediately.\nCopyright # The content and works created by the operator on these pages are subject to German copyright law. Reproduction, editing, distribution and any kind of use beyond the limits of copyright law require the written consent of Rillsoft GmbH.\nTrademarks # \u0026ldquo;Model Context Protocol\u0026rdquo; (MCP) and third-party product and brand names mentioned in the content are trademarks or registered trademarks of their respective owners. They are mentioned solely for the purpose of technical classification and do not imply any affiliation with or endorsement by the trademark owners. Names and logos of AI clients are only mentioned with verified approval.\nConsumer dispute resolution # We are neither willing nor obliged to participate in dispute resolution proceedings before a consumer arbitration board.\n","date":"8 September 2026","externalUrl":null,"permalink":"/en/legal-notice/","section":"Rillsoft AI – Rillsoft Project meets AI","summary":"","title":"Legal notice","type":"page"},{"content":"Thank you for your interest in rillsoft.ai. Below we inform you about the processing of personal data when you visit this website and about your rights under the General Data Protection Regulation (GDPR). The German version of this page is the legally binding one; this English version is a translation and describes the same facts.\nrillsoft.ai is a service of Rillsoft GmbH. The website is a static information website. It offers no accounts, no ordering or cloud functions, no contact form, no upload workflow and no AI chat. It can generally be used without actively providing personal data; technically necessary data (such as the IP address in server log files) is, however, processed with every request.\nController # The controller within the meaning of the GDPR and other data protection provisions is:\nAddress:Rillsoft GmbH Mollenbachstr. 14 71229 Leonberg, Germany Represented by:Dimitri Sapunou (Managing Director) Phone:+49 7152 30725570 E-mail:info@rillsoft.de Website:www.rillsoft.de Further provider details can be found in the legal notice.\nHosting, DNS and TLS via Cloudflare # The domain rillsoft.ai is registered with Cloudflare. The website is delivered as a static site via Cloudflare Pages; Cloudflare also provides name resolution (DNS) and TLS encryption of the connection. The provider is Cloudflare, Inc., 101 Townsend St., San Francisco, CA 94107, USA, represented for users in the European Economic Area by Cloudflare Germany GmbH, Rosental 7, 80331 Munich, Germany.\nWhen you access the website, Cloudflare processes on our behalf the server log files listed below and the connection data required for delivery and protection. This is based on a data processing agreement pursuant to Art. 28 GDPR. Cloudflare operates data centres worldwide; processing outside the European Economic Area is possible. For transfers to the USA Cloudflare relies on its certification under the EU-US Data Privacy Framework and on standard contractual clauses. Further information: https://www.cloudflare.com/privacypolicy/.\nServer log files # When the website is accessed, data is automatically collected and stored in server log files. This may include in particular:\nbrowser type and version operating system the previously visited page (referrer) name of the requested page and amount of data transferred date and time of access the IP address of the accessing system This data serves solely the technically correct operation, security and delivery of the website. It is not merged with other data sources or evaluated in relation to individuals. The legal basis is Art. 6 (1) (f) GDPR (legitimate interest in the secure and stable operation of the website). Log files are stored only as long as required for these purposes.\nLocal MCP server and third-party AI clients # The MCP server described on this website is part of the Rillsoft Project software and runs exclusively on the user\u0026rsquo;s computer. The website establishes no connection to an MCP server, and a visitor\u0026rsquo;s browser does not reach any MCP server. A visitor\u0026rsquo;s planning data does not reach Rillsoft GmbH by visiting this website.\nAn AI assistant that a user connects to their Rillsoft Project is a third-party product. Which data this client transmits to its provider and how it is processed is governed solely by the client\u0026rsquo;s provider. Rillsoft GmbH makes no commitments in this regard and is not responsible for this processing.\nCookies and local storage # This website uses only technically necessary means. Settings for display (such as the chosen light/dark mode) and the on-site search are stored in your browser\u0026rsquo;s local storage. This data remains in your browser and is not transmitted to us.\nWeb analytics or tracking for marketing or statistical purposes does currently not take place. Should audience measurement be used in the future, it will be described here and, where required, activated only after your prior consent (Art. 6 (1) (a) GDPR). Under no circumstances are prompt contents, API keys, project names or answers of an MCP server collected as website analytics.\nContact by e-mail # If you contact us by e-mail, the data you provide (such as name and e-mail address) is stored for the purpose of handling your enquiry. It is not passed on for advertising purposes. The legal basis is Art. 6 (1) (b) GDPR (pre-contractual measures or performance of a contract), otherwise Art. 6 (1) (f) GDPR (legitimate interest in handling enquiries). The data is deleted as soon as it is no longer required for processing and no statutory retention obligations apply.\nLinks to Rillsoft main domains # Content on rillsoft.ai refers to https://www.rillsoft.de. This domain is also operated by Rillsoft GmbH; no personal data is transmitted from rillsoft.ai to it when pages of rillsoft.ai are accessed. Only when you follow a link do the privacy notices of the respective target website apply.\nTransfer of data to third parties # Your personal data is transferred to third parties only where there is a legal basis under data protection law, in particular if\nyou have expressly consented pursuant to Art. 6 (1) (a) GDPR, this is necessary pursuant to Art. 6 (1) (b) GDPR to handle your enquiry, a legal obligation exists pursuant to Art. 6 (1) (c) GDPR, the transfer is necessary pursuant to Art. 6 (1) (f) GDPR to assert, exercise or defend legal claims, or we use service providers as processors pursuant to Art. 28 GDPR (Cloudflare, see above). Retention period # We process and store personal data only for the period necessary to achieve the respective purpose or as required by statutory retention obligations. Once the purpose no longer applies or the periods expire, the data is routinely deleted.\nData security # We take appropriate technical and organisational measures to protect your data against loss, misuse and unauthorised access. TLS encryption is used when delivering the website. Internet-based data transmissions can, however, have security gaps in principle; absolute protection against access by third parties is not possible.\nYour rights as a data subject # Under the GDPR you have the following rights:\nright of access (Art. 15 GDPR) right to rectification (Art. 16 GDPR) right to erasure (Art. 17 GDPR) right to restriction of processing (Art. 18 GDPR) right to data portability (Art. 20 GDPR) right to object to processing (Art. 21 GDPR) right to withdraw consent at any time with effect for the future (Art. 7 (3) GDPR) To exercise your rights or if you have questions about the processing of your data, you can contact info@rillsoft.de at any time.\nRight to lodge a complaint with a supervisory authority # Without prejudice to any other remedies, you have the right under Art. 77 GDPR to lodge a complaint with a data protection supervisory authority if you consider that the processing of your personal data infringes data protection provisions.\nChanges to this privacy policy # We adapt this privacy policy when the legal situation or the actual data processing changes. The current version published here applies.\nVersion: 8 September 2026\n","date":"8 September 2026","externalUrl":null,"permalink":"/en/privacy-policy/","section":"Rillsoft AI – Rillsoft Project meets AI","summary":"","title":"Privacy policy","type":"page"}]