Skip to main content
Glama

CashCtrl MCP by usefulapi

Create an order

cashctrl_create_order
Destructive

WRITE: changes the accounting records. Makes one request that is never repeated; check the result before trying again. Creates ONE order document for ONE customer or vendor: a quote, invoice, credit note, purchase bill and so on, depending on category_id. Without status_id the first status of the category is used; a booking status (for example Open) also creates journal entries, so use a draft status unless the user asks otherwise. No e-mail is sent. POST /order/create.json.

Input Schema

NameRequiredDescriptionDefault
nrNoOrder number. Leave empty to use the sequence number of the category.
dateYesDocument date, yyyy-mm-dd.
itemsYes1-200 order items.
due_daysNoDays until payment is due.
languageNoLanguage of the document.
status_idNoStatus id (cashctrl_list_order_categories). Default: the first status of the category.
account_idNoDebtors or creditors account id; default from the category.
category_idYesOrder category id (cashctrl_list_order_categories), for example the Invoice category.
descriptionNoDescription of the document (max 200).
associate_idYesThe customer or vendor (cashctrl_list_persons).
sequence_number_idNoSequence number for the order number (cashctrl_list_sequence_numbers).
discount_percentageNoDiscount of the whole order in percent.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only declare destructiveHint=true, so the description carries most of the load and delivers: it is a WRITE affecting accounting records, it is a single non-repeating request, a booking status also creates journal entries, and no e-mail is sent. The only gap is that, with no output schema, it never says what the response contains (e.g. the new order id) even though it tells the agent to 'check the result'.

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

Conciseness4/5

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

Front-loads the critical 'WRITE: changes the accounting records' warning, then layers scope, defaults, and side effects. Dense but nearly every clause carries information; the retry sentence and the document-type list are both load-bearing.

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

Completeness4/5

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

For a 12-parameter, destructive write with no output schema, the description covers scope, idempotency, status semantics, and side effects well. It stops short of describing the return payload or how a created order is subsequently referenced, which is the main remaining gap.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: category_id selects the document type, status_id drives both the default status and whether journal entries are created, and associate_id is constrained to one customer or vendor. This goes beyond the schema's field-level text.

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

Purpose5/5

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

States a specific verb and resource ('Creates ONE order document for ONE customer or vendor') and enumerates the concrete document types (quote, invoice, credit note, purchase bill) driven by category_id. It also implicitly separates itself from cashctrl_create_journal_entry by noting that a booking status generates the journal entries as a side effect.

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

Usage Guidelines4/5

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

Gives actionable conditional guidance: omit status_id to inherit the category's first status, prefer a draft status unless the user asks otherwise, no e-mail is sent, and check the result rather than retrying. It does not name sibling tools (e.g. cashctrl_list_order_categories) for resolving ids, so it falls short of full alternative routing.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.