Telesherpa Ontology Platform
Server Details
Ontology platform for field service: AI agents observe, connect and act on business objects.
- Status
- Healthy
- Uptime
- 94.3% over 43 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- telesherpa/telesherpa-mcp
- GitHub Stars
- 0
- Server Listing
- Telesherpa Agentic Enterprise Platform
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 138 tools
There are many direct or near-direct duplicates across the onto_* and ontouser_* namespaces, such as onto_object_show vs ontouser_object_show, onto_interface_show vs ontouser_interface_show, and get_notifications vs ontouser_notification_index. Descriptions often explain the admin vs self-service distinction, but with 138 tools there are still numerous overlapping form, object, report, favorite, action, and team operations that are easy to misselect.
All names are snake_case, but the set mixes several conventions: onto_* domain tools, ontouser_* self-service tools, and unprefixed verbs/nouns like login, register, get_document, show_formdef, list_formdefs, and submit_form_answer. Verb patterns vary between get/list/show/save/create/update/index, and some names like onto_property_def_delete_override are especially opaque.
At 138 tools this is far beyond an appropriate surface for a single MCP server, even a broad ontology platform. The count is inflated by administrative, self-service, duplicate, and legacy-looking tools, making the set difficult to navigate and likely to overwhelm agents.
The surface is broad, but there are significant gaps and dead ends: descriptions reference missing tools such as onto_type_index, onto_property_def_index, onto_link_create_def, onto_link_update_def, and the onto_import_* tools. Lifecycle coverage is also uneven, with no obvious delete for property sets and no direct create/update/delete path for object types in the visible tool list.
Available Tools
138 toolsactivateActivate AccountAInspect
Activate a registered account with the voucher code from the activation email. Meldet sich intern mit loginusername/loginpassword an und loest dann den Voucher ein. Nach der Registrierung per E-Mail erhaltenen 7-stelligen Aktivierungscode hier eingeben. Den Code bekommst du entweder vom Menschen genannt (Standardweg — einfach danach fragen, die Mail kommt in einer Minute) oder per IMAP aus dem Postfach. Benötigt die Login-Daten (E-Mail + Passwort) des registrierten Accounts. Entfernt die 'notactivated'-Rolle und gibt vollen Zugriff. | EN: activation, onboarding, account setup
| Name | Required | Description | Default |
|---|---|---|---|
| voucher | Yes | Aktivierungscode aus der E-Mail | |
| loginpassword | Yes | Passwort des registrierten Accounts | |
| loginusername | Yes | E-Mail-Adresse des registrierten Accounts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readonly, non-idempotent, open-world operation. The description adds concrete behavioral context beyond that: it logs in internally with the given credentials, redeems the voucher, removes the 'notactivated' role, and grants full access. That is valuable operational detail. It does not discuss failure modes or reversibility, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well front-loaded and states the core action. However, the description is bilingual, repeats the voucher-code concept several times, and includes some redundant German sentences. It is informative but not tight, so it earns a middle score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with three required parameters, annotations, and no output schema, the description covers the essential context: required credentials, code source, and the resulting account effect. It does not explain error behavior or return values, but the schema and annotations carry enough of that structural load. The description is therefore mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description reinforces the voucher as a 7-digit activation code from email and identifies the login fields as the registered account's email and password. This adds some clarity but is largely redundant with the schema, matching the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Activate a registered account with the voucher code.' An agent can understand the core action without opening the schema. It does not explicitly differentiate from nearby sibling tools such as register or redeem_invite_code, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful usage context: the code comes after email registration and can be obtained from a human or via IMAP. It also states that login credentials are required. However, it does not explicitly say when to use this tool instead of siblings like register, login, or redeem_invite_code, 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.
add_code_allowlist_entryAdd Code Allowlist EntryAInspect
Eine einzelne E-Mail-Adresse oder ein Adressmuster zur Allowlist eines Codes hinzufuegen. Ergaenzt bestehende Eintraege (loescht nichts). Nutze es fuer einzelne Nachzuegler; fuer viele Adressen ist der Excel-Upload upload_code_allowlist der richtige Weg. Entfernen: delete_code_allowlist_entry. | EN: allowlist, permission, whitelist, code
| Name | Required | Description | Default |
|---|---|---|---|
| code_id | Yes | Code-ID | |
| pattern | Yes | z.B. 'hans@firma-x.de', 'firma-x.de' oder '*@*.subauftrag-x.de' | |
| pattern_type | Yes | 'email' (exakte Adresse), 'domain' (alles nach @) oder 'glob' (Wildcard * und ?, sicher in Regex uebersetzt, kein rohes Regex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=false, readOnlyHint=false and idempotentHint=false; the description adds that the operation only appends and 'loescht nichts', reinforcing the non-destructive profile. It does not, however, say what happens when the same address already exists, which matters given the explicit non-idempotent hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and the alternative routing are front-loaded in the first three sentences, with no redundant restatement. The trailing '| EN: allowlist, permission, whitelist, code' keyword line is search padding rather than agent-relevant information and slightly dilutes an otherwise tight description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema absent, three fully documented parameters, and annotations covering the safety profile, the description supplies enough to call the tool correctly. The only meaningful gap is duplicate/conflict behavior for an appended entry, which an agent would want before retrying.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already supplies concrete examples ('hans@firma-x.de', glob wildcards) and pattern_type semantics. The description only restates at a high level that an address or pattern is added, adding no syntax or format detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (hinzufuegen) and resource (einzelne E-Mail-Adresse/Adressmuster zur Allowlist eines Codes) and scopes it to a single entry. It explicitly distinguishes the tool from upload_code_allowlist (bulk) and delete_code_allowlist_entry (removal), so an agent can select it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('fuer einzelne Nachzuegler'), names the alternative and its condition ('fuer viele Adressen ... upload_code_allowlist'), and routes removal to delete_code_allowlist_entry. Both exclusions and alternatives are stated, 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.
auth_statusCheck Auth StatusARead-onlyIdempotentInspect
Zeigt den Auth-Zustand dieser Verbindung: ob der Bearer-Token gueltig ist, welche Rollen er traegt und welcher naechste Schritt ansteht. Rein lesend, aendert nichts am Konto. Nuetzlich, wenn unerwartet wenige Tools sichtbar sind — die Antwort nennt Rollen, Tool-Zahlen und den weiteren Weg (login, refresh_access_token, register). Referenz zur Plattform-Dokumentation: SKILL.md im Repo https://codeberg.org/telesherpa/skill-telesherpa-com (Unterordner telesherpa-ontology-platform/); die Antwort fuehrt dazu guide_repo, guide_entry und guide_version. | EN: auth, status, documentation, tool-reference, login
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description's safety claim is partly redundant. However, it adds valuable return context: the response includes roles, tool counts, next steps, and guide_repo/guide_entry/guide_version. This is useful behavioral detail beyond annotations, with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and trigger are front-loaded in the first two sentences. The description is slightly longer than necessary, with a repo URL and an English keyword list appended, but these extras do not obscure the main guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description must explain what comes back, and it does: roles, tool counts, next step, and guide fields. It also covers the zero-param safety profile via annotations. Nothing critical is missing for an agent to decide and invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and the schema is empty, so no parameter semantics are needed. The baseline for a zero-parameter tool is 4; the description does not need to add param details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Zeigt den Auth-Zustand dieser Verbindung') and enumerates exactly what is reported: token validity, roles, and the next step. It is clearly distinct from siblings like login, refresh_access_token, and register, which it names as alternative paths.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger condition: 'Nuetzlich, wenn unerwartet wenige Tools sichtbar sind'. It also names the alternatives (login, refresh_access_token, register) and the outcome of following that path, leaving no ambiguity about when to call this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_passwordChange PasswordAInspect
Das Passwort des EIGENEN Kontos aendern. Nutze es, wenn der Mensch das Passwort wechseln will. Das alte Passwort ist Pflicht; das neue muss zweimal identisch uebergeben werden. Es aendert nur das eigene Konto — fremde Passwoerter kann auch ein Administrator nicht setzen (Konten verwaltet er mit onto_user_update). Nach der Aenderung sind laufende Tokens des Kontos weiterhin gueltig; eine Neuanmeldung ist nicht noetig. | EN: password, credentials, account
| Name | Required | Description | Default |
|---|---|---|---|
| password | No | New password (required for POST) | |
| old_password | No | Current password (required for POST) | |
| password_confirm | No | Confirm new password (required for POST) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations (readOnlyHint=false only signals mutation) by stating that existing tokens remain valid and no re-login is required — genuinely useful post-mutation context. It does not cover failure behavior (wrong old password, mismatch of the two new entries), so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is front-loaded and each sentence carries information (trigger, constraints, scope boundary, post-condition). The bilingual keyword tail "| EN: password, credentials, account" is retrieval padding that adds no instruction value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a simple 3-param schema, the description supplies the important behavioral envelope (own account only, tokens survive). The open gap is the mismatch between the empty `required` array and the prose calling the fields mandatory — an agent could infer optional inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description adds cross-field semantics the schema does not express: the old password is mandatory and the new one must be supplied twice identically. Useful, though it doesn't clarify why the schema lists the fields as optional while the text calls them required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (change the password of one's OWN account) and explicitly bounds scope to the caller's own account, distinguishing it from sibling `onto_user_update`, which it names for account administration. An agent can pick between the two 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the triggering condition ("Nutze es, wenn der Mensch das Passwort wechseln will") and an explicit exclusion with the alternative: foreign passwords cannot be set even by an admin, accounts are managed via `onto_user_update`. That is when-to-use, when-not, and the alternative all in one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_profileChange Account ProfileAIdempotentInspect
Das Profil des EIGENEN Kontos lesen oder aendern (Anzeigename, Telefon, Organisation, Notizen, Skills). Ohne Felder aufgerufen liefert es den Ist-Stand; mit Feldern aendert es. Nutze es fuer Stammdaten der eigenen Person. Es aendert KEINE Zugriffsrechte (Rollen) — dafuer ist ein Administrator zustaendig (onto_user_update). Fremde Profile: onto_user_update_profile. Das eigene Konto samt Rollen lesen: onto_user_get. | EN: file, upload, document, attachment
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Notes | |
| phone | No | Phone number | |
| skills | No | Skills | |
| displayname | No | New display name | |
| organisation | No | Organisation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive behavior, and the description adds useful context: empty call returns current state, populated call changes fields, and roles are not modified. It does not fully explain partial-update semantics when only some fields are supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core German description is dense and front-loaded with the key read/change distinction. The appended English keyword string is irrelevant to profile operations and does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-optional-parameter tool with no output schema, it explains the read/update behavior and role boundaries well enough to call correctly. It still leaves partial-update and return-value specifics implicit, and the file/upload keywords blur capability boundaries.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters. The description lists the same fields but adds no format details, constraints, or partial-update behavior, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence clearly states that this reads or changes the user's own profile fields, and it distinguishes own-profile work from role and foreign-profile operations. However, the trailing English keywords 'file, upload, document, attachment' are unrelated and can mislead about the tool's purpose, so it is not 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance: own profile data, no fields for reading, fields for changing, and it excludes role changes and foreign profiles. The named alternatives onto_user_update and onto_user_update_profile do not appear in the provided sibling list, which reduces actionability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_invite_codeCreate Invite CodeAInspect
Einen Einladungscode anlegen, mit dem sich neue Mitglieder selbst registrieren koennen. Der Code steuert, welchen Zugang der Beitragende erhaelt. Nutze es zum Anwerben von Mitgliedern/Subunternehmern. Den Code weitergeben (nicht hier ablegen) und mit list_invite_codes verwalten; ungueltig machen: revoke_invite_code. Weg (b) nach der Registrierung: nach dem eigenen Aufbau Menschen und andere Agenten in deinen Scope einladen. Die Einladung geht in beide Richtungen | EN: invitation, invite, voucher, code, bundle
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | scope (Default) = Code vergibt Scope-Rechte; management = Code macht das Konto zu einem verwalteten Konto dieses Scopes (setzt KEINE Scope-Rechte, verlangt Zustimmung des Einloesenden) | |
| label | No | Freitext-Notiz zur Unterscheidung mehrerer Codes (z.B. 'Pflegeteam Q3') | |
| can_read | No | 1 = Code vergibt Lese-Recht | |
| max_uses | No | Maximale Anzahl Einloesungen (leer = unbegrenzt) | |
| scope_id | Yes | Scope-ID, fuer den der Code gelten soll. Braucht can_manage_scope=1. | |
| can_write | No | 1 = Code vergibt Schreib-Recht | |
| unlimited | No | Nur bei kind=management: 1 = ausdruecklich unbegrenzt. Ohne diese Angabe ist max_uses bei Verwaltungs-Codes Pflicht. | |
| expires_days | No | Code laeuft nach so vielen Tagen ab (Default 30). Bereits beigetretene Mitglieder bleiben Mitglied, auch nach Ablauf. | |
| can_manage_scope | No | 1 = Code vergibt Verwalten-Recht (kann selbst wieder Codes/Mitglieder verwalten) | |
| requires_management | No | Nur bei kind=scope: 1 (Default) = Code setzt voraus, dass der Einloesende schon von einem Unternehmen verwaltet wird; 0 = Code funktioniert fuer jedes Konto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true and non-idempotency, so the mutation profile is covered. The description adds that the code governs what access the redeemer receives and that the code itself must be handed off elsewhere rather than recorded here. It does not state whether repeated calls with the same label create duplicates or what the response contains, which would be the higher-value addition for a create tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, but the definition is padded: the 'Weg (b) | Die Einladung geht in beide Richtungen' passage is vague and off-topic, and the 'EN: invitation, invite, voucher, code, bundle' keyword tail is search metadata rather than agent guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter create tool with full schema coverage and no output schema, the description supplies the purpose, the permission dimension, the handoff rule and the two sibling routes, which is close to sufficient. It would be complete with a note that the created code is returned by the call and a hint about the can_manage_scope prerequisite.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains kind, max_uses, unlimited, expires_days and the permission flags in detail. The description adds nothing about individual parameters beyond the general 'der Code steuert, welchen Zugang der Beitragende erhaelt'. With the schema doing all the work, the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a concrete verb+resource (create an invite code) plus its effect: new members can self-register and the code determines the access the redeemer gets. Siblings are named explicitly (list_invite_codes, revoke_invite_code), so the boundary is visible. However, the trailing 'Weg (b)' sentence about inviting people/agents into your scope after setup describes a different workflow and blurs what this tool actually does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('Nutze es zum Anwerben von Mitgliedern/Subunternehmern') and explicit routing to alternatives for the adjacent tasks: manage with list_invite_codes, invalidate with revoke_invite_code. It also warns not to store the code here. The only gap is that the ambiguous 'Weg (b)' paragraph reads like an alternative usage without saying when that path applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_code_allowlist_entryDelete Code Allowlist EntryADestructiveInspect
Einen Eintrag aus der Allowlist eines Codes entfernen. Betrifft nur die Zulassung — bereits registrierte Konten bleiben bestehen. Nutze es, um einzelne Adressen zu sperren. Bulk-Ersetzung der ganzen Liste: upload_code_allowlist. | EN: allowlist, permission, whitelist, code
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID des Allowlist-Eintrags (aus list_code_allowlist) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered. The description adds genuinely non-obvious context: only the allowlist admission is affected and already-registered accounts remain untouched — this is exactly the kind of side-effect disclosure an agent needs before a destructive call. It omits whether the action is reversible or what happens if the ID no longer exists (relevant given 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Sentences are short, front-loaded, and behaviour-first (what is removed, what survives, when to use it, alternative). The trailing "EN: allowlist, permission, whitelist, code" keyword block is search padding rather than agent-useful content and slightly dilutes an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with no output schema, the description covers scope, non-effect on registered accounts, and the sibling alternative. The notable remaining gap is failure behaviour / permissions, which matters because the operation is explicitly non-idempotent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the id parameter already documents its own origin ("aus list_code_allowlist"). The description adds no further detail about the parameter, so this is the standard baseline-3 case where the schema carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (entfernen/delete) and a specific resource (an entry in a code's allowlist), and explicitly contrasts scope with upload_code_allowlist, which replaces the whole list. An agent can distinguish this from add_code_allowlist_entry and upload_code_allowlist 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear use case ("Nutze es, um einzelne Adressen zu sperren") and names the alternative for a different intent (bulk replacement via upload_code_allowlist). It stops short of stating when this tool should NOT be used (e.g. blocking a whole domain), but the routing signal is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_documentGet DocumentARead-onlyIdempotentInspect
Ein Dokument (PDF, Office-Datei) ueber urlslug und filetoken als Rohdatei abrufen. Rein lesend. Nutze es, wenn du die beiden Kennungen hast. Fuer Bilder gibt es get_image; die Kennungen bekommst du aus dem Objekt (onto_object_show). Nicht zum Hochladen: dafuer upload_file_to_object. | EN: get, document
| Name | Required | Description | Default |
|---|---|---|---|
| urlslug | Yes | URL slug for the file | |
| filetoken | Yes | File token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'Rein lesend' is largely redundant. The description does add value beyond them by disclosing the return shape ('als Rohdatei') — raw file bytes rather than metadata — which matters because there is no output schema. It stops short of covering auth requirements or what happens on an invalid token.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core capability and the identifier prerequisite are front-loaded in the first two sentences, with exclusions following. The trailing '| EN: get, document' machine-generated tag is low-value noise and the bilingual phrasing adds slight friction, but overall there is little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with full schema coverage and rich annotations, the description covers purpose, prerequisites, sibling routing, and the raw-file return nature. The main residual gap is error/edge-case behavior for a bad slug or token, which is minor given how much structured data already exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, and the description only restates that the call is made 'ueber urlslug und filetoken'. It adds no format, provenance, or validation detail beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Ein Dokument (PDF, Office-Datei) ... als Rohdatei abrufen') plus the exact lookup keys (urlslug, filetoken). It actively distinguishes itself from siblings by naming get_image for images and upload_file_to_object for uploads, so an agent can route correctly 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('Nutze es, wenn du die beiden Kennungen hast'), explicit alternatives for adjacent cases (get_image for images, upload_file_to_object for uploads), and it tells the agent where the identifiers come from (onto_object_show). That is the full when/when-not/where-from triad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_imageGet ImageARead-onlyIdempotentInspect
Ein Bild ueber urlslug und filetoken als Rohdatei abrufen. Rein lesend. Nutze es, wenn du die beiden Kennungen hast (sie stehen an Objekten/Bildablagen). Ohne filetoken kommst du an die Datei nicht heran — die Kennungen liefert dir das Objekt (onto_object_show) oder die strukturierte Ablage (onto_file_structured). Nicht zum Hochladen: dafuer upload_file_to_object. | EN: get, image
| Name | Required | Description | Default |
|---|---|---|---|
| urlslug | Yes | URL slug for the file | |
| filetoken | Yes | File token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context beyond annotations, including that the result is a raw file and that filetoken is mandatory for access.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and efficient, with the core action and prerequisites stated first. Some wording is redundant with annotations, such as 'Rein lesend', but the rest is purposeful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with full schema coverage and rich annotations, the description is complete: it explains the raw-file return, required identifiers, identifier provenance, and the upload alternative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning by clarifying that urlslug and filetoken are identifiers found on objects or structured image storage, and that filetoken is essential to retrieve the file.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: retrieve an image as a raw file using urlslug and filetoken. It also explicitly distinguishes the tool from upload_file_to_object, so an agent can identify its purpose 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage conditions: use it when both identifiers are available, note that filetoken is required, and explain that the identifiers come from onto_object_show or onto_file_structured. It also explicitly names upload_file_to_object as the alternative for uploading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notificationsGet NotificationsARead-onlyIdempotentInspect
Die eigenen Benachrichtigungen abrufen (Meldungen des angemeldeten Kontos). Rein lesend. Nutze es, um neue Meldungen zu finden. Die Self-Service-Variante mit gleichem Inhalt ist ontouser_notification_index — nimm sie, wenn du als Scope-Nutzer arbeitest. Meldungen als gelesen markieren: ontouser_notification_read. Systemprotokolle (Admin): onto_action_logs. | EN: notification, message, alert, inbox, unread
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful scope context by specifying that the notifications belong to the logged-in account, though it does not describe return format or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and scope, then immediately routes the agent to the right alternatives. The extra English keyword line is compact and useful for search/retrieval without obscuring the main instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only notification retrieval tool with rich annotations, the description covers purpose, scope, and alternatives well. It could add a little more about what the notification result contains, but no output schema exists and the core invocation context is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 under the rubric. The description does not need to explain parameter semantics, and no parameter-related ambiguity is introduced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: retrieving the logged-in account's own notifications. It also explicitly distinguishes this tool from ontouser_notification_index, ontouser_notification_read, and onto_action_logs, so an agent can identify its exact role among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear when-to-use guidance ('Nutze es, um neue Meldungen zu finden') and names alternatives with conditions: ontouser_notification_index for scope-user self-service, ontouser_notification_read for marking as read, and onto_action_logs for admin system logs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profileGet Account ProfileARead-onlyIdempotentInspect
Eigenes Profil rein lesend abrufen (Name, E-Mail, Organisation, Notizen, Skills). Kein Schreibpfad. | EN: who am i, my account, profile
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so 'Kein Schreibpfad' is largely redundant. What the description does add beyond structured data is the list of returned fields, valuable since there is no output schema. Missing: auth prerequisites and what happens if the profile is incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, read-only constraint front-loaded, with the returned fields immediately after. The bilingual duplication is slightly redundant but serves keyword discovery rather than bloating the semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read tool with full annotation coverage, the description covers the only real gap by enumerating the returned fields in place of a missing output schema. Nothing an agent needs in order to call it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to disambiguate and the baseline is 4. The description correctly implies a no-argument call that returns the caller's own profile.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and scope ('Eigenes Profil rein lesend abrufen') plus the exact fields returned (Name, E-Mail, Organisation, Notizen, Skills), so the agent knows precisely what it gets. It signals read-only intent ('Kein Schreibpfad'), which implicitly separates it from change_profile/change_password, but 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrases 'Eigenes Profil' and the alias line 'who am i, my account, profile' give clear situational triggers, and 'Kein Schreibpfad' tells the agent this is not the tool for edits. It stops short of naming change_profile as the alternative for mutations, leaving that inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_code_allowlistList Code AllowlistARead-onlyIdempotentInspect
Die E-Mail-Allowlist eines Einladungscodes lesen (welche Adressen/Muster zugelassen sind). Rein lesend. Nutze es als Ist-Stand vor Aenderungen. Einzelne Eintraege ergaenzen/entfernen: add_code_allowlist_entry / delete_code_allowlist_entry. Massen-Upload per Excel: upload_code_allowlist. | EN: allowlist, permission, whitelist, code
| Name | Required | Description | Default |
|---|---|---|---|
| code_id | Yes | Code-ID, dessen Allowlist-Eintraege gelistet werden sollen. Leere Liste = jeder darf den Code einloesen. |
TDQS
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 fully covered; "Rein lesend" largely restates that. The description adds no operational context such as auth requirements, pagination, or what happens when no allowlist exists, so it stays at the baseline for an annotated read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The operational content is front-loaded and every clause carries information (action, scope, read-only nature, sibling routing). The trailing keyword line ("EN: allowlist, permission, whitelist, code") is retrieval-oriented padding rather than task guidance, slightly diluting an otherwise tight description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description covers the scope, the read-only nature, and where the related mutation tools live. It does not describe the returned entry format or ordering, a minor gap for a listing tool whose single parameter is already fully documented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema itself explains that an empty list means anyone may redeem the code. The description adds nothing about code_id format or lookup beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reading the e-mail allowlist of an invitation code, and clarifies what the list contains (which addresses/patterns are permitted). It also names the three sibling tools that handle the mutation/upload cases, so an agent can distinguish it without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it as the current state before making changes, and routes the alternative operations to add_code_allowlist_entry, delete_code_allowlist_entry, and upload_code_allowlist. There is no explicit when-not-to-use statement, but the routing is clear enough to select correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_formdefsList Form DefinitionsARead-onlyIdempotentInspect
Liste aller Formulare (formdefs), die fuer dich sichtbar sind - mit udid, Titel, Feld-Anzahl und je Feld key/label/widget/required. ERSTER SCHRITT, um fachlich das passende Formular zu waehlen: hier siehst du, welche Formulare es gibt und welche Felder sie haben. Die udid nimmst du fuer show_formdef. Sichtbar sind nur Formulare in deinen Scopes (fail-closed). | EN: list, formdefs
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 genuinely new context: visibility is scope-limited and fail-closed, so an agent knows results may be empty by design rather than by error. Return-shape disclosure is also present, though pagination/limits are not mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core guidance (what it returns, use the udid next, scope-limited) is front-loaded and easy to scan. The trailing '| EN: list, formdefs' bilingual tag is redundant given the title and slightly dilutes the otherwise efficient structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description carries the full burden and does so: it enumerates the return fields, explains the visibility rule, and links to the follow-up tool. An agent has everything needed to call it correctly and interpret an empty result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. Schema coverage is 100% and empty, and the description correctly does not invent parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (list all visible formdefs) and enumerates the returned fields (udid, title, field count, per-field key/label/widget/required), which an agent can distinguish from sibling show_formdef. The scope constraint (only forms in your scopes, fail-closed) further sharpens what 'list' means here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly positions itself as the FIRST STEP for choosing the right form and tells the agent to take the udid to show_formdef, giving a clear use context and a named downstream tool. It stops short of naming exclusion conditions versus adjacent siblings like onto_formdef_list_templates, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_invite_codesList Invite CodesARead-onlyIdempotentInspect
Die eigenen Einladungscodes auflisten (wer wurde eingeladen, ist der Code noch gueltig). Rein lesend. Nutze es, um den Code fuer die Weitergabe oder zum Widerrufen zu finden. Neuen Code anlegen: create_invite_code. Ungueltig machen: revoke_invite_code. Die E-Mail-Allowlist eines Codes zeigt list_code_allowlist. | EN: invitation, invite, voucher, code, bundle
| Name | Required | Description | Default |
|---|---|---|---|
| scope_id | Yes | Scope-ID, dessen Codes gelistet werden sollen. Braucht can_manage_scope=1 auf diesem Scope. |
TDQS
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 the read-only nature. It also adds useful behavioral context that the listing shows who was invited and whether the code is still valid. It does not describe pagination or return format, but those gaps are minor for a simple read-only list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and followed by useful routing information to sibling tools. It is mostly efficient, though the appended bilingual keyword list is more search-oriented than explanatory.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, one-parameter list tool with annotations covering safety and idempotency, the description provides enough context to select and invoke it correctly. It gives a basic sense of the returned information, though it could say more about the exact return structure since there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, scope_id, and the schema description coverage is 100%, so the schema already explains its meaning and the required permission. The description does not add further parameter-specific detail beyond what is already in the schema, making the baseline score appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: it lists the user's own invite codes and indicates whether each code is still valid. It also clearly distinguishes this tool from create_invite_code, revoke_invite_code, and list_code_allowlist by naming the sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use the tool: to find a code for sharing or revocation. It also names alternatives for creating a new code, revoking a code, and viewing a code's email allowlist, leaving little ambiguity about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_membersList MembersARead-onlyIdempotentInspect
Die Mitglieder eines eigenen Bereiches auflisten (wer gehoert dazu). Rein lesend. Nutze es, um den Ist-Stand vor Aenderungen zu sehen. Rechte aendern: toggle_member_flag; entfernen: remove_member. Zugang einladen: create_invite_code. | EN: member, participant, membership, team
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Seite (20 Mitglieder pro Seite), Default 1 | |
| scope_id | Yes | Scope-ID. Braucht can_manage_scope=1. Liefert NUR email + Rechte + sp_id je Mitglied, keine weiteren Profildaten. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so 'Rein lesend' adds no information beyond structured data. The one genuinely useful behavioral note — that scope_id requires can_manage_scope=1 and that results contain only email, rights and sp_id — lives in the schema, not the description. With annotations covering the safety profile, the description carries only modest extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is two tight sentences with the action and read-only nature front-loaded, followed by compact alternative routing. The trailing '| EN: member, participant, membership, team' keyword list is slight padding for a human reader, though it aids retrieval matching.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter filtered list with no output schema, the definition covers purpose, safety, and all three adjacent operations, and the schema fills in the authorization requirement and the narrow return payload. Pagination behavior (20 per page) is documented in the schema rather than the description, which is acceptable given full schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: page (20 per page, default 1) and scope_id (requires can_manage_scope=1, returns only email/rights/sp_id) are both fully documented in the schema. The description itself says nothing about either parameter, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (auflisten) and resource (Mitglieder eines eigenen Bereiches) with an explicit scope qualifier ('eigenen'), and adds English synonyms (member, participant, membership, team) that disambiguate the concept. An agent can distinguish it from scope-level siblings like ontouser_scope_index 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names three concrete alternatives with their triggering conditions: toggle_member_flag for rights changes, remove_member for removal, create_invite_code for inviting. It also gives a positive usage motive ('Ist-Stand vor Aenderungen sehen'), so both when-to-use and when-to-use-something-else are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loginLog InARead-onlyInspect
Ein Bearer-Token holen: tauscht client_id (E-Mail) und client_secret (Passwort) gegen access_token + refresh_token. Das ist der Einstieg — ohne Token sind nur die oeffentlichen Tools sichtbar. Nutze es einmalig am Anfang; das Token gilt 10 Stunden. Danach NICHT erneut einloggen, sondern mit refresh_access_token erneuern (dafuer braucht es kein Passwort). Passwort vergessen? Dafuer gibt es kein Tool — das macht der Mensch ueber die Weboberflaeche. Ein Konto gibt es noch nicht: vorher register. Speichere access_token (10 h) UND refresh_token (30 Tage) sofort dauerhaft — die Antwort kommt nur einmal. Mit refresh_access_token (grant_type=refresh_token) erneuerst du ohne Passwort. | EN: login, authentication, sign in, token
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | Your username/email | |
| client_secret | Yes | Your password/secret |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: token lifetimes (10h access, 30d refresh), the fact that the response is delivered only once and must be persisted immediately, and the fallback path when renewal fails. This is exactly the operational knowledge the readOnlyHint/idempotentHint flags 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core exchange and token lifetimes, with error branches in descending priority. Slightly redundant: the persist-both-tokens and use-refresh_access_token advice is repeated near the end, and the trailing EN keyword list is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by naming exactly what is returned (access_token + refresh_token, once only), plus lifetime and persistence requirements. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already maps client_id to username/email and client_secret to password/secret, so the description adds little on these two fields. It does clarify the OAuth framing (grant_type=refresh_token for the sibling), but that concerns renewal, not this tool's own parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource: exchange client_id/client_secret for access_token + refresh_token. It explicitly distinguishes itself from register (account creation) and refresh_access_token (renewal), so an agent can route correctly 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (once at the start), when-not (do NOT log in again; use refresh_access_token, which needs no password), the prerequisite (register first if no account), and the out-of-scope case (forgotten password is done by a human via the web UI, no tool exists).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_actiondef_deleteDelete Action DefinitionADestructiveIdempotentInspect
Actiondef loeschen (Button entfernen). Rechte: Scope-Manager/Schreiber (can_manage_scope/can_write). | EN: action, button, definition, gate, condition, rule
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Schluessel der Actiondef |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructive/idempotent annotations, the description adds useful behavioral context: the required permission scope and that this removes a button/action definition. It does not contradict annotations; it simply does not discuss side effects such as cascading removal or missing-key behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is short and front-loads the operation, followed by permission information and search keywords. The trailing bilingual keyword list is somewhat incidental, but it does not bloat the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive delete with full annotations and a documented schema, the description provides enough context: operation, object, and authorization. It omits some edge-case behavior, but the annotations and schema already cover the main safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single 'key' parameter documented as 'Schluessel der Actiondef'. The description adds no extra parameter semantics beyond that schema coverage, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair, 'Actiondef loeschen' (delete action definition), and adds 'Button entfernen' to clarify the object. It is clearly a deletion operation, though it does not explicitly name sibling tools such as onto_actiondef_save or onto_actiondef_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the required authorization ('Scope-Manager/Schreiber', can_manage_scope/can_write), which tells the agent the prerequisite for using it. It does not spell out when-not to use it or explicitly compare it with siblings, 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.
onto_actiondef_listList Usable Action DefinitionsARead-onlyIdempotentInspect
Die nutzbaren Action-Definitionen auflisten (welche Buttons an welchen Objekten erscheinen). Rein lesend. Nutze es, wenn du wissen willst, welche Aktion du auf einem Objekt ausfuehren kannst — den key uebergibst du an onto_object_execute_action. Anlegen/Aendern: onto_actiondef_save. | EN: action, button, definition, gate, condition, rule
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Seitennummer (Default 1) | |
| limit | No | Ergebnisse pro Seite, 1..200; der Wert gilt fuer die Sitzung (Standard 10) |
TDQS
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's 'Rein lesend' merely restates that. The genuinely additive content is workflow-related (the returned key feeds onto_object_execute_action) rather than behavioral – nothing about result ordering, pagination semantics, or what fields a definition contains beyond the button metaphor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose, read-only note, usage trigger and alternatives are front-loaded and compact. The trailing bilingual keyword block ('| EN: action, button, definition, gate, condition, rule') is somewhat extraneous but short and clearly demarcated as a search tag line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two optional paging parameters, full schema coverage, no output schema and safety covered by annotations, the description supplies everything needed to decide and call correctly: what is listed, that it is a read, and how the result is used. Only the shape of returned entries is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'page' and 'limit' are already documented, including the session-wide scope of limit. The description adds no parameter-level meaning beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('die nutzbaren Action-Definitionen auflisten') and immediately clarifies the domain meaning ('welche Buttons an welchen Objekten erscheinen'). It also distinguishes itself from sibling tools onto_actiondef_save (create/modify) and onto_object_execute_action (consumes the key), so an agent can pick it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use: 'Nutze es, wenn du wissen willst, welche Aktion du auf einem Objekt ausfuehren kannst'. It names the downstream consumer ('den key uebergibst du an onto_object_execute_action') and the alternative for mutation ('Anlegen/Aendern: onto_actiondef_save'), covering both routing decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_actiondef_saveSave Action DefinitionADestructiveIdempotentInspect
Actiondef anlegen/aendern (Button am Objekt). PFLICHT: body.scopes mit den Scope-IDs, an denen der Button erscheinen soll — du musst dort Manager (can_manage_scope) oder Schreiber (can_write) sein, sonst 403. PUBLIC (15) nur fuer Admins. Beispiel fuer 'Formular am Standort ausfuellen': body = {"object_types":["building"],"scopes":[7],"roles":["member"],"action":{"type":"form_answer","name":"Visite","form":""}}. action.type 'form_answer' oeffnet das Formular und verknuepft die Antwort mit dem Objekt. Actions sind SCOPE-Daten, nicht global. Sehen darf sie, wer einen der Scopes in body.scopes[] lesen darf; AUSFUEHREN nur, wenn das Scope des Objekts in body.scopes[] steht (oder die Def public:true traegt). Ein Mitglied mit can_manage_scope auf SEINEM Scope darf dort eigene Actions anlegen (Kopie der Plattform-Action mit body.scopes=[eigener Scope]) und so die Standard-Actions im eigenen Scope nutzbar machen. Beim Anlegen genau EIN Ziel-Scope. public:true und der PUBLIC-Scope 15 sind Administratoren vorbehalten, SQL-Bedingungen ebenfalls. Ein Scope-Manager kann Actions in seinem Scope per hidden_actions abschalten. | EN: action, button, definition, gate, condition, rule action.result_scope_id (Ergebnis-Scope): bei 'create'/'form_answer' bestimmt er, WO das neue Objekt entsteht. Bei 'update' ist er die BRUECKE: die Aktion darf ein BESTEHENDES Objekt in diesem Scope fortschreiben, auch wenn der Ausfuehrende dort NUR Leserecht hat — schreibbar sind genau die Eigenschaften aus action.props, nur am Zielobjekt der Aktion; danach ist die Bruecke zu (andere Felder 403). Pflicht: Personenbindung ({current_user_email}, {current_profile_id}, {current_user_id}, {user_email} oder {user_person}); bei 'update' zusaetzlich action.props, sonst 400. Merksatz: ein Mitarbeiter braucht KEIN Schreibrecht im Planungs-Scope — Aktion im Planungs-Scope definieren, result_scope_id setzen, Eigenschaften in action.props auflisten. Beispiel Einstempeln: object_types [shift], scopes [80,81], guards [{type: linked_to_user, linktype: worksShift, message: 'Nur die eigene Schicht'}], action {type: update, result_scope_id: 80, props: {actualStart: '{now}', stempelStatus: 'eingestempelt', istGeaendertVon: '{user_email}'}}. guards pruefen VOR dem Ausfuehren und rein lesend: 'linked_to_user' verlangt, dass das Zielobjekt ueber diesen Linktyp mit der handelnden Person verknuepft ist (Richtung egal), sonst 403 mit der eigenen message. Fuer 'nur die eigene Schicht' NIEMALS links.require 'present' nehmen — require ist eine Pruefung, kein Auftrag.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Technischer Schluessel (a-zA-Z0-9_), z.B. pflege_visite | |
| body | Yes | Actiondef-JSON als STRING, z.B. {"object_types":["building"],"scopes":[7],"action":{"type":"form_answer","form":"<udid>"}} | |
| label | Yes | Anzeigetext des Buttons | |
| description | No | Beschreibung (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive/idempotent/non-read-only, but the description adds substantial behavioral context beyond them: authorization failure modes (403 with guard message, 400 without person binding), scope-based visibility vs execution distinction, the result_scope_id 'bridge' that lets a read-only user write a restricted property set, hidden_actions suppression by scope managers, and the warning that two scopes must exist to reach the write scope. This is exactly the kind of non-obvious behavior 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The essential requirements are front-loaded and most sentences carry unique information, but the text is very long, mixes German and English, and contains a garbled keyword fragment ("| EN: action, button, definition, gate, condition, rule action.result_scope_id") that runs into the next idea and is hard to parse. The 'MerkSATZ' and two full examples push length well past what a scanning agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, permission-gated mutation with no output schema, the description covers nearly everything an agent needs: required body fields, scope rights, admin-only flags, guards, result_scope_id, and worked examples. Minor gaps remain — it does not say whether an existing definition with the same key is overwritten or whether key is immutable, which matters for an upsert-style save.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents key/label/body, yet the description still adds real meaning: body.scopes is mandatory, exactly one target scope at creation, public:true restricted to admins, action.type 'form_answer' semantics, required person binding placeholders, and the 'update' case requiring action.props. It supplies two concrete body examples that the schema's single truncated example does not cover.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource phrase: "Actiondef anlegen/aendern (Button am Objekt)", which tells an agent it creates/updates an action definition that renders as a button on objects. It never names its siblings (onto_actiondef_list, onto_actiondef_delete), so the create/update vs list/delete distinction is implied by the verb rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the hard precondition clearly (body.scopes with the scope IDs is PFLICHT, caller must be can_manage_scope or can_write there, otherwise 403) and gives an explicit exclusion (PUBLIC scope 15 and public:true are admin-only). It also explains a legitimate alternative usage path (a scope manager copying a platform action into their own scope). What it lacks is explicit routing to sibling tools for the adjacent operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_catalog_applyApply Catalog PresetADestructiveInspect
Ein Preset auf einen Scope anwenden und damit dessen Objekttypen anlegen/aendern. Aendert das Modell des Scopes und kann bestehende Typdefinitionen ueberschreiben. Pruefe vorher mit onto_catalog_index, was enthalten ist. Rueckgaengig: onto_catalog_clear. Der bisherige Wert ist danach weg (keine Historie, kein Undo). | EN: catalog, preset, template, apply, clear
| Name | Required | Description | Default |
|---|---|---|---|
| presets | Yes | Preset-Namen (mehrere moeglich, Mengen werden vereinigt). Leeres Array = alle entfernen. | |
| scope_id | Yes | Ziel-Scope-ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds valuable specifics: it overwrites existing type definitions, the previous value is gone, and there is no history or undo. This directly tells the agent what gets destroyed, beyond the binary flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the critical destructive warning are front-loaded, and the description is compact. There is mild redundancy between "kann bestehende Typdefinitionen ueberschreiben" and "Der bisherige Wert ist danach weg (keine Historie, kein Undo)", but overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with rich annotations and full schema coverage, the description covers the prerequisite check, the consequence of overwriting, and the undo route. It does not describe any return value, but with no output schema this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented. The description does not add meaning beyond the schema and even uses the singular "ein Preset" while the schema clarifies that multiple presets are allowed (an array). The baseline of 3 applies because the schema carries the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ("Ein Preset auf einen Scope anwenden") and the effect ("dessen Objekttypen anlegen/aendern"). It distinguishes itself from siblings by naming onto_catalog_index as the prerequisite and onto_catalog_clear as the undo path, though it does not explicitly contrast with onto_catalog_presets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear prerequisite ("Pruefe vorher mit onto_catalog_index, was enthalten ist") and names the undo alternative ("Rueckgaengig: onto_catalog_clear"). It does not state explicit when-not conditions, but the context is sufficient to select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_catalog_clearClear CatalogADestructiveIdempotentInspect
Die per Preset angelegten Objekttypen eines Scopes wieder entfernen. Einschneidend — pruefe vorher, ob Objekte dieser Typen existieren (onto_object_index); sonst werden sie unerreichbar. Nutze es zum Zuruecknehmen von onto_catalog_apply. Einzelne Typen entfernst du gezielter mit onto_type_delete. | EN: catalog, preset, template, apply, clear
| Name | Required | Description | Default |
|---|---|---|---|
| scope_id | Yes | Ziel-Scope-ID |
TDQS
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 the concrete consequence that annotations cannot express: existing objects of those types become unreachable, plus the pre-flight check to perform. This is exactly the extra context the bar for annotated tools asks for.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The warning and the sibling alternative are front-loaded and every sentence carries information. The trailing '| EN: catalog, preset, template, apply, clear' keyword list is search-oriented padding rather than instruction, which is a minor efficiency loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive mutation with no output schema and full annotation coverage, the description supplies the risk, the recovery relationship to apply, and the escape hatch. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (scope_id) and schema description coverage is 100%, so the schema already documents it. The description adds no further meaning about scope semantics or format; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (remove/clear) and resource (preset-created object types of a scope), and implicitly anchors it against the apply/create side of the catalog workflow. An agent can tell exactly what class of operation this is 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the intended use case (undoing onto_catalog_apply), the safer alternative for narrow cases (onto_type_delete for individual types), and the precondition check (onto_object_index) to run first. When-to-use, when-not-to-use, and alternatives are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_catalog_indexShow Catalog ContentsARead-onlyIdempotentInspect
Den Objekttypen-Katalog lesen (welche Typen in welchen Presets gebuendelt sind). Rein lesend. Nutze es, um zu sehen, was ein Preset enthalten wuerde, BEVOR du es anwendest. Die verfuegbaren Presets listet onto_catalog_presets. | EN: catalog, preset, template, apply, clear
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 'Rein lesend' mostly repeats structured data. The description adds useful workflow context (preview before apply) but says nothing about output shape or size, which is the main remaining behavioral unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and the pre-apply guidance are front-loaded in one compact sentence. The trailing EN keyword list ('catalog, preset, template, apply, clear') is slightly noisy and mixes in sibling concepts like apply/clear, but it does not obscure the main instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only catalog listing, the description covers what the tool returns conceptually (which types are in which presets), how it relates to apply/clear/presets siblings, and when to use it. Missing only explicit return-shape detail, which is not critical here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so parameter semantics are trivially satisfied. The description does not need to explain any arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: reading the object-type catalog (which types are bundled in which presets). It also explicitly contrasts with the sibling that lists presets (onto_catalog_presets), so an agent can distinguish them 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a concrete use case: check what a preset contains BEFORE applying it, and points to onto_catalog_presets for listing available presets. It lacks explicit when-not-to-use guidance, but the pre-apply workflow is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_catalog_presetsList Catalog PresetsARead-onlyIdempotentInspect
Die verfuegbaren Objekttyp-Presets auflisten (vorbereitete Typ-Buendel zur Auswahl). Rein lesend. Nutze es als Einstieg, wenn ein Scope mit Standardtypen ausgestattet werden soll. Anwenden: onto_catalog_apply. Inhalt eines Presets: onto_catalog_index. | EN: catalog, preset, template, apply, clear
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so "Rein lesend" largely restates structured data. The one piece of added value is characterizing the payload as prepared type bundles intended for selection, but nothing is said about volume, pagination, or scope prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, then sibling routing — a sensible order with no filler sentences. Minor deductions for the redundant "Rein lesend" (already in annotations) and the trailing keyword list ("catalog, preset, template, apply, clear"), which is search-tag noise rather than agent guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list tool with full annotation coverage and no output schema, the description supplies the essential context: what a preset is, why you'd list them, and which sibling to use next. Only the shape/size of the returned list is left unstated, which is acceptable absent an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and there is nothing in the schema the description needs to compensate for. No meaningless parameter prose was added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ("auflisten") plus specific resource ("Objekttyp-Presets"), with an inline definition of what a preset is ("vorbereitete Typ-Buendel zur Auswahl") so the agent doesn't need prior domain knowledge. It is clearly not onto_catalog_apply or onto_catalog_index, though that separation is carried mainly by the routing sentences rather than the purpose statement itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit entry-point guidance ("Nutze es als Einstieg, wenn ein Scope mit Standardtypen ausgestattet werden soll") plus direct routing: apply via onto_catalog_apply, inspect contents via onto_catalog_index. The agent knows both when to call this and where to go next, with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_credit_balanceShow Credit BalanceARead-onlyIdempotentInspect
Das aktuelle Credit-Guthaben abrufen (Pay-per-Use-Konto). Rein lesend. Nutze es, um vor kostspieligen Aktionen zu pruefen, ob Guthaben vorhanden ist. Was eine Aktion kostet, zeigt onto_credit_pricing; aufladen kannst du mit onto_credit_chargeup oder onto_credit_checkout. | EN: credit, balance, pricing, billing, top-up, checkout
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'Rein lesend' largely restates structured data. The description contributes the useful framing that this is a pre-flight check for a pay-per-use account, but discloses nothing about the returned balance format, currency, or freshness. With annotations carrying the safety profile, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core instruction is front-loaded in the first three clauses with no waste. The trailing '| EN: credit, balance, pricing, billing, top-up, checkout' is keyword stuffing rather than descriptive content, which costs it the top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only check with no output schema and rich annotations, the description covers everything an agent needs: what it returns conceptually, when to call it, and where to go for the related operations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to document and the baseline is 4. The description claims nothing about inputs, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('das aktuelle Credit-Guthaben abrufen') and qualifies the account type (Pay-per-Use). It explicitly separates itself from three named siblings (onto_credit_pricing, onto_credit_chargeup, onto_credit_checkout), so an agent can pick 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use condition ('vor kostspieligen Aktionen pruefen, ob Guthaben vorhanden ist') and routes the agent to the correct alternatives: pricing for cost lookup, chargeup/checkout for topping up. 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.
onto_credit_chargeupRedeem Prepaid CodeAInspect
Credits aufladen (Guthaben erhoehen). Bewegt echtes Geld bzw. loest eine Zahlung aus — nutze es nur auf ausdrueckliche Ansage. Der Betrag ist eine Zahlung, keine Rueckgabe. Alternative Zahlwege: onto_credit_checkout oder onto_credit_create_prepaid. Stand danach: onto_credit_balance. | EN: credit, balance, pricing, billing, top-up, checkout
| Name | Required | Description | Default |
|---|---|---|---|
| credits | No | Guthaben manuell aufladen (nur Admin) | |
| prepaid_code | No | Prepaid-Code (Agent-Self-Service) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real value beyond the annotations: it states that actual money moves / a payment is triggered, and warns that the amount is a payment rather than a refund. That is consistent with openWorldHint=true and destructiveHint=false and reinforces the billing-risk profile. It stops short of describing what happens to an invalid code or whether failures leave partial state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The warning and the purpose are front-loaded, followed by alternatives and next state in a logical order. The trailing "| EN: credit, balance, pricing, billing, top-up, checkout" tag block is keyword padding rather than actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The money-movement risk, gating condition, alternatives, and follow-up tool are all covered, which is the important part for a non-idempotent billing mutation. But with required=[] and two distinct modes, the agent is left without guidance on which parameter to supply in which situation, a meaningful gap for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter is already documented (admin-only credits, agent self-service prepaid code), so the baseline is 3. The description only adds the clarification that the amount is a payment, not a refund. It never explains how the two parameters select different modes or that neither is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Credits aufladen (Guthaben erhoehen)" gives a concrete verb and resource that reconcile the ambiguous name/title pair (chargeup vs. Redeem Prepaid Code). It names sibling payment tools, so the agent can place it in the billing family. It does not, however, distinguish the two operating modes implied by the parameters (manual admin top-up vs. prepaid code redemption).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit gating: "nutze es nur auf ausdrueckliche Ansage" tells the agent this requires user instruction before invocation. It also names the alternative paths (onto_credit_checkout, onto_credit_create_prepaid) and the follow-up tool (onto_credit_balance), which is exactly the routing information needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_credit_checkoutStart Credit CheckoutAInspect
Credits per Checkout erwerben (Bezahlvorgang starten). Loest einen Zahlungsvorgang aus — nur auf ausdrueckliche Ansage ausfuehren. Fuer eine direkte Aufladung gibt es onto_credit_chargeup, fuer vorausbezahlte Kontingente onto_credit_create_prepaid. Den Erfolg prueft onto_credit_balance. | EN: credit, balance, pricing, billing, top-up, checkout
| Name | Required | Description | Default |
|---|---|---|---|
| credits | Yes | Anzahl Credits (1 Credit = 0,01 EUR) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-readonly, non-idempotent, open-world operation. The description adds important behavioral context by stating that a payment process is triggered and that it should only be executed on explicit command. It does not detail failure modes or whether external payment confirmation is asynchronous, but it substantially improves safety awareness beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the action and the safety constraint. The trailing EN keyword list is useful for search but slightly less relevant to invocation, keeping it just below the top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one required parameter, no output schema, and annotations covering safety traits, the description is largely complete: it explains the action, cautions execution, points to alternatives, and suggests balance checking for success. It could say more about what a successful checkout returns or whether follow-up confirmation is required, but the essential invocation context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single parameter 'credits' is already documented in the schema with its EUR conversion. The description does not add parameter-level meaning beyond what the schema provides, so the baseline score for high coverage is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: purchasing credits via checkout, explicitly framed as starting a payment process. It also names sibling tools for related credit operations, so an agent can distinguish this from chargeup, prepaid creation, and balance checking 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit execution condition: only run on explicit instruction. It also routes the agent to alternatives for direct top-up (onto_credit_chargeup) and prepaid quotas (onto_credit_create_prepaid), and points to onto_credit_balance for checking success.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_credit_pricingShow Credit PricingARead-onlyIdempotentInspect
Credit-Kosten pro Aktion (Pay-per-Use). Zeigt, wie viele Credits jede Operation verbraucht. Flat-User (billing_model=flat) zahlen keine Credits. 1 Credit = 0,01 EUR. | EN: credit, balance, pricing, billing, top-up, checkout
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive behavior, so the safety profile is covered. The description still adds genuine business context the annotations cannot carry: flat users (billing_model=flat) incur no credits, and the conversion rate of 1 credit = 0.01 EUR, which the agent needs to interpret results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core meaning is front-loaded in one sentence, followed by the flat-model exception and the EUR conversion, both of which earn their place. The trailing "| EN: credit, balance, pricing, billing, top-up, checkout" is keyword padding that adds no semantic value and slightly dilutes the structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema and full annotation coverage, the description supplies what is needed: what the tool reports, that output is per-operation credit costs, and the pricing semantics. What is missing is minor — it does not say whether the list is static or reflects the account's current plan.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No parameter claims are made or needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Zeigt, wie viele Credits jede Operation verbraucht" names a specific verb (show) and resource (credit pricing per operation), which is clearly distinct from the sibling balance/chargeup/checkout tools. It does not explicitly name those siblings, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer this is the lookup tool for pricing information, and the flat-model note hints at when the answer is zero. There is no explicit statement of when to use this versus onto_credit_balance, onto_credit_checkout or onto_credit_receipt, all of which sit in the same domain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_credit_receiptGet Credit ReceiptARead-onlyIdempotentInspect
Beleg zu einer SumUp-Aufladung lesen (Bestellnummer, Datum, Betrag, Credits, Status, Transaktion, Zahlungsdaten). Rein lesend; nur der eigene Beleg, fremde und nicht vorhandene Bestellnummern ergeben dieselbe 404. Kartentoken und BIN werden nicht ausgegeben. Die Bestellnummer steht in onto_credit_balance. | EN: credit, receipt, invoice, bill, sumup, order, paid, top-up
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | Bestellnummer der Aufladung (steht als order_id an der Zeile chargeup:sumup in onto_credit_balance) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, yet the description adds real behavior beyond them: only the caller's own receipt is accessible, foreign and nonexistent order numbers are indistinguishable (same 404, an anti-enumeration property), and card token/BIN are withheld from output. These are meaningful disclosures an agent could not infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and returned fields, and the important scoping/404 caveat follows quickly. The trailing bilingual keyword list ('EN: credit, receipt, invoice...') is retrieval padding that dilutes an otherwise tight description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description supplies the returned-field list, the error semantics, the data-redaction guarantee, and where to source the ID — everything needed to call it correctly, with annotations covering safety.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already explains that order_id is the chargeup:sumup row from onto_credit_balance. The description restates this same origin, adding little new syntax or format detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb + resource ('Beleg ... lesen') and enumerates exactly what the receipt contains (Bestellnummer, Datum, Betrag, Credits, Status, Transaktion, Zahlungsdaten). This clearly separates it from onto_credit_balance (balance), onto_credit_chargeup (top-up), and onto_credit_checkout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent where to obtain the required order_id ('Die Bestellnummer steht in onto_credit_balance'), which is actionable routing to a sibling. It also clarifies that foreign/nonexistent IDs yield the same 404, but it does not explicitly name which sibling to use for other receipt-adjacent needs (e.g. balance vs. chargeup).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_dispatch_statusAutomation dispatch statusARead-onlyIdempotentInspect
Rueckstand und Gesundheit der Automatik: offene Ereignisse, Fehler, die letzten Laeufe. Regeln (Trigger) laufen NICHT sofort, sondern ueber die Warteschlange: Ereignisse alle 60 s, zeitgesteuerte Regeln alle 5 min. Genau deshalb ist dieses Werkzeug da — nach dem Anlegen oder Aendern einer Regel hier nachsehen statt die Aktion zu wiederholen oder auf ein Ergebnis zu warten, das noch in der Schlange steht. | EN: automation queue, trigger status, backlog, last runs
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 the non-obvious behavioral trait that triggers are queued and processed on 60 s / 5 min cycles, explaining why results may be stale and discouraging duplicate writes. It does not add anything about the shape or freshness of the returned data beyond the category list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The most useful information is front-loaded (what the status contains) followed by the queue timing that explains why the tool matters. It is slightly padded by 'Genau deshalb ist dieses Werkzeug da' and by the bilingual split, where the English portion is only a keyword tag rather than full explanatory text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, no output schema, and annotations covering safety, the description carries exactly the burden it must: what it reports, why results lag, and when to call it instead of retrying. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline applies and no parameter meaning is needed. The description correctly presents the tool as unfiltered/global, but adds no additional parameter-level detail because there is none to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and scope: backlog and health of the automation, listing what it surfaces (open events, errors, last runs). The EN keyword tail ('automation queue, trigger status, backlog, last runs') reinforces this. It is somewhat abstract in the German framing ('Rueckstand und Gesundheit der Automatik'), but an agent can tell it apart from the onto_trigger_create/update/delete/index siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance: check here after creating or changing a rule rather than repeating the action or blocking on a result. It also supplies the when-not rationale ('instead of repeating the action or waiting'), which is precisely the routing decision an agent gets wrong with asynchronous triggers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_favorite_addAdd FavoriteAInspect
Ein Objekt zu den eigenen Favoriten hinzufuegen (merken). Wirkt nur auf das eigene Konto und aendert keine Objektdaten. Nutze es fuer haeufig gebrauchte Objekte. Jeder Aufruf legt einen NEUEN Eintrag an — auch bei gleicher URL, weil der aktuelle Filter mitgespeichert wird. Mehrfaches Aufrufen mit gleichen Argumenten erzeugt also Duplikate; vorher mit onto_favorite_index pruefen. Entfernen: onto_favorite_delete. | EN: favorite, bookmark, quick access
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Ziel-URL des Favoriten (Pflicht) | |
| title | No | Anzeigetitel (optional, Default: Favorit) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses that the tool only affects the caller's own account, does not change object data, and creates a new entry on every call even for the same URL. The duplicate-creation warning directly reinforces the non-idempotent behavior declared in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main purpose and constraints are front-loaded, and the removal route is kept short. It is slightly verbose because the duplicate warning is restated across two sentences and the English keyword tag is appended, but no sentence is seriously off-topic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter favorite-add tool with no output schema, the description gives the necessary scope, mutation boundary, duplicate risk, pre-check guidance, and removal alternative. The minor reference to a saved filter is not enough to make the definition incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains both url and title. The description adds useful parameter-relevant meaning by clarifying that repeated use of the same URL is not treated as the same favorite and can produce duplicates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: adding an object to the user's own favorites. It also explicitly distinguishes the action from object mutation and from removal, so an agent can tell what it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says to use the tool for frequently used objects, warns to check onto_favorite_index first to avoid duplicates, and names onto_favorite_delete for removal. These are explicit when-to-use and alternative-routing instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_favorite_deleteDelete FavoriteADestructiveIdempotentInspect
Ein Objekt aus den eigenen Favoriten entfernen. Loescht NUR die Merkung, nicht das Objekt selbst — das bleibt unberuehrt. Wirkt nur auf das eigene Konto. Das Objekt selbst loeschst du mit onto_object_delete. | EN: favorite, bookmark, quick access
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Favoriten-ID aus onto_favorite_index (Pflicht) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false. The description adds real context beyond them: destruction is confined to the bookmark, the underlying object is untouched, and the effect is limited to the caller's own account.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short, front-loaded sentences with the scope constraint stated first. The trailing '| EN: favorite, bookmark, quick access' keyword tag is a small amount of padding but serves discoverability, so the cost is minor.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter idempotent delete with strong annotations and no output schema, the description covers what is destroyed, what survives, whose account is affected, and where to go for object deletion. Only the toggle sibling relationship is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' parameter is already documented as a favorite ID sourced from onto_favorite_index. The description adds no further meaning about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('entfernen') and resource ('aus den eigenen Favoriten') with clear scope. It explicitly separates itself from onto_object_delete and, by implication, from onto_favorite_add, so an agent can pick it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the crucial when-not condition ('Loescht NUR die Merkung, nicht das Objekt selbst') and routes object removal to onto_object_delete. What is missing is disambiguation against the close sibling onto_favorite_toggle, which could also remove a favorite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_favorite_indexList FavoritesARead-onlyIdempotentInspect
Die eigenen Favoriten auflisten (gemerkte Objekte des angemeldeten Kontos). Rein lesend. Nutze es, um schnell auf haeufig gebrauchte Objekte zuzugreifen. Ein Objekt merken: onto_favorite_add; entfernen: onto_favorite_delete. Alle Objekte (nicht nur Favoriten) zeigt onto_object_index. | EN: favorite, bookmark, quick access
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 adds useful account scoping by saying 'gemerkte Objekte des angemeldeten Kontos' and repeats that it is read-only, but it does not describe return format or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is front-loaded with the core purpose and then routes the agent to alternatives efficiently. The trailing English keyword line ('EN: favorite, bookmark, quick access') is slightly extraneous for invocation, but the overall structure is compact and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with rich annotations and no output schema, the description provides enough context: it identifies the resource, the account scope, the read-only nature, and the relevant sibling alternatives. Nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This tool has zero parameters, so there are no parameter semantics to explain. The baseline for a zero-parameter tool is 4, and the description appropriately does not invent parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Die eigenen Favoriten auflisten' and clarifies that these are saved objects of the logged-in account. It also distinguishes the tool from sibling operations by naming onto_favorite_add, onto_favorite_delete, and onto_object_index.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the use case: quickly accessing frequently used objects. It also gives concrete alternatives for adding, removing, and listing all objects, leaving little ambiguity about when to choose this tool versus its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_favorite_toggleToggle FavoriteAInspect
Favoriten-Status eines Objekts umschalten (merken <-> nicht gemerkt). Wirkt nur auf das eigene Konto. Achtung: Nebenwirkung — ist die URL schon Favorit, wird der Eintrag GELOESCHT, sonst angelegt. Ein zweiter Aufruf mit gleicher URL macht den ersten rueckgaengig. Nutze es, wenn du den Ausgangszustand nicht kennst — du brauchst dann kein Vorab-Lesen. Gezielt merken: onto_favorite_add, gezielt entfernen: onto_favorite_delete. | EN: favorite, bookmark, quick access
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Ziel-URL des Favoriten (Pflicht) | |
| title | No | Anzeigetitel (optional, Default: Favorit) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the branching side effect (existing favorite is DELETED, otherwise created), the scope limit ('wirkt nur auf das eigene Konto'), and the reversibility (a second identical call undoes the first). This reconciles with destructiveHint=false and idempotentHint=false — the deletion is self-reversible, so no annotation contradiction, and the description supplies the context the annotations lack.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core behavior, then the caveat, then the guidance — a logical order with no wasted sentences. Minor deductions for the bilingual duplication and the trailing keyword tag ('| EN: favorite, bookmark, quick access'), which is padding rather than information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with full schema coverage and no output schema, it covers state dependence, scope, reversibility, and alternatives — everything needed to call it safely. It stops short of saying what the return value reports (e.g. the resulting state), which would have made the round-trip behavior fully predictable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (url required, title optional with a stated default) are already fully documented. The description only implies that the URL is the identity used for the toggle; it adds no format, normalization, or matching semantics beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource pair — toggling the favorite status of an object ('Favoriten-Status eines Objekts umschalten') — and disambiguates from siblings by naming onto_favorite_add and onto_favorite_delete. An agent can distinguish it from the add/delete variants 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit selection rule: use this when you do not know the current state, because no pre-read is needed; use onto_favorite_add to add deliberately or onto_favorite_delete to remove deliberately. Both the use case and the alternatives are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_file_deleteDelete FileADestructiveIdempotentInspect
Eine Datei aus der strukturierten Ablage loeschen. Unwiderruflich — pruefe vorher, ob Objekte darauf verweisen. Der Datensatz des Objekts bleibt bestehen, nur die Datei entfaellt. Zum Ersetzen einfach erneut hochladen (upload_file_to_object). | EN: file, image, document, attachment, upload
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | No | Datei-ID (alternativ) | |
| file_udid | Yes | Datei-udid |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint and idempotentHint annotations, the description adds that deletion is irrevocable, that only the file is removed while the object record remains, and that replacement is done by re-uploading. These are meaningful consequences and match the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and irreversibility warning are front-loaded, followed by the deletion scope and replacement path. The compact EN keyword tag is ancillary but does not obscure the operational content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive file deletion tool with full schema coverage and rich annotations, the description covers the key agent-relevant facts: irreversibility, reference-check prerequisite, exact deletion scope, and replacement workflow. No output schema exists, so return-value explanation is not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so file_id and file_udid are already documented in the schema. The description does not add parameter-specific syntax or selection guidance beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: deleting a file from structured storage. It explicitly distinguishes this from deleting the object record by stating that the object dataset remains, and it points to upload_file_to_object as the replacement path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear prerequisite to check whether objects reference the file, plus a replacement workflow via upload_file_to_object. It does not explicitly contrast against onto_object_delete, though the scope difference is implied by saying only the file is removed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_file_structuredRead Structured FileARead-onlyIdempotentInspect
Eine Datei aus der strukturierten Ablage abrufen (Metadaten und/oder Inhalt). Rein lesend. Nutze es, wenn du die Datei ueber ihre Kennung kennst. Einen Upload machst du mit upload_file_to_object; die Kategorien der Ablage zeigt onto_scope_structuredimage_categories. | EN: file, image, document, attachment, upload
| Name | Required | Description | Default |
|---|---|---|---|
| object_id | Yes | Objekt-udid (32-hex). Liefert die Bildkategorien des Objekts (imagename, caption, info) ZUSAMMEN mit den dort bereits hochgeladenen Bildern und object_scope_id. DAS ist der Weg zum Einsortieren eines Uploads in die richtige Kategorie — kein Verwaltungsrecht noetig (nur Zugriff auf das Objekt). Die Kategorien-DEFINITION eines Scopes bearbeitet dagegen onto_scope_structuredimage_categories. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, and "Rein lesend" merely restates that. The description does add one piece of non-annotation context: the call returns metadata and/or content. It says nothing about behavior when the identifier is unknown, whether content is inlined or by reference, or size/access constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, followed by usage condition and alternatives in two compact sentences. The trailing "| EN: file, image, document, attachment, upload" keyword block is search metadata rather than agent guidance and slightly dilutes the signal, including the somewhat misleading "upload".
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only tool with full annotations and 100% schema coverage, the description covers what it does, when to use it, and which siblings handle the adjacent cases. The residual gap is the ambiguous "Metadaten und/oder Inhalt" return shape, which is not disambiguated anywhere since there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the object_id contract (32-hex udid) is already fully documented in the schema; the description only restates it as "Kennung". It adds no format, source, or discovery hint for obtaining 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Eine Datei aus der strukturierten Ablage abrufen") plus scope (metadata and/or content), and explicitly names the two sibling tools it is not (upload_file_to_object, onto_scope_structuredimage_categories). The only slight fuzziness is "und/oder Inhalt", which leaves what is actually returned open, but an agent can still tell this apart from the upload and category tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Nutze es, wenn du die Datei ueber ihre Kennung kennst" gives a clear entry condition, and the alternative for the opposite case (upload) is named with its tool name. There is no explicit "do not use for X" beyond that, but the routing between retrieve/upload/categories is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_formdef_createCreate Form DefinitionAInspect
NEUES Formular anlegen. Legt das form-Objekt an und schreibt eine minimale gueltige Definition (1 Feld), die du danach mit onto_formdef_save ausbaust. MIT from_udid wird die Definition einer Vorlage kopiert (dann werden Felder uebernommen, Sichtbarkeit auf den Ziel-Scope gestellt und adminsql entfernt, falls du kein Admin bist). Ein so kopiertes Formular bringt auch dessen buttons/template_file mit — nach dem Kopieren mit onto_formdef_save pruefen. Rechte: form_writer/admin + Schreibzugriff auf den Scope — sonst 403. | EN: form, form definition, fields, template, PDF, submission
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | udid einer Vorlage aus onto_formdef_list_templates (kopiert deren Felder) | |
| name | Yes | Technischer Name, z.B. wartung_2g | |
| formdef | No | Alternativ: komplette Definition direkt mitgeben ({version,title,answer_type,fields}) | |
| scope_id | Yes | Ziel-Scope (Pflicht) — braucht Schreibzugriff | |
| answer_type | No | Objekttyp fuer Antworten; Default 'inspection' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-readonly, non-destructive, non-idempotent write; the description adds substantive behavior beyond that: what actually gets written (1-field minimal definition), what the template copy mutates (fields carried over, visibility reset to the target scope, adminsql stripped for non-admins, buttons/template_file inherited), and the exact auth requirement with the resulting 403. Nothing here 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The German block is dense but front-loaded: creation action first, template behavior second, permissions last. The trailing "| EN: form, form definition, fields, template, PDF, submission" is keyword padding rather than agent-relevant content, which costs it a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating create tool with no output schema, it covers what is created, the auth precondition, the template-copy side effects, and the mandatory next step (onto_formdef_save). An agent has enough to invoke it correctly and chain it; the only residual gap is whether the new form's identifier is returned, which the naming convention makes inferable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantics for the template path — field takeover, visibility rewriting, adminsql removal. It does not cover the `formdef` or `answer_type` alternatives, and it calls the parameter "from_udid" while the schema names it `from`, a small mismatch an agent must resolve.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first two sentences state a specific verb and resource ("NEUES Formular anlegen") and precisely scope the effect: it creates the form object plus a minimal valid 1-field definition. It explicitly separates itself from the sibling onto_formdef_save (used afterwards to extend) and from onto_formdef_list_templates (source of the template udid), 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: call this first, then extend with onto_formdef_save, and use the from/template path when copying an existing definition (with a follow-up check of buttons/template_file). What's missing is explicit guidance on the alternative `formdef` path (pass a complete definition instead of the minimal scaffold) and on when NOT to create a copy at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_formdef_list_templatesList Form TemplatesARead-onlyIdempotentInspect
VORLAGEN auflisten: sichtbare Formulare im PUBLIC-Scope (generische Vorlagen). Rein lesend. Nutze die udid mit onto_formdef_create + from_udid, um eine firmenspezifische Kopie zu bauen, oder onto_formdef_show zum vollstaendigen Ansehen. Vorlagen (PUBLIC-Scope) sind der einfachste Weg an eine funktionierende Vorlage samt buttons/template_file. | EN: form, form definition, fields, template, PDF, submission
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Suchbegriff (Titel oder Name), optional |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so 'Rein lesend' mostly restates structured data. What the description does add beyond annotations is that results are PUBLIC-scope only and that templates typically carry buttons/template_file, but nothing about result size, ordering, or whether non-public definitions are excluded silently.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful content (scope, read-only, routing to create/show) is front-loaded and clear, but the trailing bilingual keyword block ('| EN: form, form definition, fields, template, PDF, submission') is pure keyword stuffing that consumes space without informing an agent's decision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully tells the agent what it gets back (visible PUBLIC templates usable via udid, including buttons/template_file) and what to do next. For a single-optional-parameter list tool with full annotations, this is close to sufficient, though the relationship to list_formdefs remains unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single optional parameter q is already documented as a title/name search term. The description never mentions the search parameter or its matching semantics, so it adds nothing beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('VORLAGEN auflisten: sichtbare Formulare im PUBLIC-Scope') and pins the scope to generic PUBLIC templates with the udid as the usable identifier. It differentiates itself from onto_formdef_create and onto_formdef_show by naming them, though it silently ignores the very similar sibling list_formdefs, which an agent might confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete next-step routing: take the udid to onto_formdef_create + from_udid to build a company-specific copy, or onto_formdef_show to inspect fully, and it recommends PUBLIC templates as the easiest starting point because they ship with buttons/template_file. It lacks an explicit when-not clause, and the overlap with list_formdefs is left unresolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_formdef_saveSave Form DefinitionAIdempotentInspect
Formular-DEFINITION speichern (der EINZIGE Schreibweg fuer formdef). Pflichtfelder: version (int>=1), title, answer_type (muss existierender Objekttyp sein, z.B. 'inspection'), fields (nicht-leer). Jedes Feld: key (Buchstabe am Anfang, a-zA-Z0-9_), widget, label; optional required, options (bei select), source (bei picker), validation. Widgets: text, textarea, int, float, select, picker, switch, slider, datepicker, file, label, subform, images, documents, signature. Reservierte Keys: formdef, usesForm, performs, udid, name, external_id. adminsql/sql/sqlparameters nur als Admin. Rechte: form_writer/admin + Schreibzugriff auf den Scope. Mit 'name'/'scope_id' werden auch die Stammdaten gesetzt. ACHTUNG: buttons/template_file/template_filename sind KEINE eigenen Parameter, sondern Felder INNERHALB des formdef-JSON (buttons/template_file/template_filename). BUTTONS: formdef.buttons=[{type,label,...}]; erlaubte type-Werte: 'save' (nur speichern), 'saveandgoto' (+url: Weiterleitung), 'send' (Mailversand mit PDF-Anhang; PFLICHT to[]; optional cc[], bcc[], subject; '$currentuseremail' wird durch die Adresse des Ausfuellenden ersetzt). Empfaenger kommen IMMER aus der formdef, nie aus dem POST. PDF-VORLAGE aus Excel: formdef.template_file = file_udid als 32-hex aus upload_file_to_object (NICHT bin2hex!) und formdef.template_filename = Dateiname — beide parallel setzen. Die Auswahl per Dateiname ueberlebt einen Neu-Upload gleichen Namens. PLATZHALTER im Excel: ##feldkey## (doppeltes Hash; ## key ## mit Leerzeichen geht auch) — {feldkey} oder %%feldkey%% funktionieren NICHT. Subform-Felder fuellen zeilenweise den naechsten freien Platzhalter (das Excel bestimmt die Maximalzahl, ueberzaehlige Zeilen werden verworfen); Bildfelder/signature werden Bildanker. | EN: form, form definition, fields, template, PDF, submission
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Technischer Name (optional) | |
| udid | Yes | Formular-udid (32-hex) aus onto_formdef_list_templates oder onto_formdef_create | |
| formdef | No | Die Definition: {version, title, answer_type, fields:[...]}. Als Objekt ODER JSON-String. | |
| scope_id | No | Objekt-Scope aendern (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare idempotent, non-destructive, non-read-only behavior, and the description adds substantial context beyond that: permission requirements, admin-only fields (adminsql/sql/sqlparameters), reserved keys, button type semantics, and template upload identity rules.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long but information-dense and front-loaded with the core save semantics, required fields, and field schema before the advanced template/button details. The unformatted wall of text with inline caps reduces scannability slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a nested object parameter and no output schema, the description covers nested field grammar, widget enums, reserved keys, button configurations, PDF template mechanics, and placeholder syntax — everything needed to construct a valid call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description goes far beyond: it enumerates the required nested keys (version int>=1, title, answer_type, fields), the per-field structure (key, widget, label, options, source, validation), the full widget vocabulary, and clarifies that buttons/template_file live inside the formdef JSON rather than as top-level params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Formular-DEFINITION speichern') and explicitly positions it as the only write path for formdef, distinguishing it from read/list siblings and from onto_formdef_create referenced in the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives required fields, role prerequisites (form_writer/admin plus scope write access), and notes that name/scope_id also set master data. Lacks an explicit contrast with onto_formdef_create (new vs. overwrite), which would make it a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_function_createCreate FunctionAInspect
RECHENREGEL anlegen: eine Function. Anders als ein Trigger hat sie EINGABEN und einen AUSDRUCK — sie rechnet, statt nur zu reagieren. "inputs": Liste von {key, type, required}; Typen: object, string, int, float, bool, datetime, list. "body": der Ausdruck. body-Format: {"inputs":[{"key":"kmStand","type":"int","required":true}],"body":{"if":[{">":[{"field":["kmStand"]},{"field":["letzterService"]}]},"faellig","ok"]},"effects":[]}. Der Ausdruck AST hat IMMER die Form {"operator":[argumente]} — also {"-":[a,b]} fuer a minus b, nicht {"op":...}. Operatoren u.a.: field/var, source, link, linklist, and/or/!/if, ==/!=/</<=/>/>=/in/notin/empty/notempty/matches, +/-/*///%/min/max/abs/round, cat/lower/upper/len/trim, count_of/sum_of/max_of/min_of. Kein eval — nur diese Operatoren. Das Ergebnis steht als {result} bereit und wird in Regeln per run_function genutzt. Optional "effects" (set_property/create_object/create_link). RECHTE: scope_id muss ein Scope sein, den du VERWALTEST (can_manage_scope=1). | EN: function, automation, expression, script, effect ZEITREGEL: Datum/Zeit liegt in der DB als UTC und wird von MCP ROH als UTC ausgegeben — im Browser eingegebene 10:00 erscheinen hier als 09:00 (Winter) / 08:00 (Sommer); die Oberflaeche rechnet in die Betrachterzone um (Cookie -> Profilfeld -> Europe/Berlin). Zeit-Operatoren: minutes_of, minutes_between[von,bis], hours_between[von,bis,pause_minuten].
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Technischer Schluessel (a-zA-Z0-9_). Ohne Angabe = name. | |
| body | Yes | Die Definition als Objekt oder JSON-String. body-Format: {"inputs":[{"key":"kmStand","type":"int","required":true}],"body":{"if":[{">":[{"field":["kmStand"]},{"field":["letzterService"]}]},"faellig","ok"]},"effects":[]}. Der Ausdruck AST hat IMMER die Form {"operator":[argumente]} — also {"-":[a,b]} fuer a minus b, nicht {"op":...}. Operatoren u.a.: field/var, source, link, linklist, and/or/!/if, ==/!=/</<=/>/>=/in/notin/empty/notempty/matches, +/-/*///%/min/max/abs/round, cat/lower/upper/len/trim, count_of/sum_of/max_of/min_of. Zeit: minutes_of, minutes_between, hours_between (siehe ZEITREGEL unten). Ist inputs.objekt (32-hex) gesetzt, liest der Ausdruck die FELDER dieses Objekts direkt ({"field":["shiftStart"]}), ohne dass sie als inputs deklariert sein muessen; deklarierte inputs haben Vorrang. Kein eval — nur diese Operatoren. Das Ergebnis steht als {result} bereit und wird in Regeln per run_function genutzt. | |
| name | Yes | Anzeigename (z.B. 'Wartung faellig?') | |
| label | No | Anzeigetext | |
| scope_id | Yes | Ziel-Scope. Du musst dort Manager sein (can_manage_scope). | |
| description | No | Beschreibung (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a non-read-only, non-destructive, non-idempotent write operation. The description adds valuable behavioral context beyond annotations: the caller must manage the target scope, only a fixed operator set is allowed with no eval, optional effects can be attached, and the computed result is exposed as {result} for use in rules. It does not describe duplicate-key behavior or the exact creation response, so this is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, but it is long and repeats the body format and operator list that the schema already provides. The appended ZEITREGEL block is relevant to function authoring but adds considerable length, so the text is useful yet not fully concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex nested create tool with no output schema, the description covers the DSL, operator constraints, permissions, optional effects, and result usage well. It does not explain what the create call itself returns, such as the new function identifier, or how duplicate names/keys are handled, leaving a modest completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the parameters in detail, including the body AST format, operator examples, and scope permission requirement. The description adds some meaning, such as the input type list and optional effects, but much of the body semantics duplicates the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'RECHENREGEL anlegen: eine Function.' It also distinguishes the tool from a trigger by explaining that a function has inputs and an expression and computes rather than reacts, which lets an agent identify the tool without inspecting its schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: this is for creating a function, unlike a trigger, and the result is later used in rules via run_function. It also states the permission prerequisite for scope_id. It does not explicitly enumerate when to choose this over sibling tools such as onto_trigger_create or onto_function_update, but the main usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_function_deleteDelete FunctionADestructiveIdempotentInspect
RECHENREGEL loeschen. Soft-Delete (status=deleted), umkehrbar. Achtung: Regeln, die sie per run_function aufrufen, laufen danach ins Leere — vorher mit onto_trigger_index pruefen, wer sie nutzt. Rechte: can_manage_scope im Scope. | EN: function, automation, expression, script, effect
| Name | Required | Description | Default |
|---|---|---|---|
| udid | Yes | udid der Function (32-hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations that already flag destructive and idempotent behavior, the description discloses that deletion is a soft-delete (status=deleted), that it is reversible, and that dependent run_function callers will fail afterward. It also specifies the authorization requirement can_manage_scope, giving the agent actionable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the core action, then adds reversibility, dependency warning, and permission requirements. The trailing English keyword list is somewhat redundant but not harmful; the bilingual phrasing adds slight density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive mutation, the description covers reversibility, side effects on dependent functions, a pre-deletion check, and the required permission. No output schema is present, and nothing essential for correct invocation appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage and defines the sole udid parameter as a 32-hex identifier. The description adds no additional parameter meaning, so the baseline of 3 is appropriate when the schema already carries the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: delete a function ('RECHENREGEL loeschen'), with English keywords confirming 'function'. It is distinguishable from create/update/run siblings by the delete action, though it does not explicitly contrast itself with other delete tools such as onto_object_delete or onto_actiondef_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives important context for when to be cautious: check via onto_trigger_index who uses the function before deleting, because run_function callers will break. It also states the required permission can_manage_scope, but it does not explicitly name updates or alternates to deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_function_indexList FunctionsARead-onlyIdempotentInspect
Alle hinterlegten Funktionen auflisten (serverseitige Automatiken). Rein lesend. Nutze es, um den Namen/die udid fuer onto_function_run zu finden. Anlegen/Aendern: onto_function_create / onto_function_update. Zeitgesteuerte Ablaeufe sind Triggers: onto_trigger_index. | EN: function, automation, expression, script, effect
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Seitennummer (Default 1) | |
| limit | No | Ergebnisse pro Seite, 1..200; der Wert gilt fuer die Sitzung (Standard 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'Rein lesend' largely restates structured data. The description does add that these are server-side automations rather than user scripts, but says nothing about ordering, page-size session stickiness, or what a returned entry looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what the tool does, then the routing guidance, then the mutating/trigger alternatives — a sensible order with no filler. The bilingual EN keyword suffix is mildly redundant but serves search relevance, so it is not penalized heavily.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should signal what the list yields; it does so by indicating name/udid are retrievable. Combined with the safety annotations and fully documented paging params, an agent has enough to call this correctly, though return-field detail is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (page, limit, including the 1..200 range and session-scoped default) are documented in the schema. The description adds no paging guidance of its own, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Alle hinterlegten Funktionen auflisten (serverseitige Automatiken)'), and the EN keyword tail (function, automation, expression, script, effect) disambiguates vocabulary. An agent can distinguish this from onto_function_run/create/update 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the follow-up use case ('Nutze es, um den Namen/die udid fuer onto_function_run zu finden') and routes the other operations to their siblings: create/update for mutation, onto_trigger_index for time-based jobs. This is a full when/when-not/alternatives map.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_function_runRun FunctionAInspect
Eine hinterlegte Funktion ausfuehren (serverseitige Automatik/Skript). Der Effekt haengt an der Funktion und kann Daten schreiben — also nicht rein lesend. Nutze es, wenn die Funktion bekannt ist; die verfuegbaren zeigt onto_function_index. Eingaben uebergibst du als inputs-Objekt. | EN: function, automation, expression, script, effect
| Name | Required | Description | Default |
|---|---|---|---|
| inputs | No | Eingabewerte {key: wert}. Konvention: 'objekt' = Ziel-UDID. | |
| function | Yes | Function-UDID (32-hex) oder Name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description usefully discloses that the effect is function-dependent and may write data ("kann Daten schreiben — also nicht rein lesend"), which goes beyond the annotations' generic readOnlyHint=false/destructiveHint=false. However it says nothing about permissions required, whether it runs synchronously, or what it returns, and the annotation pair could mislead an agent into expecting a non-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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core statement and the routing hint are front-loaded and every functional sentence earns its place. The trailing keyword list ("| EN: function, automation, expression, script, effect") is search padding rather than instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should indicate what the call produces (a function result, an execution report, or nothing). It covers the safety caveat but leaves the return behavior of an arbitrary server-side script unexplained, which is a meaningful gap for an agent deciding whether to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are described in-schema, including the nested 'objekt' convention. The description only restates that inputs go in an inputs object, adding no syntax or convention detail beyond what the schema already carries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Eine hinterlegte Funktion ausfuehren (serverseitige Automatik/Skript)" names a specific verb and resource and clarifies the object is user-defined server-side code, which separates it from create/update/delete siblings. It does not explicitly contrast with onto_object_execute_action, another plausible sibling, but the distinction is inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Nutze es, wenn die Funktion bekannt ist; die verfuegbaren zeigt onto_function_index" gives an explicit condition plus a named alternative for the discovery case. No exclusion for when-not-to-use, but the gating condition is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_function_updateUpdate FunctionADestructiveIdempotentInspect
RECHENREGEL aendern: bestehende Function ueberschreiben. body ersetzt die Definition vollstaendig. Format siehe onto_function_create. Rechte: can_manage_scope im Ziel-Scope. | EN: function, automation, expression, script, effect
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Neue Definition vollstaendig (Format siehe onto_function_create) | |
| udid | Yes | udid der Function (32-hex, aus onto_function_index) | |
| label | No | Anzeigetext | |
| scope_id | No | Ziel-Scope (ohne Angabe: der bisherige) | |
| description | No | Beschreibung |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true; the description goes beyond them by spelling out exactly what destruction means ('body ersetzt die Definition vollstaendig') and by naming the required authorization (can_manage_scope im Ziel-Scope). It does not describe the response or what happens to omitted fields, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and the key destructive semantic in two short sentences; no filler. The trailing '| EN: function, automation, expression, script, effect' keyword list is search metadata rather than agent guidance and slightly dilutes the structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter destructive mutation with a nested body object and no output schema, the description covers the critical facts: full replacement semantics, format reference, and permission requirement. Minor gaps remain around the return value and the effect of changing scope_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both required and optional parameters are already documented, including the scope_id default to the previous scope. The description's note that body fully replaces the definition and points to onto_function_create largely duplicates the schema wording rather than adding new semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: overwrite an existing Function (calculation rule), which clearly separates it from onto_function_create, onto_function_delete, onto_function_run. The domain gloss 'RECHENREGEL' plus the EN keyword tail adds searchable meaning, though the phrasing is terse and jargon-heavy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'bestehende Function ueberschreiben' and the pointer to onto_function_create for the body format, and a permission precondition (can_manage_scope in the target scope) is given. However, there is no explicit 'use create instead for new functions' or 'use delete to remove' routing, so the agent must infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_interface_create_defCreate Interface DefinitionAIdempotentInspect
Eine neue Interface-Definition anlegen (neue Sicht/Maske). Aendert das Modell. Nutze es, wenn ein Objekttyp eine zusaetzliche Ansicht bekommen soll. Bestehende Interfaces aenderst du mit onto_interface_update_def. | EN: onto, interface, create, def Verengung (optional): table.scopes mit Scopenamen schraenkt die Zeilen dieser Ansicht zusaetzlich auf diese Scopes ein (nur einschraenkend, unbekannter Name = 400). Die Ansicht zeigt sie unter der Ueberschrift an; trage sie zusaetzlich in die description des Interfaces ein.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Interface-Name | |
| label | No | Label | |
| roles | No | Rollen | |
| scope_id | No | Scope-ID (Tuer-Scope) | |
| description | No | Beschreibung. Wird die Ansicht per table.scopes verengt, gehoert die Verengung hier hinein (Beispiel: Beschraenkt auf autovermietung1) | |
| view_config | No | view_config-JSON. Listen ohne SQL: {"elements":["table"],"table":{"from":"objects","type":"shift","columns":[...]}}. Spalte: {"key", "prop" | "system"(udid,name,created,modified,scope,type) | "link"+"richtung"(vorwaerts/rueckwaerts)+("linkvalue", "type", "prop" = Feld des Ziels), optional "label", "format"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), "bis":"<prop>" (nur mit format zeitspanne; ergibt 09:00 - 15:30), "werte"{Schluessel:Anzeige}, "link_zelle", "hidden"}. Sammelspalte: {"key", "agg":"count|sum|min|max", "link", "richtung", "prop", "ziel":{"wo":[{"prop","op","wert"}]}}. Verengung (optional): Feld scopes mit einer Liste von Scopenamen, z.B. scopes: [autovermietung1], schraenkt die Zeilen zusaetzlich auf diese Scopes ein. Nur einschraenkend, nie erweiternd; ein unbekannter Name bricht mit 400 ab. Die Ansicht zeigt die Verengung unter der Ueberschrift an; nenne sie zusaetzlich in der description des Interfaces. Link-Gruppen: "links":{"Name":{"link","richtung","type","wo":[{...}],"sort":{...}}} — alle Spalten mit "link":"Name" lesen DASSELBE Objekt (Auswahl einmal definiert). "filter", "sort", "zeitraum" nennen nur Spalten-Keys. "person" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: "prop":["firstName","lastName"] verbindet Felder ("trenner"), "bis":"shiftEnd" mit "format":"zeitspanne" ergibt 09:00 - 15:30, "nur":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: "matrix":{"rows":{from,type,label,nur_mit{linktyp,type}},"cells":{from,type,bruecke{linktyp,type},zeitfeld,text[],"wo":[{prop,op,wert}]}}, wobei "wo" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden; Detailseite ohne SQL: "detail":{"type":"person","fields":[{prop|system,key?,label,format,werte}],"panels":[{"type":"subform","from":"objects","objekt":"shift","via":{"link":"worksShift"|[...],"richtung":"vorwaerts|rueckwaerts","linkvalue":optional},"wo":[...],"sort":{key|prop,dir},"columns":[{key,prop|system,bis,format,werte}]}]} — sql/subform_sql gewinnen weiter, wenn gesetzt; Formate und werte werden bei Unterseiten in der SQL angewandt; "wo" auf Tabellen-Ebene sind Bedingungen an die GRUNDMENGE (z.B. Personenbindung "wo":[{"prop":"email","op":"=","wert":"{'current_user_email'}"}]). Der Text-Platzhalter MUSS in der Definition in einfachen Anfuehrungszeichen stehen ({'current_user_email'}) - der Baustein setzt ihn als '{current_user_email}' ein, der Renderer ersetzt ihn roh. Ohne Quotes lehnt der Validator ab.; ein Zelltext-Eintrag mit "werte":{"abgesagt":"abgesagt","_":""} zeigt den Zusatz NUR bei diesem Wert ("_" = alle anderen, leer = Teil weglassen — so wird eine abgesagte Schicht im Raster markiert, ohne sie zu verstecken) (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie "sql" nur fuer Administratoren. | |
| data_scope_id | No | Lese-Scope der Daten, wenn die Ansicht in einem anderen (Tuer-)Scope liegt. Verlangt eine Personenbindung in der SQL ({current_user_email}, {current_profile_id} oder {current_user_id}). | |
| object_type_ids | No | Objekttyp-IDs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/destructive/idempotent/openWorld, and the description adds genuinely new behavioral facts: it mutates the model ('Aendert das Modell'), an unknown scope name aborts with 400, scope narrowing is only restrictive and never widening, and free SQL is admin-only. It does not describe the response or uniqueness/permission requirements, so it falls 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but it is followed by a very long, unstructured wall of view_config detail that largely duplicates the schema, plus a noisy keyword line ('| EN: onto, interface, create, def') that carries no meaning. Mixed German/English and dense parenthetical nesting make the tool hard to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 8-parameter create tool with no output schema, the description covers the mutation semantics, scope behavior, and admin restriction well, but omits what is returned (e.g. created ID), name-uniqueness constraints, and any required permissions for a model-changing operation. It is adequate but leaves real gaps for the creation path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does add cross-field semantics (the narrowing must also be mirrored into the interface description, placeholder quoting rules for text templates), but the bulk of the view_config prose restates structure the schema already documents, so it does not substantially exceed the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource ('Eine neue Interface-Definition anlegen') plus a plain-language gloss ('neue Sicht/Maske'), and it explicitly routes updates of existing interfaces to onto_interface_update_def. An agent can distinguish this from its closest sibling 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the triggering condition ('Nutze es, wenn ein Objekttyp eine zusaetzliche Ansicht bekommen soll') and names the alternative tool for the modification case. This is an explicit use-vs-alternative mapping, not just implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_interface_delete_defDelete Interface DefinitionADestructiveIdempotentInspect
Eine Interface-Definition entfernen. Entfernt die Sicht, NICHT die Objekte oder Felder. Pruefe vorher, ob Objekttypen das Interface verwenden. Ein einzelnes Feld aus dem Modell entfernst du mit onto_property_def_delete. | EN: onto, interface, delete, def
| Name | Required | Description | Default |
|---|---|---|---|
| def_id | Yes | Interface-Definition-ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true, but they do not say what is destroyed; the description fills that gap by clarifying that only the view is removed and objects/fields survive. It adds no detail about permission requirements or what happens to existing interface mappings (there is a sibling onto_interface_map_markers), which is the remaining behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The key scoping constraint is front-loaded in the second sentence, and each sentence carries information. The trailing '| EN: onto, interface, delete, def' keyword tag is redundant noise that does not earn its place but is minor.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive delete, the description covers scope of destruction, a precondition check, and an alternative sibling, which is close to sufficient. It could mention effects on interface mappings or required rights to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single def_id parameter, so the schema already carries the meaning. The description adds no format, source, or lookup guidance for def_id, making the baseline of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Eine Interface-Definition entfernen') and immediately scopes what is removed versus preserved ('Entfernt die Sicht, NICHT die Objekte oder Felder'). It also distinguishes itself from the sibling onto_property_def_delete, so an agent can choose 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete precondition ('Pruefe vorher, ob Objekttypen das Interface verwenden') and routes single-field removal to onto_property_def_delete. It stops short of explicitly naming the when-not case for related siblings such as onto_interface_update_def or onto_object_delete, 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.
onto_interface_indexList InterfacesARead-onlyIdempotentInspect
Alle Interfaces auflisten (Sichten/Masken, die festlegen, welche Felder ein Objekt zeigt). Rein lesend. Nutze es, um den Interface-Namen fuer onto_object_create oder die Anzeige zu finden. Ein einzelnes Interface: onto_interface_show. | EN: onto, interface, index
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Seitennummer (Default 1) | |
| limit | No | Ergebnisse pro Seite, 1..200; der Wert gilt fuer die Sitzung (Standard 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
"Rein lesend" simply restates the readOnlyHint annotation rather than adding new information. The definition of what an interface is adds conceptual value, but it says nothing about result volume, pagination behavior, or the session-scoped limit rule that the schema hints at. With annotations already covering the safety profile, this is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is front-loaded in three short sentences with no wasted clauses, and the alternative tool is placed last where it belongs. The trailing "| EN: onto, interface, index" keyword tag adds no semantic value and slightly dilutes the ending.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, read-only list tool with full schema coverage and complete annotations, the description supplies enough context to call it correctly. The absence of an output schema means a brief note on what the listing returns would have closed the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — both page and limit are documented in the schema, including the notable session-scoped limit behavior. The description adds no parameter guidance beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Alle Interfaces auflisten") and immediately defines the domain concept ("Sichten/Masken, die festlegen, welche Felder ein Objekt zeigt"), so an agent unfamiliar with the term knows what an interface is. It also names the sibling it is not ("Ein einzelnes Interface: onto_interface_show"), making disambiguation immediate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the use case: find the interface name needed for onto_object_create or for display. It also routes to the alternative tool onto_interface_show for single-record retrieval, so both the when-to-use and the 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.
onto_interface_map_markersMap Interface MarkersARead-onlyIdempotentInspect
Die Kartenmarker eines Interfaces abrufen (Objekte mit Koordinaten zur Anzeige auf der Karte). Rein lesend, ruft keine Kartendaten extern ab. Nutze es fuer Karten-/Karten-Ansichten; fehlende Koordinaten erst mit onto_object_geocode setzen. Die identische Antwort liefert ontouser_interface_map_markers. | EN: onto, interface, map, markers
| Name | Required | Description | Default |
|---|---|---|---|
| bbox | Yes | Kartenausschnitt minLng,minLat,maxLng,maxLat (Pflicht, der Endpunkt filtert darauf) | |
| name | Yes | Interface-Name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=false, idempotentHint=true, and destructiveHint=false. The description reinforces this by saying the operation is read-only and does not fetch external map data, but it adds little beyond the annotations and omits auth, rate-limit, or pagination context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The German description is front-loaded and efficient, with purpose first and usage/prerequisite guidance after. The appended EN keyword line and repeated 'Karten-/Karten-Ansichten' are slightly redundant but do not obscure the main instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only tool with full schema coverage and rich annotations, the description supplies enough context: what it returns conceptually, that it is read-only, that no external map data is fetched, and that geocoding may be needed first. The unresolved choice between this tool and the identically responding sibling keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both name and bbox are already documented in the schema. The description does not add syntax or filtering semantics beyond what the schema provides; it only mentions that missing coordinates should be geocoded first.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: retrieving map markers for an interface, described as objects with coordinates for map display. It distinguishes the tool from onto_object_geocode by making geocoding a prerequisite for missing coordinates, and it identifies the duplicate ontouser_interface_map_markers sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: use it for map/map views, and set missing coordinates with onto_object_geocode first. It does not explain when to choose this tool over the identically responding ontouser_interface_map_markers sibling, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_interface_showShow InterfaceARead-onlyIdempotentInspect
Ein einzelnes Interface vollstaendig lesen (enthaltene Felder, Gruppierung, Sichtbarkeit). Rein lesend. Nutze es, wenn der Name bekannt ist. Ohne Namen: onto_interface_index. Die identische Antwort liefert ontouser_interface_show. | EN: onto, interface, show
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Interface-Name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior, so 'Rein lesend' is redundant. The description still adds value by summarizing the returned content (fields, grouping, visibility) and by noting the identical-response relationship to ontouser_interface_show.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The operative content is front-loaded and compact: read scope, safety, usage condition, alternative, and sibling equivalence. The trailing '| EN: onto, interface, show' keyword tag is mild filler but does not obscure the main guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description supplies enough return-content context (fields, grouping, visibility) for the agent to know what a successful read provides. Annotations cover the safety profile, so the remaining gaps are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single required 'name' parameter, and the schema already labels it 'Interface-Name'. The description reinforces that the name is the lookup key but adds no syntax, format, or qualification details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Ein einzelnes Interface vollstaendig lesen') and enumerates what is included: fields, grouping, visibility. It distinguishes itself from onto_interface_index and notes the identical-response sibling ontouser_interface_show, so the agent can select it confidently.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing is provided: use it when the name is known, and use onto_interface_index when it is not. It also clarifies that ontouser_interface_show returns the identical response, which prevents unnecessary tool shopping.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_interface_update_defUpdate Interface DefinitionADestructiveIdempotentInspect
Eine bestehende Interface-Definition aendern (Felder, Reihenfolge, Sichtbarkeit). Betrifft die Sicht, nicht die Daten. Nutze es zum Anpassen einer Maske; welche Felder es ueberhaupt gibt, zeigt onto_property_def_index. Der bisherige Wert ist danach weg (keine Historie, kein Undo). | EN: onto, interface, update, def Verengung (optional): table.scopes mit Scopenamen schraenkt die Zeilen dieser Ansicht zusaetzlich auf diese Scopes ein (nur einschraenkend, unbekannter Name = 400). Die Ansicht zeigt sie unter der Ueberschrift an; trage sie zusaetzlich in die description des Interfaces ein.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Label | |
| roles | No | Rollen | |
| def_id | Yes | Interface-Definition-ID | |
| scope_id | No | Scope-ID (Tuer-Scope) | |
| description | No | Beschreibung | |
| view_config | No | view_config-JSON. Listen ohne SQL: {"elements":["table"],"table":{"from":"objects","type":"shift","columns":[...]}}. Spalte: {"key", "prop" | "system"(udid,name,created,modified,scope,type) | "link"+"richtung"(vorwaerts/rueckwaerts)+("linkvalue", "type", "prop" = Feld des Ziels), optional "label", "format"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), "bis":"<prop>" (nur mit format zeitspanne; ergibt 09:00 - 15:30), "werte"{Schluessel:Anzeige}, "link_zelle", "hidden"}. Sammelspalte: {"key", "agg":"count|sum|min|max", "link", "richtung", "prop", "ziel":{"wo":[{"prop","op","wert"}]}}. Link-Gruppen: "links":{"Name":{"link","richtung","type","wo":[{...}],"sort":{...}}} — alle Spalten mit "link":"Name" lesen DASSELBE Objekt (Auswahl einmal definiert). "filter", "sort", "zeitraum" nennen nur Spalten-Keys. "person" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: "prop":["firstName","lastName"] verbindet Felder ("trenner"), "bis":"shiftEnd" mit "format":"zeitspanne" ergibt 09:00 - 15:30, "nur":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: "matrix":{"rows":{from,type,label,nur_mit{linktyp,type}},"cells":{from,type,bruecke{linktyp,type},zeitfeld,text[],"wo":[{prop,op,wert}]}}, wobei "wo" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden; Detailseite ohne SQL: "detail":{"type":"person","fields":[{prop|system,key?,label,format,werte}],"panels":[{"type":"subform","from":"objects","objekt":"shift","via":{"link":"worksShift"|[...],"richtung":"vorwaerts|rueckwaerts","linkvalue":optional},"wo":[...],"sort":{key|prop,dir},"columns":[{key,prop|system,bis,format,werte}]}]} — sql/subform_sql gewinnen weiter, wenn gesetzt; Formate und werte werden bei Unterseiten in der SQL angewandt; "wo" auf Tabellen-Ebene sind Bedingungen an die GRUNDMENGE (z.B. Personenbindung "wo":[{"prop":"email","op":"=","wert":"{'current_user_email'}"}]). Der Text-Platzhalter MUSS in der Definition in einfachen Anfuehrungszeichen stehen ({'current_user_email'}) - der Baustein setzt ihn als '{current_user_email}' ein, der Renderer ersetzt ihn roh. Ohne Quotes lehnt der Validator ab.; ein Zelltext-Eintrag mit "werte":{"abgesagt":"abgesagt","_":""} zeigt den Zusatz NUR bei diesem Wert ("_" = alle anderen, leer = Teil weglassen — so wird eine abgesagte Schicht im Raster markiert, ohne sie zu verstecken) (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie "sql" nur fuer Administratoren. | |
| data_scope_id | No | Lese-Scope der Daten, wenn die Ansicht in einem anderen (Tuer-)Scope liegt. Verlangt eine Personenbindung in der SQL ({current_user_email}, {current_profile_id} oder {current_user_id}). | |
| object_type_ids | No | Objekttyp-IDs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true, and the description reinforces this with "Der bisherige Wert ist danach weg (keine Historie, kein Undo)", which tells the agent the update replaces rather than patches. It also discloses validation and authorization behavior that annotations do not cover: an unknown scope name yields a 400, scopes can only narrow ("nur einschraenkend"), and free "sql" is admin-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The German prose is front-loaded and purposeful, but the injected "| EN: onto, interface, update, def Verengung (optional): table.scopes ..." fragment splices a keyword line directly into a sentence about scope narrowing, which reads as an assembly artifact and breaks the flow. The genuinely useful scoping note is buried mid-paragraph instead of standing on its own.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with a very complex nested view_config and no output schema, the description covers the items an agent would otherwise get wrong: that it is view-only, destructive with no undo, scope-narrowing only, and that field discovery goes through another tool. The replacement-vs-patch question is answered implicitly ("bisherige Wert ist danach weg") rather than stated outright, and there is no note on permissions beyond the admin-only SQL remark.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the baseline is 3; the description earns above that by explaining the semantics of the scope parameter (table.scopes narrows rows of the view, is narrowing-only, unknown name = 400, must also be recorded in the interface description) and by clarifying that data_scope_id is for a view living in a different scope. It does not add anything for def_id, label, roles, or object_type_ids, which the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Eine bestehende Interface-Definition aendern (Felder, Reihenfolge, Sichtbarkeit)" is a specific verb plus resource plus the exact aspects that can be changed, and "Betrifft die Sicht, nicht die Daten" separates it from data-mutating siblings like onto_object_update. The word "bestehende" implicitly distinguishes it from onto_interface_create_def, but it never names that sibling the way it names onto_property_def_index.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Nutze es zum Anpassen einer Maske" gives a clear when-to-use, and it routes the agent to onto_property_def_index for discovering which fields exist. What is missing is an explicit boundary against onto_interface_create_def (new vs. existing) and onto_interface_delete_def, so the agent must infer the split from the word "bestehende".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_link_indexList Link DefinitionsARead-onlyIdempotentInspect
Alle Link-Definitionen auflisten (welche Beziehungen es zwischen Objekttypen gibt). Rein lesend. Nutze es, um den fuer onto_object_create_link noetigen Link-Typ zu finden. Eine Definition anlegen/aendern: onto_link_create_def / onto_link_update_def. | EN: link, relation, edge, connection, graph
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Seitennummer (Default 1) | |
| limit | No | Ergebnisse pro Seite, 1..200; der Wert gilt fuer die Sitzung (Standard 10) |
TDQS
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 'Rein lesend' adds no new information. The description's extra value is only the pointer to the create/update siblings; nothing is said about ordering, pagination behavior, or the size of the definition list beyond what the schema already documents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, read-only note, and sibling routing come first in three tight sentences. The trailing '| EN: link, relation, edge, connection, graph' keyword list is retrieval-oriented padding that does not help an agent already reading the description, costing it a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter list tool with full schema coverage and full annotation coverage, the description covers purpose, safety, and sibling routing. It omits any hint of what fields a link definition entry contains, which would help when chaining into onto_object_create_link, but that is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with page and limit both described in-schema (including the 1..200 range and the session-scoped limit). The description adds no meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Alle Link-Definitionen auflisten') and immediately disambiguates the domain concept with the parenthetical '(welche Beziehungen es zwischen Objekttypen gibt)'. It is clearly distinguishable from onto_object_create_link and the link_def mutation siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the downstream use case ('Nutze es, um den fuer onto_object_create_link noetigen Link-Typ zu finden') and routes the mutation cases to onto_link_create_def / onto_link_update_def. Both when-to-use and which-alternative-for-writes are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_object_addcommentAdd Object CommentAInspect
Einen Kommentar an ein Objekt anhaengen (Verlaufseintrag mit Autor und Zeitstempel). Rein anhaengend — bestehende Kommentare bleiben. Nutze es fuer Notizen und Rueckfragen am Datensatz. Es aendert KEINE Properties; dafuer onto_object_set_property. Ein Kommentar ist ein eigenes Objekt vom Typ comment, per hascomment-Link am Zielobjekt. Loeschen: onto_object_delete mit der udid des Kommentars (status wird deleted, er verschwindet aus dem Panel). Aendern geht nicht - loeschen und neu schreiben. | EN: object, record, entry, property, link, search
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Kommentar-Text | |
| parent | Yes | Objekt-udid, an das der Kommentar geht (32-hex) | |
| scope_id | No | Scope-ID (leer = SSR-Kaskade) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag a non-idempotent, non-destructive write; the description adds substantial context beyond that: it is purely append-only, existing comments remain, a comment is its own object of type comment linked via hascomment, and deletion only sets status to deleted (removing it from the panel). Editing is explicitly impossible. No contradiction with readOnlyHint=false or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and its append-only nature; the deletion and no-edit notes are genuinely useful rather than filler. It is on the long side and the trailing EN keyword list adds little, but overall it is information-dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description covers the lifecycle an agent needs: what gets created (a comment object with link), that properties are untouched, how to remove it, and that editing requires delete-and-rewrite. Nothing essential for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (text, parent, scope_id) are already documented. The description mentions the parent object in prose and the comment udid in the deletion context but adds no format or scope_id 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Einen Kommentar an ein Objekt anhaengen') plus scope ('Verlaufseintrag mit Autor und Zeitstempel'), and explicitly separates itself from onto_object_set_property and onto_object_delete. An agent can distinguish this from the many onto_object_* siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit use cases ('Notizen und Rueckfragen am Datensatz'), an explicit exclusion ('Es aendert KEINE Properties; dafuer onto_object_set_property'), and routes the delete/edit cases to onto_object_delete. When-to-use and when-not-to-use are both stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_object_bulk_actionRun Bulk Object ActionAInspect
Dieselbe Aktion auf viele Objekte in einem Aufruf anwenden (Massenbearbeitung). Nutze es ab mehreren Datensaetzen statt einer Schleife aus Einzelaufrufen. Wirkung und Seiteneffekte sind die der jeweiligen Action und koennen nicht zurueckgenommen werden — vorher mit onto_object_index die Zielmenge eingrenzen. | EN: object, record, entry, property, link, search
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | nur action=update: neuer Name | |
| action | Yes | Bulk-Action: delete | update | |
| status | No | nur action=update: neuer Status | |
| scope_id | No | nur action=update: Ziel-Scope | |
| object_ids | Yes | Objekt-udids (32-hex) | |
| external_id | No | nur action=update: neue externe ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does add real behavioral context beyond structured fields: side effects are inherited from the underlying action and are irreversible, and a pre-filtering step is recommended. But this directly conflicts with destructiveHint=false while one of the allowed actions is 'delete', leaving the agent with two opposing signals about whether this can destroy data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, followed by usage guidance and the irreversibility warning; every sentence carries information. The trailing '| EN: object, record, entry, …' keyword list is padding but brief.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a 6-parameter mutation tool with no output schema and fully documented parameters, the description covers purpose, prerequisite, and irreversibility. It omits partial-failure semantics (all-or-nothing vs. per-object), which would matter for a bulk destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including the action enum (delete | update) and the update-only fields is already documented in the schema. The description adds nothing parameter-specific, which is acceptable given full schema coverage, but no extra value is contributed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: apply the same action to many objects in a single call (bulk edit). It is clearly distinct from single-object mutation siblings such as onto_object_update or onto_object_execute_action, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to reach for it (more than one record, instead of a loop of individual calls) and adds a concrete prerequisite: narrow the target set first with onto_object_index. Both the trigger condition and the useful alternative are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_object_createCreate ObjectAInspect
Ein neues Objekt anlegen. Schreibt in die Datenbank — kein Trockenlauf. Pflicht ist mindestens type; properties ist eine Map Property-key -> Wert, interfaces eine Liste von Interface-Namen. Nutze es fuer neue Datensaetze; zum Aendern eines bestehenden nimm onto_object_update oder onto_object_set_property. Legt bei Bedarf NICHT automatisch Verknuepfungen an — dafuer onto_object_create_link. | EN: object, record, entry, property, link, search
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name | |
| type | Yes | Objekttyp-Name | |
| scope_id | No | Scope-ID | |
| interfaces | No | Interface-Namen | |
| properties | No | Property-key → value | |
| external_id | No | Externe ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, and the description adds real value on top: it writes to the database with "kein Trockenlauf" (no dry run), so the agent knows the effect is immediate, and it discloses that no links are created as a side effect. It does not say whether a validation failure leaves partial state, which keeps it below 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and the no-dry-run warning are front-loaded, and each middle sentence carries a distinct constraint. The trailing "| EN: object, record, entry, property, link, search" keyword block is search fodder that dilutes an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create mutation with a fully described schema and no output schema, the definition covers what it does, that it persists immediately, what it requires, and which siblings to use instead. Given annotations already carry the safety profile, nothing essential for a correct call is missing beyond the required-field error noted above.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description actively misinforms: it says "Pflicht ist mindestens type" while the schema requires both type and name, so an agent following the prose would omit a required field. The explanations of properties (key → value) and interfaces (interface names) merely restate the schema descriptions and give no format or enum guidance for scope_id or external_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Ein neues Objekt anlegen" names a specific verb and resource, and the definition immediately scopes it against siblings by naming onto_object_update, onto_object_set_property and onto_object_create_link. An agent can distinguish create vs. update vs. link 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing: use it for new records, use onto_object_update / onto_object_set_property to change an existing one, and use onto_object_create_link when relations are needed. It also states a negative rule — no automatic links are created — which prevents a common wrong invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_object_create_linkCreate Object LinkAInspect
Zwei Objekte ueber einen Link-Typ miteinander verbinden. Schreibt eine neue Kante; mehrfaches Aufrufen erzeugt keine Dublette, sondern aktualisiert die Kante. Die verfuegbaren Link-Typen zeigt onto_link_index. Bestehende Kanten aendern: onto_object_update_link. | EN: object, record, entry, property, link, search
| Name | Required | Description | Default |
|---|---|---|---|
| linktype | Yes | Linktyp-Name | |
| scope_id | No | Scope-ID | |
| linkvalue | No | Link-Wert | |
| object1_udid | Yes | Objekt1-udid | |
| object2_udid | Yes | Objekt2-udid | |
| linkvalue_free | No | Freitext-Wert |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses the key behavioral trait: repeated calls do not create a duplicate edge but update it, which is upsert semantics an agent could not infer from readOnlyHint=false alone. It does not describe the response or any permission requirements, but the write/upsert profile is the important addition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The three German sentences are front-loaded and mostly earn their place, but the trailing '| EN: object, record, entry, property, link, search' keyword block is search-optimization padding with no value for tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers the write behavior, idempotency-like semantics, and both related tools. Remaining gaps, such as return value or requirement of linkvalue for certain link types, are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all six parameters are documented in the schema. The description adds nothing about linktype syntax, when linkvalue vs linkvalue_free applies, or what scope_id does, so it neither compensates nor detracts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: connects two objects via a link type, creating an edge. It is clearly distinguishable from onto_object_update_link, which the description names as the tool for changing existing edges.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes the agent to onto_link_index for available link types and to onto_object_update_link for modifying existing edges, which is explicit alternative guidance. It does not, however, clarify the overlap between this tool's own upsert behavior and update_link, leaving an ambiguity about which to pick for an existing edge.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_object_deleteDelete ObjectADestructiveIdempotentInspect
Ein Objekt unwiderruflich loeschen, samt seiner Properties. Nutze es nur, wenn der Datensatz wirklich entfallen soll — es gibt kein Undo. Zum Deaktivieren/Archivieren stattdessen ein Status-Property via onto_object_set_property setzen. Fuer mehrere Objekte auf einmal: onto_object_bulk_action. | EN: object, record, entry, property, link, search
| Name | Required | Description | Default |
|---|---|---|---|
| udid | Yes | Objekt-udid |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare destructiveHint=true and readOnlyHint=false, but the description adds behavior the annotations cannot convey: the delete is irreversible (no undo) and cascades to the object's properties. It also names the safe alternative path for soft-deactivation, which is exactly the context an agent needs before committing an unrecoverable action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and its irreversibility, followed by the alternatives the ordering is exactly right for a destructive tool. The trailing '| EN: object, record, entry, property, link, search' synonym block is retrieval noise for an agent that has already selected the tool, keeping it just below 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with full annotation coverage and no output schema, everything an agent needs is present: what is destroyed, that it cannot be undone, and which sibling to pick instead.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter with 100% schema description coverage ('Objekt-udid'), so the schema already carries the semantics. The description adds nothing beyond that, such as where a udid is obtained, though none is really required here. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Ein Objekt unwiderruflich loeschen') and adds scope that distinguishes it: the object's properties are removed along with it. It is clearly separable from onto_object_set_property and onto_object_bulk_action, and the German/English wording leaves no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the condition ('nur, wenn der Datensatz wirklich entfallen soll'), the exclusion ('es gibt kein Undo'), and two named alternatives with their selecting conditions: set a status property via onto_object_set_property to deactivate/archive, or use onto_object_bulk_action for multiple objects. 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.
onto_object_delete_linkDelete Object LinkADestructiveIdempotentInspect
Eine Verknuepfung zwischen zwei Objekten entfernen. Loescht nur die Kante, NICHT die beteiligten Objekte. Unwiderruflich. Zum Anlegen derselben Kante wieder onto_object_create_link. | EN: object, record, entry, property, link, search
| Name | Required | Description | Default |
|---|---|---|---|
| link_udid | Yes | Link-udid |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds real value on top by stating the blast radius (only the edge, not the linked objects) and irreversibility ("Unwiderruflich"). It omits permission/auth requirements and what a successful response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The German core is well front-loaded and dense: purpose, non-destructive scope, irreversibility, inverse tool — four useful sentences in a row. But the trailing "| EN: object, record, entry, property, link, search" keyword list is SEO padding that earns no place, and the description is delivered in German where the tool title and schema are English, adding avoidable parsing cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive mutation with full annotation coverage and no output schema, the description covers what is destroyed and that it cannot be undone. It leaves the agent guessing how to obtain a valid link_udid and whether ontoname/scope context is required — a noticeable gap for a delete call where a wrong id is unrecoverable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, so the schema documents link_udid and the baseline of 3 applies. The description adds nothing about where a link_udid comes from (e.g. onto_object_show or onto_object_graph) or its format, so it does not compensate beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Verknuepfung zwischen zwei Objekten entfernen") and immediately scopes it against the most confusable sibling by clarifying that only the edge is removed, "NICHT die beteiligten Objekte" — which distinguishes it from onto_object_delete. An agent can select it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names one related tool, onto_object_create_link, as the inverse operation ("Zum Anlegen derselben Kante"), which gives partial routing guidance. However it never addresses the closest ambiguity — when to delete-and-recreate versus use onto_object_update_link — and gives no prerequisites, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_object_delete_propertyDelete Object PropertyADestructiveIdempotentInspect
Ein einzelnes Property von einem Objekt entfernen (der Wert verschwindet, das Objekt bleibt). Unwiderruflich. Nutze es zum Aufraeumen fehlerhafter Felder; um nur den Wert zu leeren, genuegt onto_object_set_property mit leerem Wert. Zum Loeschen des ganzen Objekts onto_object_delete. | EN: object, record, entry, property, link, search
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Property-Key | |
| udid | Yes | Objekt-udid |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true; the description adds the concrete consequence ('Unwiderruflich' – irreversible) and clarifies that the parent object survives. It does not discuss permissions or return behavior, but for a two-parameter delete those gaps are minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is three tight sentences that front-load the action, then the consequence, then the alternatives. The trailing '(EN: object, record, entry, property, link, search)' keyword tag is search-index noise that does not help an agent decide anything.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-required-parameter destructive tool with full schema coverage and annotations that already carry the safety profile, the description covers action, irreversibility, and sibling routing. No output schema exists, so nothing further about return values is owed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (udid, key) are already documented in the schema. The description adds no format, syntax, or lookup hints 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb plus resource ('ein einzelnes Property von einem Objekt entfernen') with an explicit outcome distinction: the value disappears, the object remains. It is immediately distinguishable from onto_object_delete and onto_object_set_property 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names both alternatives and the exact condition selecting each: use set_property with an empty value to merely clear a value, and onto_object_delete to remove the whole object. It also gives a positive use case (cleaning up faulty fields).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_object_execute_actionExecute Object ActionAInspect
Eine hinterlegte Action (Button/Automatik) auf einem Objekt ausfuehren. Der Effekt haengt an der Action-Definition und kann Properties aendern, Links setzen oder Folgeprozesse starten — also nicht rein lesend. Nutze es, wenn am Objekt eine Action angeboten wird; die verfuegbaren Actions zeigt onto_actiondef_list. | EN: object, record, entry, property, link, search
| Name | Required | Description | Default |
|---|---|---|---|
| udid | Yes | Objekt-udid (32-hex) | |
| prompts | No | Prompt-Werte {key: value} | |
| action_key | Yes | Action-Key (z.B. checkin, checkout) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the safety profile is partially covered. The description adds genuinely non-redundant behavior: the effect depends entirely on the action definition and may mutate properties, set links, or trigger follow-up processes — warning the agent it is not a read. It does not cover failure modes or whether prompts are mandatory for certain actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The behavioral caveat and the pointer to onto_actiondef_list are front-loaded and earn their place. The trailing '| EN: object, record, entry, property, link, search' keyword string is filler that dilutes an otherwise tight two-sentence definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent mutation with annotations and no output schema, the description covers what it does, that effects vary by action, and where to find valid actions. It leaves open how the result should be interpreted and whether prompts are conditionally required, but no critical calling information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so udid, action_key and prompts are already documented in the schema; baseline 3 applies. The description adds no extra semantics about the prompts object shape or how action_key values map to definitions beyond the schema's examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (execute a stored action/button/automation on an object) and distinguishes it from the discovery sibling by pointing to onto_actiondef_list for enumerating available actions. An agent can tell it apart from onto_actiondef_save/delete and onto_object_bulk_action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear triggering condition ('when an action is offered on the object') and names onto_actiondef_list as the way to discover valid actions. It stops short of explicit exclusions, e.g. when to prefer onto_object_bulk_action or set_property directly, so no 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_object_geocodeGeocode Object AddressAInspect
Koordinaten zu einem Objekt ermitteln und hinterlegen (Adresse -> Lat/Lon). Schreibt in das Objekt und ruft dazu einen externen Kartendienst auf (offene Welt). Nutze es nach dem Anlegen eines Objekts mit Adresse, wenn Kartenmarker gebraucht werden. Kartenanzeige selbst: onto_interface_map_markers. | EN: object, record, entry, property, link, search
| Name | Required | Description | Default |
|---|---|---|---|
| udid | Yes | Objekt-udid | |
| apply | No | 1 = berechnete Werte direkt ans Objekt schreiben (1-Call-Flow), 0 = nur liefern (Default 0) | |
| direction | No | geocode (Adresse→Koordinaten) oder reverse (Koordinaten→Adresse). Default geocode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by disclosing the two side effects that matter: it mutates the object and it depends on an external map service (open world), which implies latency and possible failure. It does not address overwrite semantics for existing coordinates or failure behavior, and the blanket "Schreibt in das Objekt" sits slightly at odds with the schema's apply=0 default, which only computes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose, side effect, usage trigger and sibling alternative come first in three tight sentences. The trailing "| EN: object, record, entry, property, link, search" keyword block is pure noise for an invoking agent and dilutes the front-loading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description is adequate: an agent knows what is computed, when to call it, that it writes on demand and that it hits an external service. What it returns in the non-applying case, and what happens if the object lacks a usable address, remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are already documented, including the apply and direction semantics. The description restates the address->coordinates mapping and the write-back behavior at a high level but adds no format, precedence, or edge-case detail beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb chain and resource: fetch coordinates for an object (address -> lat/lon), write them into the object, via an external map service. It explicitly marks the boundary against the sibling onto_interface_map_markers for map display, so the agent can separate geocoding from rendering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Nutze es nach dem Anlegen eines Objekts mit Adresse, wenn Kartenmarker gebraucht werden" gives a clear trigger condition, and the sibling pointer names where to go for the display side. It does not cover the reverse-geocoding case or say when not to call it (e.g., coordinates already present), so it falls short of a full when/when-not treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_object_graphShow Object GraphARead-onlyIdempotentInspect
Ein Objekt samt seinen Verknuepfungen als Graph lesen (Knoten + Kanten). Rein lesend. Nutze es fuer Beziehungsfragen ('womit haengt X zusammen'). Fuer die reine Feldansicht eines Objekts genuegt onto_object_show; fuer die Liste aller Link-Definitionen onto_link_index. | EN: object, record, entry, property, link, search
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Objekt-udid (32-hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotent/non-destructive, and 'Rein lesend' merely restates that. The description does add value beyond annotations by disclosing the return shape (Knoten + Kanten), which matters since there is no output schema. It stops short of describing graph depth, traversal limits, or how large link sets are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and return shape, then routing guidance — good ordering. The trailing '| EN: object, record, entry, property, link, search' keyword block is search-bait that adds no decision-relevant information and costs a small amount of concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description covers what is returned (nodes and edges), when to use it, and what to use instead. Only the shape/size of the returned graph at depth remains unaddressed, which is a minor gap given the annotations already carry the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already documents 'id' as a 32-hex object udid. The description adds no format or edge-case detail about the id 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Ein Objekt samt seinen Verknuepfungen als Graph lesen (Knoten + Kanten)'), which tells the agent exactly what comes back. It explicitly separates itself from onto_object_show (field view) and onto_link_index (link definitions), so siblings are distinguishable 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Nutze es fuer Beziehungsfragen – womit haengt X zusammen') and names two alternatives with the conditions that select them (field view → onto_object_show, all link definitions → onto_link_index). 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.
onto_object_indexList ObjectsARead-onlyIdempotentInspect
Alle Objekte auflisten, seitenweise und nach optionalem Filter. Rein lesend. Nutze es fuer Uebersichten und Zaehlungen. Wenn du EIN Objekt ueber seine udid kennst, nimm onto_object_show (billiger); fuer Volltextsuche ueber mehrere Felder onto_object_search. | EN: object, record, entry, property, link, search
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Seitennummer (Default 1) | |
| limit | No | Ergebnisse pro Seite, 1..200; der Wert gilt fuer die Sitzung (Standard 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, and 'Rein lesend' largely restates them. The description adds that results are paged and that it is intended for overview/count use, but says nothing about return shape, paging limits, or what happens on an out-of-range page. Adequate against the annotation baseline, not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then safety, then the disambiguation rules, with no filler sentences. The trailing EN keyword list is functional MCP matching metadata rather than prose, so it does not seriously dilute the message.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter, zero-required list tool with full annotation coverage, the definition covers purpose, safety and alternatives well. It omits the return shape (no output schema exists), which is the only notable gap for an agent needing to know what a page contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so page and limit are already documented in the schema. The description mentions 'seitenweise' and an 'optionalem Filter', but the schema exposes no filter parameter – a slightly misleading hint. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
State a specific verb and resource ('Alle Objekte auflisten') plus scope (seitenweise, optional filter) and explicitly names the two sibling tools it is not, so an agent can distinguish it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('fuer Uebersichten und Zaehlungen') and when not to, routing to onto_object_show when a udid is known ('billiger') and onto_object_search for full-text. 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.
onto_object_searchSearch ObjectsARead-onlyIdempotentInspect
Objekte ueber ihre Feldwerte suchen (Filter/Textsuche ueber Properties). Rein lesend. Nutze es, wenn du Objekte NICHT ueber die udid kennst — das ist der Einstieg vor onto_object_show. Fuer die reine Scope-Auswahl vor der Suche onto_object_search_scopes. | EN: object, record, entry, property, link, search
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Suchbegriff | |
| page | No | Seitennummer (Default 1) | |
| type | No | Objekttyp-Filter | |
| order | No | Sortierung: 'modified_desc' (neueste zuerst) oder leer (Name) | |
| exclude | No | Auszuschließende udid | |
| linktype | No | Linktyp-Filter | |
| per_page | No | Ergebnisse pro Seite (Default 30, max 100) | |
| unbewertet | No | 1 = nur Objekte, an denen noch KEIN Kommentar haengt (z.B. unbewertete Fotos) | |
| modified_after | No | Nur Objekte, die seit diesem Zeitpunkt geaendert wurden ('JJJJ-MM-TT HH:MM:SS' oder ISO mit T) | |
| modified_before | No | Nur Objekte, die bis zu diesem Zeitpunkt geaendert wurden | |
| changed_within_minutes | No | Nur Objekte der letzten N Minuten (relativ zu jetzt) |
TDQS
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 description's 'Rein lesend' merely restates them. It adds no real behavioral context such as result ordering defaults, pagination limits, or what a search returns when nothing matches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core guidance is front-loaded and compact, with the read-only note and sibling routing in three short sentences. The trailing '| EN: object, record, entry, property, link, search' keyword list is filler that does not help an agent decide or invoke.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations and a fully documented schema cover most needs, but with no output schema the description never indicates what results look like or how pagination behaves despite page/per_page parameters. It is adequate for selection but thin on call outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 11 parameters, so the schema already carries the semantics (q, page, per_page, modified_after, unbewertet, etc.). The description adds only the general notion of filtering by properties, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (search objects by field values / filter and text search over properties) and explicitly differentiates from onto_object_show and the scope-selection tool. An agent can distinguish it from 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance: use it when you do NOT know the object's udid, as the entry point before onto_object_show, and use the scopes tool for pure scope selection. The alternative and the condition that selects it are both named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_object_set_propertySet Object PropertyADestructiveIdempotentInspect
Genau ein Property eines Objekts setzen oder ueberschreiben. Nutze es fuer gezielte Einzelkorrekturen; fuer mehrere Felder auf einmal onto_object_update. Ein Property entfernt dagegen onto_object_delete_property. Der bisherige Wert ist danach weg (keine Historie, kein Undo). Zeitpunkt-Properties: Eingaben gelten in der Zeitzone des Betrachters (Default Europe/Berlin) und werden als UTC gespeichert; die JSON-Ausgabe zeigt UTC. Wer UTC schickt, bekommt je nach Zone einen Versatz. | EN: object, record, entry, property, link, search ZEITREGEL: Datum/Zeit liegt in der DB als UTC und wird von MCP ROH als UTC ausgegeben — im Browser eingegebene 10:00 erscheinen hier als 09:00 (Winter) / 08:00 (Sommer); die Oberflaeche rechnet in die Betrachterzone um (Cookie -> Profilfeld -> Europe/Berlin). Zeit-Operatoren: minutes_of, minutes_between[von,bis], hours_between[von,bis,pause_minuten].
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Property-Key | |
| udid | Yes | Objekt-udid | |
| value | Yes | Property-Wert. Datum/Zeit als UTC-String schreiben ('2026-11-10 09:00:00' = 10:00 Berlin im Winter) — die Oberflaeche rechnet in die Betrachterzone um. | |
| scope_id | No | Scope-ID |
TDQS
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 the concrete consequence the agent actually needs: the prior value is gone, no history, no undo. The timezone/UTC semantics are genuine behavioral context beyond structured fields. It falls short of 5 because the destructive detail and the long ZEITREGEL block partly restate the schema's value description and are buried among irrelevant siblings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose, alternatives and undo warning are correctly front-loaded, which is the strongest part. But the tail is padded: English keyword soup ('object, record, entry, property, link, search') and a time-operator list (minutes_of, minutes_between, hours_between) that has no bearing on setting a single property, plus a timezone rule repeated twice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation with annotations covering safety and no output schema, the description covers the essentials: scope, alternatives, irreversibility, and the UTC storage convention. What is missing is the role of scope_id and what a success response returns, but neither is critical to invoking it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so udid, key, value and scope_id are all documented in structured data; that establishes the baseline of 3. The description adds no meaning for scope_id (whether it scopes the object lookup or the property definition) and none for key format, and its timezone note duplicates the schema's value description rather than extending it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb ('setzen oder ueberschreiben') and pins the exact scope: exactly ONE property of an object. It also explicitly contrasts with the two nearest siblings (onto_object_update for multiple fields, onto_object_delete_property for removal), so the agent can discriminate this tool 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the positive case ('gezielte Einzelkorrekturen'), explicitly routes bulk edits to onto_object_update, and routes deletion to onto_object_delete_property. Both the when and the when-not plus the named alternatives are present, with nothing left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_object_showShow ObjectARead-onlyIdempotentInspect
Ein einzelnes Objekt ueber seine udid vollstaendig lesen — alle Properties und Interfaces. Rein lesend. Nutze es, wenn du die udid schon hast. Ohne udid: erst onto_object_search oder onto_object_index. Die identische Antwort liefert ontouser_object_show. | EN: object, record, entry, property, link, search
| Name | Required | Description | Default |
|---|---|---|---|
| udid | Yes | Objekt-udid (32-hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, and the description reinforces this with 'Rein lesend'. Beyond that it discloses the return shape ('alle Properties und Interfaces'), which matters because there is no output schema. It stops short of mentioning permissions, scope visibility or payload size limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, precondition and the sibling-equivalence note come first and are all load-bearing. The trailing '| EN: object, record, entry, property, link, search' keyword list adds no operational information and dilutes an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, non-destructive read with no output schema, the description covers what the call returns, when to use it, and which sibling to pick instead. Only secondary details such as missing-object error behavior are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single udid parameter is documented as 32-hex in the schema itself. The description only adds the precondition that the udid must already be known, which is useful but not format or syntax detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Ein einzelnes Objekt ueber seine udid vollstaendig lesen') plus the exact return scope ('alle Properties und Interfaces'). It also distinguishes itself from onto_object_search and onto_object_index by requiring a known udid, so an agent can select it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit selection criteria: use it when the udid is already known, and fall back to onto_object_search or onto_object_index when it is not. It additionally names ontouser_object_show as returning an identical answer, which removes a genuine ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_object_updateUpdate ObjectADestructiveIdempotentInspect
Mehrere Felder eines bestehenden Objekts in einem Aufruf aendern. Ueberschreibt die uebergebenen Properties; nicht genannte Felder bleiben unberuehrt. Nutze es fuer mehrere Aenderungen gleichzeitig; fuer ein einzelnes Feld ist onto_object_set_property schlanker. Loeschen ist nicht Teil dieses Tools. Der bisherige Wert ist danach weg (keine Historie, kein Undo). | EN: object, record, entry, property, link, search
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Neuer Name | |
| status | No | Neuer Status | |
| pin_url | No | Pin-URL | |
| scope_id | No | Ziel-Scope | |
| external_id | No | Neue externe ID | |
| object_udid | Yes | Objekt-udid |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, and the description adds real value beyond that: partial-update semantics (unnamed fields untouched) and the irreversibility warning ('keine Historie, kein Undo'). It does not describe error behavior for a bad object_udid, so it stops 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the mutation semantics, then the alternative, then the exclusion and the undo warning — every clause earns its place. The trailing '| EN: object, record, entry, ...' keyword block is search-index noise that adds no agent value and costs it a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation tool with no output schema, the description covers the critical gaps: what is overwritten, what is preserved, that deletion is out of scope, and that changes are unrecoverable. Only the failure mode for an invalid or missing object_udid is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters including object_udid are already documented in the schema. The description only states the general overwrite/keep behavior and adds no per-parameter format or constraint details, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Mehrere Felder eines bestehenden Objekts ... aendern') plus the exact semantics (overwrite passed properties, leave unnamed fields untouched). It also explicitly distinguishes itself from onto_object_set_property and onto_object_delete, so an agent can pick 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('fuer mehrere Aenderungen gleichzeitig'), a named alternative for the single-field case ('fuer ein einzelnes Feld ist onto_object_set_property schlanker'), and a scope exclusion ('Loeschen ist nicht Teil dieses Tools'). 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.
onto_object_update_linkUpdate Object LinkADestructiveIdempotentInspect
Eigenschaften einer BESTEHENDEN Verknuepfung aendern (z.B. Rollen oder Gewichtung der Kante). Nutze es nicht zum Anlegen — dafuer onto_object_create_link. Zum Entfernen der Kante: onto_object_delete_link. Der bisherige Wert ist danach weg (keine Historie, kein Undo). | EN: object, record, entry, property, link, search
| Name | Required | Description | Default |
|---|---|---|---|
| scope_id | No | Scope-ID | |
| link_udid | Yes | Link-udid | |
| linkvalue | No | Neuer Link-Wert | |
| linkvalue_free | No | Freitext-Wert |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds value beyond the annotations by warning that the prior value is overwritten with no history and no undo, which reinforces destructiveHint=true and tells the agent the change is irreversible in practice. It also documents the precondition that the link must already exist. It stops short of stating permission requirements or the shape of the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight clauses, front-loaded with purpose followed by the exclusion and the destructive caveat. The trailing '| EN: object, record, entry, property, link, search' keyword list is search-engine padding that adds no agent-facing information and slightly dilutes an otherwise lean entry.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation with full schema coverage and annotation-level safety hints, the description covers purpose, routing, preconditions, and irreversibility. No output schema exists, but its absence is not a description responsibility, and 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each of the four parameters carries a description, so the schema does the heavy lifting. The description's mention of 'Rollen oder Gewichtung der Kante' gives a hint about what linkvalue carries, but it does not clarify the relationship between linkvalue and linkvalue_free or the role of scope_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (aendern) and resource (bestehende Verknuepfung) plus a concrete scope limit: only EXISTING links, with examples of the mutable edge attributes (roles, weighting). It explicitly separates itself from onto_object_create_link and onto_object_delete_link, so an agent can pick 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when ('change properties of an existing link'), an explicit when-not ('Nutze es nicht zum Anlegen'), and names the correct alternative for each adjacent operation (create vs delete). Nothing about routing 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.
onto_property_def_createCreate Property DefinitionAInspect
Eine neue Property-Definition anlegen (neues Feld im Objektmodell). Aendert das Schema; bestehende Objekte haben das Feld danach leer. Nutze es beim Modellaufbau. Zum Setzen von WERTEN an einem Objekt ist onto_object_set_property zustaendig, nicht dieses Tool. | EN: property, field, schema, property set, definition
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Property-Key | |
| label | Yes | Label (mo.<Key> = uebersetzbar, sonst Rohwert) | |
| options | No | JSON [{"value":..,"label":..}] fuer value_type=options | |
| required | No | 1 = Pflichtfeld | |
| scope_id | No | Ziel-Scope. GESETZT = eigenes Feld nur fuer diesen Kunden-Scope (braucht can_manage_scope). FEHLEND = globale Plattform-Definition (nur admin). | |
| type_ids | No | Objekttyp-IDs, an die das Feld gebunden wird | |
| max_value | No | Maximum | |
| min_value | No | Minimum | |
| value_type | Yes | Value-Type: string|int|float|datetime|date|geo|bool|options | |
| default_value | No | Standardwert |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, and non-idempotent. The description adds the critical side effect that this changes the schema and that existing objects will have the field empty afterward, which is exactly the kind of behavioral context an agent needs beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main action and side effect, then immediately routes away from the sibling tool. The trailing English keyword list is compact but slightly redundant, keeping it just below maximally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation tool with full schema coverage and no output schema, the description covers purpose, usage, schema-modification impact, and the main alternative. It does not describe the return value or duplicate-key/error behavior, but the essential invocation context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 10 parameters, including scope_id permission implications and value_type options, are already documented in the input schema. The description adds context about the field being part of the object model but does not add parameter-level meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: creating a new property definition / field in the object model. It explicitly distinguishes this from setting values on an object by naming onto_object_set_property as the wrong tool for that job.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use it ('beim Modellaufbau') and gives an explicit when-not with the correct alternative: use onto_object_set_property for setting values, not this tool. This leaves little ambiguity for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_property_def_delete_overrideDelete Property Definition with OverrideCDestructiveInspect
Ontologie: onto/property_def/delete_override | EN: property, field, schema, property set, definition
| Name | Required | Description | Default |
|---|---|---|---|
| def_id | Yes | ID der Override-Definition (die Zeile mit scope_id) | |
| scope_id | Yes | Scope der Override-Definition |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=false, so the safety profile is carried structurally. The description adds nothing beyond that: it does not say whether removing an override reverts the property to its inherited/global definition, whether children or values are affected, or whether the operation can be undone. With annotations covering the basics, this is a marginal addition rather than a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but the brevity is not earned — the single line is a pipe-delimited keyword dump rather than a front-loaded statement of purpose. The most decision-relevant information (that this deletes an override and what that implies) is absent while low-value search terms are included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Contextually this is actually the strongest dimension: with 100% schema coverage and annotations that flag the tool as destructive, the description does not need to explain parameters or safety. The residual gap is that an agent gets no statement of effect (override removed, definition reverts), but the structured metadata prevents this from being a fatal omission. Score kept at 4 only because the structured fields do most of the work; the prose itself is near-empty and a short sentence on the delete semantics would have made this a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: def_id and scope_id are both documented as identifying the override row and its scope. The description contributes no additional meaning about these parameters. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a namespace path plus a keyword list ("Ontologie: onto/property_def/delete_override | EN: property, field, schema, property set, definition") that essentially restates the tool name and title. The word "delete_override" signals removal of an override definition, but there is no explicit verb+resource sentence explaining what is deleted. It does not differentiate from onto_property_def_update or onto_property_def_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool, when not to, or which sibling to prefer. An agent has many neighbouring tools (onto_property_def_update, onto_property_def_create, onto_object_delete_property) and the description gives no basis for choosing. The EN keyword list is search bait, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_property_def_updateUpdate Property DefinitionADestructiveIdempotentInspect
Eine bestehende Property-Definition aendern (Label, Typ, Pflicht, Optionen). Betrifft das Modell, nicht die Werte einzelner Objekte. Nutze es zum Korrigieren der Felddefinition; Werte aenderst du mit onto_object_set_property. Der bisherige Wert ist danach weg (keine Historie, kein Undo). | EN: property, field, schema, property set, definition
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Neuer Key — nur zum Umbenennen setzen | |
| label | Yes | Label — die API verlangt es bei JEDEM Update, sonst schlaegt der Aufruf fehl | |
| def_id | Yes | Property-Definition-ID (Pflicht). Bei einer Scope-Definition (scope_id gesetzt) genuegt can_manage_scope des Scopes. | |
| options | No | JSON [{"value":..,"label":..}] fuer value_type=options | |
| computed | No | JSON {"rule":"..."} — berechnetes Feld | |
| required | No | 1 = Pflichtfeld | |
| type_ids | No | Objekttyp-IDs — ERSETZT die bestehende Bindung | |
| max_value | No | Maximum | |
| min_value | No | Minimum | |
| value_type | No | Value-Type: string|int|float|datetime|date|geo|bool|options | |
| default_value | No | Standardwert |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true. The description adds meaningful context beyond them: the change affects the model rather than individual object values, and there is no history or undo, which is important for a destructive schema mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core description is front-loaded and efficient, identifying the action, scope, alternative tool, and destructive consequence. The trailing '| EN:' keyword list is extraneous for an agent but is a minor structural blemish.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation with no output schema, the description gives the essential call context: schema changes, not object values, and previous definition state is not recoverable. Detailed parameter constraints are covered by the schema, so the description is largely complete, though slightly ambiguous in saying 'Der bisherige Wert ist danach weg'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage, so all 11 parameters are already documented there. The description mentions the main editable fields (Label, Typ, Pflicht, Optionen) but adds little semantic 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('bestehende Property-Definition aendern') and lists the definition fields affected (Label, Typ, Pflicht, Optionen). It also distinguishes model-level schema changes from object values, which separates it from sibling tools such as onto_object_set_property.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this tool for correcting field definitions and names onto_object_set_property as the alternative for changing values. The usage context is clear, though it does not spell out other exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_property_set_createCreate Property SetAIdempotentInspect
Ein neues Property-Set anlegen (Gruppe von Feldern fuer Objekttypen). Aendert das Modell. Nutze es, um wiederkehrende Feldbuendel einmal zu definieren statt Felder einzeln zuzuweisen. Bestehende Objektwerte aendert es nicht. | EN: property, field, schema, property set, definition
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Set-Key | |
| label | No | Label | |
| layout | No | Layout (JSON) | |
| def_ids | No | Property-Definition-IDs | |
| scope_id | No | Ziel-Scope. GESETZT = Set nur fuer diesen Kunden-Scope (braucht can_manage_scope). FEHLEND = global (nur admin). | |
| type_ids | No | Objekttyp-IDs | |
| sort_order | No | Sortierung | |
| card_layout | No | Card-Layout (JSON) | |
| description | No | Beschreibung | |
| display_mode | No | Anzeigemodus |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=true, so the safety profile is covered. The description adds real value beyond that with 'Aendert das Modell' and, importantly, 'Bestehende Objektwerte aendert es nicht' – scoping the blast radius of a mutation. It does not say what happens when the key already exists, despite the idempotent hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and the model-change warning. The trailing '| EN: property, field, schema, property set, definition' keyword tag is search padding rather than semantic content, which is the only waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation with full schema coverage and annotations present, the description supplies the essential missing context: that it modifies the model and does not touch existing object values. Gaps are minor – required-key uniqueness behaviour and the idempotent-on-existing-key semantics are not described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all ten parameters are documented in the schema – including the non-obvious scope_id admin/customer-scope rule. The description adds nothing parameter-specific, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Ein neues Property-Set anlegen') and parenthetically defines what a property set is ('Gruppe von Feldern fuer Objekttypen'), so an agent knows the object model entity being created. It also implicitly distinguishes itself from per-field assignment, though it never names the sibling tools (onto_property_set_update, onto_object_set_property).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Nutze es, um wiederkehrende Feldbuendel einmal zu definieren statt Felder einzeln zuzuweisen' gives a concrete when-to-use condition and contrasts it with the per-field pattern, which routes the agent away from onto_object_set_property. No explicit exclusions or prerequisites are stated, and no alternative tool is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_property_set_updateUpdate Property SetADestructiveIdempotentInspect
Ein bestehendes Property-Set aendern (enthaltene Felder, Zuordnung, Label). Betrifft das Modell, nicht die Werte einzelner Objekte. Nutze es zum Nachziehen von Feldgruppen; Werte aenderst du mit onto_object_set_property. Der bisherige Wert ist danach weg (keine Historie, kein Undo). | EN: property, field, schema, property set, definition
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Set-Key | |
| label | No | Label | |
| layout | No | Layout (JSON) | |
| set_id | Yes | Property-Set-ID. Bei einem Scope-Set (scope_id gesetzt) genuegt can_manage_scope des Scopes. | |
| def_ids | No | Property-Definition-IDs | |
| type_ids | No | Objekttyp-IDs | |
| sort_order | No | Sortierung | |
| card_layout | No | Card-Layout (JSON) | |
| description | No | Beschreibung | |
| display_mode | No | Anzeigemodus |
TDQS
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 substantive context: previous values are irrecoverably lost ("keine Historie, kein Undo") and the mutation affects the model, not object values. That explains the specific blast radius beyond the generic hint, which is genuinely valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tightly written sentences, front-loaded with the core mutation and the model-vs-values scope, followed by the destructive warning. The trailing "| EN: property, field..." keyword block is search-metadata noise that slightly dilutes focus but does not obscure the operative content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description covers the essentials an agent needs: scope (model not values), the correct sibling for value changes, and the irreversibility of the change. Nothing material for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 10 parameters are already documented in the schema. The description gestures at mutable fields (fields, assignment, label) but adds no syntax, format, or constraint detail beyond the schema. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Ein bestehendes Property-Set aendern") and enumerates what is mutable (contained fields, assignment, label). It explicitly distinguishes the scope from sibling onto_object_set_property (model/schema vs. object values), so an agent can tell them apart 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ("zum Nachziehen von Feldgruppen") and names the alternative for the other case ("Werte aenderst du mit onto_object_set_property"). This is a clear when/when-not/alternative routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_report_aggregateAggregate ReportARead-onlyIdempotentInspect
Kennzahlen eines Reports berechnen (Summen/Durchschnitte statt Einzelzeilen). Rein lesend. Nutze es, wenn du Zahlen brauchst statt Datensaetze — das ist billiger als die Rohdaten mit onto_report_json zu holen. Karten-Darstellung dagegen: onto_report_map_data. | EN: report, chart, heatmap, map, dashboard, evaluation, export, statistics
| Name | Required | Description | Default |
|---|---|---|---|
| report_id | Yes | Report-ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so "Rein lesend" largely repeats structured data. The description does add one genuine behavioral trait not in annotations — that this is cheaper than fetching raw rows — but it does not describe the shape of the aggregates returned. Modest added value against an already-covering annotation set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and read-only nature, then routing to alternatives. The trailing "EN: report, chart, heatmap, map, dashboard..." keyword list is somewhat keyword-stuffed filler that doesn't add operational guidance, slightly reducing the density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only tool with annotations and no output schema, the description covers purpose, usage, and what is returned (sums/averages). It doesn't enumerate which aggregate metrics are available, but that is a minor gap given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter (report_id) with 100% schema description coverage, so the schema carries the semantics. The description adds no format, type, or constraint detail beyond what the schema already states, matching the baseline 3 for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: calculates report metrics (sums/averages) instead of individual rows. It explicitly contrasts with onto_report_json (raw data) and onto_report_map_data (map), so an agent can distinguish it from siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ("when you need numbers instead of datasets"), with a named alternative for raw data (onto_report_json) and a named alternative for map display (onto_report_map_data). The selection conditions are clear and complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_report_csvExport Report as CSVARead-onlyIdempotentInspect
Einen Report als CSV-Download ausfuehren (Semikolon-getrennt). Rein lesend. Nutze es fuer Exporte und Tabellenkalkulation. Fuer Weiterverarbeitung in Code ist onto_report_json besser, fuer die Anzeige onto_report_show. Die report_id liefert onto_report_index. | EN: report, chart, heatmap, map, dashboard, evaluation, export, statistics
| Name | Required | Description | Default |
|---|---|---|---|
| report_id | Yes | Report-ID |
TDQS
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 the safety profile is covered. The description adds useful context that the output is semicolon-separated CSV, but it does not add further behavioral details such as download mechanics, authentication needs, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and routing guidance are front-loaded and easy to scan. However, the trailing English keyword list includes terms like chart, heatmap, and dashboard that do not add operational value for selecting this CSV export tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only export tool with rich annotations and complete schema coverage, the description provides enough context to select and invoke it correctly. It covers purpose, format, alternatives, and parameter provenance without needing to explain return values in detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the only parameter is documented as 'Report-ID'. The description adds meaningful provenance by stating that onto_report_index supplies the report_id, which helps the agent obtain a valid value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and output format: export a report as a semicolon-separated CSV download. It also explicitly distinguishes this tool from onto_report_json and onto_report_show, so an agent can choose it without inspecting sibling schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear use cases (exports and spreadsheet work) and names the correct alternatives for code processing (onto_report_json) and display (onto_report_show). It also tells the agent where to obtain the required report_id (onto_report_index).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_report_indexList ReportsARead-onlyIdempotentInspect
Alle Reports auflisten, die fuer dich freigegeben sind. Rein lesend. Nutze es als Einstieg, um die report_id fuer die Ausgabe-Tools zu finden. Die Daten selbst liefern onto_report_show (HTML/Struktur), onto_report_json, onto_report_csv oder onto_report_aggregate. | EN: report, chart, heatmap, map, dashboard, evaluation, export, statistics
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Seitennummer (Default 1) | |
| limit | No | Ergebnisse pro Seite, 1..200; der Wert gilt fuer die Sitzung (Standard 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotent/non-destructive, so "Rein lesend" is redundant, but the description adds real behavioral context: results are permission-filtered to the caller's released reports, which an agent could not infer from structured fields. It stops short of describing result count or ordering, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core routing information is front-loaded in three short sentences. The trailing "| EN: report, chart, heatmap, map, ..." keyword block is search-oriented stuffing rather than guidance, which slightly dilutes an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-output-schema list tool with rich annotations, the description covers purpose, entry-point role, permission scope, and where the payload actually comes from. Only minor gaps remain (ordering, total count), so it is essentially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% — page and limit are already documented in the schema, including the 1..200 range and session-scoped semantics. The description adds nothing 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("auflisten") plus resource ("Reports") and even scopes it: only reports released to the caller. It also distinguishes itself from the sibling output tools (onto_report_show/json/csv/aggregate) that actually deliver the data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it as the entry point to find the report_id needed by the output tools, and names which siblings return the actual content. When-to-use and alternatives are both stated, 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.
onto_report_jsonExport Report as JSONARead-onlyIdempotentInspect
Einen Report als JSON ausfuehren (maschinenlesbare Rohdaten). Rein lesend. Nutze es, wenn du die Ergebnisse weiterverarbeiten willst. Filter uebergibst du als Objekt. Fuer die reine Anzeige genuegt onto_report_show, fuer Tabellen onto_report_csv, fuer Summen onto_report_aggregate. | EN: report, chart, heatmap, map, dashboard, evaluation, export, statistics
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | Filter-Parameter | |
| report_id | Yes | Report-ID |
TDQS
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 'Rein lesend' mostly restates structured data. What the description does add is the output nature (raw machine-readable JSON), but it says nothing about pagination, row limits, error behavior or what happens with invalid filter keys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core is front-loaded: purpose, read-only note, when-to-use, filter format, then alternatives — efficiently ordered. The trailing '| EN: report, chart, heatmap, map, dashboard...' keyword block is routing filler that adds little for an agent that already knows the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only 2 parameters, high schema coverage and no output schema, the description covers the essentials: what it returns (raw JSON), how filters are passed, and how it differs from its report siblings. The unelaborated nested 'filters' object is the one remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already types filters as an object and report_id as an integer, so the schema does the work. 'Filter uebergibst du als Objekt' merely restates the declared type and gives no hint about which filter keys are accepted for a nested object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: run a report as JSON, with the parenthetical '(maschinenlesbare Rohdaten)' clarifying the output form. It immediately distinguishes itself from the report siblings by naming onto_report_show, onto_report_csv and onto_report_aggregate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit selection rule: use this when you want to post-process results, use onto_report_show for pure display, onto_report_csv for tables and onto_report_aggregate for totals. Conditions and alternatives are both spelled out, 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.
onto_report_map_dataGet Report Map DataARead-onlyIdempotentInspect
Die geografischen Daten eines Reports abrufen (Punkte fuer die Kartendarstellung). Rein lesend. Nutze es, wenn der Report Objekte mit Koordinaten enthaelt. Fehlende Koordinaten setzt onto_object_geocode. Kennzahlen statt Karte: onto_report_aggregate. | EN: report, chart, heatmap, map, dashboard, evaluation, export, statistics
| Name | Required | Description | Default |
|---|---|---|---|
| report_id | Yes | Report-ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'Rein lesend' is largely redundant. The description earns credit for the routing behavior it discloses — that this tool does not geocode and that coordinate-less reports are a different tool's job — which is real context an agent cannot get from annotations. It stops short of saying what happens when a report has no coordinates at all (empty result vs. error).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core routing content is front-loaded in two short clauses and each sentence carries a distinct fact. The trailing English keyword dump ('report, chart, heatmap, map, dashboard, evaluation, export, statistics') is search-bait that doesn't help an agent decide or invoke, and the mixed German/English adds mild friction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, non-destructive read with no output schema, the description covers purpose, when to use, and a rough indication of the return shape ('Punkte fuer die Kartendarstellung'). The only real gap is the edge case of a report containing no geocoded objects, which matters here because coordinate presence is the stated precondition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (report_id) with 100% schema coverage, so the baseline is 3. The description adds no meaning about the identifier — no hint on how to obtain a report_id or whether it must reference a map-enabled report — so it neither compensates nor detracts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('geografischen Daten eines Reports abrufen') and immediately qualifies the output ('Punkte fuer die Kartendarstellung'), so the agent knows this returns map-ready coordinates rather than raw report data. It explicitly distinguishes itself from onto_report_aggregate and onto_object_geocode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use condition ('wenn der Report Objekte mit Koordinaten enthaelt') plus two routed alternatives with their own conditions: onto_object_geocode for missing coordinates and onto_report_aggregate for metrics instead of a map. 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.
onto_report_showShow ReportARead-onlyIdempotentInspect
Einen Report ausfuehren und sein Ergebnis lesen (Standarddarstellung). Rein lesend. Nutze es, um den Inhalt zu sehen. Fuer maschinelle Weiterverarbeitung ist onto_report_json geeigneter, fuer Tabellenexport onto_report_csv, fuer Kennzahlen onto_report_aggregate. Die report_id liefert onto_report_index. | EN: report, chart, heatmap, map, dashboard, evaluation, export, statistics
| Name | Required | Description | Default |
|---|---|---|---|
| report_id | Yes | Report-ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, and the description's 'Rein lesend' restates that rather than adding to it. It does add non-obvious context: that report_id must be sourced from onto_report_index, and that the output is a human-facing 'Standarddarstellung' as opposed to machine-readable. It does not describe what the rendered result actually contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The substantive content (purpose, read-only, routing to three alternatives, id provenance) is front-loaded in tight sentences. The trailing '| EN: report, chart, heatmap, ...' tag block is a search-keyword dump that adds little for an agent that already read the German text, though it is compact and clearly demarcated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only retrieval tool with full schema coverage and no output schema, the definition covers everything needed to select and call it, including ID sourcing and sibling routing. The only gap is that 'Standarddarstellung' is never unpacked — an agent cannot say what fields or media the result contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one required parameter, so the baseline is 3. The description earns a point above baseline by explaining the provenance of report_id ('Die report_id liefert onto_report_index'), which the schema does not say.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb+resource ('Einen Report ausfuehren und sein Ergebnis lesen') plus the rendering mode ('Standarddarstellung'), which immediately separates it from the JSON/CSV/aggregate variants. Sibling tools are named explicitly, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the positive case ('Nutze es, um den Inhalt zu sehen') and then gives explicit when-to-use-else rules for three named alternatives: onto_report_json for machine processing, onto_report_csv for table export, onto_report_aggregate for key figures. It also says where to obtain the report_id (onto_report_index).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_scope_save_structuredimage_categoriesSave Image CategoriesADestructiveIdempotentInspect
Die Kategorien der strukturierten Bildablage eines Scopes speichern (anlegen/aendern). Ueberschreibt die Kategorienliste des Scopes. Nutze es beim Einrichten neuer Bildplaetze; anschliessend passen Uploads mit upload_file_to_object darauf. Den Ist-Stand vorher liest onto_scope_structuredimage_categories. Der bisherige Wert ist danach weg (keine Historie, kein Undo). | EN: scope, workspace, area, project, category, image, access
| Name | Required | Description | Default |
|---|---|---|---|
| scope_id | Yes | Scope-ID (nur eigene, can_manage_scope noetig) | |
| categories | Yes | Kategorien-Liste. Jeder Eintrag: {imagename (Pflicht, z.B. 'Image01.jpg' — MUSS dem Dateinamen des Uploads entsprechen), caption (Anzeigename), info (Fotografier-Hinweis), language ('de'/'en'), thumbnail (true/false), versioned (true/false)}. Mehrere Eintraege mit gleichem imagename = Sprachvarianten. Die Reihenfolge bestimmt die Anzeige. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true; the description reinforces that with concrete consequences beyond the flag: the previous value is overwritten, there is no history and no undo, and subsequent uploads must match the saved list. The scope permission requirement (can_manage_scope) appears only in the schema, not in the description, which is the remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then scope, then consequence – every sentence earns its place, including the destructive warning. The trailing "| EN: scope, workspace, area, project, ..." keyword block reads like search metadata rather than guidance and adds noise at the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter, destructive mutation with no output schema, the description covers the critical agent decisions: it overwrites, it is irreversible, read the current state first, and uploads depend on it. Only the permission prerequisite and any result confirmation are undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself is unusually rich (imagename must equal the upload filename, duplicate imagenames mean language variants, order defines display). The description adds only the overwrite-of-the-whole-list behavior, which is already implied by "Ueberschreibt"; per the baseline rule this sits at 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: save (create/change) the categories of a scope's structured image storage, and explicitly distinguishes it from the read sibling onto_scope_structuredimage_categories. The only deduction is that the substance is written entirely in German, with the English portion reduced to a keyword tag list that conveys no semantics to an English-only agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Nutze es beim Einrichten neuer Bildplaetze" gives a concrete usage situation, and it names the read tool to consult first ("Den Ist-Stand vorher liest onto_scope_structuredimage_categories") as well as the downstream consumer upload_file_to_object. No explicit when-not-to-use case is given, but the setup context is clear enough to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_scope_structuredimage_categoriesShow Image CategoriesARead-onlyIdempotentInspect
Die Kategorien der strukturierten Bildablage eines Scopes lesen (welche Bildplaetze es gibt). Rein lesend. Nutze es vor einem Upload, um den korrekten Kategorie-Namen fuer upload_file_to_object (type=structuredimage) zu kennen. Kategorien aendern: onto_scope_save_structuredimage_categories. | EN: scope, workspace, area, project, category, image, access
| Name | Required | Description | Default |
|---|---|---|---|
| scope_id | Yes | Scope-ID. VERWALTUNGS-SICHT: liefert die Kategorien-DEFINITION des Scopes zum Bearbeiten (Bearbeiten nur mit can_manage_scope). Zum ANZEIGEN beim Einsortieren von Bildern an einem Objekt NICHT dieses Tool nehmen, sondern onto_file_structured — das braucht kein Verwaltungsrecht und liefert die Kategorien zusammen mit den bereits hochgeladenen Bildern. |
TDQS
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 sentence 'Rein lesend' merely restates that. The description adds workflow context (what the output is used for downstream) but says nothing about the can_manage_scope requirement, which is buried in the schema, nor about output shape or permissions. With annotated safety, this is adequate but not value-adding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The functional sentences are front-loaded and tight, but the trailing 'EN: scope, workspace, area, project, category, image, access' is keyword stuffing that adds no decision-relevant information. A bilingual restatement plus a tag list dilutes an otherwise well-structured definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with full annotations and no output schema, the description covers what the tool returns (the category definitions / available image slots) and how it fits into the upload workflow. The only meaningful omission is the management permission requirement, which is documented in the schema rather than the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is exactly one parameter with 100% schema coverage, and the schema description is itself very rich, including a warning to prefer onto_file_structured for display purposes. The tool description contributes nothing about scope_id semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read/lesen) applied to a specific resource (the structured-image category definitions of a scope) and clarifies what that content is ('welche Bildplaetze es gibt'). It also names the sibling that performs the mutation (onto_scope_save_structuredimage_categories) and the consumer (upload_file_to_object with type=structuredimage), so an agent can place the tool precisely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case and ordering: call it before an upload to learn the correct category name. It also routes the write case to onto_scope_save_structuredimage_categories. The important 'when NOT to use' case (use onto_file_structured when sorting images at an object) only appears in the schema's parameter text, not in the description itself, so the guidance is strong but not fully self-contained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_series_lastGet Latest Series ValuesARead-onlyIdempotentInspect
AKTUELLE Werte mehrerer Zeitreihen in EINEM Aufruf - der Weg fuer Listen, Karten und Fahrzeugflotten ("wo stehen alle Fahrzeuge jetzt"). objects = Liste der Objekt-udids (max 1000), series = Liste der series_keys (mehrere Reihen gleichzeitig). Beide als Array. Gemessen: 1000 Objekte in 56 ms. Antwort: {count, values[{object_udid, series_key, ts, value_float, value_str, lat, lng}]}. Geliefert wird nur, was der Aufrufer sehen darf (Scope des Property, fail-closed): ein Objekt ohne sichtbare Reihe fehlt still - count kleiner als objects heisst "nicht sichtbar", nicht "kein Wert da". Rein lesend. ZEIT: series_ts ist UTC (ISO 8601 mit Z). | EN: time series, history, trend, chart, curve, sensor data, measurement
| Name | Required | Description | Default |
|---|---|---|---|
| series | Yes | Liste der series_keys (Property-Keys), z.B. ["location"] | |
| objects | Yes | Liste der Objekt-udids (32-hex), max 1000 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish readOnly, idempotent and non-destructive, and the description adds real behavior beyond them: the 1000-object ceiling, a measured latency figure, the explicit fail-closed scoping rule, and the crucial caveat that a missing object means "not visible" rather than "no value" (count < objects). It also states the timezone of the returned timestamps. That is exactly the context an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical information (bulk current-value lookup, limits, scoping caveat) is front-loaded and dense. The tail is weaker: the keyword list ("time series, history, trend, chart, curve, sensor data, measurement") does not help an agent decide or invoke, and restating max 1000 and "both as arrays" duplicates the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description supplies the response shape ({count, values[{object_udid, series_key, ts, value_float, value_str, lat, lng}]}), the semantics of count under scope filtering, and the timezone of ts. Nothing needed to call the tool correctly or interpret its result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, and the description largely restates them (array of object udids up to 1000, array of series_keys). It adds only marginal meaning, such as emphasizing that multiple series can be requested simultaneously; the UTC note refers to the response field ts, not to a parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: it returns the current values of multiple time series in one call, with concrete use cases (lists, maps, vehicle fleets). The agent can tell it apart from a historical or range query, but no sibling such as onto_series_range is named or explicitly excluded, so the differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly says when to use it ("wo stehen alle Fahrzeuge jetzt" / lists, maps, fleets) and gives the concrete shape of a bulk lookup. It never names the alternative for historical lookups, and the trailing English keyword list ("history, trend") actually points back toward the sibling's territory, which slightly muddies the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_series_rangeGet Series RangeARead-onlyIdempotentInspect
VERLAUF einer Zeitreihe lesen: die Punkte zwischen zwei Zeitpunkten. Das ist der Weg fuer "wie war der Verlauf / die Tagesroute / die Messkurve". Pflicht: object_udid + series_key (beides aus onto_object_show: series_keys liefert die Reihen des Objekts). resolution ist der Kniff: 0 = jeder Rohpunkt, >0 = Raster in Sekunden (Minimum 60). Fuer eine Tagesroute 300 (5 Min) nehmen. Ohne resolution kommen ALLE Rohpunkte. Ohne from/to: die letzten 3 Tage. Antwort: {count, resolution, points[{ts, value_float, value_str, lat, lng}]}. Bei einem geo-Sensor tragen lat/lng die Position, value_* ist dann null. Ist count kleiner als erwartet, ist die Antwort auf MAX_RANGE_POINTS begrenzt: Fenster verkleinern oder groeber rastern. Rein lesend. ZEIT: alle ts in der Antwort sind UTC (ISO 8601 mit Z). Auch from/to sind UTC. | EN: time series, history, trend, chart, curve, sensor data, measurement
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Ende in UTC, gleiches Format. Ohne Angabe: jetzt (UTC). | |
| from | No | Beginn in UTC. "2026-10-06", "2026-10-06 08:00:00" oder "2026-10-06T08:00:00Z" — alles UTC. Ohne Angabe: vor 3 Tagen. | |
| resolution | No | Raster in Sekunden: 0 = roh, sonst >=60. Fuer Tagesroute 300. Ohne Angabe: 0 (roh). | |
| series_key | Yes | Key der Reihe = Key des zugehoerigen Property (z.B. "location") | |
| object_udid | Yes | udid des OBJEKTS (32-hex), nicht der Reihe |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly/idempotent/non-destructive), and the description adds substantially beyond that: defaults (no from/to = last 3 days, no resolution = all raw points), the MAX_RANGE_POINTS truncation and how to detect it from a lower-than-expected count, the response payload shape, geo-sensor lat/lng vs null value_*, and UTC on both input and output. That is exactly the context annotations cannot supply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core operation, then defaults, then response shape, then failure mode, then timezone caveat — a sensible order. Slight redundancy: UTC is stated twice and "Rein lesend" restates the readOnly annotation, and the bilingual keyword tail is padding, though useful for matching.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description fully covers the return object ({count, resolution, points[...]}) plus the geo-sensor special case and the truncation failure mode. An agent has everything needed to call it correctly and interpret the result without further lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds operational meaning: resolution as a raw-vs-grid tradeoff with a 60s floor, the 300s heuristic for a daily route, and the consequence of omitting from/to. Much of this echoes the schema text, so it is incremental rather than fully compensating.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Front-loads a specific verb+resource in caps ("VERLAUF einer Zeitreihe lesen") and pins the scope to points between two timestamps. It then names the intent it serves (course, daily route, measurement curve), which distinguishes it from the sibling onto_series_last that would return only the latest value.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use framing plus prerequisite routing: object_udid and series_key are mandatory and come from onto_object_show's series_keys. It also advises choosing resolution by use case (300 for a daily route). It stops short of an explicit exclusion clause naming onto_series_last for single latest values, so a routing decision is left implicit rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_startcard_deleteDelete Start CardADestructiveIdempotentInspect
Startkarte loeschen (exakte id aus onto_startcard_index). Wirkung: die Karte verschwindet bei allen im Team von /ontouser. Recht: can_manage_scope auf dem Scope der Karte. Kein Papierkorb. | EN: start card, delete
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Karten-ID aus onto_startcard_index (Pflicht) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered; the description still adds real value by stating the blast radius (the card disappears for everyone in the team of /ontouser), the required right (can_manage_scope on the card's scope), and that there is no trash bin, i.e. no recovery.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact and front-loaded: effect, permission and irreversibility arrive in three short clauses with no filler. The trailing '| EN: start card, delete' keyword tag is a minor structural appendage rather than integrated prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete with no output schema and full annotation coverage, the description supplies everything an agent needs: how to get the id, what permission is required, who is affected, and that the action is unrecoverable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter is already described as coming from onto_startcard_index; the description only reiterates this with emphasis on 'exakte id', adding no new format or validation detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Startkarte loeschen') and anchors the id to its source tool (onto_startcard_index), which cleanly separates it from the sibling read/move/save start-card tools. The bilingual 'EN: start card, delete' tag aids recognition without adding noise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the destructive verb and the pointer to onto_startcard_index for obtaining the id, but there is no explicit when-to-use vs. alternatives (e.g., onto_startcard_move as a non-destructive option) and no statement of when deletion should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_startcard_indexList Start CardsARead-onlyIdempotentInspect
Teamweite Startkarten auflisten, die DU pflegen darfst. Liefert startcards (id, scope_id, title, url, name, sort_order), die waehlbaren interfaces (name, label, scope_id) und die scopes (id->Name). Eine Startkarte erscheint auf /ontouser in einem EIGENEN Panel 'Startkarten fürs Team' (getrennt von den persoenlichen Favoriten) bei allen, die den Scope lesen duerfen. Rollen gibt es bewusst NICHT: eine Startkarte gilt fuer alle im Scope; wer differenzieren will, baut eine Ansicht mit eigenem access-Gate. Unterschied zu onto_favorite_*: Favoriten sind persoenlich, Startkarten sind Team-Konfiguration. | EN: start cards, dashboard, team
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real substance beyond that: results are limited to cards you may maintain, cards render in a separate 'Startkarten fürs Team' panel for everyone who can read the scope, and there are deliberately no per-role variations — useful context for interpreting the output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well front-loaded and the returned fields are grouped compactly, but the closing rationale about roles and building a view with your own access gate is design commentary that an invoking agent does not strictly need. The mixed German/English phrasing also adds scanning cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description lists the returned fields for startcards and interfaces and explains the scope id->name mapping, which is the key missing piece an agent would otherwise have to discover. With no parameters and read-only annotations, that covers 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter meaning to convey and the baseline is 4. The description compensates by documenting the shape of the returned records instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource ("Teamweite Startkarten auflisten") plus an explicit scope restriction ("die DU pflegen darfst"). It also enumerates the three returned collections (startcards, interfaces, scopes) and contrasts itself with onto_favorite_*, so an agent can identify it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly routes the agent: "Unterschied zu onto_favorite_*: Favoriten sind persoenlich, Startkarten sind Team-Konfiguration" gives a clear alternative and the condition separating them. It does not, however, point to the write-side siblings (onto_startcard_save/move/delete) for an agent that actually wants to modify a card, so the guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_startcard_moveReorder Start CardAInspect
Reihenfolge der Startkarten innerhalb ihres Scopes aendern: id + dir=up|down tauscht den Platz mit dem Nachbarn. Die Reihenfolge gilt fuer alle im Team; Nutzer koennen sie nicht selbst aendern (anders als persoenliche Favoriten). | EN: start card, order, reorder
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Karten-ID (Pflicht) | |
| dir | Yes | up oder down |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, non-idempotent mutation. The description adds real value beyond them: the effect is a swap with a neighbor (explaining why repeated calls undo each other) and the result applies to the entire team, not just the caller, which is a significant side effect for an agent to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded core sentence with the mechanism, followed by one useful caveat about team-wide scope. The trailing '| EN: start card, order, reorder' keyword tag is search metadata rather than agent guidance, a minor bit of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no output schema, the description covers mechanism, scope of effect, and the permission restriction well. It omits edge behavior (e.g., moving the topmost card up) and which role is required to perform the change, which would complete it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents both parameters, so the baseline is 3. The description goes further by explaining what 'dir' actually does (swaps position with the neighboring card), giving meaning the schema's bare 'up oder down' does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Reihenfolge der Startkarten ... aendern') plus the exact mechanism ('id + dir=up|down tauscht den Platz mit dem Nachbarn'). It also explicitly contrasts with personal favorites, which distinguishes it from the onto_favorite_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use: reordering is a team-wide operation and users cannot perform it themselves, unlike personal favorites. It does not explicitly route to onto_startcard_index or onto_startcard_save as alternatives, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_startcard_saveSave Start CardADestructiveIdempotentInspect
Startkarte anlegen (id weglassen) oder aendern (id setzen). scope_id und iface sind Pflicht; iface muss eine Ansicht aus onto_startcard_index.interfaces sein, die im GLEICHEN Scope liegt (sonst 400) — so kann niemand fremde Ansichten in seinen Scope ziehen. title leer = Anzeigename der Ansicht. KEIN roles-Parameter: Startkarten gelten fuer alle im Scope. Rueckgabe: saved (id) und karte (zurueckgelesene Zeile). Recht: can_manage_scope auf scope_id (Admin ausgenommen, wie in /onto/scope). | EN: start card, save, team card
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ID der Karte — nur zum Aendern; weglassen legt neu an | |
| iface | Yes | Name der Ansicht aus onto_startcard_index.interfaces (Pflicht); muss im selben Scope liegen | |
| title | No | Titel der Karte; leer = Name der Ansicht | |
| scope_id | Yes | Scope der Karte (Pflicht) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, it discloses the cross-scope validation failure mode (400) and the security rationale, the required right (can_manage_scope on scope_id, admin exempt), the absence of a roles parameter, and the return payload (saved id plus re-read row). With destructiveHint=true already flagged, the description adds the missing context about what is mutated and who may do it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then preconditions, then permissions and return values in a single dense paragraph with no filler. The trailing English keyword line ('start card, save, team card') is search-oriented rather than informative, a minor cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by naming both returned fields (saved id and karte). For a 4-parameter upsert with a permission gate and a scope constraint, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description nevertheless adds meaning by tying id to create-vs-update, stating the 400 consequence of a cross-scope iface, and defining title's empty-value fallback. Much of this restates the schema text, which caps it at 4 rather than 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first clause states the verb and resource and the exact create-vs-update discriminator: 'Startkarte anlegen (id weglassen) oder aendern (id setzen)'. An agent can distinguish this upsert from onto_startcard_delete, onto_startcard_move, and onto_startcard_index 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete when-to-use semantics (omit id to create, set id to modify) and a hard precondition (iface must come from onto_startcard_index.interfaces in the same scope). It does not explicitly point at move/delete as alternatives for other operations, but the create/update routing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_trigger_createCreate TriggerAInspect
Einen neuen Trigger anlegen (zeit- oder ereignisgesteuerter Ablauf). Aendert den Plan — der Ablauf laeuft danach automatisch und kann Daten schreiben. Nutze es fuer wiederkehrende Aufgaben. Bestehende aenderst du mit onto_trigger_update; Loeschen: onto_trigger_delete. | EN: trigger, automation, rule, event, condition, effect ZEITREGEL: Datum/Zeit liegt in der DB als UTC und wird von MCP ROH als UTC ausgegeben — im Browser eingegebene 10:00 erscheinen hier als 09:00 (Winter) / 08:00 (Sommer); die Oberflaeche rechnet in die Betrachterzone um (Cookie -> Profilfeld -> Europe/Berlin). Zeit-Operatoren: minutes_of, minutes_between[von,bis], hours_between[von,bis,pause_minuten].
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Technischer Schluessel (a-zA-Z0-9_). Ohne Angabe = name. Muss eindeutig sein. | |
| body | Yes | Die Regel als Objekt oder JSON-String. body-Format (verifiziert): {"on":"update","object_types":["building"],"effects":[{"type":"set_property","props":{"status":"geprueft"}}]}. WICHTIG: set_property nutzt das Feld "props", NICHT key/value. Platzhalter in Werten: {object_udid}, {object_name}, {value_new}, {value_old}. Optional condition: {"changed":["feld"],"props":[{"key":"temperatur","op":"gte","value":"30"}]} — Operatoren: eq, neq, in, gt, gte, lt, lte, empty, notempty, matches. create_object braucht "object_type" und "name", optional "props"/"links". create_link braucht "linktype" und "to" (32-hex, oder from/to). run_function braucht "function" (Name oder UDID). notify: "to" (eine Adresse) ODER "to_link" + optional "to_prop" (Default email) + "all" (true = alle verknuepften Objekte, Default true) — damit erreicht eine Meldung ALLE Personen einer Kante, z.B. alle an worksShift. Optional "to_linkvalue" (nur Kanten mit diesem Linkwert) und "to_link2" + "to_linkvalue2" fuer einen ZWEITEN Sprung (z.B. Schicht -> Tausch-Anfrage -> Antragsteller). Im Text loesen {linked:<linktype>:<linkvalue>:<prop>} Werte verknuepfter Objekte auf (mehrere Treffer als Komma-Liste); bei "removed"-Ereignissen zusaetzlich {removed_name} und {removed_email}. | |
| name | Yes | Anzeigename der Regel (z.B. 'Rauchmelder-Alarm') | |
| label | No | Anzeigetext (ohne Angabe aus key abgeleitet) | |
| scope_id | Yes | Ziel-Scope. Du musst dort Manager sein (can_manage_scope). PUBLIC (15) nur Admin. | |
| description | No | Beschreibung (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it warns that creation changes the plan, that the workflow subsequently runs automatically, and that it can write data. The raw-UTC versus viewer-timezone explanation adds valuable operational context, though execution failure/retry behavior and the create response are not described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, side effects, usage, and sibling routing are front-loaded, and the remaining material addresses non-obvious time behavior. The single dense paragraph and EN keyword list add some clutter, but the overall length is reasonable for this complex tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Together with the rich schema, the definition supports tool selection and construction of the documented event-driven rules, while scope permissions are covered by scope_id. The main gap is a complete time-driven body example; with no output schema, the returned representation or identifier of the created trigger also remains undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All six parameters already have schema descriptions, including unusually detailed body semantics, so the baseline is 3. The description adds meaningful UTC interpretation and the names and argument shapes of minutes_of, minutes_between, and hours_between, but does not show how those operators fit into a complete body.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line gives a specific verb and resource: create a new trigger, defined as a time- or event-driven workflow. It also distinguishes creation from onto_trigger_update and onto_trigger_delete, making its role among the sibling tools clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Nutze es fuer wiederkehrende Aufgaben" provides an explicit use case, while existing triggers and deletion are routed to the appropriate alternatives. The time/event distinction further clarifies that both scheduled automation and event-driven reactions belong here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_trigger_deleteDelete TriggerADestructiveIdempotentInspect
Einen Trigger loeschen (Automatik abschalten). Er laeuft danach nicht mehr — bereits erzeugte Daten bleiben bestehen. Zum blossen Pausieren den Zeitplan mit onto_trigger_update anpassen, falls die Definition erhalten bleiben soll. | EN: trigger, automation, rule, event, condition, effect
| Name | Required | Description | Default |
|---|---|---|---|
| udid | Yes | udid der Regel (32-hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description goes further by disclosing post-delete behavior the annotations cannot express: the trigger stops running but previously generated data survives, and the definition itself is lost unless you pause instead. Missing only an explicit statement on irreversibility/undo.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core behavioral facts are front-loaded in two tight sentences with zero filler. The trailing '| EN:' keyword list is matching-oriented noise rather than substance, which slightly detracts from otherwise excellent economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with full annotation coverage and no output schema, the description gives the agent everything needed: what stops, what persists, and how to avoid deletion. It could be a 5 with an explicit note on whether removal is reversible, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter 'udid' is documented in the schema as a 32-hex identifier. The description adds nothing about the parameter, so the baseline 3 applies since the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Einen Trigger loeschen') and immediately clarifies the effect (automation switched off), which distinguishes it from the sibling onto_trigger_update that only pauses. An agent can tell exactly what operation this is 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative (onto_trigger_update) and the condition that selects it ('zum blossen Pausieren ... falls die Definition erhalten bleiben soll'). This is the when-to-use-this-vs-alternative guidance the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_trigger_indexList TriggersARead-onlyIdempotentInspect
Alle Trigger auflisten (zeit- oder ereignisgesteuerte Ablaeufe). Rein lesend. Nutze es, um zu sehen, welche Automatiken geplant sind und wann sie laufen. Anlegen/Aendern: onto_trigger_create / onto_trigger_update. Sofort ausfuehrbare Funktionen: onto_function_index. | EN: trigger, automation, rule, event, condition, effect
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Filter auf Name/Beschreibung der Regel. Gilt fuer DIESEN Aufruf, wird nicht in der Sitzung gespeichert. | |
| page | No | Seitennummer (Default 1) | |
| limit | No | Ergebnisse pro Seite, 1..200; der Wert gilt fuer die Sitzung (Standard 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The read-only nature ("Rein lesend") merely restates the supplied readOnlyHint/destructiveHint=false annotations, so it earns no extra credit. The only additional substance is the intended inspection purpose, with no disclosure of result ordering, paging behavior at the end of the list, or what fields a trigger record contains. With annotations already carrying the safety profile, this is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The operational sentences are front-loaded and each one carries routing value (what it lists, why to call it, what to call instead). The trailing English keyword list ("trigger, automation, rule, event, condition, effect") is search-bait that does not help an agent decide or invoke, and the German/English mixing adds mild parsing friction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with three optional parameters, full schema coverage, and no output schema, the description covers purpose, safety, and alternatives sufficiently to call it correctly. What is missing — default ordering, whether an empty result is possible, and result shape — is minor given the annotations and complete parameter documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains q, page, and limit, including the notable distinction that q is per-call while limit persists for the session. The description adds nothing about filtering syntax or paging strategy on top of that. Baseline 3 applies when structured fields do the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Alle Trigger auflisten (zeit- oder ereignisgesteuerte Ablaeufe)" gives a specific verb plus resource and disambiguates the domain term with a parenthetical. It explicitly separates itself from sibling tools: onto_trigger_create/update for writes and onto_function_index for immediately executable functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the use case ("um zu sehen, welche Automatiken geplant sind und wann sie laufen") and routes the agent to concrete alternatives for creating/changing (onto_trigger_create / onto_trigger_update) and for a related but distinct concept (onto_function_index). Exclusions are explicit rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_trigger_updateUpdate TriggerADestructiveIdempotentInspect
Einen bestehenden Trigger aendern (Zeitplan, Bedingung, Ziel-Funktion). Betrifft den Plan, nicht die bereits gelaufenen Ausfuehrungen. Nutze es zum Umstellen von Automatiken. Eine Funktion einmalig ausfuehren: onto_function_run. Der bisherige Wert ist danach weg (keine Historie, kein Undo). | EN: trigger, automation, rule, event, condition, effect
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Neue Regel vollstaendig (Format siehe onto_trigger_create) | |
| udid | Yes | udid der Regel (32-hex, aus onto_trigger_index) | |
| label | No | Anzeigetext | |
| scope_id | No | Ziel-Scope (ohne Angabe: der bisherige) | |
| description | No | Beschreibung |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true; the description adds the concrete consequence an agent needs — the prior value is gone, with no history and no undo — and clarifies that existing executions are unaffected. It stops short of stating permission requirements or the shape of the response, but it meaningfully extends the annotation profile rather than repeating it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The destructive warning and the plan-vs-executions distinction are front-loaded and the sentences do real work. The trailing '| EN: trigger, automation, rule, event, condition, effect' keyword list is filler that adds nothing an agent can act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description covers what changes, what is lost, and which sibling to use for the adjacent task. Remaining gaps — permissions/auth and whether omitted fields revert to defaults — are minor given full schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter is documented in German, so the schema carries the load; the description only alludes to the body facets (schedule, condition, target function) without adding format or validation detail. Baseline 3 applies when structured fields already explain the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('einen bestehenden Trigger aendern') plus the exact facets being modified (Zeitplan, Bedingung, Ziel-Funktion), and explicitly scopes it to the plan rather than past executions. This separates it from onto_function_run and from onto_trigger_create without needing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a positive use case ('Nutze es zum Umstellen von Automatiken') and names the one confusion-prone alternative with its condition: run a function once via onto_function_run instead. It does not explicitly distinguish update from onto_trigger_create or onto_trigger_delete, but the closest ambiguity is resolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_type_showShow Object TypeARead-onlyIdempotentInspect
Einen Objekttyp vollstaendig lesen (zugehoerige Properties, Interfaces, Eigenschaften). Rein lesend. Nutze es, wenn dir der Typ-Name bekannt ist und du wissen willst, welche Felder er erlaubt — das ist die Vorbereitung fuer onto_object_create. Die reine Namensliste liefert onto_type_index. | EN: object type, schema, type, definition
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Objekttyp-Name | |
| page | No | Seitennummer der Objektliste (Default 1) | |
| limit | No | Objekte pro Seite, 1..200; wird in der Sitzung gemerkt (Standard 10) | |
| scope_id | No | Scope fuer das Agentenschema (sonst kleinster lesbarer Scope) |
TDQS
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 useful content about what is read (properties, interfaces, attributes) but repeats the read-only nature and does not mention pagination behavior or object-list returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main purpose and usage guidance are front-loaded and efficient. The trailing '| EN: object type, schema, type, definition' keyword tag is slightly extraneous but does not significantly disrupt readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description sufficiently explains what the tool returns (properties, interfaces, attributes) and its role relative to onto_type_index and onto_object_create. Minor gaps around pagination and scope behavior are covered by the schema and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents name, page, limit, and scope_id in detail. The description does not add further meaning beyond the schema, which is the baseline when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Einen Objekttyp vollstaendig lesen' plus the components returned (Properties, Interfaces, Eigenschaften). It clearly distinguishes itself from onto_type_index and signals its relationship to onto_object_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use it: when the type name is known and you need to know which fields are allowed, as preparation for onto_object_create. It also names the alternative tool for a pure name list (onto_type_index).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_interface_map_markersMap Interface Markers for End UserARead-onlyIdempotentInspect
Die Kartenmarker eines Interfaces im Self-Service-Kontext abrufen (Objekte mit Koordinaten fuer die Karte). Rein lesend. Inhaltlich identisch zu onto_interface_map_markers — nimm dieses als Scope-Nutzer. Fehlende Koordinaten setzt ein Administrator mit onto_object_geocode. | EN: end user, customer, portal, notification, map, scope
| Name | Required | Description | Default |
|---|---|---|---|
| bbox | Yes | Kartenausschnitt minLng,minLat,maxLng,maxLat (Pflicht, der Endpunkt filtert darauf) | |
| name | Yes | Interface-Name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds useful operational context about missing coordinates and admin geocoding, but largely repeats 'rein lesend' and does not describe return format or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded German sentences convey purpose, read-only nature, alternative tool, and coordinate handling. The trailing English keyword tag is compact and aids discovery, though it is less essential than the main content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, read-only tool with rich annotations and 100% parameter coverage, the description covers purpose, scope, sibling choice, and the coordinate-gap workaround. Return values are not detailed, but there is no output schema and the name sufficiently implies marker objects with coordinates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both 'name' and 'bbox' are documented, including that bbox is required and used for filtering. The description adds no parameter syntax or meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('abrufen') and resource ('Kartenmarker eines Interfaces') in a self-service context, and explicitly identifies onto_interface_map_markers as the equivalent for another scope. An agent can distinguish this tool from its sibling 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the scope user to choose this tool over onto_interface_map_markers, and points to onto_object_geocode for missing coordinates that an administrator must set. This covers both when to use it and the relevant alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_interface_showShow Interface for End UserARead-onlyIdempotentInspect
Ein einzelnes Interface im Self-Service-Kontext lesen (Sicht mit ihren Feldern). Rein lesend. Inhaltlich identisch zu onto_interface_show — nimm dieses, wenn du als Scope-Nutzer arbeitest. Alle Interfaces (Admin) listet onto_interface_index. | EN: end user, customer, portal, notification, map, scope
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Interface-Name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'Rein lesend' mostly restates structured data. The description does add value by noting the payload is a view together with its fields and that behavior is content-identical to onto_interface_show, but it says nothing about what happens for an unknown name or what fields come back.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and scope routing come first in a tight two-clause sentence, followed by alternatives. The trailing '| EN: end user, customer, portal, notification, map, scope' keyword block is somewhat noisy and only partly earns its place, keeping it short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers scope, safety, return shape at a high level, and sibling routing. The only remaining gap is error/not-found behavior, which is minor given full schema coverage and complete annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter with 100% schema description coverage, so the schema already carries the semantics of 'name'. The description adds no format, casing, or lookup-by-title vs lookup-by-id nuance, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('lesen') plus the exact resource ('ein einzelnes Interface im Self-Service-Kontext') and clarifies what is returned ('Sicht mit ihren Feldern'). It explicitly differentiates itself from both onto_interface_show (identical content, different scope) and onto_interface_index (admin listing), so an agent can disambiguate 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit selection rule: use this one when acting as a scope/end user, use onto_interface_show as the equivalent admin-side tool, and use onto_interface_index to list all interfaces. Both the relevant alternative and the condition that selects it are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_notification_deleteDelete NotificationADestructiveIdempotentInspect
Eine eigene Notification loeschen (nur gesendete oder empfangene des eigenen Kontos), einzeln je id. Fuer das Aufraeumen des Postfachs. | EN: notification, delete, inbox cleanup
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Notification-id aus ontouser_notification_index |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the agent knows this is an irreversible-per-item write. The description contributes the authorization boundary (only notifications sent by or received by the caller's own account) and the single-item granularity, which are genuine additions beyond the annotations. It does not state whether deletion is permanent or how failures on foreign ids are reported, so it stays at a solid 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the operation and its scope, then the use case. The trailing English keyword tag "| EN: notification, delete, inbox cleanup" is redundant with the German text and reads as search padding, which costs a point but does not obscure the content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete tool with rich annotations and no output schema, the description covers the operation, the authorization scope, the granularity and the motivating use case. The only minor gap is what a successful call returns or how partial failures are surfaced, which is not critical for a destructive single-item delete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented as the notification id taken from ontouser_notification_index. The description adds only the "einzeln je id" framing (no bulk deletion), which is a small but real clarification over the schema. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
"Eine eigene Notification loeschen" gives a specific verb+resource, and the parenthetical "nur gesendete oder empfangene des eigenen Kontos" plus "einzeln je id" pins the scope precisely. That scope wording implicitly separates it from ontouser_notification_index/read/send, though no sibling is named explicitly, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Fuer das Aufraeumen des Postfachs" indicates the intended situation (inbox cleanup), which is real usage context rather than none. However, there is no explicit guidance on when NOT to delete (e.g. use ontouser_notification_read to mark as read instead) and no mention of prerequisites or confirmation, so the routing is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_notification_indexList NotificationsARead-onlyIdempotentInspect
Die eigenen Benachrichtigungen auflisten (Meldungen des angemeldeten Kontos). Rein lesend. Nutze es als Einstieg, um neue Meldungen zu finden. Eine einzelne Meldung als gelesen markieren: ontouser_notification_read. Fuer Systemprotokolle (Admin) ist onto_action_logs zustaendig. | EN: end user, customer, portal, notification, map, scope
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, and 'Rein lesend' largely restates that. The description does add that this is the entry point for new notifications, but it says nothing about result ordering, limits, or unread filtering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core German description is compact and front-loaded with purpose, then alternatives. The trailing 'EN: end user, customer, portal, notification, map, scope' tag block is keyword padding that does not serve an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, read-only list tool with full annotation coverage and no output schema, the description covers purpose and routing adequately. Remaining gaps like pagination or whether unread-only filtering is possible are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters there is no parameter meaning to explain, so the baseline of 4 applies. The description correctly implies no filtering arguments are needed for the basic list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'Die eigenen Benachrichtigungen auflisten (Meldungen des angemeldeten Kontos)' gives a specific verb plus resource and explicitly scopes it to the logged-in account. It contrasts itself with ontouser_notification_read and onto_action_logs, so an agent can separate it from its 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use it ('als Einstieg, um neue Meldungen zu finden') and names the follow-up alternative for marking an item read. It also excludes admin system logs by routing them to onto_action_logs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_notification_readMark Notification as ReadAIdempotentInspect
Eine Benachrichtigung als gelesen markieren. Aendert nur den Lesestatus, nicht den Inhalt und loescht nichts. Nutze es nach ontouser_notification_index. Die Meldung selbst bleibt abrufbar. | EN: end user, customer, portal, notification, map, scope
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Notification-id aus ontouser_notification_index |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, and the description usefully adds what the mutation actually touches: only the read status, not the content, and nothing is deleted. 'Die Meldung selbst bleibt abrufbar' reassures the agent the record survives, though it says nothing about permissions or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The German sentences are front-loaded and carry real information, but the trailing '| EN: end user, customer, portal, notification, map, scope' is keyword-stuffing that adds no operational meaning, and the mixed-language framing costs some clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter state-change tool with full annotation coverage and no output schema, the description covers purpose, the scope of the mutation, id provenance, and post-state retrievability. Only permission requirements and the response shape are left implicit, which is acceptable at this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, and the schema already says it is the notification id from ontouser_notification_index. The description restates the same origin for the id but adds no new meaning about format, validity, or failure on unknown ids, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Eine Benachrichtigung als gelesen markieren'), which is unambiguous and clearly distinct from the read-only sibling ontouser_notification_index and from ontouser_notification_send. An agent knows exactly what state change is being requested.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Nutze es nach ontouser_notification_index' gives an explicit sequencing hint and names the sibling that supplies the id. What is missing is any exclusion guidance (e.g. when not to mark as read, or how it relates to get_notifications), 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.
ontouser_notification_sendSend NotificationAInspect
Einem anderen Nutzer eine Notification schreiben (User-zu-User, handler 'user_message'). to ist die Empfaenger-E-Mail eines existierenden Nutzers, text die Nachricht (max. 4000 Zeichen). Der Empfaenger liest sie mit ontouser_notification_index. Die eigene Adresse ist erlaubt. Kein Trockenlauf — die Meldung geht sofort raus; Push und E-Mail an Agentenadressen bewusst nicht. | EN: notification, message, user, send, notify
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Empfaenger-E-Mail eines existierenden Nutzers | |
| text | Yes | Nachrichtentext (max. 4000 Zeichen) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description discloses important behavior: there is no dry run, the message is sent immediately, and push/e-mail notifications to agent addresses are deliberately not triggered. These are exactly the side-effect details an agent needs before invoking a non-idempotent write tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the action and key constraints, and it remains compact. There is some redundancy with the schema and the trailing EN keyword list adds little semantic value, but nothing is seriously bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter notification tool with annotations and no output schema, the description covers recipient, message length, immediate delivery, no dry run, own-address behavior, and the reading counterpart. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameter documentation is already complete. The description mostly repeats the schema definitions for 'to' and 'text'; the only meaningful addition is that using one's own address for 'to' is allowed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: writing a user-to-user notification with handler 'user_message'. It also names the sibling tool that reads notifications, so the agent can distinguish sending from reading 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes the sending context, says the recipient reads via ontouser_notification_index, and notes that sending to one's own address is allowed. It lacks an explicit when-not-use condition or a direct sending alternative, but the operational context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_object_showShow Object for End UserARead-onlyIdempotentInspect
Ein einzelnes Objekt ueber seine udid im Self-Service-Kontext lesen. Rein lesend und fail-closed (nur Objekte deiner Scopes). Inhaltlich identisch zu onto_object_show — nimm dieses, wenn du als Scope-Nutzer (nicht als Administrator) arbeitest. Ohne udid: ontouser_scope_index, dann die Objektliste. | EN: end user, customer, portal, notification, map, scope
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Objekt-udid (32-hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Die Annotationen decken das Sicherheitsprofil bereits ab (readOnlyHint, idempotentHint, destructiveHint=false). Die Beschreibung ergänzt darüber hinaus wertvollen Kontext: fail-closed-Verhalten und die Einschränkung auf Objekte der eigenen Scopes. Details zu Rückgabeformat oder Pagination fehlen, sind aber bei einem rein lesenden Einzelabruf weniger kritisch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Die Kernaussage steht vorn und ist in wenigen Sätzen verdichtet; Abgrenzung und Fallback folgen logisch. Der angehängte Keyword-Block („EN: end user, customer, portal, notification, map, scope“) trägt für einen Agenten keinen Informationswert und ist verschenkter Platz.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Für ein Ein-Parameter-Lesetool ist alles Nötige vorhanden: Zweck, Rollenkontext, Sicherheitsverhalten, Abgrenzung zum Geschwister-Tool und der Weg zur udid-Beschaffung. Ein Output-Schema existiert nicht, sodass keine Rückgabebeschreibung erforderlich ist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Die Schema-Beschreibungsabdeckung liegt bei 100 %, das Schema dokumentiert den einzigen Parameter id bereits als „Objekt-udid (32-hex)“. Die Beschreibung wiederholt im Wesentlichen nur „ueber seine udid“ und fügt kein zusätzliches Format- oder Semantikwissen hinzu – Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Die Beschreibung nennt ein konkretes Verb und eine konkrete Ressource („einzelnes Objekt … lesen“) und grenzt das Werkzeug ausdrücklich von onto_object_show ab („inhaltlich identisch … nimm dieses, wenn du als Scope-Nutzer … arbeitest“). Ein Agent kann die beiden Tools ohne Blick in die Schemata unterscheiden.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Die Nutzungsbedingung ist explizit: Verwende dieses Tool als Scope-Nutzer, nicht als Administrator. Zusätzlich wird der Ablauf bei fehlender udid vorgegeben („Ohne udid: ontouser_scope_index, dann die Objektliste“), also sowohl Wann als auch Wie.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_scope_assign_publicPublish ScopeAInspect
Einem anderen Konto Zugriff auf einen oeffentlichen Scope geben (buchen). Schreibt eine Zuordnung und kann Credits kosten — vorher onto_credit_pricing pruefen. Nutze es, um einen fremden oeffentlichen Scope zu nutzen. Den Zugang wieder entziehen: ontouser_scope_remove_public. Verfuegbare Scopes zeigt ontouser_scope_list_public. | EN: end user, customer, portal, notification, map, scope
| Name | Required | Description | Default |
|---|---|---|---|
| scope_id | Yes | Public-Scope-ID, den du als Read buchen willst. Der Scope-Owner erhält dabei eine Credit-Gutschrift (Earnings, pricing scope_earnings) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=false, destructiveHint=false and idempotentHint=false, and the description adds real behavioral context: it writes an assignment, can consume credits, requires a pricing check, and credits the scope owner's earnings. It does not, however, warn what happens on a repeated call despite idempotentHint=false, which is a meaningful gap for a credit-consuming write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and prerequisite are front-loaded, alternatives are grouped afterward, and every sentence carries operational value. The trailing '| EN: end user, customer, portal, notification, map, scope' keyword string is noise that does not help selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, non-destructive write with full schema coverage and no output schema, the description supplies the cost warning, the ownership-credit consequence, and the correct alternatives. The missing piece is repeat-call behavior given idempotentHint=false and real credit costs, which keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and schema description coverage is 100%; the schema itself explains that scope_id is the public scope to book and that the owner receives a credit credit. The description adds no syntax, constraints, or format details beyond that, so the baseline of 3 for high-coverage schemas applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: granting another account access to a public scope (booking it), and the schema field confirms this is a 'Read' booking. It explicitly distinguishes itself from siblings by naming ontouser_scope_remove_public for revoking and ontouser_scope_list_public for discovery, so an agent can route 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use ('Nutze es, um einen fremden oeffentlichen Scope zu nutzen'), names the alternative for the opposite operation (remove_public) and the tool for enumeration (list_public). It also flags a prerequisite: check onto_credit_pricing beforehand because the operation can cost credits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_scope_createCreate Scope as End UserAInspect
Einen eigenen Scope anlegen (Self-Service, ohne Administrator). Du wirst Owner des neuen Scopes und kannst ihn verwalten. Nutze es, um eigene Datenbereiche zu beginnen. Verfuegbarkeit fuer andere steuerst du mit ontouser_scope_set_visibility; buchen lassen mit ontouser_scope_assign_public. | EN: end user, customer, portal, notification, map, scope Loeschen ist Verwaltungssache: einen eigenen Scope kann man nicht selbst entfernen (es gibt keinen ontouser-Weg) — ein Administrator loescht ihn.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Eigener kuratierter Scope anlegen (kostet Credits, konfigurierbar in pricing scope_credit_cost). Owner kann ihn später öffentlich machen (set_visibility) und verdient bei Nutzung durch andere (Earnings, pricing scope_earnings). Name: [a-z0-9_], max 30 | |
| description | No | Beschreibung (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly=false, idempotent=false, destructive=false. The description adds real behavioral context: the caller becomes owner with management rights, cannot delete it (no ontouser path — admin only), and the operation costs credits configured via pricing scope_credit_cost, with possible earnings when others use it. That is materially beyond what the 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is compact and front-loaded, but the '| EN: end user, customer, portal, notification, map, scope' keyword fragment runs straight into the German deletion sentence, making the text awkward to parse. Mixed-language keyword stuffing costs structural clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of saying what comes back — and it does not. An agent needs the created scope's identifier to chain into ontouser_scope_set_visibility or assign_public, and that is left unspecified. Lifecycle behavior (ownership, cost, no self-delete) is otherwise well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the 'name' parameter description already carries the credit-cost, earnings, and naming-pattern details, so the description adds no parameter-level information of its own. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('einen eigenen Scope anlegen') plus the key qualifier 'Self-Service, ohne Administrator', which separates it from admin scope management. It does not directly contrast with a sibling create-tool, but it does establish the owner outcome ('Du wirst Owner des neuen Scopes').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('um eigene Datenbereiche zu beginnen') and routes to the correct follow-up tools (ontouser_scope_set_visibility, ontouser_scope_assign_public). It also states a hard exclusion: a user cannot delete their own scope, only an admin can. No conditional or negative case beyond deletion is spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_scope_indexList My ScopesARead-onlyIdempotentInspect
Die eigenen Scopes auflisten (Bereiche, auf die dein Konto Zugriff hat). Rein lesend und fail-closed: du siehst nur deine Zuordnungen. Nutze es als Einstieg im Self-Service, um deine Scope-IDs zu finden. Oeffentlich buchbare fremde Scopes zeigt ontouser_scope_list_public. | EN: end user, customer, portal, notification, map, scope
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 still adds value beyond them by stating the result is scoped/fail-closed ("du siehst nur deine Zuordnungen"), which is a behavioral filter constraint not visible in the empty schema. It stops short of describing pagination or ordering, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The substantive sentences are front-loaded and waste-free. However, the trailing "| EN: end user, customer, portal, notification, map, scope" keyword block is search-bait that adds no decision-relevant information and pads the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, a rich annotation set and no output schema, the definition supplies what an agent needs: purpose, the safe-read nature, the visibility constraint, and where to go for public scopes. A brief note on what a returned scope record contains would close the last gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. It correctly signals a no-argument call by framing the tool as returning "deine Scope-IDs" without any input qualification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Die eigenen Scopes auflisten") and immediately clarifies what a scope is ("Bereiche, auf die dein Konto Zugriff hat"). It also explicitly distinguishes itself from the sibling ontouser_scope_list_public, so an agent can tell the two list tools apart without reading either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is explicit: "Nutze es als Einstieg im Self-Service, um deine Scope-IDs zu finden" gives the entry-point scenario, and the named alternative plus its condition ("Oeffentlich buchbare fremde Scopes zeigt ontouser_scope_list_public") covers the when-not 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.
ontouser_scope_list_publicList Public ScopesARead-onlyIdempotentInspect
Oeffentlich buchbare Scopes anderer Anbieter auflisten. Rein lesend. Nutze es, um zu sehen, welche fremden Bereiche du buchen koenntest (das ist der Verdienst-Weg des Owners). Buchen/Auftrag stellen: ontouser_service_request. Deine eigenen Scopes zeigt ontouser_scope_index. | EN: end user, customer, portal, notification, map, scope
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is fully covered by structured data. The description adds useful domain context that this listing is the owner's earning path and does not itself trigger booking, though it does not describe pagination or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The operative guidance is front-loaded and efficient in German. The trailing EN keyword list ('end user, customer, portal, notification, map, scope') is somewhat noisy and less useful than the preceding sentences, costing a point on structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, read-only listing tool with rich annotations and no output schema, the description covers what the tool does, when to use it, and which siblings handle adjacent tasks. It could say a bit more about what a returned public scope contains, but nothing critical is missing for correct selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing parameter-specific to clarify. The baseline for a parameterless tool applies, and no misleading parameter information is present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource: listing publicly bookable scopes from other providers. It immediately distinguishes this from own-scope listing and from booking/service-request tools, so an agent can select it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance ('see which foreign areas you could book') and names the correct alternatives: ontouser_service_request for booking/requesting, and ontouser_scope_index for one's own scopes. This is close to ideal routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_scope_remove_publicUnpublish ScopeADestructiveIdempotentInspect
Die eigene Zuordnung zu einem oeffentlichen fremden Scope wieder entfernen. Beendet den Zugang; bereits erzeugte Daten im fremden Scope bleiben dort. Nutze es, wenn du einen gebuchten Scope nicht mehr brauchst. Zum Sperren deines EIGENEN Scopes nimm ontouser_scope_set_visibility. | EN: end user, customer, portal, notification, map, scope
| Name | Required | Description | Default |
|---|---|---|---|
| scope_id | Yes | Public-Scope-ID |
TDQS
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 important context: access ends while already-created data in the foreign scope remains. It does not discuss permissions or error behavior, so it is strong but 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core German sentences are front-loaded and useful, but the trailing 'EN: end user, customer, portal, notification, map, scope' keyword list does not help an agent decide or invoke the tool and weakens conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter destructive mutation, the description covers purpose, consequence, and the key alternative. Annotations and the schema carry most remaining structured information, though auth or failure behavior is not described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter, scope_id, already described as Public-Scope-ID. The description adds no further syntax, format, or constraint details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: removing one's own assignment to a public foreign scope, and explicitly distinguishes it from blocking one's own scope via ontouser_scope_set_visibility. An agent can identify the action 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states exactly when to use it: when a booked scope is no longer needed, and it names the alternative tool for the different case of locking one's own scope. This is explicit routing guidance rather than implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_scope_set_visibilitySet Scope VisibilityAIdempotentInspect
Die Sichtbarkeit eines EIGENEN Scopes setzen (privat <-> oeffentlich buchbar). Oeffentlich machen heisst: andere koennen den Scope buchen und du verdienst daran (Credits). Nur der Owner darf das. Nutze es, um einen Scope anzubieten oder wieder privat zu stellen. Das Buchen selbst loest ontouser_service_request aus. Oeffentlich (PUBLIC) setzt seit 2026-10-12 NUR ein Administrator — der oeffentliche Katalog ist kuratiert. Als Owner darfst du privat halten oder auf einzelne eigene Scopes beschraenken; willst du oeffentlich, schreib einen Service Request (ontouser_service_request) mit Begruendung. | EN: end user, customer, portal, notification, map, scope
| Name | Required | Description | Default |
|---|---|---|---|
| scope_id | Yes | Eigener Scope-ID (Owner) | |
| read_allowed_for | Yes | Sichtbarkeit des eigenen Scopes setzen (nur Owner). Leer=private, [PUBLIC_id]=öffentlich. Öffentlich machen = andere können den Scope buchen (assign_public) und du verdienst Credits (Earnings, pricing scope_earnings) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say it is a non-readonly, idempotent, non-destructive call; the description adds real behavioral context the annotations cannot convey — owner-only authorization, the business consequence of going public (others can book, you earn credits), and a policy change restricting PUBLIC to admins. It stops short of describing failure behavior or what a rejected PUBLIC attempt returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core guidance is front-loaded and the owner-only rule and service-request escalation are repeated in slightly different wording, adding length without new information. The trailing '| EN: end user, customer, portal, notification, map, scope' keyword line earns no place for an agent deciding how to call the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with annotations covering safety, the description supplies the permission model, the effect of the change, and the escalation path. The one lingering ambiguity is that the parameter semantics imply an owner can pass a PUBLIC id while the prose says only admins can, leaving the agent to resolve the conflict from the prose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description basically restates what the schema already says (empty = private, [PUBLIC_id] = public). It adds the policy nuance around PUBLIC but nothing new about scope_id or array format, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource: setting the visibility of one's OWN scope between private and publicly bookable, and explains what 'public' means (bookable by others, earns credits). However it never distinguishes itself from close siblings like ontouser_scope_assign_public or ontouser_scope_remove_public, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says what to use it for (offer a scope, or make it private again) and, critically, what NOT to expect: since 2026-10-12 only an administrator can set PUBLIC, so owners wanting public must file ontouser_service_request with justification. It also clarifies that booking itself is a different tool. This is exactly the when/when-not/alternative pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_scope_typesScope TypesARead-onlyIdempotentInspect
Die Objekttypen eines eigenen Scopes mit Anzahl Objekten und dem Kennzeichen, ob der Typ aktiviert ist. Rein lesend. Die Auswahl ist eine Bedienhilfe (Vorschlagsliste im Objekt-Dialog), keine Zugriffskontrolle — Rechte regelt weiterhin der Scope. Aendern mit ontouser_scope_types_set. Braucht can_manage_scope auf dem Scope. | EN: scope, object type, settings, enable, list, admin
| Name | Required | Description | Default |
|---|---|---|---|
| scope_id | Yes | Scope-ID (nur eigene Scopes mit can_manage_scope). Zeigt alle Objekttypen mit Anzahl Objekten im Scope und ob sie aktiviert sind |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds value beyond that: the required can_manage_scope permission and the semantic caveat that the enabled flag does not grant or restrict rights (the scope itself governs permissions) — a non-obvious behavior an agent would otherwise misread. It does not discuss size limits or ordering, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and its return content, then the read-only note, the alternative tool and the permission requirement — all in a few compact sentences. The trailing '| EN: scope, object type, settings, enable, list, admin' keyword block is search-stuffing rather than information, and the German/English mix adds slight friction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of describing returns — and it does, stating that each type comes with its object count and enabled flag. Combined with the permission prerequisite and the read-only/alternative routing, an agent has what it needs to call this correctly; only pagination or ordering behavior is unaddressed for a presumably small list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single scope_id parameter is already documented in the schema, including the can_manage_scope restriction and what is shown. The description only restates that the scope must be one's own, adding no new syntax or edge-case meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: the object types of one's own scope, with object counts and the enabled flag. It also distinguishes itself from the write sibling by naming ontouser_scope_types_set as the tool for changing things, so an agent can separate the read tool from the setter 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Rein lesend' (read only) and routes modification to ontouser_scope_types_set, which is the correct alternative. It also states the prerequisite 'Braucht can_manage_scope auf dem Scope' and warns that the selection is a UI convenience list, not access control — a real when/when-not distinction no sibling tool documents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_scope_types_setSet Scope TypesAIdempotentInspect
Die aktivierten Objekttypen eines eigenen Scopes setzen: die uebergebene Liste ersetzt die bisherige Auswahl — vorher mit ontouser_scope_types lesen. Ein Typ, zu dem es im Scope noch Objekte gibt, laesst sich nicht entfernen; die Fehlermeldung nennt Typen und Zaehler. Braucht can_manage_scope. | EN: scope, object type, settings, enable, update, admin
| Name | Required | Description | Default |
|---|---|---|---|
| types | Yes | Vollstaendige Liste der aktiven Typnamen — ersetzt die bisherige Auswahl (Liste vorher mit ontouser_scope_types lesen). Ein Typ mit Objekten im Scope laesst sich nicht entfernen (Fehlermeldung nennt die Typen und Zaehler) | |
| scope_id | Yes | Eigener Scope (can_manage_scope) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false; the description adds material context beyond them, namely that the supplied list wholly replaces the previous selection and that removal of types with existing objects is rejected with a message naming the types and counts. The replacement behavior sits in mild tension with destructiveHint=false, but since scope types with objects are protected and the result is idempotent, this is a nuance rather than a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The German prose is front-loaded and dense with the operation, prerequisite and failure mode in two sentences. The trailing '| EN: scope, object type, settings, enable, update, admin' keyword list is search-padding that carries no actionable meaning for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter setter with full schema coverage and annotations covering the safety profile, the description covers prerequisites, replacement semantics and failure behavior. The only gap is that it does not say what a successful call returns or confirm the new state, which matters slightly given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the parameter descriptions in the schema already repeat the replacement semantics, the read-first advice, the removal constraint and the can_manage_scope requirement. The description therefore adds essentially nothing beyond what the schema supplies, so the baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource ('Die aktivierten Objekttypen eines eigenen Scopes setzen') and explicitly names the read counterpart ontouser_scope_types as the sibling to use beforehand, so an agent can tell it apart from the scope 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies the required prerequisite (read first with ontouser_scope_types), the replacement semantics of the call, the permission needed (can_manage_scope), and the constraint that types still holding objects cannot be removed. That is explicit when-to-use and when-it-will-fail guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_service_requestSend Service RequestAInspect
Eine Anfrage an einen fremden Scope-Anbieter stellen (Service anfordern). Erzeugt eine Anfrage bzw. einen Auftrag und kann Credits kosten. Nutze es, wenn du eine Leistung aus einem oeffentlichen Scope brauchst, aber keine direkte Buchung moeglich ist — die verfuegbaren Scopes zeigt ontouser_scope_list_public. Direkte Buchung mit Rechten: ontouser_scope_assign_public. Auch der Weg, um Startguthaben zu bitten: beschreibe dein Vorhaben, den Zweck, den benoetigten Scope und das erwartete Guthaben — der Betreiber prueft von Hand und entscheidet frei. Ein Anspruch besteht nicht. Auch der Weg fuer alles, was nur ein Administrator freigeben kann: oeffentliche Sichtbarkeit eines Scopes (PUBLIC) und zusaetzliches Guthaben (Prepaid-Code). | EN: end user, customer, portal, notification, map, scope
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Das Anliegen (Pflicht). Beschreibe konkret, was fehlt oder nicht funktioniert. | |
| context | No | Optional: technische Details als Objekt (z.B. Fehlermeldung, Tool-Name, Request-Body). Hilft beim Nachvollziehen. | |
| subject | No | Kurze Betreffzeile (optional — sonst erste Zeile von text). | |
| category | No | bug | feature | improvement | question (Default: feature). Ungueltige Werte werden abgelehnt. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic mutation profile (readOnlyHint=false, openWorldHint=true, non-idempotent, non-destructive). The description adds material context beyond that: it may consume credits, the request is reviewed manually by the operator, the operator decides freely, and there is no entitlement — a crucial expectation-setting detail for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded, but the text is a single run-on paragraph that repeats the 'Auch der Weg...' construction twice and ends with an unrelated English keyword tag ('end user, customer, portal, notification, map, scope') that adds no actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent, open-world mutation with no output schema, the description covers costs, manual review, and prerequisites well. The remaining gap is what happens on return (request ID, status, credit deduction timing), which an agent would want before retrying or following up.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters and the baseline is 3. The description adds real value by telling the agent what to put into `text` for a credit request (intended project, purpose, required scope, expected credit) — content guidance the schema does not provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource — submitting a request to a foreign scope provider, creating a request/order that may cost credits. It also distinguishes itself from the two nearest siblings by naming them (ontouser_scope_list_public for discovery, ontouser_scope_assign_public for direct booking).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use conditions (need a service from a public scope but direct booking is impossible) and explicit alternatives with the condition that selects them, plus two additional use cases (requesting starting credits, admin-only approvals such as PUBLIC visibility or prepaid credit). 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.
ontouser_team_creditsManaged Account CreditsARead-onlyIdempotentInspect
Guthaben und Umbuchungen EINES verwalteten Kontos lesen — rein lesend. Zeigt den Kontostand und die Buchungszeilen (Betrag, Grund, Zeit). Aufladen und Verteilen passiert ueber ontouser_team_transfer vom eigenen Konto. | EN: credits, balance, transfer history, budget
| Name | Required | Description | Default |
|---|---|---|---|
| profile_id | Yes | Profil-ID des verwalteten Kontos |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful context beyond annotations: it specifies what is returned (balance and booking lines with amount, reason, time) and reinforces that mutations belong to another tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core information is front-loaded in two efficient sentences. The trailing English keyword list is slightly redundant but small and aids discoverability, so overall structure is tight with no wasted explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one fully documented parameter, full annotations, and no output schema, the description covers purpose, return content, and the alternative for mutations. It doesn't cover pagination or error behavior, but those are minor gaps for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and profile_id is fully described as the managed account's profile ID. The description reinforces that it refers to one managed account but adds no syntax or format details beyond the schema. Baseline 3 is appropriate 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('lesen') and resource ('Guthaben und Umbuchungen EINES verwalteten Kontos'), and explicitly distinguishes the scope from the mutating sibling ontouser_team_transfer. An agent can immediately tell this is a read-only balance/transaction query for a managed account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says that topping up and distributing is done via ontouser_team_transfer from your own account, which is a clear alternative. It also scopes usage to one managed account and read-only operations, though it doesn't explicitly exclude the onto_credit_* tools for personal accounts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_team_indexList Managed AccountsARead-onlyIdempotentInspect
Die Konten auflisten, die DU fuehrst (verwaltete Konten deines Scopes) — rein lesend. Ein Konto ist verwaltet, wenn es das Kennzeichen managed_by_scope_id traegt; das Kennzeichen allein gibt KEINE Rechte, jede Aktion prueft zusaetzlich can_manage_scope und das jeweilige Recht. Dein eigenes Konto erscheint nie in dieser Liste. Ohne scope_id: alle Scopes, die du verwaltest. Einstieg fuer alle weiteren team-Werkzeuge — die profile_id stammt IMMER aus dieser Liste, nie geraten. | EN: managed accounts, my team, sub-agents, company manager
| Name | Required | Description | Default |
|---|---|---|---|
| scope_id | No | Optional: nur die verwalteten Konten dieses Scopes (Sie brauchen dort can_manage_scope). Ohne Angabe alle Scopes, die Sie verwalten. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (which already declare readOnlyHint/idempotent/non-destructive), the description discloses important semantics: the flag alone conveys no rights, every action additionally checks can_manage_scope and the specific right, and the caller's own account is excluded. These are exactly the permission and result-set traits an agent cannot infer 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core statement is front-loaded and each German sentence carries real information (read-only nature, flag semantics, own-account exclusion, default scope, profile_id origin). The trailing '| EN: managed accounts, my team, sub-agents, company manager' keyword list is discoverability padding rather than useful instruction, costing some tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-parameter, read-only list tool with full annotation coverage and no output schema, the description covers everything an agent needs: what qualifies an account, what is excluded, what happens with and without scope_id, and that the returned profile_id feeds downstream team tools. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single optional parameter at 100% schema description coverage, the schema already explains that scope_id restricts the listing to one scope and requires can_manage_scope there. The description repeats this default behavior rather than adding syntax or edge-case detail beyond the schema, so the baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Die Konten auflisten, die DU fuehrst') and defines the exact membership criterion (managed_by_scope_id flag), which separates it from list_members or ontouser_scope_index. The added detail that your own account never appears further sharpens the scope of the result set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly positions the tool as the entry point for all further team tools and states that profile_id must always come from this list and never be guessed — strong routing guidance. The default behavior without scope_id is also specified. It stops short of naming a sibling it replaces or excludes (e.g. list_members or ontouser_team_show), so it is clear context rather than a full when/when-not map.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_team_offboardOffboard Managed AccountADestructiveIdempotentInspect
Die Verwaltung eines Kontos beenden. mode=delete (Standard) loescht Profil, Web-User, Mitgliedschaften, Token und Passkeys; mode=release laesst das Konto leben, beendet nur die Verwaltung und benachrichtigt die Manager fremder Scopes, in denen es bleibt. Das Restguthaben geht zurueck auf dein Konto, ausser keep_balance=1. Vorher ontouser_team_offboard_preview lesen; der letzte Verwalter eines Scopes laesst sich nicht loeschen (400). | EN: offboard, delete account, release, hand back
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | delete (Standard: Konto wird geloescht) | release (Konto bleibt, nur die Verwaltung endet) | |
| profile_id | Yes | Profil-ID des verwalteten Kontos (aus ontouser_team_index) | |
| keep_balance | No | 1 = Restguthaben beim Konto lassen, 0 = zurueck auf Ihr Konto (Standard) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint annotation by enumerating exactly what is destroyed in delete mode (profile, web user, memberships, tokens, passkeys) and what release mode preserves and who is notified (managers of foreign scopes). It also discloses the balance side-effect and the keep_balance escape hatch, plus the 400 error for last-admin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then modes, then side effects, then the precondition. Dense but every clause carries information; the only filler is the bilingual EN keyword list at the end, which is brief enough to justify itself for retrieval.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, 3-parameter mutation with no output schema, the description supplies the destruction set, side effects, and error condition an agent needs before calling. Auth/permission requirements are not stated, which is the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so a 3 would be the floor; the description still adds outcome semantics — it explains what each mode value actually does to the account and that keep_balance=1 leaves the residual balance in place rather than returning it. It stops short of restating the profile_id provenance, but the schema covers that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (end management of a managed account) and immediately disambiguates the two modes: 'mode=delete loescht Profil, Web-User, Mitgliedschaften, Token und Passkeys' vs 'mode=release laesst das Konto leben'. The EN keyword tail (offboard, delete account, release, hand back) reinforces the intent against siblings like ontouser_team_suspend or ontouser_team_transfer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit prerequisite ('Vorher ontouser_team_offboard_preview lesen') and an explicit failure condition (the last admin of a scope cannot be deleted → 400). What is missing is routing versus the closest alternatives, e.g. suspend vs transfer vs offboard, which the agent must infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_team_offboard_previewPreview OffboardingARead-onlyIdempotentInspect
Vorschau, was ein Offboarding bewirken wuerde — rein lesend, aendert nichts. Zeigt eigene Scopes, fremde Mitgliedschaften samt deren Managern, das Guthaben und ob das Konto der LETZTE Verwalter eines Scopes ist (dann ist Loeschen gesperrt, 400). Immer zuerst aufrufen, dann ontouser_team_offboard. | EN: offboarding, preview, impact, last manager
| Name | Required | Description | Default |
|---|---|---|---|
| profile_id | Yes | Profil-ID des verwalteten Kontos |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, but the description adds substantive context beyond them: what the preview reveals (own scopes, foreign memberships with managers, balance), that it changes nothing, and that deletion is blocked with a 400 when the account is the last manager of a scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it leads with the read-only preview purpose, then the returned impact details, then the last-manager restriction, then the ordering rule. The closing EN keyword tag is minor, and the substance is dense without wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only preview tool, the definition covers purpose, behavior, return content, an important blocking condition, and sibling ordering. Even without an output schema, the agent has enough information to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter is profile_id, and the schema already describes it at 100% coverage as the managed account's profile ID. The description adds no additional syntax or constraints for that 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.
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 previews the effects of offboarding a managed account, is read-only, and explicitly distinguishes itself from the actual offboarding action by saying to call this first and then ontouser_team_offboard.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit ordering rule: 'Immer zuerst aufrufen, dann ontouser_team_offboard.' That tells the agent exactly when to use this preview relative to the sibling mutation tool, leaving little inference needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_team_set_scope_rightsSet Managed Account RightsADestructiveIdempotentInspect
Die Rechte eines verwalteten Kontos in EINEM Scope setzen — nicht nur hochstufen, sondern auch entziehen. can_read, can_write, can_manage_scope je 0/1; sind alle drei 0, wird die Mitgliedschaft entfernt. can_manage_scope auf dem fuehrenden Scope selbst wird mit 403 abgelehnt (kein Hochklettern in der Kette) — dafuer gibt es Einladungscodes mit kind=management. Wird can_write entzogen, faellt default_write_scope mit weg. | EN: grant, revoke, rights, membership
| Name | Required | Description | Default |
|---|---|---|---|
| can_read | Yes | 1 = Lesen erlauben, 0 = entziehen | |
| scope_id | Yes | Scope, in dem die Rechte gelten (Pflicht) | |
| can_write | Yes | 1 = Schreiben erlauben, 0 = entziehen | |
| profile_id | Yes | Profil-ID des verwalteten Kontos (aus ontouser_team_index) | |
| can_manage_scope | Yes | 1 = Verwalten erlauben, 0 = entziehen. Auf dem verwaltenden Scope selbst nicht vergebbar (403). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered; the description adds value beyond that by disclosing the destructive side effect (all-zero removes membership) and the cascade that revoking can_write also drops default_write_scope. It does not cover authorization requirements or what the response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph with the core action and the destructive edge case front-loaded, followed by the constraint and cascade rule. The trailing '| EN: grant, revoke, rights, membership' keyword line is filler rather than information, a minor blemish on an otherwise efficient block.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, fully-required mutation tool with annotations but no output schema, the description covers purpose, the removal semantics, the 403 edge case, and the cascade effect. It stops short of auth/prerequisite context and any indication of the response, but nothing essential to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes beyond the per-parameter 0/1 documentation by giving the cross-parameter rule that all three at 0 deletes the membership and that can_write=0 cascades to default_write_scope. That relational meaning is not expressible in the schema and is the main reason to read the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: setting the rights of a managed account within ONE scope, explicitly covering both granting and revoking. It also discloses the terminal case (all three flags 0 removes the membership), which makes the operation's identity concrete. It does not explicitly name the closest sibling (ontouser_team_set_write_scope) to disambiguate, though it references ontouser_team_index as the source of profile_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Makes clear the tool is for both escalation and revocation, and states a hard precondition: can_manage_scope cannot be granted on the leading scope itself (403), directing the agent to invite codes with kind=management instead. That is a genuine alternative-route hint, though there is no explicit 'use tool X instead when...' framing against the sibling rights tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_team_set_write_scopeSet Default Write ScopeAIdempotentInspect
Das Standard-Schreibziel eines verwalteten Kontos setzen (scope_id, 0 = kein Ziel). Nur ein Scope, in dem das Konto can_write hat, wird akzeptiert (sonst 400) — kein stilles Schreiben in einen Scope, den es nur lesen darf. | EN: default write scope, target scope
| Name | Required | Description | Default |
|---|---|---|---|
| scope_id | Yes | Standard-Schreibziel (0 = kein Ziel). Nur Scopes mit can_write werden akzeptiert (sonst 400). | |
| profile_id | Yes | Profil-ID des verwalteten Kontos (aus ontouser_team_index) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already state idempotence, non-destructiveness, and non-read-only behavior. The description adds useful behavioral detail beyond those fields: it rejects non-writable scopes with 400 and explicitly avoids silent writes into read-only scopes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core behavior is front-loaded and the description is compact. The bilingual suffix and redundant English gloss add minor clutter without harming comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, fully documented schema with annotations covering safety and idempotence, the description is nearly complete. It misses only the operational consequence of clearing the target or which scopes are visible to the account, but those are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents both scope_id and profile_id, including 0 as 'no target' and the can_write restriction. The description reinforces those semantics but adds no new parameter-level detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: setting the default write target for a managed account. It clearly distinguishes this from neighboring scope-rights tools by focusing on a single default write destination and the special value 0 for clearing it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear usage constraint: only scopes where the account has can_write are accepted, otherwise 400. It does not, however, explicitly route the agent to an alternative tool when that condition fails or explain when to clear the target.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_team_showShow Managed AccountARead-onlyIdempotentInspect
Ein verwaltetes Konto vollstaendig lesen — rein lesend. Profil, Web-User, Mitgliedschaften mit allen drei Rechten (can_read/can_write/can_manage_scope), Standard-Schreibziel und die Umbuchungen des Kontos. Die profile_id kommt aus ontouser_team_index. Fuer fremde Konten antwortet das Werkzeug 403. | EN: managed account, team member, rights, ledger
| Name | Required | Description | Default |
|---|---|---|---|
| profile_id | Yes | Profil-ID des verwalteten Kontos (aus ontouser_team_index) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds meaningful behavior beyond that: it enumerates the returned account sections and explicitly states the 403 response for foreign accounts, though it does not discuss output shape or ledger pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The key action and read-only nature are front-loaded, followed by a compact list of returned data and an authorization note. The trailing EN keyword list is low-signal but does not materially hurt readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only show tool with no output schema, the description is complete enough: it names the required ID source, summarizes the returned sections, and states the important 403 authorization behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single profile_id parameter is already documented in the schema, including its source. The description repeats that source and adds the foreign-account 403 behavior, but adds no new syntax or format semantics for the parameter itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: fully reading a managed account. It enumerates the exact contents returned (profile, web user, memberships with all three rights, default write target, and ledger entries), which lets an agent distinguish it from listing or mutation siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: the profile_id comes from ontouser_team_index, the operation is read-only, and foreign accounts return 403. It does not explicitly route modification tasks to ontouser_team_update_profile or other alternatives, 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.
ontouser_team_suspendSuspend Managed AccountAIdempotentInspect
Ein verwaltetes Konto sperren: die Rolle member wird entzogen und ALLE Token geloescht. Der Token-Endpunkt antwortet danach 403 account_suspended — das Konto sieht den Grund, statt ein kaputtes Login zu vermuten. Admin-Konten sind ausgenommen, Selbstsperre ist unmoeglich. Es wird KEINE Nachricht verschickt — formuliere sie selbst. Umkehr: ontouser_team_unsuspend. | EN: suspend, block, cut off, revoke tokens
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optionaler interner Vermerk zur Sperre (wird nicht an das Konto gesendet). | |
| profile_id | Yes | Profil-ID des verwalteten Kontos (aus ontouser_team_index) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description richly discloses behavior beyond the annotations: role removal, deletion of ALL tokens, 403 account_suspended response, and no notification. However, this directly conflicts with destructiveHint=false, since deleting all tokens and revoking a role is a destructive update. Per the annotation contradiction rule, this scores 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the verb and effects, and most sentences carry useful behavioral detail. The trailing EN keyword list is useful for search but slightly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers key effects, exclusions, reversibility, and notification behavior, which is substantial for a mutation tool with no output schema. It still does not describe the tool's return value or success shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents profile_id and the optional reason parameter. The description adds little parameter-specific semantics beyond clarifying that no message is sent and the reason is internal, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: suspending a managed account, with exact effects on role and tokens. It explicitly names the reverse tool ontouser_team_unsuspend, so it is distinguishable from its sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage constraints: admin accounts are excluded, self-suspension is impossible, no message is sent, and unsuspend is the reverse operation. It does not explicitly contrast with related siblings such as offboard or remove_member.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_team_transferTransfer Credits to Managed AccountAIdempotentInspect
Credits vom EIGENEN Guthaben auf ein verwaltetes Konto umbuchen. Es gibt kein from_profile_id: die Quelle ist immer dein Konto. reason und idempotency_key sind Pflicht (max 64 Zeichen); derselbe Schluessel liefert schon_gebucht=true statt doppelt zu buchen — nach einem Timeout gefahrlos wiederholbar. Zu wenig Guthaben: 402, und es wird NICHTS gebucht (keine Teilbuchung, kein Minus). Niemals denselben Schluessel fuer eine andere Absicht verwenden. | EN: transfer credits, budget, fund sub-agent, payout
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | Grund der Umbuchung (Pflicht, erscheint im Ledger) | |
| credits | Yes | Anzahl Credits, > 0 (Pflicht) | |
| to_profile_id | Yes | Empfaengerkonto (verwaltetes Konto, Pflicht) | |
| idempotency_key | Yes | Eindeutiger Schluessel pro Absicht, max 64 Zeichen. Derselbe Schluessel liefert schon_gebucht=true statt doppelt zu buchen. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: insufficient balance returns 402 with no partial booking and no negative balance, and the idempotency key yields schon_gebucht=true instead of a double booking. The "never reuse the key for a different intent" warning is exactly the operational caveat an agent needs on a mutation. No contradiction with readOnlyHint=false / 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the operation and the source-account constraint, and each subsequent sentence adds a real behavior (idempotency, 402 atomicity, key hygiene). The trailing "| EN: transfer credits, budget, fund sub-agent, payout" keyword block aids retrieval but is not decision-relevant prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-required-param mutation with no output schema, the definition covers the critical gaps: what gets debited, atomicity on failure, and the shape of a replayed response (schon_gebucht=true). It doesn't describe the success payload (new balances, ledger entry id) or permission requirements for the target managed account, which would complete it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four params are already documented, and the description largely restates reason/idempotency_key semantics that the schema carries. The one genuinely additive point is the negative constraint "es gibt kein from_profile_id", which clarifies how to_source is resolved. Baseline 3 fits since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Credits vom EIGENEN Guthaben auf ein verwaltetes Konto umbuchen") with the scope constraint that the source is always your own account, and the EN keyword tail separates it from balance/chargeup siblings. An agent can distinguish it from ontouser_team_credits or onto_credit_chargeup 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly rules out a from_profile_id argument and pins the source account, and gives concrete retry guidance ("nach einem Timeout gefahrlos wiederholbar"). It also warns against key reuse. It stops short of naming which sibling to use for other funding flows (e.g. chargeup vs. checkout), so the alternative routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_team_unsuspendUnsuspend Managed AccountAIdempotentInspect
Die Sperre eines verwalteten Kontos aufheben: die Rolle member kommt zurueck, das Konto meldet sich mit seinem bestehenden Passwort wieder an. | EN: unsuspend, unblock, restore access
| Name | Required | Description | Default |
|---|---|---|---|
| profile_id | Yes | Profil-ID des verwalteten Kontos (aus ontouser_team_index) |
TDQS
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 value beyond that by disclosing the resulting state (member role returned, login with existing password), which tells the agent what the mutation actually restores. It stops short of stating permission requirements 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence states the action and effect up front, followed by a short keyword line — no waste, and the essential meaning is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, non-destructive, idempotent tool with no output schema, the description plus annotations give everything needed to call it correctly. Only the precondition (account is currently suspended) and the return shape are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single required profile_id is documented in the schema, including its source (ontouser_team_index). The description adds no further parameter detail, so the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (Sperre aufheben / unsuspend) and resource (verwaltetes Konto) and states the concrete outcome: the member role is restored and the account can log in with its existing password. This clearly distinguishes it from the sibling ontouser_team_suspend.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The undo-of-suspend semantics imply when to use it, and the English keyword line lists synonyms (unsuspend, unblock, restore access) that help matching. However, it never explicitly says when not to use it or points to a prerequisite such as confirming the account is currently suspended.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_team_update_profileUpdate Managed AccountAIdempotentInspect
Stammdaten eines verwalteten Kontos aendern: displayname, organisation, phone, notes. Die E-Mail ist unveraenderlich und gehoert nicht zu diesem Werkzeug. Passwort setzen kann ein Manager bewusst NICHT — Wiederherstellung laeuft ueber das Konto selbst. | EN: update managed account, profile data, rename
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Notiz zum Konto (optional) | |
| phone | No | Telefon (optional) | |
| profile_id | Yes | Profil-ID des verwalteten Kontos (aus ontouser_team_index) | |
| displayname | No | Anzeigename (optional) | |
| organisation | No | Organisation (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare mutation, idempotence, and non-destructiveness, so the description does not need to repeat those. It adds meaningful behavioral context beyond annotations: email is immutable, and managers explicitly cannot set passwords here, with recovery handled through the account itself. It could go further on permission requirements or side effects, but it adds solid context for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded: the first clause states what is updated and which fields are involved. Subsequent sentences handle exclusions efficiently, and the trailing EN search terms do not interfere with readability. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-destructive, idempotent mutation with full schema coverage and no output schema, the description covers the key fields, the required profile context via schema, and important exclusions. It does not mention authorization level or response behavior, but annotations and schema cover the core safety and parameter details. It is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description lists the key updatable fields and clarifies that email is excluded, but it does not add format, constraints, or semantics beyond what the schema provides. Baseline 3 is appropriate 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: changing master data of a managed account, naming displayname, organisation, phone, and notes. It also clarifies that email is immutable and that password setting is not part of this tool, which helps distinguish it from password-related operations. It does not explicitly mention the sibling `change_profile`, so sibling differentiation is good but not fully complete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: use this for managed-account profile fields, not for email or password changes. It provides an alternative path for passwords (account self-recovery), but does not name specific sibling tools such as `change_password` or `change_profile`, leaving some routing inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_webhook_deleteDelete WebhookADestructiveIdempotentInspect
Notification-Webhook entfernen. Danach nur noch Push, Mail und ontouser_notification_index. | EN: webhook, unsubscribe, delete
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds real context beyond them by stating the post-deletion consequence: notifications continue via push, mail and ontouser_notification_index, meaning the agent's notification path is not broken. It still omits permission requirements and whether the deletion is confirmable/undoable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The operative German sentence and the consequence sentence are front-loaded and earn their place. The appended "| EN: webhook, unsubscribe, delete" keyword tag is search metadata rather than useful instruction, which is the only wasted element.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema and annotations covering destructiveness and idempotency, the description covers the essentials. However, for a destructive tool it leaves out the scope of what is deleted (the authenticated user's webhook only?) and any permission or confirmation requirement, which an agent would want before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies a no-argument operation on the caller's own webhook configuration, though it never states which webhook (user vs. team scope) is removed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Notification-Webhook entfernen" gives a specific verb (entfernen) and resource (notification webhook), which distinguishes it from the sibling tools ontouser_webhook_save, _show and _test. It does not explicitly name those siblings or contrast itself against them, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the note that afterwards only push, mail and ontouser_notification_index remain hints that this tool is for turning off webhook-based delivery rather than the other channels. There is no explicit when-to-use/when-not statement and no mention of prerequisites such as owning the webhook.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_webhook_saveSave WebhookAIdempotentInspect
Notification-Webhook einrichten: Telesherpa schickt jede neue Notification zusaetzlich als HTTP-POST an url (JSON mit event/id/from/to/text/handler/url/sent_at). Der Schluessel geht standardmaessig in BEIDEN Formen mit: X-Telesherpa-Secret und Authorization: Bearer (auth='header' oder 'bearer' schraenkt das ein). signature=1 ergaenzt X-Webhook-Signature (HMAC des Bodys), signature=2 die replay-sichere Variante mit X-Webhook-Timestamp und X-Webhook-Signature-V2. Ein mitgegebenes secret ERSETZT das bestehende; ohne secret bleibt es unveraendert. Ersetzt das Pollen. | EN: webhook, subscribe, notifications, agent, hmac
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | http(s)-Adresse, die den POST annimmt | |
| auth | No | Wie der Schluessel zugestellt wird: both (Default: X-Telesherpa-Secret UND Authorization: Bearer), header (nur X-Telesherpa-Secret), bearer (nur Authorization) | |
| active | No | 1 = senden (Default), 0 = pausieren | |
| secret | No | Eigener Schluessel; ERSETZT einen bestehenden. Ohne Angabe bleibt der bisherige. | |
| signature | No | Signaturstufe: 1 = HMAC-SHA256 des Bodys im Header X-Webhook-Signature; 2 = Replay-sicher mit X-Webhook-Timestamp + X-Webhook-Signature-V2 (HMAC ueber '<timestamp>.<body>', von Hermes empfohlen) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses that a supplied secret REPLACES the existing one while omitting it leaves it unchanged (the key side effect for an idempotent-but-mutating tool), names the exact delivery headers (X-Telesherpa-Secret, Authorization: Bearer), and explains the two signature levels including the HMAC input string for signature=2. This is the kind of auth/security 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and the payload contract, then the security details in a logical order. It is dense and somewhat run-on, and the trailing '| EN: webhook, subscribe, ...' keyword list is filler, but overall it earns its length given the non-obvious HMAC/auth semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, open-world mutation tool with no output schema, the description covers payload shape, header delivery modes, signature options, and secret replacement behavior — enough to call it correctly. It does not say what the call returns (webhook id/handle) or how it behaves when a webhook already exists, which is a minor remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description restates the auth 'both' default and the secret-replacement rule, which the schema already documents, and adds little new per-parameter meaning beyond the header names — the genuinely novel content is the payload/response behavior, not parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('Notification-Webhook einrichten') and then spells out the exact effect: every new notification is additionally POSTed as JSON to url, with the payload fields enumerated. That distinguishes it immediately from ontouser_webhook_show / _test / _delete without needing the schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Ersetzt das Pollen' gives the motivating context for choosing this tool over polling for notifications. It does not explicitly name sibling alternatives (webhook_test to verify, webhook_delete to remove, webhook_show to inspect), so exclusions are absent, but the when-to-use signal is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_webhook_showShow WebhookARead-onlyIdempotentInspect
Deinen eigenen Notification-Webhook anzeigen (url, active, secret_gesetzt). Der Schluessel selbst wird nie ausgegeben. | EN: webhook, notification, push, agent wakeup
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description still adds genuinely new behavioral context beyond the annotations: the secret key is never returned (only a 'secret_gesetzt' flag), which tells the agent not to expect or request credential material. It does not say what happens when no webhook exists yet.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is short, front-loaded and carries the scope plus the returned fields in one pass. The trailing '| EN: webhook, notification, push, agent wakeup' tag block is keyword padding rather than information for the caller, which is the only waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, the description does the heavy lifting by naming the three returned fields and the secret-redaction rule. The remaining gap is the empty state — whether a missing webhook yields an error or a null response — which an agent would want before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description does not need to explain inputs at all, and correctly spends its words on outputs instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The German sentence states a specific verb (anzeigen) and resource (deinen eigenen Notification-Webhook), and the parenthetical enumerates exactly what fields come back (url, active, secret_gesetzt). The possessive 'eigenen' clarifies it is scoped to the caller, which separates it from webhook_save/delete/test by verb alone, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers this is the read-side companion to ontouser_webhook_save, ontouser_webhook_delete and ontouser_webhook_test. There is no statement of when to prefer this over those siblings, no precondition (e.g. must be authenticated, must already have a webhook configured), and no exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ontouser_webhook_testTest WebhookAIdempotentInspect
Test-POST an den eigenen Webhook schicken (kein echtes Ereignis). Zeigt sofort, ob die Adresse antwortet und der Schluessel ankommt. | EN: webhook, test, smoke test
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses that this is an outbound POST to the caller's own webhook (consistent with openWorldHint), that no real event is emitted, and that the result immediately reveals reachability and key acceptance. It does not say how a failed delivery surfaces (error vs. a negative result payload).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the action and immediately qualified by 'kein echtes Ereignis'. The trailing '| EN: webhook, test, smoke test' keyword tag is padding but does not obscure the core content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter smoke-test tool with no output schema, the description covers what it does and what the caller learns from it. The missing piece is the shape of the result and how a non-responding endpoint is reported, which matters slightly more given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the schema baseline is 4. The description correctly implies the target webhook is taken from the stored configuration rather than passed in, which matches the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action on a specific resource: a test POST to the user's own webhook, explicitly without firing a real event. That distinguishes it from siblings like webhook_save, webhook_show and webhook_delete, though it never names those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It conveys the intent well (immediately verify that the address responds and the key arrives), which implies when to use it. But it does not state prerequisites (a webhook must already be saved) or explicitly contrast with webhook_save/webhook_show, leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_watch_changesList Changes Since CursorARead-onlyIdempotentInspect
Aenderungen seit einem Cursor abholen (was wurde angelegt/geaendert/geloescht). Rein lesend. Nutze es fuer die inkrementelle Synchronisation, nicht fuer Uebersichten — dafuer ist onto_object_index da (billiger und vollstaendig). Den Ausgangsstand liefert onto_watch_cursor. | EN: changes, audit, feed, monitoring, event log, cursor
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max Events (Default 50, max 100) | |
| since | Yes | Cursor (Event-id). Nur Events mit id > since. | |
| action | No | Filter: nur dieser action_key (z.B. claim_service_order) | |
| scope_id | No | Optional: nur Scope |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so 'Rein lesend' is largely redundant. The description still adds real context beyond the annotations: what a change event represents (create/update/delete) and the incremental-sync framing. It does not address cursor expiry, event retention, or what happens past max=100, which keeps it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The operational content is front-loaded into two tight sentences: purpose, safety, usage decision, and alternative. The trailing bilingual keyword list ('| EN: changes, audit, feed, ...') is search-optimization padding that adds no decision value for an agent, though it is compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, well-annotated, fully-described four-parameter list tool with no output schema, the description covers purpose, safety, and routing. The remaining gap is the shape and ordering of returned events, which is not required since no output schema exists but would help an agent consume results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all four parameters are documented there (including default 50 / max 100 for limit and the id > since semantics), so the baseline is 3. The description earns an extra point by telling the agent where the required `since` value comes from (onto_watch_cursor), which is not stated in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Änderungen seit einem Cursor abholen') and immediately scopes it by the kinds of events returned (angelegt/geändert/gelöscht). It explicitly distinguishes itself from two siblings, onto_object_index (overviews) and onto_watch_cursor (starting cursor), so an agent can route 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives both sides of the decision: use for incremental synchronization, do NOT use for overviews, and names the alternative (onto_object_index) with the reason (cheaper and complete). It also points to onto_watch_cursor for obtaining the initial cursor, closing the loop on the required parameter's origin.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onto_watch_cursorGet Change CursorARead-onlyIdempotentInspect
Den aktuellen Beobachtungs-Zeiger lesen (Stand, bis zu dem Aenderungen abgeholt wurden). Rein lesend. Nutze es ZUSAMMEN mit onto_watch_changes: erst Cursor lesen, dann Aenderungen abholen, dann den Zeiger weiterruecken — so verpasst du nichts und liest nichts doppelt. Fuer den Volltextbestand nimm onto_object_index. | EN: changes, audit, feed, monitoring, event log, cursor
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'Rein lesend' is largely repetition. What the description does add beyond the annotations is the cursor's contract: it marks the point up to which changes have been consumed, which explains why reading it is safe to repeat and how it composes with onto_watch_changes. It stops short of stating the return shape or whether the cursor advances implicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The workflow instruction is front-loaded and each sentence carries meaning. The trailing '| EN: changes, audit, feed, monitoring, event log, cursor' keyword block is search-engine padding rather than agent guidance, which keeps it out of the top band.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, the description supplies the concept that matters: what the cursor is and how it sequences with the change-fetching sibling. It does not describe what the returned value looks like (timestamp, token, opaque string), which is the one thing an agent must infer before using it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and there is no parameter semantics for the description to compensate for. Nothing here misleads about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('den aktuellen Beobachtungs-Zeiger lesen') and immediately defines what the cursor represents ('Stand, bis zu dem Aenderungen abgeholt wurden'). It distinguishes itself from onto_watch_changes and onto_object_index by name, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit three-step workflow ('erst Cursor lesen, dann Aenderungen abholen, dann den Zeiger weiterruecken') with the rationale that this avoids gaps and duplicates. It also names an alternative for a different need ('Fuer den Volltextbestand nimm onto_object_index'), which is exactly the when-to-use/when-not 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.
prepare_form_answerPrepare Form AnswerAInspect
Formular-ENTWURF anlegen (Status 'draft') und dessen Antwort-udid erhalten. Nimm die form_udid aus list_formdefs. WICHTIG: hiermit werden noch KEINE Werte gesetzt - der Entwurf ist leer. Werte setzt du danach mit submit_form_answer. Ergebnis: Feld 'udid' = Antwort-udid (brauchst du fuer submit_form_answer und show_form_answer). Der Entwurf liegt im Schreib-Scope des Agenten (SSR-Kaskade). | EN: form answer, submission, response, prepare, submit
| Name | Required | Description | Default |
|---|---|---|---|
| form_udid | Yes | Formdef-udid (32-hex) aus list_formdefs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-readonly, non-idempotent, non-destructive mutation, and the description adds genuinely new behavior: no values are set at this stage, the output carries a 'udid' field, and the draft lands in the agent's write scope (SSR cascade). It stops short of saying whether repeated calls create duplicate drafts or what happens to abandoned drafts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical constraints (draft only, no values yet, udid in result) are front-loaded and easy to scan. The trailing '| EN: form answer, submission, response, prepare, submit' keyword block adds little operational value and dilutes an otherwise tight description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter creation tool with no output schema, the description covers input provenance, the exact return field name, downstream consumers, and the scope implication. An agent can chain it correctly without opening anything else.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds value by telling the agent where to obtain the form_udid (from list_formdefs) rather than leaving it to guess the source. No format details beyond the schema's 32-hex note, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (create a form-answer draft, status 'draft') and immediately distinguishes it from the siblings that finalize or read it (submit_form_answer, show_form_answer). The parenthetical that the draft is empty removes any ambiguity about what 'prepare' means here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit pipeline: get form_udid from list_formdefs, call this, then set values with submit_form_answer and use the returned udid for submit_form_answer/show_form_answer. The alternative/next-step tools are named along with the condition that selects them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redeem_invite_codeRedeem Invite CodeAInspect
Einen Einladungscode einloesen (Zugang ueber eine Einladung erhalten). Schreibt die Mitgliedschaft und ist der Selbstregistrierungs-Weg ohne Administrator. Nutze es, wenn du einen Code erhalten hast. Der Code muss gueltig sein — der Aussteller verwaltet ihn mit list_invite_codes. Alle Fehlerfaelle (unbekannt, abgelaufen, verbraucht, Adresse nicht freigegeben) antworten gleich mit 400 und demselben Text; nach 10 Fehlversuchen je Konto und IP in einer Stunde kommt 429 — dann warten, nicht wiederholen. Weg (a) nach der Registrierung: mit dem Code in einen fremden Scope eintreten. | EN: invitation, invite, voucher, code, bundle
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Der Einladungscode (z.B. '7XK4-MQN9'). Rechte werden nur hochgestuft, nie automatisch heruntergestuft; Mitgliedschaft ist dauerhaft (der Code selbst laeuft ab, nicht die Mitgliedschaft). Alle Manager des Scopes werden benachrichtigt. | |
| accept_management | No | Nur bei Verwaltungs-Codes (kind=management): 1 = Zustimmung, dass dieses Konto kuenftig von dem Unternehmen verwaltet wird. Ohne diesen Wert antwortet der Server mit einer Warnung, die die Rechte des Managers auflistet. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses that membership is permanent while the code expires, that rights are only upgraded never downgraded, that all scope managers are notified, that all failure modes return an identical 400, and that 10 failures/hour per account+IP trigger a 429 that must not be retried. That is exactly the operational context an agent needs before a non-idempotent write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the 'use when' condition are front-loaded, and the error/rate-limit sentences earn their place for a write tool. It is dense but not padded; the trailing keyword aliases aid retrieval rather than adding noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two fully documented parameters, no output schema, and existing annotations, the description fills the remaining gaps: side effects, error semantics, rate limiting, and the accept_management escalation path. An agent has everything needed to invoke it correctly and recover from failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters already carry detailed descriptions, including the accept_management warning behavior. The description adds little parameter-specific meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Einen Einladungscode einloesen') and immediately clarifies the effect: it writes membership and is the self-registration path that needs no administrator. This distinguishes it cleanly from create_invite_code, list_invite_codes and revoke_invite_code in the sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Nutze es, wenn du einen Code erhalten hast' and names list_invite_codes as the issuer-side management alternative, plus a second usage path (entering a foreign scope with a code). It gives clear positive conditions but no explicit 'do not use this when...' exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_access_tokenRefresh Access TokenAInspect
Token-Selbst-Erneuerung (OAuth2-Refresh). Tauscht einen gueltigen refresh_token gegen ein neues access_token + rotierten refresh_token, OHNE Passwort. Antworte proaktiv vor Ablauf (expires_in=10h): {access_token, refresh_token, expires_in}. Der neue refresh_token ersetzt den alten (Rotation). | EN: refresh, access, token
| Name | Required | Description | Default |
|---|---|---|---|
| refresh_token | Yes | Der gueltige refresh_token vom login-Aufruf oder einem vorherigen refresh_access_token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the critical side effect of token rotation: the new refresh_token replaces the old one. It also documents the passwordless flow, the 10-hour expiry, and the exact response fields, which are important behavioral details for an agent to invoke it correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then adds rotation, expiry, and return-shape details. It is efficient overall, though the trailing English keyword line ('refresh, access, token') is not essential for an agent deciding how to call the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description is complete: it explains what the tool does, when to use it, the passwordless requirement, the rotation behavior, and the returned fields. An agent has enough information to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single parameter is already fully documented in the schema. The description reiterates that the refresh_token is valid and comes from login or a previous refresh, but adds no syntax, format, or validation detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific OAuth2 operation: exchanging a valid refresh_token for a new access_token plus a rotated refresh_token. It clearly distinguishes the action from password-based login by emphasizing 'OHNE Passwort' and naming the token exchange explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear usage condition: refresh proactively before expiration, with expires_in=10h noted. It also implies this is the alternative to password login by saying no password is needed, but it does not explicitly name sibling tools such as login or auth_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registerRegister AccountAInspect
Konto anlegen — zwei Wege. WEG 1, AGENT (kein Postfach, kein Mensch noetig): register mit agent=true + accept_terms=true. Adresse und Passwort erzeugt die Plattform; beide kommen EINMALIG in der Antwort (username, password), damit meldest du dich per login an. Die Rolle 'member' ist sofort aktiv, keine Mail, kein activate. Ein optionaler invite_code wird sofort uebernommen (gilt die Drossel: 10 Fehlversuche je IP und Stunde, dann 429); ohne Code bist du voellig isoliert (keine Mitgliedschaft, keine fremden Scopes) — Zugang spaeter per redeem_invite_code oder Service Request. KEIN Startguthaben: das Konto startet mit 0 Credits und bezahlt sich selbst — onto_credit_checkout (Karte) oder onto_credit_chargeup (prepaid_code). WEG 2, MENSCH: register mit username (E-Mail), password, password_confirm; dann Aktivierungscode per Mail, danach activate. WICHTIG: mit accept_terms=true bestaetigst du die Nutzungsbedingungen (https://www.telesherpa.com/agb). Nach der Registrierung hast du zwei Wege: (a) einem fremden Scope beitreten (invite_code an redeem_invite_code) oder (b) selbst etwas bauen (ontouser_scope_create) und danach mit create_invite_code Einladungscodes erzeugen, um Menschen und andere Agenten in deinen Scope zu holen. Zugangsdaten kommen NUR EINMAL: username/password sofort dauerhaft speichern (Datei chmod 600 oder Secret-Store) — wer sie nur im Kontext behaelt, steht beim naechsten Start ohne Konto da, und eine Neuregistrierung ist ein neues, leeres Konto. Nach dem login zusaetzlich den refresh_token (30 Tage) ablegen: der holt neue Access-Tokens (10 h) ohne Passwort. Vier Wege zu Guthaben oder Zugang, je mit Werkzeugnamen: (a) EINLADUNG — invite_code bei register oder spaeter redeem_invite_code (Zugang zu einem fremden Scope, kein Guthaben); (b) SELBST ZAHLEN — onto_credit_checkout (gehostete Zahlseite, Karte); (c) PREPAID — onto_credit_chargeup mit prepaid_code; (d) IDEE — ontouser_service_request (kostenlos): beschreibe, was du bauen willst, die Administratoren pruefen es und schicken bei Gefallen einen Prepaid-Code — dieser Weg haengt an der Idee, nicht am Zugang zu einer Kreditkarte. | EN: account, signup, onboarding, self-registration, agent, register
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | WEG 1 ohne Einladungscode: true = sofort selbst registrieren (kein Postfach, kein Mensch). Das Konto ist danach isoliert — keine Mitgliedschaft, keine fremden Scopes. Nicht mit username/password kombinieren. | |
| notes | No | OPTIONAL, BEST EFFORT: ein Satz zum Zweck ('Belege lesen fuer Steuerkanzlei'). Das ist die normale Notiz, NICHT die interne Admin-Notiz. Spaeter aenderbar mit change_profile. | |
| phone | No | OPTIONAL, BEST EFFORT: Telefon des verantwortlichen Menschen (Freitext, keine Normalisierung) — der Kontaktweg im Zweifel. Nur eintragen, wenn du sie kennst; niemals ausdenken. | |
| password | No | WEG 2: Passwort | |
| username | No | WEG 2 (Mensch): E-Mail-Adresse fuer die Registrierung (Aktivierungscode kommt dorthin — der Mensch kann ihn vorlesen, IMAP nicht noetig) | |
| displayname | No | OPTIONAL, BEST EFFORT (Selbstauskunft, ungeprueft): Anzeigename des Kontos, z. B. 'Buchhaltungs-Agent Mueller GmbH'. Erscheint in Mitgliederlisten und Logs. Nimm, was du wirklich weisst — erfinde nichts, unbekannt darf leer bleiben. Blockiert nie. | |
| invite_code | No | WEG 1 (Agent), optional: Einladungscode von deinem Auftraggeber. Adresse und Passwort erzeugt die Plattform, sie kommen einmalig in der Antwort zurueck. Kein Postfach, keine Mail, kein activate. Die Scope-Rechte des Codes werden sofort uebernommen; ohne Code bleibt das Konto isoliert. Nicht mit username/password kombinieren. | |
| accept_terms | Yes | Pflicht in beiden Wegen. Mit true bestaetigst du die Nutzungsbedingungen (https://www.telesherpa.com/agb). Ohne Zustimmung wird kein Konto angelegt. Lies sie, bevor du zustimmst. | |
| organisation | No | OPTIONAL, BEST EFFORT: Firma/Organisation deines Auftraggebers oder Betreibers. Nicht raten; leer lassen, wenn unbekannt. | |
| password_confirm | No | WEG 2: Passwort-Wiederholung (muss identisch sein) | |
| accept_management | No | Nur in WEG 1 mit einem Verwaltungs-Code (kind=management): true = ausdrueckliche Zustimmung, dass dieses Konto kuenftig von dem Unternehmen verwaltet wird (Profilfelder, Rechte, Schreibziel, Guthaben, Sperre, Offboarding; das Passwort ausdruecklich NICHT). Ohne diesen Wert antwortet der Server mit 400 und einer Warnung, die die Rechte auflistet — so bleibt die Zustimmung eine bewusste Entscheidung. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses the 10-failures-per-IP-per-hour throttle and the resulting 429, that credentials are returned exactly once and must be persisted, that a re-registration creates a new empty account, that a missing invite_code leaves the account fully isolated at 0 credits, and the 400-with-warning behavior for accept_management. The only gap is that return payload structure is only partially sketched (username/password/refresh_token), leaving response shape partly implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and organized around the two paths, but heavily padded: the four credit/access routes are enumerated twice (once in prose, once as a lettered list), and the credential-storage warning is repeated. Substantive content survives trimming, so structure is good but size is excessive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, non-idempotent, open-world registration tool with no output schema, the description covers prerequisites, both invocation modes, credential handling, rate limits, and every follow-up decision point an agent faces after creation. Nothing needed 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.
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 cross-parameter semantics the schema states only per-field: which parameters belong to WEG 1 vs. WEG 2, that they must not be combined, and that invite_code's scope rights transfer immediately. It also supplies the terms URL context for accept_terms. Some of this repeats the schema, keeping it below 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Konto anlegen — zwei Wege') and immediately splits into two named paths (agent self-registration vs. human with e-mail activation). It is unambiguously distinguishable from siblings like login, activate, and redeem_invite_code, which are referenced by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states which path to use under which condition (agent=true when no mailbox or human is available; username/password when a person will activate by mail), and names the alternatives for every follow-up need (redeem_invite_code, onto_credit_checkout, onto_credit_chargeup, ontouser_service_request). It even includes when-not guidance ('Nicht mit username/password kombinieren', no starting credit).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_memberRemove MemberADestructiveInspect
Ein Mitglied aus dem eigenen Bereich entfernen (Zugang entziehen). Der Bereich selbst und seine Daten bleiben bestehen; nur der Zugang entfaellt. Nutze es beim Offboarding. Vorher list_members pruefen, damit du die richtige Person triffst. Nur Rechte aendern statt entfernen: toggle_member_flag. | EN: member, participant, membership, team
| Name | Required | Description | Default |
|---|---|---|---|
| sp_id | Yes | Mitgliedschafts-ID (sp_id aus list_members). Entfernt NUR die Scope-Mitgliedschaft, nicht den User/Account. Eigene Mitgliedschaft kann man nicht selbst entfernen (ausser als Admin). |
TDQS
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 critical behavioral context beyond them: the area and its data remain intact, only access is revoked. That tells the agent what is actually destroyed and prevents overestimating the blast radius.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core guidance is front-loaded and efficient: remove access, check list_members, use toggle_member_flag for rights changes. The trailing EN keyword list ('member, participant, membership, team') is extraneous for invocation but does not obscure the main instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool, the description covers purpose, prerequisites, alternative tools, and the key consequence (access removed, data retained). With rich annotations and full schema coverage, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already explains that sp_id is a membership ID from list_members and that it removes only scope membership, not the user/account. The description reinforces checking list_members but does not add syntax or format details 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Ein Mitglied aus dem eigenen Bereich entfernen', revoke access) and immediately clarifies the scope: only access is removed while the area and its data remain. It also distinguishes the operation from 'toggle_member_flag', which changes rights instead of removing membership.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit use case ('Nutze es beim Offboarding'), a prerequisite check ('Vorher list_members pruefen'), and a clear alternative for a different intent ('Nur Rechte aendern statt entfernen: toggle_member_flag'). This is exactly the routing 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.
renew_accountRenew AccountAInspect
Das Konto mit einem 4-stelligen Verifizierungscode verlaengern (Lebenszyklus, etwa alle 3 Monate). Der Code kommt per E-Mail; ohne ihn laeuft das Konto ab. Nutze es, wenn eine Verlaengerungsaufforderung kommt oder die Laufzeit auslaeuft. Den Code besorgt der Mensch (er kommt in einer Minute per Mail) — kein Postfachzugriff noetig. Zur Erstanmeldung: login. Ein neues Konto entsteht hier nicht: dafuer register. | EN: renew, account
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | 4-digit verification token sent via email |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: the consequence of skipping it ('ohne ihn laeuft das Konto ab'), the fact that credentials arrive out-of-band by email, and that a human supplies the code so no mailbox access is required. It stops short of covering idempotency or what happens on a stale/invalid code, which the annotations flag as non-idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Triggers and the core constraint are front-loaded, and each sentence carries useful routing or setup information. Minor waste in the trailing '| EN: renew, account' keyword tag and the German/English mix, but density is high.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter lifecycle mutation with annotations and no output schema, the description covers when to call, how to obtain the token, and the failure consequence. It does not indicate what the call returns (e.g. a new expiry date), which is the one remaining gap for an agent scripting the renewal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already says '4-digit verification token sent via email', so the description's mention of the code and its email origin largely repeats structured data. It adds the human-obtains-it workflow detail but no format or error-handling nuance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Das Konto ... verlaengern') along with the required 4-digit code and the lifecycle cadence (alle 3 Monate). It explicitly distinguishes itself from the two nearest siblings, login and register, so an agent can route without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit triggers ('wenn eine Verlaengerungsaufforderung kommt oder die Laufzeit auslaeuft') and explicit exclusions with alternatives ('Zur Erstanmeldung: login', 'Ein neues Konto entsteht hier nicht: dafuer register'). 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.
resolve_form_answerResolve Form AnswerARead-onlyIdempotentInspect
Findet die form_udid zu einer bekannten answer_udid (ueber den usesForm-Link der Antwort). Brauchst du NUR, wenn du eine answer_udid hast, aber die zugehoerige form_udid nicht kennst — danach show_form_answer(form_udid, answer_udid) normal aufrufen. Hast du form_udid bereits (z.B. aus prepare_form_answer/submit_form_answer), brauchst du diesen Schritt nicht. | EN: form answer, submission, response, prepare, submit
| Name | Required | Description | Default |
|---|---|---|---|
| answer_udid | Yes | Antwort-udid (32-hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description still adds the mechanism (resolves via the usesForm link) and the return value (the form_udid), which the annotations do not cover; there is no output schema, so naming the returned identifier is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then the usage condition and the follow-up call, so an agent gets the essentials immediately. The trailing '| EN: form answer, submission, response, prepare, submit' keyword tag is SEO filler rather than information, and the body being German-only slightly raises parsing cost for non-German agents.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only resolver with full schema coverage, the description covers purpose, precondition, exclusion, follow-up, and the returned value. No output schema exists, but the return (form_udid) is named; only the failure case (answer_udid not found / no usesForm link) is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema description coverage ('Antwort-udid (32-hex)'), so the schema already does the work. The description adds only the qualifier 'bekannten' (known) answer_udid, which is marginal beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it resolves the form_udid for a known answer_udid via the answer's usesForm link. It also implicitly distinguishes itself from show_form_answer and prepare_form_answer/submit_form_answer by describing the exact gap it fills.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use (you have answer_udid but not form_udid), when-not (you already have form_udid from prepare_form_answer/submit_form_answer), and the follow-up call to make afterwards (show_form_answer(form_udid, answer_udid)). This is a complete routing instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_invite_codeRevoke Invite CodeADestructiveIdempotentInspect
Einen Einladungscode ungueltig machen (keine neuen Registrierungen mehr darueber). Bereits registrierte Mitglieder bleiben bestehen — nur der Code verfaellt. Nutze es bei abgelaufenen oder missbraeuchten Codes. Den Code findest du mit list_invite_codes. | EN: invitation, invite, voucher, code, bundle
| Name | Required | Description | Default |
|---|---|---|---|
| code_id | Yes | ID des zu widerrufenden Codes (setzt status=inactive; bereits beigetretene Mitglieder bleiben Mitglied) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuine value beyond them by explaining what is (and is not) destroyed: the code is invalidated while already-registered members remain members.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core effect and the when-to-use guidance are front-loaded and compact. The trailing '| EN: invitation, invite, voucher, code, bundle' is keyword padding that adds no operational meaning, slightly diluting the otherwise tight text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param mutation with full annotation coverage and no output schema, the description covers effect, scope and code discovery adequately. Only minor gaps (e.g., behavior when the code is already inactive) remain, and idempotentHint largely covers those.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the code_id property already documents the status=inactive effect. The description adds acquisition guidance ('Den Code findest du mit list_invite_codes') not present in the schema, which helps the agent source the ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (ungueltig machen / revoke) and resource (Einladungscode), plus the precise effect: no new registrations, existing members unaffected. This cleanly separates it from sibling tools like create_invite_code, redeem_invite_code and list_invite_codes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the triggering conditions (expired or misused codes) and points to list_invite_codes as the way to obtain the code. It does not spell out exclusions against siblings such as redeem_invite_code, but the intended usage is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_form_answerShow Form AnswerARead-onlyIdempotentInspect
Eine gespeicherte Formular-Antwort ANSEHEN: alle gespeicherten Werte als JSON (values = {feld-key: wert}). EINZELPOSTEN/SUBFORM: subforms = {objekttyp: [{udid, name, values:{feld:wert}}]} — die Zeilen des Unterformulars MIT ihren Werten (bei PflegeBesuch z.B. material/quantity/unit), direkt in dieser Antwort enthalten (kein Extra-Call noetig). Die Feld-Keys kommen aus der formdef (show_formdef, subform.fields), sie sind NICHT fest verdrahtet — jedes Formular hat eigene. Leeres/fehlendes subforms = keine Einzelposten gespeichert. DATEIEN: files[] enthaelt pro Datei form_field (welchem Formularfeld sie zugeordnet ist, z.B. 'fotos' vs 'fotosnachher') — so unterscheidest du mehrere Bilder/Signaturen ohne Zusatz-Call. form_udid aus list_formdefs/prepare_form_answer/submit_form_answer (oder resolve_form_answer, falls nur answer_udid bekannt), answer_udid aus prepare_form_answer/submit_form_answer. Damit pruefst du nach dem Ausfuellen, ob deine Werte wirklich angekommen sind.
| Name | Required | Description | Default |
|---|---|---|---|
| form_udid | Yes | Formdef-udid (32-hex) aus list_formdefs/prepare_form_answer/submit_form_answer/resolve_form_answer | |
| answer_udid | Yes | Antwort-udid (32-hex) aus prepare_form_answer/submit_form_answer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only, idempotent profile, yet the description goes well beyond them: it discloses the exact return shape (values, subforms, files[]), explains that empty/missing subforms means no line items were stored, and notes that line items and file-to-field mappings arrive inline with no extra call. That is exactly the behavioral payload the agent needs and 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return shape are front-loaded, and the sentences about subforms/files each carry non-obvious structural information. It is dense rather than padded, though the restatement of ID provenance duplicates what the schema already says.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of explaining return values, and it does: values map, subform row shape with a concrete PflegeBesuch example, files[] with form_field, and the meaning of absent subforms. Nothing an agent needs to interpret the response is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, including their source tools. The description largely repeats those sources and only adds the minor nuance that resolve_form_answer applies when just answer_udid is known, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Eine gespeicherte Formular-Antwort ANSEHEN') and states exactly what comes back (stored values as JSON). It distinguishes itself from the schema-reading sibling show_formdef and from the write-path tools submit_form_answer/prepare_form_answer by framing this as the post-fill inspection step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit use context ('Damit pruefst du nach dem Ausfuellen, ob deine Werte wirklich angekommen sind') and routes the agent to resolve_form_answer when only answer_udid is known, or to list_formdefs/show_formdef for field keys. It does not spell out a when-not-to-use case, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_formdefShow Form DefinitionARead-onlyIdempotentInspect
Ein Formular (formdef) VOLLSTAENDIG lesen: alle Felder mit key/label/widget/required, Auswahl-Optionen (options), Validierungsregeln (validation: pattern+message) und Bedingungen (condition), Subform-Felder. Ausserdem die konfigurierten Buttons unter formdef.buttons[] (z.B. type='send' mit label 'Abschliessen' — diesen Index brauchst du beim Absenden als action='button:'). Nimm die udid aus list_formdefs. Damit pruefst du, ob ein Formular fachlich passt, bevor du eine Action daran bindest. SQL-Interna sind bewusst NICHT enthalten. | EN: show, formdef
| Name | Required | Description | Default |
|---|---|---|---|
| udid | Yes | Formdef-udid (32-hex) aus list_formdefs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuine value beyond that: it enumerates the returned structure and explicitly states that SQL internals are deliberately excluded, setting expectations about what will not appear in the response. Return format (JSON shape) is not described, which keeps it below 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core verb and returned content are front-loaded in the first sentence, and the button-index explanation earns its place by connecting to submit_form_answer. The trailing '| EN: show, formdef' fragment is low-value noise, and the long run-on sentence is dense rather than tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one required parameter and no output schema, the description carries the burden of explaining return values, and it does so thoroughly: fields, options, validation, conditions, subforms, and buttons. An agent knows what it will receive and how to use the button indices downstream.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter udid is documented as a 32-hex formdef udid from list_formdefs. The description repeats 'Nimm die udid aus list_formdefs' but adds no format or constraint detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Ein Formular (formdef) VOLLSTAENDIG lesen') and enumerates exactly what is returned: fields with key/label/widget/required, options, validation rules, conditions, subform fields, and buttons. It clearly differentiates itself from list_formdefs, which is named as the source of the udid, so an agent can distinguish the two 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit context: use the udid from list_formdefs, and use this tool to check whether a form fits before binding an action to it. It also flags that the button index is needed when submitting as action='button:<index>', tying the tool to its downstream use. No explicit 'when not to use' clause, but the routing to list_formdefs covers most of the guidance need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_form_answerSubmit Form AnswerAInspect
Formular-Antwort SPEICHERN oder ABSENDEN. form_udid aus list_formdefs, answer_udid aus prepare_form_answer. OHNE answer_udid wird eine NEUE Antwort angelegt. 'values' = {feld-key: wert}, Keys aus show_formdef, Werte muessen die Feldregeln erfuellen (Select: nur erlaubte Optionswerte). SUBFORM/EINZELPOSTEN: ein Subform-Feld bekommt eine LISTE von Zeilen-Objekten, z.B. {"materialverbraucht": [{"material": "Bettlaken", "quantity": "1", "unit": "Stk"}, {...}]} — die Feld-Keys der Zeilen stehen im subform.fields der formdef (show_formdef). Skalare Felder bleiben einfach. 'status': 'draft' (speichern) oder 'sent' (absenden; committet in den target_scope der Action). VERHALTEN DER VALIDIERUNG: jeder Regelverstoss bricht mit HTTP 400 ab und liefert die Fehler je Feld ({errors:[{key,msg}]}) - es wird dann NICHTS gespeichert. Genau damit testest du ein Formular fachlich durch: gueltige Werte senden und pruefen, ob sie ankommen; ungueltige Werte senden und pruefen, ob die Regeln greifen. Eine einmal mit 'sent' abgesendete Antwort ist gesperrt (erneutes Absenden legt eine neue Antwort an).
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | WICHTIG BEIM ABSENDEN: waehlt den konfigurierten Button der formdef. Format 'button:<index>' — der Index zeigt in formdef.buttons[] (Reihenfolge wie in show_formdef, erster Button = 0). NUR ein Button vom Typ 'send' loest den Mailversand (inkl. PDF-Anhang) aus; ein Button vom Typ 'saveandgoto' leitet auf eine feste URL weiter. Ohne 'action' wird nur gespeichert — dann geht KEINE Mail raus, auch wenn status='sent' gesetzt ist. Empfaenger/Betreff stehen in der formdef (Config), NICHT hier — sie sind bewusst nicht per Request aenderbar. | |
| status | No | 'draft' (speichern) oder 'sent' (absenden) | |
| values | No | {feld-key: wert}, Keys aus show_formdef. Subform-Felder: Liste von Zeilen-Objekten [{feld: wert, ...}] (Feld-Keys aus subform.fields der formdef). | |
| form_udid | Yes | Formdef-udid (32-hex) aus list_formdefs | |
| answer_udid | No | Antwort-udid aus prepare_form_answer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say this is a non-read-only, non-idempotent, non-destructive write. The description goes far beyond: atomic validation (HTTP 400, {errors:[{key,msg}]}, nothing persisted on any rule violation), the lock after 'sent', and the non-obvious rule that no mail is sent without an 'action' button even when status='sent'. These are exactly the behaviors an agent cannot infer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in one line, then progressively deeper detail (key sourcing, values format, subform example, status, validation, locking). Every section adds information, though the subform example and the status restatement overlap slightly with the schema descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter nested-object mutation tool with no output schema, the description covers the full lifecycle: prerequisites (form_udid/answer_udid provenance), payload semantics, validation failure format, commit target for 'sent', and the post-submit lock. 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.
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 earns extra by giving the concrete subform shape ({'materialverbraucht': [{'material': 'Bettlaken', ...}]}) and stating that scalar fields stay flat while subform fields take a list of row objects keyed by subform.fields. It does not restate the 'action' semantics, but the schema already carries those in detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource pair ('Formular-Antwort SPEICHERN oder ABSENDEN') and immediately distinguishes the two modes (draft vs. sent) plus the two creation paths (with/without answer_udid). An agent can tell exactly what this does and how it differs from prepare_form_answer, show_form_answer, and resolve_form_answer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: form_udid comes from list_formdefs, answer_udid from prepare_form_answer, field keys from show_formdef. It also names a concrete use case (valid/invalid value testing to exercise form rules) and states that re-sending a 'sent' answer creates a new one rather than failing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_member_flagToggle Member FlagAInspect
Ein Mitglieds-Merkmal umschalten (z.B. Lesen/Schreiben eines Mitglieds im eigenen Bereich). Aendert die Rechte dieses Mitglieds sofort. Nutze es zum Rechtewechsel ohne Neueinladung. Ein Mitglied ganz entfernen: remove_member. Den Ist-Stand zeigt list_members. | EN: member, participant, membership, team
| Name | Required | Description | Default |
|---|---|---|---|
| val | Yes | 1 oder 0 | |
| field | Yes | can_read | can_write | can_manage_scope | |
| sp_id | Yes | Mitgliedschafts-ID (sp_id aus list_members), NICHT profile_id oder scope_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, idempotent=false, so the safety profile is covered. The description adds real behavioral context beyond that: the rights change takes effect immediately and no re-invitation is needed, which tells the agent this is a live permission mutation. It does not mention required permissions/role or error behavior, keeping it below 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and alternatives are front-loaded and the German prose is tight. However, the trailing keyword tag ('| EN: member, participant, membership, team') is search-noise that does not earn its place in an instruction to an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With three fully documented parameters, annotations present and no output schema, the definition covers what an agent needs to call it correctly and to route away from remove_member/list_members. Only the caller's permission prerequisites are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema itself is strong, explicitly warning that sp_id is the membership ID and not profile_id or scope_id. The description adds only the 'im eigenen Bereich' scoping nuance and the read/write example, so it neither compensates nor detracts; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Ein Mitglieds-Merkmal umschalten') with the concrete example of read/write rights inside one's own scope. It also names the two nearest siblings it is not (remove_member, list_members), so an agent can separate it from them 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Nutze es zum Rechtewechsel ohne Neueinladung' gives the positive selection condition, and 'Ein Mitglied ganz entfernen: remove_member. Den Ist-Stand zeigt list_members.' gives explicit alternatives with their selecting conditions. When-to-use and when-not-to-use 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.
upload_code_allowlistUpload Code AllowlistADestructiveIdempotentInspect
XLSX/XLS-Bulk-Upload fuer die E-Mail-Allowlist eines Scope-Invite-Codes (z.B. 500 Subunternehmer-Adressen). ERSETZT alle bestehenden 'email'-Allowlist-Eintraege dieses Codes (domain/glob-Eintraege bleiben unberuehrt) — fuer den woechentlichen Neu-Upload-Workflow gedacht. Braucht can_manage_scope=1 auf dem Scope des Codes. | EN: allowlist, permission, whitelist, code
| Name | Required | Description | Default |
|---|---|---|---|
| code_id | Yes | Code-ID (aus create_invite_code / list_invite_codes) | |
| filename | Yes | Dateiname (z.B. subunternehmer.xlsx) | |
| file_base64 | Yes | XLSX/XLS-Datei-Inhalt als base64 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations flag destructiveHint=true and idempotentHint=true, but the description goes further and specifies the exact blast radius: all existing 'email' allowlist entries of this code are replaced while domain/glob entries stay untouched. It also discloses the required permission (can_manage_scope=1), which 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The destructive scope and the permission requirement are front-loaded in the first two clauses, which is the right order. The trailing '| EN: allowlist, permission, whitelist, code' keyword block is search-noise that adds nothing for an agent and slightly dilutes the message.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter destructive mutation with no output schema, it covers purpose, destruction scope, workflow context and permissions. It omits the return shape (imported/rejected counts) and error behavior on invalid files, which an agent would need to report results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by indicating the file should carry e-mail addresses (e.g. 500 subcontractor addresses) and implying code_id targets a single invite code. It still doesn't describe row-level validation or what happens to malformed rows in file_base64.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (bulk XLSX/XLS upload for the e-mail allowlist of a scope invite code) and quantifies typical scale. It is clearly distinguishable from siblings add_code_allowlist_entry (single entry) and list_code_allowlist (read), which an agent can infer 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the intended workflow (weekly full re-upload) and the precondition can_manage_scope=1 on the code's scope, which is exactly the gating an agent needs. It does not explicitly name add_code_allowlist_entry as the alternative when the intent is to add rather than replace, so it stops short of 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.
upload_file_to_objectUpload File to ObjectAInspect
Upload a file to an object. type=structuredimage (Bild erscheint in der strukturierten Bildablage/Thumbnail) oder document (reguläre Datei). name=Kategorie-Image-Name (z.B. Image01.jpg) bei structuredimage. SSR: landet im write_scope falls read-only. RUECKGABE: file_udid (32-hex). Genau dieser Wert gehoert in formdef.template_file, wenn die Datei als PDF-Vorlage dienen soll. | EN: file, upload, document, attachment
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Kategorie-Name bei structuredimage (z.B. Image01.jpg) | |
| type | No | structuredimage (Thumbnail/Bildablage) oder document | |
| udid | Yes | Object udid (32-hex) | |
| filename | Yes | Filename | |
| file_base64 | Yes | File content as base64 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a non-readonly, non-destructive mutation. The description adds meaningful behavioral context beyond annotations by explaining structuredimage behavior, the read-only write_scope fallback, and that the return value is file_udid, including where that value belongs for PDF templates. It still omits permissions, limits, and overwrite behavior, but it adds substantial value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core information is front-loaded, but the description is cluttered by mixed German/English prose, cryptic abbreviation such as 'SSR', and an SEO-style keyword suffix. Those elements reduce immediate readability and do not all earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description usefully states the return value as file_udid and its downstream use. However, for a file upload mutation it does not mention permissions, size/type limits, overwrite behavior, or error cases, leaving some operational gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters. The description clarifies the semantic distinction between structuredimage and document and the special name meaning for structuredimage, but it largely mirrors the schema and does not add deep syntax or validation details for udid, filename, or file_base64.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a clear verb+resource: upload a file to an object. The description also distinguishes the two upload modes, structuredimage versus document, which is useful. It does not explicitly differentiate itself from siblings such as upload_staging_csv or upload_code_allowlist, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete usage context: structuredimage produces a thumbnail/structured image filing, and document is for regular files. It also explains the downstream use case where file_udid becomes formdef.template_file for PDF templates. It lacks explicit when-not-to-use guidance or sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_staging_csvUpload Staging CSVAInspect
Eine CSV-Datei in den Staging-Bereich hochladen (Vorbereitung fuer einen Datenimport). Schreibt die Datei ab, importiert sie aber NICHT — das ist nur die Ablage. Nutze es als ersten Schritt eines Massenimports; die Weiterverarbeitung laeuft danach ueber die Import-Tools (onto_import_create_source, onto_import_analyze, onto_import_run_step). Die Datei kommt als base64. Fuer Bilder/PDFs an Objekten: upload_file_to_object. | EN: import, CSV, staging, upload
| Name | Required | Description | Default |
|---|---|---|---|
| subject | Yes | Subject | |
| content_base64 | Yes | CSV file content as base64 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: the file is persisted but no import is triggered, which is the key non-obvious behavior for a write tool. Annotations already cover the safety profile (readOnly=false, destructive=false, idempotent=false), so the remaining gap is minor — nothing about overwrite semantics or required permissions beyond what the hints imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical constraint (no import) is front-loaded immediately after the purpose statement, and every sentence carries information. The trailing '| EN: import, CSV, staging, upload' keyword tag is padding that adds no meaning for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two parameters, full schema coverage, and no output schema to explain, the description covers what an agent needs to call it correctly and to chain it into the import flow. It stops short of saying what identifier comes back from the upload, which the next step would presumably need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description confirms the content format ('Die Datei kommt als base64'). However, the 'subject' parameter is described only as 'Subject' in the schema and is never clarified in the description, leaving the one genuinely ambiguous field unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('CSV-Datei in den Staging-Bereich hochladen') plus the crucial negative scope ('importiert sie aber NICHT — das ist nur die Ablage'). This cleanly separates it from the sibling import tools and from upload_file_to_object, which it names explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly positions the tool as the first step of a bulk import and names the follow-up tools (onto_import_create_source, onto_import_analyze, onto_import_run_step). It also gives an explicit exclusion: for images/PDFs on objects use upload_file_to_object instead.
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.
2 tool updates
- Added
onto_dispatch_status - Changed
onto_trigger_index1 field changed- added
Input schema / properties / qAdded value: +{ + "description": "Filter auf Name/Beschreibung der Regel. Gilt fuer DIESEN Aufruf, wird nicht in der Sitzung gespeichert.", + "type": "string" +}
4 tool updates
- Added
onto_startcard_delete - Added
onto_startcard_index - Added
onto_startcard_move - Added
onto_startcard_save
1 tool update
- Changed
onto_trigger_create1 field changed- changed
Input schema / properties / body / descriptionPrevious value: -"Die Regel als Objekt oder JSON-String. body-Format (verifiziert): {\"on\":\"update\",\"object_types\":[\"building\"],\"effects\":[{\"type\":\"set_property\",\"props\":{\"status\":\"geprueft\"}}]}. WICHTIG: set_property nutzt das Feld \"props\", NICHT key/value. Platzhalter in Werten: {object_udid}, {object_name}, {value_new}, {value_old}. Optional condition: {\"changed\":[\"feld\"],\"props\":[{\"key\":\"temperatur\",\"op\":\"gte\",\"value\":\"30\"}]} — Operatoren: eq, neq, in, gt, gte, lt, lte, empty, notempty, matches. create_object braucht \"object_type\" und \"name\", optional \"props\"/\"links\". create_link braucht \"linktype\" und \"to\" (32-hex, oder from/to). run_function braucht \"function\" (Name oder UDID). notify: \"to\" (eine Adresse) ODER \"to_link\" + optional \"to_prop\" (Default email) + \"all\" (true = alle verknuepften Objekte, Default true) — damit erreicht eine Meldung ALLE Personen einer Kante, z.B. alle an worksShift."New value: +"Die Regel als Objekt oder JSON-String. body-Format (verifiziert): {\"on\":\"update\",\"object_types\":[\"building\"],\"effects\":[{\"type\":\"set_property\",\"props\":{\"status\":\"geprueft\"}}]}. WICHTIG: set_property nutzt das Feld \"props\", NICHT key/value. Platzhalter in Werten: {object_udid}, {object_name}, {value_new}, {value_old}. Optional condition: {\"changed\":[\"feld\"],\"props\":[{\"key\":\"temperatur\",\"op\":\"gte\",\"value\":\"30\"}]} — Operatoren: eq, neq, in, gt, gte, lt, lte, empty, notempty, matches. create_object braucht \"object_type\" und \"name\", optional \"props\"/\"links\". create_link braucht \"linktype\" und \"to\" (32-hex, oder from/to). run_function braucht \"function\" (Name oder UDID). notify: \"to\" (eine Adresse) ODER \"to_link\" + optional \"to_prop\" (Default email) + \"all\" (true = alle verknuepften Objekte, Default true) — damit erreicht eine Meldung ALLE Personen einer Kante, z.B. alle an worksShift. Optional \"to_linkvalue\" (nur Kanten mit diesem Linkwert) und \"to_link2\" + \"to_linkvalue2\" fuer einen ZWEITEN Sprung (z.B. Schicht -> Tausch-Anfrage -> Antragsteller). Im Text loesen {linked:<linktype>:<linkvalue>:<prop>} Werte verknuepfter Objekte auf (mehrere Treffer als Komma-Liste); bei \"removed\"-Ereignissen zusaetzlich {removed_name} und {removed_email}."
1 tool update
- Changed
onto_trigger_create1 field changed- changed
Input schema / properties / body / descriptionPrevious value: -"Die Regel als Objekt oder JSON-String. body-Format (verifiziert): {\"on\":\"update\",\"object_types\":[\"building\"],\"effects\":[{\"type\":\"set_property\",\"props\":{\"status\":\"geprueft\"}}]}. WICHTIG: set_property nutzt das Feld \"props\", NICHT key/value. Platzhalter in Werten: {object_udid}, {object_name}, {value_new}, {value_old}. Optional condition: {\"changed\":[\"feld\"],\"props\":[{\"key\":\"temperatur\",\"op\":\"gte\",\"value\":\"30\"}]} — Operatoren: eq, neq, in, gt, gte, lt, lte, empty, notempty, matches. create_object braucht \"object_type\" und \"name\", optional \"props\"/\"links\". create_link braucht \"linktype\" und \"to\" (32-hex, oder from/to). run_function braucht \"function\" (Name oder UDID)."New value: +"Die Regel als Objekt oder JSON-String. body-Format (verifiziert): {\"on\":\"update\",\"object_types\":[\"building\"],\"effects\":[{\"type\":\"set_property\",\"props\":{\"status\":\"geprueft\"}}]}. WICHTIG: set_property nutzt das Feld \"props\", NICHT key/value. Platzhalter in Werten: {object_udid}, {object_name}, {value_new}, {value_old}. Optional condition: {\"changed\":[\"feld\"],\"props\":[{\"key\":\"temperatur\",\"op\":\"gte\",\"value\":\"30\"}]} — Operatoren: eq, neq, in, gt, gte, lt, lte, empty, notempty, matches. create_object braucht \"object_type\" und \"name\", optional \"props\"/\"links\". create_link braucht \"linktype\" und \"to\" (32-hex, oder from/to). run_function braucht \"function\" (Name oder UDID). notify: \"to\" (eine Adresse) ODER \"to_link\" + optional \"to_prop\" (Default email) + \"all\" (true = alle verknuepften Objekte, Default true) — damit erreicht eine Meldung ALLE Personen einer Kante, z.B. alle an worksShift."
1 tool update
- Changed
onto_interface_create_def1 field changed- changed
Input schema / properties / description / descriptionPrevious value: -"Beschreibung"New value: +"Beschreibung. Wird die Ansicht per table.scopes verengt, gehoert die Verengung hier hinein (Beispiel: Beschraenkt auf autovermietung1)"
1 tool update
- Changed
onto_interface_create_def1 field changed- changed
Input schema / properties / view_config / descriptionPrevious value: -"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), \"bis\":\"<prop>\" (nur mit format zeitspanne; ergibt 09:00 - 15:30), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[],\"wo\":[{prop,op,wert}]}}, wobei \"wo\" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden; Detailseite ohne SQL: \"detail\":{\"type\":\"person\",\"fields\":[{prop|system,key?,label,format,werte}],\"panels\":[{\"type\":\"subform\",\"from\":\"objects\",\"objekt\":\"shift\",\"via\":{\"link\":\"worksShift\"|[...],\"richtung\":\"vorwaerts|rueckwaerts\",\"linkvalue\":optional},\"wo\":[...],\"sort\":{key|prop,dir},\"columns\":[{key,prop|system,bis,format,werte}]}]} — sql/subform_sql gewinnen weiter, wenn gesetzt; Formate und werte werden bei Unterseiten in der SQL angewandt; \"wo\" auf Tabellen-Ebene sind Bedingungen an die GRUNDMENGE (z.B. Personenbindung \"wo\":[{\"prop\":\"email\",\"op\":\"=\",\"wert\":\"{'current_user_email'}\"}]). Der Text-Platzhalter MUSS in der Definition in einfachen Anfuehrungszeichen stehen ({'current_user_email'}) - der Baustein setzt ihn als '{current_user_email}' ein, der Renderer ersetzt ihn roh. Ohne Quotes lehnt der Validator ab.; ein Zelltext-Eintrag mit \"werte\":{\"abgesagt\":\"abgesagt\",\"_\":\"\"} zeigt den Zusatz NUR bei diesem Wert (\"_\" = alle anderen, leer = Teil weglassen — so wird eine abgesagte Schicht im Raster markiert, ohne sie zu verstecken) (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."New value: +"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), \"bis\":\"<prop>\" (nur mit format zeitspanne; ergibt 09:00 - 15:30), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Verengung (optional): Feld scopes mit einer Liste von Scopenamen, z.B. scopes: [autovermietung1], schraenkt die Zeilen zusaetzlich auf diese Scopes ein. Nur einschraenkend, nie erweiternd; ein unbekannter Name bricht mit 400 ab. Die Ansicht zeigt die Verengung unter der Ueberschrift an; nenne sie zusaetzlich in der description des Interfaces. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[],\"wo\":[{prop,op,wert}]}}, wobei \"wo\" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden; Detailseite ohne SQL: \"detail\":{\"type\":\"person\",\"fields\":[{prop|system,key?,label,format,werte}],\"panels\":[{\"type\":\"subform\",\"from\":\"objects\",\"objekt\":\"shift\",\"via\":{\"link\":\"worksShift\"|[...],\"richtung\":\"vorwaerts|rueckwaerts\",\"linkvalue\":optional},\"wo\":[...],\"sort\":{key|prop,dir},\"columns\":[{key,prop|system,bis,format,werte}]}]} — sql/subform_sql gewinnen weiter, wenn gesetzt; Formate und werte werden bei Unterseiten in der SQL angewandt; \"wo\" auf Tabellen-Ebene sind Bedingungen an die GRUNDMENGE (z.B. Personenbindung \"wo\":[{\"prop\":\"email\",\"op\":\"=\",\"wert\":\"{'current_user_email'}\"}]). Der Text-Platzhalter MUSS in der Definition in einfachen Anfuehrungszeichen stehen ({'current_user_email'}) - der Baustein setzt ihn als '{current_user_email}' ein, der Renderer ersetzt ihn roh. Ohne Quotes lehnt der Validator ab.; ein Zelltext-Eintrag mit \"werte\":{\"abgesagt\":\"abgesagt\",\"_\":\"\"} zeigt den Zusatz NUR bei diesem Wert (\"_\" = alle anderen, leer = Teil weglassen — so wird eine abgesagte Schicht im Raster markiert, ohne sie zu verstecken) (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."
2 tool updates
- Changed
onto_interface_create_def1 field changed- changed
Input schema / properties / view_config / descriptionPrevious value: -"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), \"bis\":\"<prop>\" (nur mit format zeitspanne; ergibt 09:00 - 15:30), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[],\"wo\":[{prop,op,wert}]}}, wobei \"wo\" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden; Detailseite ohne SQL: \"detail\":{\"type\":\"person\",\"fields\":[{prop|system,key?,label,format,werte}],\"panels\":[{\"type\":\"subform\",\"from\":\"objects\",\"objekt\":\"shift\",\"via\":{\"link\":\"worksShift\"|[...],\"richtung\":\"vorwaerts|rueckwaerts\",\"linkvalue\":optional},\"wo\":[...],\"sort\":{key|prop,dir},\"columns\":[{key,prop|system,bis,format,werte}]}]} — sql/subform_sql gewinnen weiter, wenn gesetzt; Formate und werte werden bei Unterseiten in der SQL angewandt; ein Zelltext-Eintrag mit \"werte\":{\"abgesagt\":\"abgesagt\",\"_\":\"\"} zeigt den Zusatz NUR bei diesem Wert (\"_\" = alle anderen, leer = Teil weglassen — so wird eine abgesagte Schicht im Raster markiert, ohne sie zu verstecken) (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."New value: +"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), \"bis\":\"<prop>\" (nur mit format zeitspanne; ergibt 09:00 - 15:30), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[],\"wo\":[{prop,op,wert}]}}, wobei \"wo\" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden; Detailseite ohne SQL: \"detail\":{\"type\":\"person\",\"fields\":[{prop|system,key?,label,format,werte}],\"panels\":[{\"type\":\"subform\",\"from\":\"objects\",\"objekt\":\"shift\",\"via\":{\"link\":\"worksShift\"|[...],\"richtung\":\"vorwaerts|rueckwaerts\",\"linkvalue\":optional},\"wo\":[...],\"sort\":{key|prop,dir},\"columns\":[{key,prop|system,bis,format,werte}]}]} — sql/subform_sql gewinnen weiter, wenn gesetzt; Formate und werte werden bei Unterseiten in der SQL angewandt; \"wo\" auf Tabellen-Ebene sind Bedingungen an die GRUNDMENGE (z.B. Personenbindung \"wo\":[{\"prop\":\"email\",\"op\":\"=\",\"wert\":\"{'current_user_email'}\"}]). Der Text-Platzhalter MUSS in der Definition in einfachen Anfuehrungszeichen stehen ({'current_user_email'}) - der Baustein setzt ihn als '{current_user_email}' ein, der Renderer ersetzt ihn roh. Ohne Quotes lehnt der Validator ab.; ein Zelltext-Eintrag mit \"werte\":{\"abgesagt\":\"abgesagt\",\"_\":\"\"} zeigt den Zusatz NUR bei diesem Wert (\"_\" = alle anderen, leer = Teil weglassen — so wird eine abgesagte Schicht im Raster markiert, ohne sie zu verstecken) (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."
- Changed
onto_interface_update_def1 field changed- changed
Input schema / properties / view_config / descriptionPrevious value: -"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), \"bis\":\"<prop>\" (nur mit format zeitspanne; ergibt 09:00 - 15:30), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[],\"wo\":[{prop,op,wert}]}}, wobei \"wo\" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden; Detailseite ohne SQL: \"detail\":{\"type\":\"person\",\"fields\":[{prop|system,key?,label,format,werte}],\"panels\":[{\"type\":\"subform\",\"from\":\"objects\",\"objekt\":\"shift\",\"via\":{\"link\":\"worksShift\"|[...],\"richtung\":\"vorwaerts|rueckwaerts\",\"linkvalue\":optional},\"wo\":[...],\"sort\":{key|prop,dir},\"columns\":[{key,prop|system,bis,format,werte}]}]} — sql/subform_sql gewinnen weiter, wenn gesetzt; Formate und werte werden bei Unterseiten in der SQL angewandt; ein Zelltext-Eintrag mit \"werte\":{\"abgesagt\":\"abgesagt\",\"_\":\"\"} zeigt den Zusatz NUR bei diesem Wert (\"_\" = alle anderen, leer = Teil weglassen — so wird eine abgesagte Schicht im Raster markiert, ohne sie zu verstecken) (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."New value: +"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), \"bis\":\"<prop>\" (nur mit format zeitspanne; ergibt 09:00 - 15:30), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[],\"wo\":[{prop,op,wert}]}}, wobei \"wo\" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden; Detailseite ohne SQL: \"detail\":{\"type\":\"person\",\"fields\":[{prop|system,key?,label,format,werte}],\"panels\":[{\"type\":\"subform\",\"from\":\"objects\",\"objekt\":\"shift\",\"via\":{\"link\":\"worksShift\"|[...],\"richtung\":\"vorwaerts|rueckwaerts\",\"linkvalue\":optional},\"wo\":[...],\"sort\":{key|prop,dir},\"columns\":[{key,prop|system,bis,format,werte}]}]} — sql/subform_sql gewinnen weiter, wenn gesetzt; Formate und werte werden bei Unterseiten in der SQL angewandt; \"wo\" auf Tabellen-Ebene sind Bedingungen an die GRUNDMENGE (z.B. Personenbindung \"wo\":[{\"prop\":\"email\",\"op\":\"=\",\"wert\":\"{'current_user_email'}\"}]). Der Text-Platzhalter MUSS in der Definition in einfachen Anfuehrungszeichen stehen ({'current_user_email'}) - der Baustein setzt ihn als '{current_user_email}' ein, der Renderer ersetzt ihn roh. Ohne Quotes lehnt der Validator ab.; ein Zelltext-Eintrag mit \"werte\":{\"abgesagt\":\"abgesagt\",\"_\":\"\"} zeigt den Zusatz NUR bei diesem Wert (\"_\" = alle anderen, leer = Teil weglassen — so wird eine abgesagte Schicht im Raster markiert, ohne sie zu verstecken) (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."
2 tool updates
- Changed
onto_interface_create_def1 field changed- changed
Input schema / properties / view_config / descriptionPrevious value: -"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), \"bis\":\"<prop>\" (nur mit format zeitspanne; ergibt 09:00 - 15:30), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[],\"wo\":[{prop,op,wert}]}}, wobei \"wo\" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden; Detailseite ohne SQL: \"detail\":{\"type\":\"person\",\"fields\":[{prop|system,key?,label,format,werte}],\"panels\":[{\"type\":\"subform\",\"from\":\"objects\",\"objekt\":\"shift\",\"via\":{\"link\":\"worksShift\"|[...],\"richtung\":\"vorwaerts|rueckwaerts\",\"linkvalue\":optional},\"wo\":[...],\"sort\":{key|prop,dir},\"columns\":[{key,prop|system,bis,format,werte}]}]} — sql/subform_sql gewinnen weiter, wenn gesetzt; Formate und werte werden bei Unterseiten in der SQL angewandt (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."New value: +"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), \"bis\":\"<prop>\" (nur mit format zeitspanne; ergibt 09:00 - 15:30), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[],\"wo\":[{prop,op,wert}]}}, wobei \"wo\" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden; Detailseite ohne SQL: \"detail\":{\"type\":\"person\",\"fields\":[{prop|system,key?,label,format,werte}],\"panels\":[{\"type\":\"subform\",\"from\":\"objects\",\"objekt\":\"shift\",\"via\":{\"link\":\"worksShift\"|[...],\"richtung\":\"vorwaerts|rueckwaerts\",\"linkvalue\":optional},\"wo\":[...],\"sort\":{key|prop,dir},\"columns\":[{key,prop|system,bis,format,werte}]}]} — sql/subform_sql gewinnen weiter, wenn gesetzt; Formate und werte werden bei Unterseiten in der SQL angewandt; ein Zelltext-Eintrag mit \"werte\":{\"abgesagt\":\"abgesagt\",\"_\":\"\"} zeigt den Zusatz NUR bei diesem Wert (\"_\" = alle anderen, leer = Teil weglassen — so wird eine abgesagte Schicht im Raster markiert, ohne sie zu verstecken) (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."
- Changed
onto_interface_update_def1 field changed- changed
Input schema / properties / view_config / descriptionPrevious value: -"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), \"bis\":\"<prop>\" (nur mit format zeitspanne; ergibt 09:00 - 15:30), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[],\"wo\":[{prop,op,wert}]}}, wobei \"wo\" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden; Detailseite ohne SQL: \"detail\":{\"type\":\"person\",\"fields\":[{prop|system,key?,label,format,werte}],\"panels\":[{\"type\":\"subform\",\"from\":\"objects\",\"objekt\":\"shift\",\"via\":{\"link\":\"worksShift\"|[...],\"richtung\":\"vorwaerts|rueckwaerts\",\"linkvalue\":optional},\"wo\":[...],\"sort\":{key|prop,dir},\"columns\":[{key,prop|system,bis,format,werte}]}]} — sql/subform_sql gewinnen weiter, wenn gesetzt; Formate und werte werden bei Unterseiten in der SQL angewandt (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."New value: +"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), \"bis\":\"<prop>\" (nur mit format zeitspanne; ergibt 09:00 - 15:30), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[],\"wo\":[{prop,op,wert}]}}, wobei \"wo\" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden; Detailseite ohne SQL: \"detail\":{\"type\":\"person\",\"fields\":[{prop|system,key?,label,format,werte}],\"panels\":[{\"type\":\"subform\",\"from\":\"objects\",\"objekt\":\"shift\",\"via\":{\"link\":\"worksShift\"|[...],\"richtung\":\"vorwaerts|rueckwaerts\",\"linkvalue\":optional},\"wo\":[...],\"sort\":{key|prop,dir},\"columns\":[{key,prop|system,bis,format,werte}]}]} — sql/subform_sql gewinnen weiter, wenn gesetzt; Formate und werte werden bei Unterseiten in der SQL angewandt; ein Zelltext-Eintrag mit \"werte\":{\"abgesagt\":\"abgesagt\",\"_\":\"\"} zeigt den Zusatz NUR bei diesem Wert (\"_\" = alle anderen, leer = Teil weglassen — so wird eine abgesagte Schicht im Raster markiert, ohne sie zu verstecken) (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."
2 tool updates
- Changed
onto_interface_create_def1 field changed- changed
Input schema / properties / view_config / descriptionPrevious value: -"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), \"bis\":\"<prop>\" (nur mit format zeitspanne; ergibt 09:00 - 15:30), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[],\"wo\":[{prop,op,wert}]}}, wobei \"wo\" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."New value: +"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), \"bis\":\"<prop>\" (nur mit format zeitspanne; ergibt 09:00 - 15:30), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[],\"wo\":[{prop,op,wert}]}}, wobei \"wo\" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden; Detailseite ohne SQL: \"detail\":{\"type\":\"person\",\"fields\":[{prop|system,key?,label,format,werte}],\"panels\":[{\"type\":\"subform\",\"from\":\"objects\",\"objekt\":\"shift\",\"via\":{\"link\":\"worksShift\"|[...],\"richtung\":\"vorwaerts|rueckwaerts\",\"linkvalue\":optional},\"wo\":[...],\"sort\":{key|prop,dir},\"columns\":[{key,prop|system,bis,format,werte}]}]} — sql/subform_sql gewinnen weiter, wenn gesetzt; Formate und werte werden bei Unterseiten in der SQL angewandt (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."
- Changed
onto_interface_update_def1 field changed- changed
Input schema / properties / view_config / descriptionPrevious value: -"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), \"bis\":\"<prop>\" (nur mit format zeitspanne; ergibt 09:00 - 15:30), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[],\"wo\":[{prop,op,wert}]}}, wobei \"wo\" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."New value: +"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), \"bis\":\"<prop>\" (nur mit format zeitspanne; ergibt 09:00 - 15:30), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[],\"wo\":[{prop,op,wert}]}}, wobei \"wo\" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden; Detailseite ohne SQL: \"detail\":{\"type\":\"person\",\"fields\":[{prop|system,key?,label,format,werte}],\"panels\":[{\"type\":\"subform\",\"from\":\"objects\",\"objekt\":\"shift\",\"via\":{\"link\":\"worksShift\"|[...],\"richtung\":\"vorwaerts|rueckwaerts\",\"linkvalue\":optional},\"wo\":[...],\"sort\":{key|prop,dir},\"columns\":[{key,prop|system,bis,format,werte}]}]} — sql/subform_sql gewinnen weiter, wenn gesetzt; Formate und werte werden bei Unterseiten in der SQL angewandt (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."
2 tool updates
- Changed
onto_interface_create_def1 field changed- changed
Input schema / properties / view_config / descriptionPrevious value: -"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,zahl,waehrung), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[]}} (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."New value: +"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), \"bis\":\"<prop>\" (nur mit format zeitspanne; ergibt 09:00 - 15:30), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[],\"wo\":[{prop,op,wert}]}}, wobei \"wo\" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."
- Changed
onto_interface_update_def1 field changed- changed
Input schema / properties / view_config / descriptionPrevious value: -"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,zahl,waehrung), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[]}} (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."New value: +"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,kalenderwoche,zeitspanne,zahl,waehrung), \"bis\":\"<prop>\" (nur mit format zeitspanne; ergibt 09:00 - 15:30), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[],\"wo\":[{prop,op,wert}]}}, wobei \"wo\" die ZELLEN nach eigenen Feldern filtert (z.B. shiftStatus != abgesagt) und mehrere Objekte derselben Zeile am selben Tag mit dem Trenner zu EINER Zelle verbunden werden (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."
2 tool updates
- Changed
onto_interface_create_def1 field changed- changed
Input schema / properties / view_config / descriptionPrevious value: -"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,zahl,waehrung), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Freie \"sql\" nur fuer Administratoren."New value: +"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,zahl,waehrung), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[]}} (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."
- Changed
onto_interface_update_def1 field changed- changed
Input schema / properties / view_config / descriptionPrevious value: -"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,zahl,waehrung), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Freie \"sql\" nur fuer Administratoren."New value: +"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,zahl,waehrung), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Weitere Schalter: \"prop\":[\"firstName\",\"lastName\"] verbindet Felder (\"trenner\"), \"bis\":\"shiftEnd\" mit \"format\":\"zeitspanne\" ergibt 09:00 - 15:30, \"nur\":[keys] zeigt nur Zeilen mit Wert. Kalender-Raster: \"matrix\":{\"rows\":{from,type,label,nur_mit{linktyp,type}},\"cells\":{from,type,bruecke{linktyp,type},zeitfeld,text[]}} (rows = Zeilenobjekte, cells = die Objekte im Raster, bruecke nennt den Linktyp zwischen beiden). Freie \"sql\" nur fuer Administratoren."
2 tool updates
- Changed
onto_interface_create_def1 field changed- changed
Input schema / properties / view_config / descriptionPrevious value: -"view_config-JSON (elements/card/filter)"New value: +"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,zahl,waehrung), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Freie \"sql\" nur fuer Administratoren."
- Changed
onto_interface_update_def1 field changed- changed
Input schema / properties / view_config / descriptionPrevious value: -"view_config-JSON"New value: +"view_config-JSON. Listen ohne SQL: {\"elements\":[\"table\"],\"table\":{\"from\":\"objects\",\"type\":\"shift\",\"columns\":[...]}}. Spalte: {\"key\", \"prop\" | \"system\"(udid,name,created,modified,scope,type) | \"link\"+\"richtung\"(vorwaerts/rueckwaerts)+(\"linkvalue\", \"type\", \"prop\" = Feld des Ziels), optional \"label\", \"format\"(datum,zeit,wochentag_datum,wochentag_datum_zeit,zahl,waehrung), \"werte\"{Schluessel:Anzeige}, \"link_zelle\", \"hidden\"}. Sammelspalte: {\"key\", \"agg\":\"count|sum|min|max\", \"link\", \"richtung\", \"prop\", \"ziel\":{\"wo\":[{\"prop\",\"op\",\"wert\"}]}}. Link-Gruppen: \"links\":{\"Name\":{\"link\",\"richtung\",\"type\",\"wo\":[{...}],\"sort\":{...}}} — alle Spalten mit \"link\":\"Name\" lesen DASSELBE Objekt (Auswahl einmal definiert). \"filter\", \"sort\", \"zeitraum\" nennen nur Spalten-Keys. \"person\" bindet die Ansicht an die angemeldete Person (noetig fuer data_scope_id). Freie \"sql\" nur fuer Administratoren."
3 tool updates
- Added
onto_interface_create_def - Added
onto_interface_delete_def - Added
onto_interface_update_def
2 tool updates
- Added
ontouser_notification_delete - Changed
ontouser_webhook_save3 fields changed- added
Input schema / properties / authAdded value: +{ + "description": "Wie der Schluessel zugestellt wird: both (Default: X-Telesherpa-Secret UND Authorization: Bearer), header (nur X-Telesherpa-Secret), bearer (nur Authorization)", + "type": "string" +} - changed
Input schema / properties / secret / descriptionPrevious value: -"Optional: eigener Schluessel statt eines erzeugten"New value: +"Eigener Schluessel; ERSETZT einen bestehenden. Ohne Angabe bleibt der bisherige." - added
Input schema / properties / signatureAdded value: +{ + "description": "Signaturstufe: 1 = HMAC-SHA256 des Bodys im Header X-Webhook-Signature; 2 = Replay-sicher mit X-Webhook-Timestamp + X-Webhook-Signature-V2 (HMAC ueber '<timestamp>.<body>', von Hermes empfohlen)", + "type": "integer" +}
4 tool updates
- Added
ontouser_webhook_delete - Added
ontouser_webhook_save - Added
ontouser_webhook_show - Added
ontouser_webhook_test
Publisher details
- Operator
- Telesherpa · Publisher source
- Operator website
- https://www.telesherpa.com
- Vendor relationship
- First-party · Publisher source
- Documentation
- Unknown
- Trust center
- Unknown
- Restrictions
- Unknown
Related MCP Connectors
Headless field service software. Your AI agent runs jobs, schedules, quotes, invoices and payments.
Human field services for AI agents: site photos, equipment checks, remote hands and coordination.
Field operations on a deterministic solver — run jobs, crews & fleet from Claude or ChatGPT.
The company brain for your AI agents: how your business works, from the systems you already use.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceOntology-driven multi-agent platform that encodes business policy as code, enabling deterministic decision-making and multi-domain agent collaboration without code redeploy.2MIT
- AlicenseBqualityBmaintenance67 tools generated from the same OpenAPI spec as our SDKs — CI fails on drift, so REST and MCP never disagree. Underneath: a deterministic field operations scheduling engine — skills, territories, live availability, sub-3-second cascade rescheduling — drivable end-to-end from Claude or ChatGPT. Schedule changes preview before they commit; LLMs never inside the math.53134 npm3MIT

AutoRev MCP Serverofficial
AlicenseNot gradedqualityCmaintenanceEnables AI clients to manage field service operations through natural language, including call handling, job dispatch, estimates, invoicing, and reporting via the AutoRev platform.3 npmMIT- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to connect to an industrial BI platform and read or build manufacturing dashboards, OEE reports, schedules, spreadsheets, forms, calendar events, and 3D CAD parts through natural-language tools.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.