Skip to main content
Glama
AIWerk

@aiwerk/mcp-server-bexio

by AIWerk

create_order

Create a new order in Bexio by specifying contact, positions, currency, and tax details. Generates a sales order ready for further processing.

Instructions

Create order

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
titleNo
footerNo
headerNo
user_idNoReferences a [user object](#operation/v3ListUsers)
mwst_typeNo| value | description | |-----|------| | 0 | including taxes | | 1 | excluding taxes | | 2 | exempt from taxes |
positionsNoPlease note that you can combine multiple positions. This means that an array containing `KbPositionCustom` and `KbPositionArticle` positions is valid. **Recommendation**: use a maximum of 150 positions when creating sales documents. Other positions can be added using the item creation endpoint.
contact_idNoReferences a [contact object](#operation/v2ListContacts)
currency_idNoReferences a [currency object](#operation/ListCurrencies)
document_nrNoCan not be used if “automatic numbering” is activated in frontend-settings. Required if “automatic numbering” deactivated. https://help.bexio.com/s/article/000001784
language_idNoReferences a [language object](#operation/v2ListLanguages)
mwst_is_netNoThis value affects the total if the field `mwst_type` has been set to 0.<br> `false` = Taxes are included in the total<br> `true` = Taxes will be added to the total
logopaper_idNo
api_referenceNoThis field can only be read and edited by the api. It can be used to save references to other systems.
is_valid_fromNo
pr_project_idNoReferences a [project object](#operation/v2ListProjects)
template_slugNoReferences a [document template slug](#operation/v3ListDocumentTemplate)
contact_sub_idNoReferences a [contact object](#operation/v2ListContacts)
bank_account_idNoReferences a [bank account object](#operation/ListBankAccounts)
payment_type_idNoReferences a [payment type object](#operation/v2ListPaymentTypes)
show_position_taxesNo
delivery_address_typeNo| value | description | |-------|-------------| | 0 | use invoice address | | 1 | use custom address |
contact_address_manualNoThis field can be used to set a contact address manually. If not in use or `null` the invoice address of the contact will be taken.
delivery_address_manualNoThis field can be used to set a delivery address manually if `delivery_address_type` is set to `1`. If not in use or `null` the invoice address will be taken.
Behavior2/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, signaling a write operation, but the description adds no behavioral context. It does not mention side effects, required relationships (e.g., contact_id), or document numbering behavior. It neither contradicts nor supplements 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.

Conciseness2/5

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

The description is only two words, which is under-specification rather than effective conciseness. It contains no front-loaded information and does not earn its place, as it provides no useful content for the agent.

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

Completeness1/5

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

This is a complex tool with 23 parameters, no output schema, and a rich domain (Bexio orders). The description is completely inadequate: it explains neither what an order is, nor the significance of key fields like positions or mwst_type, nor the expected behavior. The agent would have to rely entirely on the schema and external knowledge.

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

Parameters2/5

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

The schema covers 74% of the parameters with descriptions, so the schema does some heavy lifting. However, the description itself says nothing about any parameters, and it does not help clarify the undocumented ones (e.g., is_valid_from, show_position_taxes). It adds no value beyond the schema.

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

Purpose2/5

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

The description 'Create order' is a tautology that merely restates the tool name. It does not specify the type of order (e.g., sales order vs purchase order) or distinguish it from sibling tools like create_quote, create_invoice, or create_purchase_order. This leaves the purpose vague and ambiguous.

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

Usage Guidelines2/5

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

No usage guidance is provided. The description does not indicate when to use this tool, what prerequisites exist, or how it relates to alternatives such as create_invoice_from_order or create_delivery_from_order. This is especially problematic given the large set of sibling tools.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AIWerk/mcp-server-bexio'

If you have feedback or need assistance with the MCP directory API, please join our Discord server