Skip to main content
Glama

Red by Big Red Cloud

Server Details

Secure MCP access to Big Red Cloud accounting data, workflows, help and training.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
BigRedCloud/red-mcp-server
GitHub Stars
0
Server Listing
Red MCP Server

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsB

Average 4/5 across 159 of 159 tools scored. Lowest: 1.9/5.

Server CoherenceA
Disambiguation4/5

The tools are largely distinct, covering CRUD operations across distinct entity types (customers, suppliers, products, invoices, payments, etc.) with clear naming like brc_create_product vs brc_list_products. However, there are some overlapping areas: brc_create_sales_invoice and brc_create_sales_invoice_gen_ref differ only by reference auto-generation, which could confuse agents, and brc_find_help_resources vs brc_red_help have similar help-search purposes. Overall, most tools are clearly distinguishable.

Naming Consistency5/5

All tools follow a consistent pattern: brc_[verb]_[entity] (e.g., brc_list_customers, brc_create_sales_invoice, brc_delete_product). The convention is uniform across the entire set, with no mixing of camelCase or inconsistent verbs. This makes the tool surface highly predictable.

Tool Count2/5

With 159 tools, the count is far beyond what is typically manageable. Even for a comprehensive accounting platform like Big Red Cloud, this is excessive. The surface includes many similar tools for variations (e.g., gen_ref variants) and numerous list/get/detail tools for minor entities, inflating the count. This could overwhelm agents and make selection harder.

Completeness4/5

The tool surface covers a wide range of accounting operations: CRUD for core entities, batch operations, email sending, help resources, company connection, and reporting. Some minor gaps exist, such as no explicit 'update sales invoice line' tool (but update_sales_invoice handles lines) and limited email support (only invoices, quotes, statements). Overall, the domain coverage is strong but not perfect.

Available Tools

159 tools
brc_batch_cash_paymentsA
Destructive
Inspect

Processes a batch of BRC cash payments. Maximum 20 items per batch request. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesBatch items to process. Maximum 20 items per request.
priceBasisNoApplies to every sales invoice/credit note item in this batch. Required when Gross Price Entry is enabled. Use `gross` when unit prices are VAT-inclusive/gross. Use `net` when unit prices are VAT-exclusive/net.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
confirmCrAnalysisCategoryNoApplies to every sales document item in this batch. Set true only after the user confirms a CR (customer) sales analysis account code is intentional for these product lines.
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior5/5

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

Annotations already mark the tool as destructive, but the description adds meaningful behavioral context beyond that: nothing is written until preview and confirmWrite/confirmDelete, a routeToken grants routing permission only, and counterparty confirmation must be explicit in the current conversation. This is exactly the type of safety-critical behavior disclosure an agent needs.

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

Conciseness4/5

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

The description is dense and front-loaded with the core purpose and batch limit, and the workflow caveats are important. It is slightly repetitive with schema-level statements such as routeToken and confirmWrite descriptions, but the extra length is justified for a multi-step, safety-critical transactional tool.

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

Completeness5/5

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

Given the tool's complexity, the destructive annotation, and the absence of an output schema, the description is complete enough for safe selection and invocation. It covers the routing prerequisite, token reuse rule, pre-posting confirmation rule, counterparty confirmation rule, and the 20-item batch cap, with the schema covering the remaining parameter details.

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

Parameters4/5

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

The input schema already provides detailed descriptions for all 8 parameters, so the baseline is 3. The description adds valuable non-redundant guidance around routeToken lifecycle and confirmCounterpartyExplicit semantics, but it does not significantly extend the meaning of the other parameters.

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

Purpose5/5

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

The description opens with a specific verb and resource: "Processes a batch of BRC cash payments." It also adds the 20-item batch limit, which clearly identifies this as the batch cash-payment tool and distinguishes it from the many create/list/update sibling tools.

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

Usage Guidelines5/5

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

The description gives explicit workflow ordering: call brc_route_request first, retain the routeToken through lookup/preview/confirmation, and pass the same token on the final permitted transactional call. It also gives explicit negative guidance such as "Never invent a placeholder token" and "do not reuse a counterparty from an earlier preview without confirmation."

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

brc_batch_cash_receiptsA
Destructive
Inspect

Processes a batch of BRC cash receipts. Maximum 20 items per batch request. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesBatch items to process. Maximum 20 items per request.
priceBasisNoApplies to every sales invoice/credit note item in this batch. Required when Gross Price Entry is enabled. Use `gross` when unit prices are VAT-inclusive/gross. Use `net` when unit prices are VAT-exclusive/net.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
confirmCrAnalysisCategoryNoApplies to every sales document item in this batch. Set true only after the user confirms a CR (customer) sales analysis account code is intentional for these product lines.
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior4/5

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

Annotations already set destructiveHint=true and readOnlyHint=false. The description adds crucial behavioral details: the routeToken is not permission to post, confirmCounterpartyExplicit is mandatory after explicit confirmation, and counterparty cannot be reused from earlier previews. This goes beyond the annotation's binary flags, clarifying the safety workflow.

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

Conciseness4/5

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

The description is dense but efficient – every sentence delivers a critical constraint or step: maximum items, routeToken sourcing, retention, no placeholders, confirmation requirements, and counterparty validation. The purpose is front-loaded, and there is no extraneous content. Slightly long, but every part earns its place given the tool's complexity.

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

Completeness3/5

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

The description thoroughly covers the workflow prerequisites and security checks, but it does not mention the output/return behavior (e.g., whether it returns success/failure per item, batch references, or any confirmation IDs). Since there is no output schema, the agent has no guidance on what to expect after invoking the tool. This gap could lead to uncertainty in post-processing, so completeness is only adequate.

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

Parameters4/5

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

The input schema covers 100% of parameters with descriptions, setting a baseline of 3. The description adds extra meaning by emphasizing the lifecycle of routeToken (retain from routing, don't invent, not permission) and the strict condition for confirmCounterpartyExplicit (only after explicit user confirmation in current conversation). These details are not fully articulated in the schema, making the description valuable.

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

Purpose5/5

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

The description starts with 'Processes a batch of BRC cash receipts' – a specific verb and resource. It explicitly states the batch nature and a maximum of 20 items, distinguishing it from single-item tools like brc_create_cash_receipt. This leaves no ambiguity about the tool's core function.

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

Usage Guidelines4/5

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

The description clearly instructs to call brc_route_request first, retain the token, and pass the same token on the final transactional call. It also warns against placeholder tokens and reinforces that preview-before-posting and confirmWrite still apply. While it doesn't explicitly say 'use this instead of single cash receipt tools', the batch context is evident from the name and the guidance is actionable.

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

brc_batch_customersA
Destructive
Inspect

Processes a batch of customers. Maximum 20 items per batch request. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesBatch items to process. Maximum 20 items per request.
priceBasisNoApplies to every sales invoice/credit note item in this batch. Required when Gross Price Entry is enabled. Use `gross` when unit prices are VAT-inclusive/gross. Use `net` when unit prices are VAT-exclusive/net.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
confirmCrAnalysisCategoryNoApplies to every sales document item in this batch. Set true only after the user confirms a CR (customer) sales analysis account code is intentional for these product lines.
Behavior5/5

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

The description adds substantial context beyond the annotations. It discloses destructive behavior (posting is final), the need for preview-before-posting and confirmWrite, and the importance of not treating routeToken as absolute permission. It also warns against inventing tokens and clarifies that confirmWrite must only be true after explicit user confirmation. This is much richer than the simple destructiveHint=true annotation.

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

Conciseness5/5

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

The description is two sentences, but it is densely packed with essential workflow information. Every clause adds value: the 20-item limit, the routeToken requirement, the sequence, and the confirmation gate. No wasted words.

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

Completeness5/5

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

For a transactional tool with no output schema, the description is remarkably complete. It covers prerequisites, workflow steps, confirmation requirements, and critical caveats (no placeholder tokens). The exception is that the description doesn't explain what the response looks like, but given the schema coverage (100%) and the complex workflow, the description does its job thoroughly.

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

Parameters4/5

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

The schema coverage is 100% (all parameters have descriptions). The description itself adds value by explaining the workflow requirements for routeToken and confirms confirmWrite semantics. Some parameters like confirmCrAnalysisCategory and connectionRef are only briefly mentioned in the schema, but the description points to the routing workflow. The description adds context beyond the schema (e.g., routeToken is not permission to post).

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

Purpose4/5

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

The description clearly states it processes a batch of customers, starting with a specific verb and resource. The primary gap is the lack of explicit differentiation from sibling tools like brc_batch_sales_invoices or brc_batch_sales_entries, which likely follow the same batch pattern. The description does not explicitly mention 'customers' in a way that contrasts with other batch tools.

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

Usage Guidelines5/5

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

The description is exemplary: it explicitly states the precondition ('Requires routeToken from brc_route_request'), the order of operations ('Call brc_route_request first...'), and critical constraints ('Never invent a placeholder token', 'A routeToken is not permission to post'). It clearly explains how to use this tool within the broader workflow, including the retention of the token through lookup, preview, and confirmation.

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

brc_batch_paymentsA
Destructive
Inspect

Processes a batch of BRC payments. Maximum 20 items per batch request. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesBatch items to process. Maximum 20 items per request.
priceBasisNoApplies to every sales invoice/credit note item in this batch. Required when Gross Price Entry is enabled. Use `gross` when unit prices are VAT-inclusive/gross. Use `net` when unit prices are VAT-exclusive/net.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
confirmCrAnalysisCategoryNoApplies to every sales document item in this batch. Set true only after the user confirms a CR (customer) sales analysis account code is intentional for these product lines.
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior4/5

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

The description clearly indicates this is a transactional write operation (destructiveHint: true) and emphasizes confirmWrite requirements, preview-before-posting, and that routeToken alone is not permission to post. It adds significant behavioral context beyond the annotations by explaining the confirmation workflow and counterparty explicit confirmation requirement. Minor deduction as it doesn't explicitly mention what happens on failure or rollback, but given annotations already cover the destructive flag, the description 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.

Conciseness4/5

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

The description is well-structured with clear sentences that front-load the core purpose (batch processing) and key constraint (max 20 items). It efficiently covers the workflow, routeToken requirements, and confirmation prerequisites without excessive verbosity. A minor deduction for slightly repetitive emphasis on confirmWrite/confirmCounterpartyExplicit which appears in both the description and schema, but the description adds workflow context that justifies the repetition.

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

Completeness5/5

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

Given the high parameter count (8), 100% schema coverage, and destructive annotations, the description fully compensates for the absence of an output schema. It covers the critical workflow dependencies (brc_route_request, confirmWrite, confirmCounterpartyExplicit), the max batch size, and the routing semantics. For an agent to correctly invoke this transactional tool with all safety confirmations, the description provides complete contextual guidance beyond what schema and annotations alone offer.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents all parameters well. The description adds value beyond the schema by explaining the relationship between routeToken and brc_route_request, the workflow ordering (lookup → preview → confirmation), and clarifying that routeToken is routing permission only. It reinforces the confirmWrite and confirmCounterpartyExplicit semantics that are in the schema but adds workflow context about when to set them true. Slight deduction as it doesn't elaborate on items structure beyond max items, but the schema handles that.

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

Purpose5/5

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

The description clearly states it processes a batch of BRC payments with a maximum of 20 items per request. It distinguishes itself from sibling batch tools (e.g., brc_batch_cash_payments, brc_batch_purchases) by specifying 'BRC payments' and mentioning the required routeToken workflow context, making it unique among the many similar batch tools.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use and workflow guidance: call brc_route_request first, retain the routeToken through lookup/preview/confirmation, and pass the same token on the final permitted transactional call. It also clearly states when not to use it (never invent a placeholder token) and what prerequisites are needed (confirmCounterpartyExplicit, preview-before-posting, confirmWrite). This exceeds typical tool description guidance.

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

brc_batch_productsA
Destructive
Inspect

Processes a batch of products. Maximum 20 items per batch request. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesBatch items to process. Maximum 20 items per request.
priceBasisNoApplies to every sales invoice/credit note item in this batch. Required when Gross Price Entry is enabled. Use `gross` when unit prices are VAT-inclusive/gross. Use `net` when unit prices are VAT-exclusive/net.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
confirmCrAnalysisCategoryNoApplies to every sales document item in this batch. Set true only after the user confirms a CR (customer) sales analysis account code is intentional for these product lines.
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the tool's write/destructive nature is known. The description adds valuable behavioral context beyond the annotations: the routing workflow requirement, the need to retain the token, and that previewing/confirmation still apply. It does not restate the annotations but enriches them with operational nuance.

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

Conciseness5/5

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

The description is two sentences: the first conveys purpose and batch limit; the second packs the essential routing workflow and confirmation warnings. Every sentence earns its place, is front-loaded, and contains zero fluff.

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

Completeness4/5

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

Given the tool's complexity (7 params, routing prerequisite, confirmation flags) and no output schema, the description covers the critical workflow well: it explains the prerequisite, the flow, and the confirmation requirement. It does not explicitly state which action (create/update/delete) the batch performs, but that is likely determined by the routeToken, making the description sufficiently complete for agent selection and safe invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters already have strong descriptions in the schema. The tool description adds flow-level context (e.g., how routeToken and confirmWrite are used) but does not introduce new parameter meanings beyond the schema. This meets the baseline for high schema coverage.

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

Purpose5/5

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

The description starts with 'Processes a batch of products,' clearly identifying the verb and resource. It explicitly mentions the maximum batch size (20 items), distinguishing it from sibling batch tools for other entities (e.g., brc_batch_customers, brc_batch_purchases). The purpose is specific and immediately clear.

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

Usage Guidelines5/5

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

The description provides explicit step-by-step usage guidance: call brc_route_request first, retain the routeToken through all steps, and pass it on the final transactional call. It also warns against inventing tokens and clarifies that routeToken is not permission, requiring confirmWrite/confirmDelete. This offers strong when-to-use and when-not-to-use guidance, even naming the prerequisite sibling tool.

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

brc_batch_purchasesA
Destructive
Inspect

Processes a batch of purchases. Maximum 20 items per batch request. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesBatch items to process. Maximum 20 items per request.
priceBasisNoApplies to every sales invoice/credit note item in this batch. Required when Gross Price Entry is enabled. Use `gross` when unit prices are VAT-inclusive/gross. Use `net` when unit prices are VAT-exclusive/net.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
confirmCrAnalysisCategoryNoApplies to every sales document item in this batch. Set true only after the user confirms a CR (customer) sales analysis account code is intentional for these product lines.
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior4/5

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

Annotations already establish destructiveHint=true and readOnlyHint=false; the description adds meaningful context by clarifying that routeToken is only a routing permission, not permission to post, and that preview/confirmation safeguards still apply. It could go slightly further by stating the concrete record-level effects of a confirmed batch, but it does not contradict the annotations.

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

Conciseness4/5

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

The description is dense and front-loaded with its core purpose, and every sentence carries a necessary precondition or constraint. However, it is written as one long running paragraph; a bulleted structure for route workflow and confirmation rules would improve scannability.

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

Completeness5/5

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

For a complex transactional batch tool with no output schema, the description communicates the critical prerequisites: routeToken workflow, explicit counterparty confirmation, preview-before-posting, and the 20-item batch limit. Combined with full schema descriptions, an agent has sufficient context to sequence and invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description reinforces routeToken and confirmCounterpartyExplicit behavior, but it does not add materially new parameter semantics beyond what the schema already provides for fields like priceBasis, confirmWrite, or connectionRef.

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

Purpose5/5

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

The description opens with 'Processes a batch of purchases,' giving a specific verb and resource that clearly distinguishes it from sibling batch tools like batch payments or batch invoices and from single-purchase create tools. The 'Maximum 20 items per batch request' detail further scopes the operation.

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

Usage Guidelines5/5

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

The description explicitly instructs the agent to call brc_route_request first, retain the returned routeToken through lookup/preview/confirmation, pass the same token on the final transactional call, and never invent a placeholder. It also states when confirmCounterpartyExplicit is required and that preview-before-posting and confirmWrite/confirmDelete still apply, giving strong 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.

brc_batch_quotesA
Destructive
Inspect

Processes a batch of quotes. Maximum 20 items per batch request. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesBatch items to process. Maximum 20 items per request.
priceBasisNoApplies to every sales invoice/credit note item in this batch. Required when Gross Price Entry is enabled. Use `gross` when unit prices are VAT-inclusive/gross. Use `net` when unit prices are VAT-exclusive/net.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
confirmCrAnalysisCategoryNoApplies to every sales document item in this batch. Set true only after the user confirms a CR (customer) sales analysis account code is intentional for these product lines.
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior5/5

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

Despite annotations already flagging destructiveHint=true and readOnlyHint=false, the description adds critical safety context: routeToken is not permission to post, preview-before-posting and confirmWrite/confirmDelete still apply, and explicit counterparty confirmation is required. Nothing contradicts the annotations (a write-oriented workflow with destructive potential is consistent with the hints).

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

Conciseness4/5

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

The description is a dense single paragraph of ~130 words. Every sentence carries meaningful workflow or safety information, but the lack of any structural breaks or separation between purpose, token workflow, and confirmation rules makes it harder to scan than the clean two-sentence standard in the calibration examples.

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

Completeness4/5

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

For a destructive batch operation with 8 parameters and no output schema, the description covers the essential workflow (route token acquisition and retention, batch size, confirmation gates, counterparty explicitness). The only meaningful gap is the absence of any note about response/error semantics for partial batch failures, which the missing output schema leaves entirely unspecified.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description nevertheless adds value beyond the schema by defining the token's lifecycle (retained through lookup, preview, and confirmation) and reinforcing the counterparty-explicitness rule with a "current conversation" scoping that the schema's param text only partially conveys.

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?

"Processes a batch of quotes" uses a specific verb+resource and is immediately differentiated from the many sibling batch tools (batch_purchases, batch_sales_invoices, etc.) and single-record tools like create_quote/update_quote. The maximum 20-item constraint further scopes the operation.

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

Usage Guidelines5/5

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

Explicit workflow guidance is provided: call brc_route_request first, retain the routeToken through lookup/preview/confirmation, pass the same token on the final transactional call, and never invent a placeholder token. It also clarifies when confirmCounterpartyExplicit may be true and warns against reusing a counterparty from an earlier preview — far beyond typical usage guidance.

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

brc_batch_sales_credit_notesA
Destructive
Inspect

Processes a batch of sales credit notes. Do not invent productId values and do not use productId 0 or 1 as placeholders. productId 0 and 1 are treated as placeholders and are blocked at runtime before preview-before-posting and before posting. If a product line is needed, first call brc_list_products and use a real product from the connected company. If no suitable product exists, ask the user whether to create/select a product, or use a service/non-product line only if the endpoint supports it. Maximum 20 items per batch request. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesBatch items to process. Maximum 20 items per request.
priceBasisNoApplies to every sales invoice/credit note item in this batch. Required when Gross Price Entry is enabled. Use `gross` when unit prices are VAT-inclusive/gross. Use `net` when unit prices are VAT-exclusive/net.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
confirmCrAnalysisCategoryNoApplies to every sales document item in this batch. Set true only after the user confirms a CR (customer) sales analysis account code is intentional for these product lines.
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior4/5

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

Annotations declare destructiveHint=true, readOnlyHint=false. Description adds meaningful behavioral context beyond annotations: productId 0/1 are blocked regardless, routeToken is not permission to post (preview and confirm still apply), and it explains the confirmation workflow. No contradiction. The only slight gap is not stating exactly what is destroyed/changed (credit notes are created/written) but that's inherent in 'batch sales credit notes'.

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

Conciseness3/5

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

The description is dense and long, covering multiple behavioral caveats and workflow steps. It is appropriately front-loaded with the primary purpose, but subsequent sentences pack many details in a single paragraph. While all are relevant, it borders on verbose; some content (e.g., 'Never invent a placeholder token') could be integrated more tightly. It is not inefficient, but readability suffers slightly from the block structure.

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

Completeness5/5

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

Given the tool's complexity (8 parameters, 3 required, no output schema, nested items array), the description covers critical contextual details: product selection prerequisite, routeToken lifecycle, confirmation flags, company context, and max items. It explains when and how to interact with the agent for missing products, and clarifies that routeToken does not bypass confirmation. This is thorough for the complexity.

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

Parameters5/5

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 adds significant value beyond schema: it explains the runtime blocking of productId 0/1, the flow of routeToken through lookup/preview/confirmation, and the explicit requirement for confirmCounterpartyExplicit only after user confirmation. It clarifies behavioral constraints on parameters not fully evident from names alone.

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

Purpose4/5

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

The description clearly states the tool processes a batch of sales credit notes and specifies the action (process) and resource (sales credit notes). It distinguishes from siblings like brc_batch_sales_invoices by the credit note domain, though both share the 'batch' prefix. It adds specific operational detail not present in the bare name.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance: do not invent productId, must call brc_list_products first, when to ask user, max 20 items, must call brc_route_request first and retain token, and when confirmCounterpartyExplicit is set. It also mentions alternatives (brc_list_products) and exclusions (productId 0/1 blocked). This is comprehensive.

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

brc_batch_sales_entriesA
Destructive
Inspect

Processes a batch of sales entries. Maximum 20 items per batch request. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesBatch items to process. Maximum 20 items per request.
priceBasisNoApplies to every sales invoice/credit note item in this batch. Required when Gross Price Entry is enabled. Use `gross` when unit prices are VAT-inclusive/gross. Use `net` when unit prices are VAT-exclusive/net.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
confirmCrAnalysisCategoryNoApplies to every sales document item in this batch. Set true only after the user confirms a CR (customer) sales analysis account code is intentional for these product lines.
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior5/5

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

The description discloses important behavioral caveats that annotations alone do not convey: routeToken is not permission to post, preview-before-posting and confirmWrite still apply, and never invent a placeholder token. It also clarifies that confirmCounterpartyExplicit must be set explicitly based on the user's current-conversation confirmation, which is critical for safe transactional behavior.

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

Conciseness5/5

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

The description is packed with necessary instructions without redundancy. Each sentence serves a purpose: defining the batch limit, specifying the routeToken requirement, the routing workflow, the confirmation stipulations, and the do-not-invent guidance. It is concise given the complexity of the transactional workflow described.

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

Completeness5/5

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

The description covers the essential context for correct usage: the batch maximum, the prerequisite routeToken, the workflow steps, and the explicit confirmation requirements. It also addresses edge cases like empty or partial data and session rotation. No output schema exists, but the description sufficiently explains the invocation context without needing to detail return values.

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

Parameters4/5

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

The input schema already provides detailed descriptions for every parameter (100% coverage), so the baseline is 3. The description adds value by explaining the interplay between routeToken, confirmWrite, and confirmCounterpartyExplicit, and by emphasizing the workflow context (e.g., routeToken from brc_route_request, confirmWrite only after preview). This enriches parameter understanding beyond the schema, but not to the level of a 5 since the schema itself is very thorough.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Processes a batch of sales entries.' It uses a specific verb and noun, and the sibling context (brc_batch_sales_credit_notes, brc_batch_sales_invoices) distinguishes it as the batch handler for sales entries. No ambiguity exists about what this tool does.

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

Usage Guidelines5/5

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

The description provides explicit usage instructions: call brc_route_request first, retain the returned routeToken through lookup/preview/confirmation, and pass it on the final permitted transactional call. It also explains when confirmCounterpartyExplicit is required. This goes beyond mere context and gives a clear step-by-step invocation flow.

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

brc_batch_sales_invoicesA
Destructive
Inspect

Processes a batch of sales invoices. Batch sales invoices apply the same safety checks as single sales invoices: productId 0/1 placeholder blocking before preview-before-posting and posting; Sales VAT category validation before preview-before-posting and posting; Gross Price Entry priceBasis handling; CR analysis category confirmation; and counterparty confirmation covering all listed customers. If the batch includes multiple customers, confirming means confirming all listed customers, not just one. Set confirmCrAnalysisCategory=true at batch level only after the user confirms CR sales analysis account codes are intentional. Per item, the BRC "Note" field (JSON note) defaults to the customer name when omitted (never the product name), and the BRC "Delivery To" address (JSON deliveryTo) is only included when explicitly provided. Do not invent productId values and do not use productId 0 or 1 as placeholders. productId 0 and 1 are treated as placeholders and are blocked at runtime before preview-before-posting and before posting. If a product line is needed, first call brc_list_products and use a real product from the connected company. If no suitable product exists, ask the user whether to create/select a product, or use a service/non-product line only if the endpoint supports it. Sales invoices must use Sales VAT rates. Purchase/non-Sales VAT rates are blocked before preview-before-posting and before posting, even if the VAT percentage matches. Maximum 20 items per batch request. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesBatch items to process. Maximum 20 items per request.
priceBasisNoApplies to every sales invoice/credit note item in this batch. Required when Gross Price Entry is enabled. Use `gross` when unit prices are VAT-inclusive/gross. Use `net` when unit prices are VAT-exclusive/net.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
confirmCrAnalysisCategoryNoApplies to every sales document item in this batch. Set true only after the user confirms a CR (customer) sales analysis account code is intentional for these product lines.
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior5/5

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

Annotations indicate destructiveHind=true, but the description goes far beyond, detailing placeholder blocking, VAT category validation, priceBasis handling, confirmation requirements (CR category, counterparty), note/deliveryTo defaults, and the rule that nothing is written until confirmWrite is true. No contradiction with annotations; these behavioral details are essential.

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

Conciseness4/5

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

The description is long but well-structured, front-loaded with purpose and then systematic safety/guideline details. Every sentence contributes to operational clarity; however, it is verbose and could be tightened while retaining essential caveats.

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

Completeness5/5

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

Given the tool's complexity (8 params, no output schema), the description is exceptionally complete. It covers prerequisites (routeToken), safety checks, confirmation flags, edge cases (product placeholder, VAT, multiple customers), and post-posting behavior. It fully equips an agent to invoke the tool correctly.

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

Parameters5/5

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

With 100% schema coverage, baseline is 3, but the description adds critical semantics: it explains productId 0/1 placeholder blocking (affecting items), clarifies that confirmCrAnalysisCategory and confirmCounterpartyExplicit require explicit user confirmation, and describes the meaning of priceBasis. These enrich parameter understanding beyond the schema, especially for the generic items array.

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

Purpose5/5

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

The description clearly states the tool 'Processes a batch of sales invoices' with specific verb+resource. It explicitly distinguishes from single invoice tools by mentioning 'batch' and contrasting with 'single sales invoices' throughout, making its unique scope unambiguous.

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

Usage Guidelines4/5

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

Provides clear usage context: requires routeToken from brc_route_request, must call brc_list_products for product lookup, and specifies maximum items per batch. However, it does not explicitly state when to use this batch tool versus the single sales invoice tool, though the batch nature is implied.

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

brc_batch_sales_repsA
Destructive
Inspect

Processes a batch of sales reps. Maximum 20 items per batch request. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesBatch items to process. Maximum 20 items per request.
priceBasisNoApplies to every sales invoice/credit note item in this batch. Required when Gross Price Entry is enabled. Use `gross` when unit prices are VAT-inclusive/gross. Use `net` when unit prices are VAT-exclusive/net.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
confirmCrAnalysisCategoryNoApplies to every sales document item in this batch. Set true only after the user confirms a CR (customer) sales analysis account code is intentional for these product lines.
Behavior5/5

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

The annotations indicate destructiveHint=true and readOnlyHint=false, correctly signaling a write operation. The description reinforces this by mentioning confirmWrite and preview-before-posting, and by noting the token is not permission to post. This fully discloses the side effects and required confirmations.

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

Conciseness4/5

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

The description is relatively concise (three sentences) and effectively structured. However, it repeats some information already present in the schema descriptions (e.g., routeToken and confirmWrite semantics), which could be seen as redundant. Still, it does not bloat the entry and remains focused.

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

Completeness4/5

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

The description provides sufficient context for a skilled agent to invoke the tool correctly, including the workflow order, token retention, and confirmation requirement. It does not mention expected output or failure modes, but the absence of an output schema and the presence of sibling tools mitigate this gap. Overall, it covers the essential operational context.

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

Parameters5/5

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

The input schema provides detailed descriptions for all 7 parameters, with 100% coverage. Each field (e.g., routeToken, confirmWrite, companyName) has an explicit explanation of its purpose, source, and constraints. The description adds no additional parameter details, but none are needed given the schema's completeness.

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

Purpose5/5

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

The description clearly states the tool processes a batch of sales reps, distinguishing it from other batch tools like brc_batch_customers or brc_batch_invoices. The verb 'processes' and specific resource 'sales reps' make the purpose unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit usage instructions: how to obtain the required routeToken (via brc_route_request), that it must be retained through the workflow, and that confirmWrite/confirmDelete still apply. It also warns against inventing placeholders and clarifies that the token does not grant posting permission. This is thorough and actionable.

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

brc_batch_suppliersA
Destructive
Inspect

Processes a batch of suppliers. Maximum 20 items per batch request. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesBatch items to process. Maximum 20 items per request.
priceBasisNoApplies to every sales invoice/credit note item in this batch. Required when Gross Price Entry is enabled. Use `gross` when unit prices are VAT-inclusive/gross. Use `net` when unit prices are VAT-exclusive/net.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
confirmCrAnalysisCategoryNoApplies to every sales document item in this batch. Set true only after the user confirms a CR (customer) sales analysis account code is intentional for these product lines.
Behavior4/5

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

The description adds valuable safety context beyond the destructiveHint annotation: routeToken does not grant posting permission, preview-before-posting is mandatory, and confirmWrite/confirmDelete still apply. It gives an agent concrete guardrails for a destructive operation. The mention of confirmDelete is slightly ambiguous because the input schema only exposes confirmWrite.

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

Conciseness4/5

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

The description is front-loaded and efficient, putting the operation and item limit first, then the route workflow and confirmation safety rules. Every sentence carries useful guidance and there is little wasted text.

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

Completeness3/5

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

Given the destructive nature and the seven parameters, the description explains routing and confirmation carefully, but it does not explain what each item in the batch must contain or what the batching action ultimately does. The mismatched sales-invoice-focused schema descriptions further increase ambiguity, so an agent still needs substantial guesswork.

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

Parameters3/5

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

Since schema description coverage is 100%, the description does not need to restate every parameter, and it adds batch limits, routeToken flow, and confirmation behavior. Yet the items parameter remains an opaque generic object, and schema descriptions like priceBasis and confirmCrAnalysisCategory appear to refer to sales documents, not suppliers, which the description does not correct.

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

Purpose3/5

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

The description identifies the resource ('suppliers') and the batch scope, so an agent knows it is a batch supplier tool. However, 'processes' is vague and never states whether this creates, updates, or deletes supplier records, leaving the actual action to be inferred from the route workflow.

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

Usage Guidelines4/5

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

The description explicitly requires calling brc_route_request first, retaining the routeToken, and passing that same token on the final permitted transactional call. It also warns against inventing a token and clarifies that the token is not permission to post. It is strong on when to use, though it does not explicitly compare against single-item supplier tools.

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

brc_check_transaction_settingsA
Read-only
Inspect

Checks BRC company processing settings before a VAT-sensitive or payment-terms-sensitive transaction workflow. Returns warnings that should be shown before creating or changing records. Use this for one workflow (sales invoice, purchase, cash receipt, or statement). For overall company readiness (connection, financial year, Sales VAT, Sales Analysis, reference data), use brc_company_readiness_check instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowYesThe workflow to check against the company processing settings.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

Annotations already declare readOnlyHint: true and destructiveHint: false, so the safety profile is known. The description adds that it returns warnings and should be used before mutations, providing context beyond the annotations. It doesn't contradict annotations, and the added detail about returning warnings in advance is useful.

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

Conciseness5/5

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

Two sentences, no filler, information is front-loaded: the purpose is stated immediately, then usage guidance and alternative. Every clause contributes value, making it highly efficient.

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

Completeness5/5

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

The tool is a read-only check with a simple purpose. The description explains what it checks, when to use it, what it returns (warnings), and how it relates to a broader alternative. No output schema is present, but the description's mention of warnings sufficiently conveys the return value. It's complete for its scope.

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 covers 100% of parameters with clear descriptions. The description adds meaning to the workflow parameter by explicitly listing its valid values (sales invoice, purchase, cash receipt, or statement), reinforcing the enum and clarifying purpose. It also connects connectionRef indirectly by referencing the workflow context, though that's already well-explained in the schema.

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

Purpose5/5

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

Clearly states the tool checks BRC company processing settings before VAT-sensitive or payment-terms-sensitive workflows, and returns warnings to show before creating or changing records. It explicitly distinguishes itself from brc_company_readiness_check, showing a specific verb and resource beyond the tool name.

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

Usage Guidelines5/5

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

Provides explicit guidance: use for one workflow (sales invoice, purchase, cash receipt, or statement) and names the alternative brc_company_readiness_check for overall readiness, with a clear description of the alternative's scope. This is a textbook example of when-to-use vs. when-not-to-use.

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

brc_clear_all_company_api_keysA
Destructive
Inspect

Clears all connection credentials for all company contexts from MCP server memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

The description indicates the destructive nature by specifying that it clears all credentials, which aligns with the destructiveHint annotation and adds specific detail about what is affected (all company contexts). It does not mention any other side effects, but the core destructive behavior is conveyed.

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

Conciseness5/5

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

The description is a single, direct sentence with no redundant words, effectively conveying the tool's purpose.

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

Completeness2/5

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

The description lacks information about reversibility, consequences of clearing credentials (e.g., invalidating active connections), or any return values. Given the destructive nature, this omission leaves the user without crucial context.

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

Parameters3/5

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

The single parameter (connectionRef) is fully described in the schema with detailed guidance on its usage and what it is not. The top-level description adds no further information about parameters, so the baseline score of 3 applies given 100% schema coverage.

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

Purpose5/5

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

The description clearly states the action (clears), the object (all connection credentials), and the scope (all company contexts) from MCP server memory, making it unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool, when not to use it, or any alternatives. It only states what it does, leaving the user to infer the appropriate usage context.

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

brc_clear_audit_logC
Destructive
Inspect

Clear the Red audit log for this MCP server session. First call without confirmWrite: true returns confirmation_required and a payload preview — show a plain-English preview before posting in chat, then retry with confirmWrite: true only after explicit user confirmation in a later message. Red shows what it will post and waits for confirmation. Passing preflight is not confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmClearNoMust be true to confirm that the session audit log should be cleared.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

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

The two-step confirmation flow is disclosed, but the description introduces confusion by referencing 'confirmWrite' while the schema includes both 'confirmClear' and 'confirmWrite', and the exact role of each is unclear. This undermines transparency about actual behavior.

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 repetitive: 'show a plain-English preview before posting in chat, then retry with confirmWrite: true' is nearly duplicated by 'Red shows what it will post and waits for confirmation.' This could be condensed significantly.

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

Completeness3/5

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

The description covers the confirmation output (confirmation_required and payload preview) and specifies the scope ('this MCP server session'), but it lacks clarity on parameter usage and final outcomes, leaving the overall picture incomplete.

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 description adds context about the confirmation flow but only mentions 'confirmWrite', ignoring 'confirmClear' and 'connectionRef'. The schema already provides descriptions, so the added value is limited and muddled by the parameter mismatch.

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

Purpose4/5

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

The description clearly states the tool clears the audit log, but the use of 'Red' is ambiguous (likely a company name) and could confuse agents. The purpose is still discernible.

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

Usage Guidelines3/5

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

The description explains the two-step confirmation process, which is a usage guideline, but it does not differentiate this tool from sibling clearing tools (e.g., brc_clear_company_api_key) or mention when not to use it.

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

brc_clear_company_api_keyA
Destructive
Inspect

Clears the API key for a named company context from MCP server memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

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

The annotations declare destructiveHint=true, which this description does not contradict, but the description adds minimal behavioral detail. It does not state whether the operation is reversible, whether it affects the live API connection, whether the key is erased from memory only or also from persistent storage, or whether confirmation is required. Since the annotation already communicates destructiveness, the description should add context about the scope and side effects; it only vaguely says 'clears... from MCP server memory'.

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

Conciseness4/5

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

The description is a single, focused sentence with no filler words. It front-loads the action and resource. It could be slightly more concise by dropping 'named' or adding behavior details, but as written it is efficient and clear.

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

Completeness2/5

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

This is a destructive mutation tool with no output schema and no description of return value or side effects. For a tool annotated destructiveHint=true, the agent needs to know what happens after clearing (e.g., subsequent API calls fail, must re-confirm connection) and whether this is reversible. The description is too thin to fully prepare an agent for the consequences of invoking it.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters. The description itself doesn't add parameter-level meaning beyond what the schema provides, so a baseline of 3 is appropriate. It does implicitly signal that companyName is the key identifier and connectionRef is an opaque reference, but that's already in the schema descriptions.

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

Purpose5/5

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

The description uses a specific verb ('Clears') and identifies the exact resource ('API key for a named company context from MCP server memory'). It clearly distinguishes this tool from its sibling brc_clear_all_company_api_keys (single vs. all) and from brc_get_company_api_key_status (status vs. clearing).

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

Usage Guidelines4/5

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

The existence of brc_clear_all_company_api_keys and brc_get_company_api_key_status in siblings implies when to use this vs. alternatives, though the description doesn't explicitly say 'use this for one named company, use clear_all when...'. The tool name and description make the single-company scope clear enough that an agent would infer the proper alternative.

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

brc_close_quoteAInspect

Closes a BRC quote. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesQuote id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

The description adds important behavioral context beyond the annotations: 'A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.' This informs the agent about safety and approval requirements. Annotations already indicate a non-read-only, non-destructive action, and the description complements rather than contradicts them. It could add more detail about post-close effects, but it provides meaningful context.

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

Conciseness5/5

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

The description is compact, front-loaded with the core action, and every sentence provides value. It packs prerequisite routing, token-handling instructions, and confirmation caveats into four short sentences without redundancy.

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

Completeness4/5

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

The tool sits in a multi-step workflow, and the description explains the prerequisite routeToken flow and safety checkpoints well. It does not describe return values, but no output schema exists and none is strictly required for a close action. The missing details (e.g., specific side effects on the quote) are minor given the schema and annotations coverage.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds useful context about routeToken's lifecycle and purpose, which goes slightly beyond the schema, but it does not explain id, companyName, confirmWrite, or connectionRef. The meaningful additions are limited to token handling and confirmation requirements, so a 3 is appropriate.

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

Purpose5/5

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

The description clearly states a specific action with a specific resource: 'Closes a BRC quote.' This distinguishes it from sibling tools like brc_reopen_quote, brc_delete_quote, and brc_update_quote. It also frames the tool as the terminal transactional step in a route workflow, which further clarifies its unique role.

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

Usage Guidelines4/5

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

The description gives explicit sequencing guidance: 'Call brc_route_request first with the user's complete original action request' and 'Retain the returned routeToken through lookup, preview, and confirmation.' It also warns against inventing placeholder tokens. However, it does not explicitly say when NOT to use this tool or name direct alternatives, so it falls just short of a 5.

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

brc_company_readiness_checkA
Read-only
Inspect

Read-only company health and readiness check for a connected Big Red Cloud company. Reports connection status, financial year, sample reference data (customers, products, suppliers, sales reps), Sales VAT rates, Sales Analysis categories, processing settings, and reference settings. Use this for overall company readiness before starting work. For warnings about a specific VAT-sensitive workflow (sales invoice, purchase, cash receipt, statement), use brc_check_transaction_settings instead — that tool checks one workflow's processing settings, while this tool scores overall company readiness.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

Annotations already state readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds value by detailing the scope of what is reported (connection status, financial year, VAT rates, settings) and explicitly says 'reports' rather than implying mutation. The mention of 'no user/workspace filtering' analogy isn't here, but the description still adds concrete behavioral detail beyond annotations without contradicting them.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose, and efficiently enumerates the scope. Every sentence contributes: the first defines what it does and reports, the second provides usage guidance and sibling differentiation. Zero waste.

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

Completeness5/5

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

For a read-only diagnostic tool with 100% schema coverage, readOnlyHint annotation, and no output schema, the description is complete: it enumerates the aspects checked, indicates it's a readiness score, and provides clear usage boundaries relative to sibling tools. No output schema means explaining return values isn't required, and the description sufficiently sets expectations for what the tool will report.

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 parameters are fully described in the schema. Despite this, the description adds value by clarifying the operational usage of connectionRef—explaining that it's an opaque reference returned by brc_confirm_company_connection, should be reused, not an API key, and not contain credentials. This goes beyond the schema's basic description, especially for the connectionRef semantics.

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

Purpose5/5

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

The description clearly states 'Read-only company health and readiness check' and enumerates specific items checked (connection status, financial year, sample reference data, Sales VAT rates, etc.). It distinguishes itself from the sibling tool brc_check_transaction_settings by contrasting overall readiness scoring vs. workflow-specific warnings.

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

Usage Guidelines5/5

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

Explicit usage guidance: 'Use this for overall company readiness before starting work.' It also explicitly names the alternative tool (brc_check_transaction_settings) and explains when to use that instead, satisfying the when/when-not criteria.

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

brc_confirm_company_connectionAInspect

Confirm company connection, finish connection, or complete connection after the secure page. This tool is brc_confirm_company_connection. Use when the user says confirm company connection, finish connection, complete connection after the secure page, or pastes a confirmation code from the success page. Claims a completed secure Red connection code for the current MCP session. Use after the user has submitted the secure connection page and returns to this chat with the confirmation code shown on the success page (for example when the MCP session changed after opening the browser). Returns an opaque connectionRef for later tool calls when the MCP client rotates session ids (for example Vibe/Mistral). Pass it silently in tool arguments — do not show connectionRef or redconn_ values to normal users. After confirm succeeds, keep passing the same connectionRef on every later tool call — do not call brc_start_company_connection while that connectionRef still works. Never exposes connection credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe connection code from the secure Red connection page success message.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

Beyond the annotations, the description explains that the tool 'Claims a completed secure Red connection code for the current MCP session', returns an opaque connectionRef, never exposes credentials, and should be used across session-id rotations. This adds meaningful behavioral context that the annotations alone do not provide, and there is no contradiction with readOnlyHint/destructiveHint.

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

Conciseness3/5

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

The description is front-loaded with purpose and triggers, but it contains redundancy such as repeating the action synonyms and stating 'This tool is brc_confirm_company_connection.' The security and session-rotation guidance is useful, though a few sentences could be tightened without losing meaning.

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

Completeness5/5

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

Despite having no output schema, the description fully covers the tool's return value (opaque connectionRef), its lifecycle, when to use it, and critical security constraints. It is complete enough for an agent to invoke the tool correctly and handle the resulting connection reference properly.

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

Parameters5/5

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

While the schema already covers both parameters, the description adds essential semantics: the code comes from the secure page success message, connectionRef is returned by this tool, must be passed silently, should be reused on later calls, and is not an API key or credential. This goes well beyond the schema field descriptions.

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

Purpose5/5

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

The description states the specific action ('Confirm company connection'), lists equivalent user phrasings, and clarifies the underlying operation ('Claims a completed secure Red connection code'). It also distinguishes the tool from its sibling brc_start_company_connection by instructing the agent not to start a new connection while a connectionRef still works.

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

Usage Guidelines5/5

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

It gives explicit trigger conditions: when the user says 'confirm company connection', 'finish connection', 'complete connection after the secure page', or pastes a confirmation code. It also specifies the correct timing (after the secure page submission) and explicitly warns not to call brc_start_company_connection while a valid connectionRef exists.

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

brc_create_accrualA
Destructive
Inspect

Creates a new parent Accrual. The API accepts only the parent transaction shape and relies on shared logic to generate the reversing child transaction. Do not call with confirmWrite=true until the user has reviewed the preview and explicitly confirmed creation. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
totalYesAccrual total amount.
acCodeYesNominal account code, for example 4000.
procDateYesProcessing date, for example 2024-03-15T00:00:00.
entryDateYesEntry date, for example 2024-03-01T00:00:00.
referenceYesAccrual reference, for example ACC0001.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
firstDetailNoFirst detail text.
confirmWriteNoMust be true only after the user explicitly confirms creating this accrual.
secondDetailNoSecond detail text.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

Even with annotations indicating a write/destructive operation, the description adds valuable behavioral context: the API generates the reversing child automatically, routeToken is not posting permission, and preview-before-posting plus confirmWrite/confirmDelete still apply. This significantly exceeds annotation-only disclosure.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and then provides essential routing, confirmation, and safety warnings. It is somewhat long, but each sentence adds meaningful workflow or behavioral detail rather than repetition or padding.

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

Completeness4/5

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

For a complex 11-parameter transactional tool with no output schema, the description covers the essential workflow prerequisites, routeToken lifecycle, preview/confirmation behavior, and parent-child generation. It does not describe return values or error conditions, but it is otherwise sufficient for safe invocation.

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

Parameters4/5

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

All 11 parameters are already well described in the input schema (100% coverage), but the description adds important semantic context for routeToken (must come from brc_route_request, never a placeholder, reused across the workflow) and confirmWrite (only after explicit confirmation). It does not clarify remaining params, but the schema handles those.

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

Purpose5/5

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

The description opens with 'Creates a new parent Accrual,' naming the specific verb and resource. It further distinguishes this tool from sibling create/update/delete tools by explaining the parent-transaction shape and automatic reversing child transaction, which is unique to accrual creation.

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

Usage Guidelines4/5

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

The description gives clear workflow context: call brc_route_request first, retain and reuse the returned routeToken, and do not pass confirmWrite=true until the user has explicitly confirmed. It does not explicitly name alternative tools for comparison, but the workflow guidance is strong.

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

brc_create_bank_accountAInspect

Creates a BRC bank account. Do not call this tool with confirmCreate=true until the user has reviewed a plain-English summary and explicitly confirmed creation. Required fields: acCode, details, lastChq, and nominalAcCode. categoryId is optional; BRC may create the Bank Payments category automatically when categoryId is omitted. nominalAcCode must reference an existing balance-sheet bank nominal account created in BRC setup. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
acCodeNoBank account code, for example 1603.
addressNo
balanceNoOpening/current starting balance.
detailsNoBank account description/name.
lastChqNoLast cheque number, for example 000001.
payloadNoOptional raw bank account payload.
sortCodeNo
categoryIdNoBank Payments category type id from brc_list_category_types.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
accountNameNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
accountNumberNo
confirmCreateNoMust be true only after the user explicitly confirms creation.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
isDefaultBankNo
nominalAcCodeNoExisting linked nominal account code. This must already exist in Big Red Cloud and will be sent to the API as account.acCode.
creditorSchemeNo
bankFeedsSourceNo
businessIdentifierCodeNo
internationalBankAccountNumberNo
Behavior5/5

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

Annotations (all false) provide minimal safety signals, but the description adds rich behavioral context beyond them: the explicit user-confirmation gate before confirmCreate=true, the side effect that BRC may auto-create the Bank Payments category when categoryId is omitted, and the crucial clarification that a routeToken is 'not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.' It also accurately implies a write operation, which is consistent with readOnlyHint=false. No contradiction with annotations.

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

Conciseness5/5

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

Six dense sentences with zero fluff, front-loaded with the action verb and immediately followed by the highest-stakes warning (confirmation gate). Every sentence earns its place: required fields, optional-field behavior, token lifecycle, and safety caveats. It is long but proportionally so given the 20-parameter surface and the complex routing workflow.

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?

Despite 20 parameters, nested objects, and the non-obvious routeToken routing protocol, the description covers the critical ground: creation semantics, confirmation safety, token lifecycle, and constraints on nominalAcCode. It mentions the canonical route_request sibling by name and the preview-before-posting protocol. Minor gap: no post-conditions (e.g., how the created account is referenced in subsequent calls) beyond implicit creation, and no mention of connectionRef/company context even though that is schema-documented.

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

Parameters5/5

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

The description significantly enriches the schema at 55% coverage. It names acCode, details, lastChq, and nominalAcCode as required — a detail that arguably conflicts with the schema's 2 required params but provides domain-meaningful guidance. It adds non-obvious behavior for categoryId (auto-creation when omitted) and clarifies nominalAcCode must reference an existing balance-sheet bank nominal account, surpassing what the schema's brief descriptions provide.

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

Purpose4/5

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

The opening phrase "Creates a BRC bank account" is a specific verb+resource statement that clearly identifies the tool's function. However, it does not explicitly differentiate from sibling tools like brc_update_bank_account or the broader create_* family, relying on the tool name alone for that distinction. This matches 'clear but no sibling differentiation.'

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

Usage Guidelines4/5

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

Provides strong workflow guidance: call brc_route_request first, retain the routeToken through lookup/preview/confirmation, and never invent a placeholder token. It also specifies the confirmation gate for confirmCreate=true. However, it never names alternative tools to use instead (e.g., brc_update_bank_account for modifications, brc_get_bank_account for reads), so there are no explicit when-not alternatives.

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

brc_create_cash_paymentA
Destructive
Inspect

Creates a BRC cash payment. Use supplierId + ledger for supplier payments, bankAccountId + lodgement for bank lodgements, or analysisCategoryId + accountCode for analysed expenses. Analysis categories must be from the Cash Payments book (CP01-CP03) and accountCode must match the category. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYes
totalYes
acCodeNoSupplier account code for ledger payments.
ledgerNoLedger amount; must equal total for supplier payments.
discountNo
procDateNoProcessing date in ISO format. Defaults to entryDate.
entryDateNoEntry date in ISO format. Defaults to today.
lodgementNoLodgement amount; must equal total when lodging to bank.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
supplierIdNoSupplier id for ledger payments.
accountCodeNoAnalysis account code matching analysisCategoryId, for example CP01.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
descriptionNoAnalysis line description.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
bankAccountIdNoBank account id for lodgements.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
bookTranTypeIdNoCash Payment book transaction type id.
bankAccountCodeNoBank account code for lodgements.
analysisCategoryIdNoCash Payments analysis category id (categoryTypeId 1391170).
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior5/5

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

Annotations provide destructiveHint=true and readOnlyHint=false, but the description goes further: it clarifies that a routeToken is not permission to post, that preview-before-posting and confirmWrite still apply, and that nothing is written until user confirmation. It also specifies the counterparty confirmation rule, adding significant behavioral context beyond the annotations.

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

Conciseness4/5

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

The description is long but each sentence delivers essential information for a 20-parameter transactional tool. It is front-loaded with purpose, then usage modes, then workflow constraints. No fluff; the structure is logical and information-dense, though slightly verbose compared to simpler tools.

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

Completeness5/5

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

Given the tool's complexity (20 params, no output schema), the description fully covers the three use cases, the required routeToken sequencing, confirmation gates, and counterparty rules. It also mentions bookTranTypeId default and analysis category constraints. It is comprehensive enough for an agent to correctly invoke the tool without relying solely on schema.

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

Parameters4/5

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

Schema coverage is high (85%) with per-parameter descriptions, so baseline is 3. The description adds value by grouping parameters into the three usage modes (e.g., supplierId+ledger, bankAccountId+lodgement) and explaining how accountCode must match analysisCategoryId (CP01-CP03). It also elaborates on confirmWrite and confirmCounterpartyExplicit semantics not fully captured in the schema.

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

Purpose5/5

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

The description states 'Creates a BRC cash payment' with specific verb+resource, and clearly distinguishes the three usage variants (supplierId+ledger, bankAccountId+lodgement, analysisCategoryId+accountCode). This differentiates it from sibling tools like create_cash_receipt or create_payment.

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

Usage Guidelines5/5

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

Explicitly describes when to use each parameter combination, mandates calling brc_route_request first, and explains the required workflow with routeToken, preview-before-posting, confirmWrite, and confirmCounterpartyExplicit. It even warns against inventing placeholder tokens and reusing counterparties from previews, providing strong when-to-use and when-not-to-use guidance.

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

brc_create_cash_receiptA
Destructive
Inspect

Creates a BRC cash receipt. Accepts either a raw payload object or common flat fields. entryDate/procDate default to today. VAT rate fields are only sent when the company's VAT on Cash Receipt setting is enabled. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
totalNo
acCodeNo
ledgerNo
detailsNo
payloadNo
discountNo
procDateNo
totalNetNo
totalVATNo
totalVatNo
acEntriesNo
entryDateNo
referenceNo
vatRateIdNo
vatTypeIdNo
customerIdNo
percentageNo
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
vatEntriesNo
accountCodeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
descriptionNo
unallocatedNo
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
customFieldsNo
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
vatPercentageNo
bookTranTypeIdNo
detailCollectionNo
analysisCategoryIdNo
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior5/5

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

The description discloses key behavioral traits beyond annotations: entryDate/procDate default to today, VAT fields are conditionally sent, and the requirement to retain and reuse the same routeToken and connectionRef. It also explicitly states 'Nothing is written to Big Red Cloud until you confirm,' aligning with the destructiveHint. No contradictions with annotations.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the purpose, then gives essential usage workflow. Each sentence adds value, avoiding redundancy. It is moderately long but appropriate for the tool's complexity, with clear logical flow: purpose, defaults, VAT condition, then prerequisites and confirmations.

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 complex transactional tool with 32 parameters, the description provides substantial operational context: the routing workflow, confirmation flags, connection handling, and conditional field behavior. It does not enumerate all fields or explain return values, but it covers the most critical aspects. Given the destructive nature and lack of output schema, it is quite complete, though a list of common flat fields would push it to a 5.

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

Parameters3/5

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

The schema coverage is only 16%, so the description must add meaning for the many undocumented parameters. It does explain critical ones: routeToken, companyName, confirmWrite, confirmCounterpartyExplicit, connectionRef, and the default date behavior. However, it does not cover the majority of flat fields (e.g., total, discount, acCode) leaving the agent with little guidance for those. It partially compensates but leaves gaps.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Creates a BRC cash receipt.' It distinguishes itself from siblings like brc_create_cash_payment and brc_create_sales_invoice by specifying the cash receipt type and the required routeToken workflow. The verb and resource are explicit and specific.

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

Usage Guidelines5/5

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

Provides explicit when-to-use instructions: 'Call brc_route_request first with the user's complete original action request.' It also states prerequisites (routeToken, confirmCounterpartyExplicit) and warns against misuse ('Never invent a placeholder token'). It clarifies that routeToken is not permission to post, reinforcing the preview/confirm flow.

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

brc_create_customerAInspect

Creates a BRC customer using a raw BRC payload. Required payload fields: code and name — ask the user if either is missing and return without inventing values. Omit optional fields the user did not provide (address, contact, phone, email, credit terms, VAT registration, and similar). Do not invent placeholders such as Test Address, Dublin, Ireland, creditTerms=30, or vatRegistered=false. Does not create or update opening balance transactions. If the user provides an opening balance, warn them that it must be entered directly in Big Red Cloud. Before creating, check whether the customer email appears to match the customer name; if it may be a mismatch, warn the user and ask for confirmation. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
payloadYesRaw BRC-compatible payload for this endpoint.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

The description discloses non-destructive behavior (no opening balance creation), emphasizes not inventing data, and clarifies that routeToken is not permission to post. It also warns against placeholder tokens, adding transparency beyond the sparse 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 repetitive, restating the same instructions multiple times (e.g., not inventing values, routeToken handling). It could be condensed significantly without losing meaning, reducing clarity.

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?

Despite verbosity, the description covers the full workflow: required fields, optional handling, routeToken acquisition, confirmation, and exceptions (opening balance, email match). It is complete but could be more efficient.

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

Parameters4/5

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

The description enriches the schema by explaining that payload requires code and name, clarifies the role of routeToken, confirmWrite, and connectionRef, and adds guidance on when to ask the user. This goes beyond the schema's already detailed parameter descriptions.

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

Purpose5/5

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

Clearly states it creates a BRC customer, distinguishing it from other create tools. The phrase 'using a raw BRC payload' is slightly ambiguous but the payload parameter is described separately.

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

Usage Guidelines5/5

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

Provides explicit instructions: ask for missing required fields, omit optional fields, do not invent values, call route_request first, and follow preview/confirmation steps. These guidelines are specific and actionable for the agent.

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

brc_create_nominal_journal_batchA
Destructive
Inspect

Creates a new Nominal Journal Batch. The journal should contain balanced debit and credit lines. Do not call with confirmWrite=true until the user has reviewed the preview and explicitly confirmed creation. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
totalYesTotal journal amount.
procDateYesProcessing date, for example 2024-01-15T00:00:00.
entryDateYesEntry date, for example 2024-01-15T00:00:00.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after the user explicitly confirms creating this Nominal Journal Batch.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
bookTranTypeIdNoBook transaction type id. Nominal Journal Batch is usually 7.
accountTransactionsYesNominal journal account transaction lines. Debits and credits should balance.
Behavior5/5

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

While annotations indicate destructiveHint=true, the description goes further by explaining the write semantics: it requires balanced lines, mandates preview-before-posting, and clarifies that routeToken is not permission to post. It also cautions about token reuse and the confirmWrite gate, adding meaningful behavioral context beyond the annotations.

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

Conciseness5/5

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

The description is concise yet information-dense, covering purpose, balanced-line requirement, workflow steps, and critical warnings in about six sentences. It is front-loaded with the primary action ('Creates a new Nominal Journal Batch') and each subsequent sentence earns its place by adding essential workflow or safety details. No filler.

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

Completeness5/5

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

Given the tool's complexity (9 params, nested accountTransactions, transactional workflow), the description sufficiently covers the required routeToken sequence, preview-before-posting, confirmWrite gating, and balanced journal constraint. It addresses the main operational risks and prerequisites without needing an output schema, as creation tools typically return simple confirmation. The combination of description and detailed schema makes the tool self-explanatory for an agent.

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

Parameters4/5

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

The schema already provides 100% parameter descriptions, so baseline is 3. The description adds semantic value by explaining the balanced-debits-and-credits invariant for accountTransactions and the role of confirmWrite in the two-step confirmation flow. It also explains the routeToken's lifecycle (retained through lookup/preview/confirmation), which is not fully captured in the schema. This exceeds the baseline by enriching the meaning of key parameters.

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

Purpose5/5

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

The description explicitly states 'Creates a new Nominal Journal Batch' – a specific verb+resource that immediately distinguishes it from sibling batch tools like brc_batch_sales_invoices. It further clarifies the balanced debit/credit requirement and the transactional workflow, making the tool's role unambiguous.

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

Usage Guidelines5/5

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

Provides explicit guidance on when to call: 'Call brc_route_request first', 'Do not call with confirmWrite=true until the user has reviewed the preview and explicitly confirmed creation', and 'Requires routeToken from brc_route_request'. It also states the token must be retained and reused, and warns against inventing placeholders. This clearly outlines the intended usage sequence and prerequisites.

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

brc_create_paymentA
Destructive
Inspect

Creates a BRC payment from the Payments book. Use supplierId for supplier payments, or analysisCategoryId + accountCode for analysed bank payments. Analysis categories must be from the bank's Payments book (BP01-BP06) and accountCode must match the category. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYes
totalYes
acCodeNoSupplier account code for supplier payments.
discountNo
procDateNoProcessing date in ISO format. Defaults to entryDate.
entryDateNoEntry date in ISO format. Defaults to today.
referenceNo
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
supplierIdNoSupplier id for supplier payments.
accountCodeNoAnalysis account code matching analysisCategoryId, for example BP01.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
descriptionNoAnalysis line description.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
bankAccountIdYes
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
bookTranTypeIdNoCheques Entry / Payments book transaction type id.
bankAccountCodeYes
analysisCategoryIdNoPayments book analysis category id for the selected bank.
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior4/5

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

Beyond the destructiveHint annotation, the description discloses important behavioral requirements: confirmation flags (confirmWrite, confirmCounterpartyExplicit) and the fact that routeToken alone grants no posting permission. It also warns against inventing placeholder tokens, adding safety context.

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

Conciseness4/5

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

The description is moderately long but logically structured, covering purpose, usage modes, prerequisites, and confirmations without unnecessary fluff. Every sentence adds value.

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

Completeness3/5

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

The description explains the workflow and confirmation steps well, but does not mention what the tool returns on success or failure. Given the absence of an output schema, this omission leaves the description incomplete regarding expected outcomes.

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

Parameters4/5

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

The description clarifies relationships among parameters (e.g., supplierId vs analysisCategoryId/accountCode) and explains the role of routeToken and confirmation flags. However, it does not elaborate on all parameters, leaving some (like bankAccountId) unexplained, though the schema provides descriptions for many.

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

Purpose4/5

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

The description clearly states the tool's purpose (creates a BRC payment from the Payments book) and distinguishes between supplier payments and analysed bank payments, though it doesn't explicitly differentiate from sibling payment tools like brc_create_cash_payment.

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

Usage Guidelines4/5

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

Provides specific usage guidance: which parameters to use for different payment types, and mandates the prerequisite call to brc_route_request with token handling. It does not explicitly mention alternatives, but the context is clear enough for selecting the right tool.

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

brc_create_prepaymentA
Destructive
Inspect

Creates a new parent Prepayment. The API accepts only the parent transaction shape and relies on shared logic to generate the reversing child transaction. Do not call with confirmWrite=true until the user has reviewed the preview and explicitly confirmed creation. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
totalYesPrepayment total amount.
acCodeYesNominal account code, for example 4000.
procDateYesProcessing date, for example 2024-03-15T00:00:00.
entryDateYesEntry date, for example 2024-03-01T00:00:00.
referenceYesPrepayment reference, for example PRE0001.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
firstDetailNoFirst detail text.
confirmWriteNoMust be true only after the user explicitly confirms creating this prepayment.
secondDetailNoSecond detail text.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

Even though annotations indicate destructiveHint: true and readOnlyHint: false, the description adds substantial context: it generates a reversing child transaction, requires preview-before-posting, and outlines confirmWrite semantics. It also warns that routeToken does not override preview requirements. No contradiction with annotations found; instead it enriches the safety profile.

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

Conciseness4/5

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

The description is about 120 words, which is slightly long but each sentence adds critical workflow information. It front-loads the core action, then explains required prerequisites and confirmWrite rules. No filler or redundancy; the length is justified by the complex transactional workflow.

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

Completeness4/5

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

Given the tool has 11 parameters, many similar create tools, and a required routing workflow, the description covers the essential steps: obtaining routeToken, preview-before-posting, and confirmWrite. It doesn't explain return values (no output schema), but that's not expected. The child transaction generation is clearly noted. Overall, it provides the necessary context for correct invocation without being exhaustive.

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

Parameters4/5

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

The schema covers 100% of parameters with descriptions, so baseline is 3. The description adds extra workflow semantics for routeToken (retain, never invent, reuse) and confirmWrite (must be true only after explicit confirmation), which goes beyond the schema's generic field descriptions. This justifies a score above baseline.

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

Purpose5/5

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

The description clearly states the tool creates a new parent Prepayment and specifies the parent transaction shape with shared logic generating the reversing child transaction. It uses a specific verb (creates) and resource (prepayment), and the mention of parent/child distinguishes it from other create tools in the sibling list.

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

Usage Guidelines5/5

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

The description gives explicit workflow guidance: call brc_route_request first, retain the routeToken, and never invent a token. It also states when not to call (confirmWrite=true only after user confirmation), and clarifies that routeToken is not permission to post. This clearly guides when and how to use the tool relative to the routing process.

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

brc_create_productAInspect

Creates a BRC product using a raw BRC payload. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
payloadYesRaw BRC-compatible payload for this endpoint.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

Annotations already indicate readOnlyHint=false, destructiveHint=false, but the description adds crucial behavioral context: the routeToken is not permission and confirmWrite must be true only after explicit user confirmation, with nothing written until confirmed. This goes beyond annotations, though it doesn't detail what happens to existing data or error states explicitly.

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

Conciseness4/5

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

The description is a few sentences long, front-loaded with the core action, and includes important workflow details without excess. However, it repeats some information already in the schema (e.g., confirmWrite and routeToken details), but it adds the workflow sequence which is essential; it's efficient but could be slightly trimmed.

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

Completeness4/5

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

Given the tool's complexity (multiple steps, prerequisites, confirmation flow) and the rich annotations and schema, the description covers the critical workflow context: routeToken prerequisite, token retention, and confirmation requirements. Since there is no output schema, it doesn't explain the return value, but for a create tool with good schema coverage this is acceptable. It is complete enough for an agent to use correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 5 parameters. The description does not add extra meaning about parameters beyond what's in the input schema, but it does reinforce the routeToken and confirmWrite semantics, which is useful though not necessary. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states it creates a BRC product using a raw BRC payload, and it mentions a necessary prerequisite involving routeToken. It differentiates from siblings by emphasizing the raw payload and the required routing workflow, distinguishing it from batch product creation and updates.

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

Usage Guidelines5/5

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

Explicitly instructs to call brc_route_request first with the user's complete original action request, to retain and pass the same routeToken, and to never invent a token. Also differentiates from transactional tools by noting that routeToken is not permission to post and that preview-before-posting and confirmWrite still apply, giving clear when-to-use and when-not-to-use guidance.

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

brc_create_purchaseA
Destructive
Inspect

Creates a BRC purchase using structured MCP fields. Requires a reference when the company is configured for manual purchase references; otherwise prefer brc_create_purchase_gen_ref. A transaction date outside the current financial year is not automatically refused by Red. After the user confirms the requested date, attempt the create request and let the BRC endpoint determine whether that historical date is supported. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYesPurchase note.
acCodeYesSupplier account code, for example SUP001.
procDateYesProcessing date in ISO format.
entryDateYesEntry date in ISO format.
netAmountYesNet amount before VAT.
referenceNoRequired when the company is configured for manual purchase references.
vatRateIdYesVAT rate id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
supplierIdYesSupplier id, for example 26180406.
accountCodeYesNominal/account code.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
descriptionYesAnalysis line description.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
vatPercentageYesVAT percentage.
bookTranTypeIdYesPurchase book transaction type id.
analysisCategoryIdYesPurchases analysis category id.
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=true), the description reveals important behavioral traits: historical dates are not automatically refused and the endpoint decides support, routeToken is not permission to post, and confirmations are mandatory. It also discloses the need for explicit counterparty confirmation in the current conversation. These insights substantially exceed what annotations alone provide.

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

Conciseness4/5

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

The description is lengthy but every sentence carries operational value for a complex, high-stakes tool. The main verb and purpose are front-loaded in the first sentence, and warnings about routeToken and confirmations are repeated for emphasis. Though slightly repetitive, the structure mirrors the actual workflow and is not wasteful given the 18-parameter complexity.

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

Completeness5/5

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

With 18 parameters, no output schema, a large sibling list, and destructiveHint=true, the description supplies a complete operational picture: the alternate tool, the route workflow, date handling, confirmation gates, and counterparty rules. It gives an agent everything necessary to select and safely invoke this tool without external lookup.

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

Parameters4/5

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

The input schema already covers all 18 parameters with descriptions (100% coverage), and the description adds meaningful guidance for key parameters: reference is required under manual-ref configuration, routeToken must come from brc_route_request and be retained, and confirmCounterpartyExplicit must be true only after explicit user confirmation. While it doesn't dive into every parameter, it enriches the semantics of the most critical ones, lifting it above the schema-only baseline.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Creates a BRC purchase using structured MCP fields.' It immediately differentiates from the sibling brc_create_purchase_gen_ref by calling out the manual-reference scenario and explicitly pointing to the alternative, making the purpose unmistakably clear.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: 'Requires a reference when the company is configured for manual purchase references; otherwise prefer brc_create_purchase_gen_ref.' It also prescribes a complete workflow: call brc_route_request first, retain and reuse the routeToken, and never invent a placeholder token. It further states that confirmWrite/confirmDelete and confirmCounterpartyExplicit prerequisites apply, leaving no ambiguity about when and how to invoke the tool.

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

brc_create_purchase_gen_refA
Destructive
Inspect

Creates a Purchases Book purchase with a generated reference using structured fields. Use when the company is configured for auto-generated purchase references. A transaction date outside the current financial year is not automatically refused by Red. After the user confirms the requested date, attempt the create request and let the BRC endpoint determine whether that historical date is supported. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYes
acCodeYes
procDateYes
entryDateYes
netAmountYes
vatRateIdYes
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
supplierIdYes
accountCodeYes
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
descriptionYes
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
vatPercentageYes
bookTranTypeIdYes
analysisCategoryIdYes
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior5/5

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

Annotations only state destructiveHint: true and readOnlyHint: false, so the description carries the transparency burden and exceeds it. It discloses the routeToken workflow requirement, that 'A routeToken is not permission to post,' that the endpoint (not the client) decides historical date validity, the confirmWrite/confirmDelete gate, and gives counterparty confirmation conditions. These are valuable behavioral details well beyond annotation data, 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.

Conciseness5/5

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

The description is dense (~160 words) but efficiently structured: purpose → usage condition → date edge-case → token workflow → confirmation guards. Every sentence adds necessity, especially given the tool's destructive nature, and the critical workflow caveats ('Never invent a placeholder token', 'Do not reuse a counterparty') justify the length. No filler or redundancy.

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

Completeness5/5

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

For a highly complex tool (17 params, 14 required, destructive, part of a multi-step workflow with tokens and confirmations) with no output schema and minimal annotations, this description covers all critical operational aspects: preconditions (auto-gen-ref config), prerequisite calls (brc_route_request), token lifecycle, confirmation requirements, and date/index edge cases. The only omission is return-value behavior, but given the tool's complexity is workflow-driven rather than payload-driven, the description is complete.

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

Parameters3/5

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

Schema description coverage is low at 29% (only 5 of 17 params), so the burden falls on the description, which compensates meaningfully for routeToken and confirmCounterpartyExplicit by explaining their workflow role and trust conditions. However, the remaining ~12 parameters (e.g., netAmount, vatRateId, procDate) get no additional semantic context beyond the schema's type info, leaving a significant portion of the parameter space under-explained.

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

Purpose5/5

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

The opening sentence uses a specific verb-plus-resource construction ('Creates a Purchases Book purchase with a generated reference using structured fields') and clearly differentiates from sibling brc_create_purchase via the 'generated reference' qualifier and the condition 'Use when the company is configured for auto-generated purchase references.' The purpose is unambiguous and distinct from its siblings.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool ('Use when the company is configured for auto-generated purchase references') and gives a clear call sequence ('Call brc_route_request first... pass the same token'). However, it stops short of explicitly naming an alternative tool to use when the company does NOT use auto-generated references, so while context is strong, explicit exclusion/alternative naming is absent.

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

brc_create_quoteAInspect

Creates a BRC quote using structured MCP fields. Requires a quote reference when quote references are manual or unknown. Do not use when Quotes reference setting is Unknown unless the user has provided a quote reference. Previews before posting include a Missing or not provided section for blank customer phone or email only — warnings only, do not invent values. Nothing is written to Big Red Cloud until you confirm. Requires saleRepId and saleRepCode. Do not use default or demo sales rep values. If missing, list sales reps or ask the user to choose one before creating. Requires analysisCategoryId and accountCode from a Sales Analysis category on each product line. Do not default to CR01/Customer or the first listed category. Set confirmCrAnalysisCategory=true only after the user confirms a CR account code is intentional. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
acCodeYes
commentsYes
ddNumberNo
poNumberNo
procDateYes
quantityYes
tranNoteYes
companyIdYesRequired BRC company id for the quote payload. Use the connected company's id from existing records such as customers, products, or sales reps. Do not omit this field.
entryDateYes
productIdYes
referenceNoOptional manual quote reference, max 6 characters. Required when quote references are manual, or when the quote reference setting is unknown. Quote reference must be 6 characters or fewer because Big Red Cloud truncates longer references.
saleRepIdYesSales rep id from brc_list_sales_reps.
unitPriceYes
vatRateIdYes
vatTypeIdNo
layoutTypeNo
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
accountCodeYesSales Analysis account code for the quote product line, for example SA01.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
productCodeYes
saleRepCodeYesSales rep code from brc_list_sales_reps.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
vatPercentageYes
customerOwnerIdYes
customerOwnerNameYes
analysisCategoryIdYes
confirmCrAnalysisCategoryNoSet true only after the user confirms a CR sales analysis account code is intentional for this product line.
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
confirmQuotesAutoGenerateInBrcNoSet true only after the user confirms quotes are auto-generated in Big Red Cloud. Required for brc_create_quote_gen_ref when Quotes reference setting is Unknown.
Behavior5/5

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

Discloses that 'Nothing is written to Big Red Cloud until you confirm,' preview behavior for missing phone/email, and that 'A routeToken is not permission to post.' These go well beyond the sparse annotations (all false) and clarify side effects and confirmation requirements.

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

Conciseness4/5

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

The description is long but every sentence carries critical information for a 30-parameter transactional tool. It is front-loaded with the core purpose and then logically walks through prerequisites, confirmation flags, and exclusions. Could be improved with bullet points, but no wasted words.

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

Completeness4/5

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

Given no output schema and no annotations, the description covers the full workflow: prerequisites, routeToken lifecycle, preview behavior, confirmation requirements, and parameter constraints. It doesn't mention return values, but for a create tool the emphasis on preconditions and side effects is more important.

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

Parameters4/5

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

The description adds meaning to key parameters: quote reference requirements, saleRepId/saleRepCode (no defaults, list if missing), analysisCategoryId/accountCode (from Sales Analysis, don't default), and confirm flags. Schema coverage is only 40%, so this compensation is valuable, though many simpler params like quantity and unitPrice are left to the schema.

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

Purpose4/5

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

The description opens with 'Creates a BRC quote using structured MCP fields,' a specific verb and resource. It further clarifies scope by stating when a quote reference is required and when not to use the tool, though it doesn't explicitly name sibling tools like brc_create_quote_gen_ref.

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

Usage Guidelines5/5

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

Provides explicit when-not guidance: 'Do not use when Quotes reference setting is Unknown unless the user has provided a quote reference.' It also outlines the required workflow (call brc_route_request first, retain routeToken) and gives fallback instructions ('list sales reps or ask the user to choose one').

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

brc_create_quote_gen_refAInspect

Creates a BRC quote with a generated reference using structured MCP fields. Use only when quote references are auto-generated in Big Red Cloud, or when the user has confirmed auto-generate after Quotes reference setting was Unknown. Previews before posting include a Missing or not provided section for blank customer phone or email only — warnings only, do not invent values. Nothing is written to Big Red Cloud until you confirm. Requires saleRepId and saleRepCode. Do not use default or demo sales rep values. If missing, list sales reps or ask the user to choose one before creating. Requires analysisCategoryId and accountCode from a Sales Analysis category on each product line. Do not default to CR01/Customer or the first listed category. Set confirmCrAnalysisCategory=true only after the user confirms a CR account code is intentional. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
acCodeYes
commentsYes
ddNumberNo
poNumberNo
procDateYes
quantityYes
tranNoteYes
companyIdYesRequired BRC company id for the quote payload. Use the connected company's id from existing records such as customers, products, or sales reps. Do not omit this field.
entryDateYes
productIdYes
referenceNoOptional manual quote reference, max 6 characters. Required when quote references are manual, or when the quote reference setting is unknown. Quote reference must be 6 characters or fewer because Big Red Cloud truncates longer references.
saleRepIdYesSales rep id from brc_list_sales_reps.
unitPriceYes
vatRateIdYes
vatTypeIdNo
layoutTypeNo
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
accountCodeYesSales Analysis account code for the quote product line, for example SA01.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
productCodeYes
saleRepCodeYesSales rep code from brc_list_sales_reps.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
vatPercentageYes
customerOwnerIdYes
customerOwnerNameYes
analysisCategoryIdYes
confirmCrAnalysisCategoryNoSet true only after the user confirms a CR sales analysis account code is intentional for this product line.
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
confirmQuotesAutoGenerateInBrcNoSet true only after the user confirms quotes are auto-generated in Big Red Cloud. Required for brc_create_quote_gen_ref when Quotes reference setting is Unknown.
Behavior5/5

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

The description goes beyond the annotations by detailing the required confirmation workflow: 'Nothing is written to Big Red Cloud until you confirm', 'preview-before-posting and confirmWrite still apply', and 'routeToken is not permission to post'. These are critical behavioral safeguards not captured in the readOnlyHint/destructiveHint 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 a single, lengthy paragraph with redundant repetitions of key points (e.g., routeToken requirements, confirmation rules). It repeats 'Nothing is written to Big Red Cloud until you confirm' and 'preview-before-posting and confirmWrite still apply' multiple times, making it overly verbose and difficult to parse.

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

Completeness3/5

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

The description covers the essential workflow prerequisites (routeToken, confirmations, sales rep, analysis category) and mentions the special case of blank customer phone/email in previews. However, it omits guidance on other parameters like productId, vatRateId, or companyId, and does not clarify the overall sequence of calls beyond routeToken retrieval, leaving some gaps for a complex tool.

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

Parameters4/5

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

The description adds meaningful context for several parameters (e.g., saleRepId/saleRepCode must come from brc_list_sales_reps, analysisCategoryId must not default to CR01, routeToken must be retrieved from brc_route_request). However, not all 30 parameters are explained in the description, relying on schema descriptions for some, and the schema coverage is only 40%.

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

Purpose5/5

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

The description states the exact function: 'Creates a BRC quote with a generated reference using structured MCP fields.' This clearly distinguishes it from sibling tools like brc_create_quote, which likely handles manual references, and includes the specific 'generated reference' scope.

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

Usage Guidelines4/5

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

It explicitly states when to use this tool: 'Use when quote references are auto-generated in Big Red Cloud, or when the user has confirmed auto-generate after Quotes reference setting was Unknown.' This provides clear conditions for selection, though it does not explicitly contrast with the manual-reference alternative, slightly lowering the score.

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

brc_create_sales_credit_noteA
Destructive
Inspect

Creates a BRC sales credit note using structured MCP fields. Requires a reference when the company is configured for manual sales references; otherwise prefer brc_create_sales_credit_note_gen_ref. Requires saleRepId and saleRepCode. Do not use default or demo sales rep values. If missing, list sales reps or ask the user to choose one before creating. Requires analysisCategoryId and accountCode from a Sales Analysis category on each product line. Do not default to CR01/Customer or the first listed category. Set confirmCrAnalysisCategory=true only after the user confirms a CR account code is intentional. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYes
acCodeYes
procDateYes
quantityYes
entryDateYes
netAmountYes
productIdYes
referenceNo
saleRepIdYesSales rep id from brc_list_sales_reps.
unitPriceYes
vatRateIdYes
customerIdYes
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
accountCodeYes
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
descriptionYes
productCodeYes
saleRepCodeYesSales rep code from brc_list_sales_reps.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
vatPercentageYes
bookTranTypeIdYes
analysisCategoryIdYes
confirmCrAnalysisCategoryNoSet true only after the user confirms a CR sales analysis account code is intentional for this product line.
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior4/5

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

The description adds value beyond the destructiveHint annotation by clarifying this is the 'final permitted transactional tool call' that posts data. It carefully explains that a routeToken 'is not permission to post' and that preview-before-posting and confirmWrite still apply. It doesn't explicitly mention audit logging or irreversibility, but given the annotation already flags destructiveness, the description adds solid context about the confirmation workflow.

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?

This is a 250+ word wall of text with no paragraph breaks, bullets, or prioritization. While every sentence carries meaning, the dense run-on structure makes it hard to parse. It repeats 'Requires' multiple times and buries the most critical workflow steps (route token, preview) in the middle. It over-explains the obvious ('Never invent a placeholder token') while the overall structure defeats readability.

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

Completeness4/5

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

Given the tool's complexity — 25 params, 20 required, destructive action, 32% schema coverage, no output schema — the description does a solid job covering the workflow: prerequisites, routing, confirmations, and safety guards. It explains the counterparty confirmation rule and the analysis category requirement thoroughly. Gaps include: no explanation of return values (though no output schema exists to leverage), no date format guidance for entryDate/procDate, and no description of what happens when route validation fails.

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?

With only 32% schema coverage, the description carries responsibility for the most critical parameters. It explains saleRepId/saleRepCode must come from brc_list_sales_reps (sources them), analysisCategoryId/accountCode must come from a Sales Analysis category, and routeToken from brc_route_request with retention rules. However, entryDate/procDate formats, the difference between acCode/accountCode, and the relationship between netAmount/quantity/unitPrice remain unexplained, leaving a 68% gap mostly unaddressed.

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?

Clearly states 'Creates a BRC sales credit note using structured MCP fields' — a specific verb+resource. It even differentiates from the sibling brc_create_sales_credit_note_gen_ref by directing users to the alternative when the company uses auto-generated references. This is exactly what distinguishes it from siblings.

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

Usage Guidelines5/5

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

Exceptional guidance. It explicitly says 'otherwise prefer brc_create_sales_credit_note_gen_ref' (alternative), gives negative instructions ('Do not use default or demo sales rep values', 'Do not default to CR01/Customer'), and provides a step-by-step workflow (call brc_route_request first, then preview, then confirm). This is the gold standard for when-to-use guidance.

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

brc_create_sales_credit_note_gen_refA
Destructive
Inspect

Creates a BRC sales credit note with an auto-generated reference using a raw BRC payload. Use when the company is configured for auto-generated sales references. Requires saleRepId and saleRepCode. Do not use default or demo sales rep values. If missing, list sales reps or ask the user to choose one before creating. Requires analysisCategoryId and accountCode from a Sales Analysis category on each product line. Do not default to CR01/Customer or the first listed category. Set confirmCrAnalysisCategory=true only after the user confirms a CR account code is intentional. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
payloadYes
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
confirmCrAnalysisCategoryNoSet true only after the user confirms a CR sales analysis account code is intentional for this product line.
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior5/5

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

Annotations declare destructiveHint=true and readOnlyHint=false, and the description reinforces that this is a write operation with guardrails. It discloses that routeToken 'is not permission to post', that preview-before-posting and confirmWrite/confirmDelete still apply, and that counterparties must be explicitly confirmed in the current conversation. This adds substantial behavioral context beyond what annotations alone provide.

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

Conciseness4/5

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

The description is roughly 200 words, but every sentence carries a distinct requirement: sales-rep validation, analysis-category guardrail, routeToken workflow, and confirmation flags. It is front-loaded with the core purpose before enumerating preconditions. Though dense, the structure is coherent for a tool with many workflow prerequisites.

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

Completeness4/5

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

For a destructive, multi-confirmation transactional tool, it covers the key contexts: when to use, expected payload fields, how to obtain and use routeToken, and the confirmation semantics. No output schema exists, and return values are not described — a minor gap balanced by the preview-before-posting workflow. The description is complete enough for correct agent use.

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 86%, and the description adds meaning beyond the schema. It specifies that the opaque 'payload' must contain saleRepId, saleRepCode, analysisCategoryId, and accountCode — fields entirely missing from the schema. It also extends confirmCrAnalysisCategory and confirmCounterpartyExplicit with 'only after user confirms' semantics that go deeper than their schema descriptions.

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

Purpose5/5

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

States 'Creates a BRC sales credit note with an auto-generated reference using a raw BRC payload' — a specific verb, resource, and the auto-generation differentiator. 'Use when the company is configured for auto-generated sales references' clearly contrasts with the non-gen-ref sibling brc_create_sales_credit_note. Purpose is unambiguous.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance: 'Use when the company is configured for auto-generated sales references', implying the manual-reference alternative. Adds detailed preconditions (saleRepId/saleRepCode, analysisCategoryId/accountCode) and workflow ordering (call brc_route_request first, retain the same routeToken). Also states when to ask the user vs. infer values, which is strong usage guidance beyond the schema.

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

brc_create_sales_entryA
Destructive
Inspect

Creates a BRC sales entry using structured MCP fields. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYes
acCodeYes
procDateYes
entryDateYes
netAmountYes
vatRateIdYes
customerIdYes
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
accountCodeYes
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
descriptionYes
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
vatPercentageYes
bookTranTypeIdYes
analysisCategoryIdYes
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior4/5

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

Beyond the destructiveHint true annotation, the description explains important restrictions: routeToken is not permission to post, preview-before-posting and confirmWrite/confirmDelete still apply, and counterparty confirmation cannot be 'inherited' from an earlier preview. This is valuable behavioral context, although the description does not describe the full effect or consequences after a confirmed posting.

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

Conciseness4/5

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

The description is well-structured and front-loaded: it identifies the action, then lays out the required token workflow, confirmation, and additional preconditions. It is a bit longer than other descriptions, but most sentences earn their weight given the safety-sensitive and workflow-heavy context. There is minor repetition about the routeToken, but the overall style is efficient.

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

Completeness2/5

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

The tool is a complex transactional tool with 17 parameters, 14 required, and no output schema, while the schema descriptions cover only a small slice. The description focuses mainly on routeToken and confirmation behavior; it does not tell the agent how to obtain/call fill required accounting, VAT, analysis, or date fields. Given the unsupported complexity, this leaves the description not complete enough for reliable invocation.

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 description covers only 29% of the 17 parameters, and the description does not compensate for the remaining gap. It re-explains routeToken, confirmWrite, and counterparty confirmation, but provides no guidance about fields like acChapter, procDate, bookTranTypeId, analysisCategoryId, accountCode, netAmount, or vatPercentage. With low schema coverage and no additional evidence per for these parameters, the help is meaningfully incomplete.

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

Purpose4/5

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

The description opens with a clear verb and resource: 'Creates a BRC sales entry', so the agent can tell it writes a sales entry. It does not explicitly distinguish it from sibling tools like brc_create_sales_invoice or brc_batch_sales_entries, but the named resource is specific enough for a human/AI to identify its primary role.

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

Usage Guidelines4/5

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

The description provides strong workflow guidance: call brc_route_request first, keep the same routeToken across lookup/preview/confirmation, pass it on the final transactional call, and never invent a placeholder. It also clearly sets confirmation expectations for preview and counterparty confirmation. It does not explicitly say when to choose this controller over relevant siblings such as invoice creation or batch entry tools, 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.

brc_create_sales_invoiceA
Destructive
Inspect

Creates a BRC sales invoice using structured MCP fields. Requires a reference when the company is configured for manual sales references; otherwise prefer brc_create_sales_invoice_gen_ref. Previews before posting include a Missing or not provided section for blank customer phone or email only — warnings only, do not invent values. Nothing is written to Big Red Cloud until you confirm. Optional. BRC "Note" field on the sales document (JSON field note). Leave blank to default it to the customer name (BRC customer "Name" / JSON name). Do not use the product name as the note. Only set this when the user explicitly provides a note. Optional. BRC "Delivery To" address (JSON field deliveryTo). Leave blank unless the user explicitly provides a delivery address. Do not invent or default a delivery address (for example "MCP Test"). Requires saleRepId and saleRepCode. Do not use default or demo sales rep values. If missing, list sales reps or ask the user to choose one before creating. Requires analysisCategoryId and accountCode from a Sales Analysis category on each product line. Do not default to CR01/Customer or the first listed category. Set confirmCrAnalysisCategory=true only after the user confirms a CR account code is intentional. When Gross Price Entry is enabled for sales invoicing, this tool requires priceBasis. Use priceBasis "gross" when unit prices are VAT-inclusive/gross, or priceBasis "net" when unit prices are VAT-exclusive/net. Do not tell the user to disable Gross Price Entry if they have provided priceBasis. Do not invent productId values and do not use productId 0 or 1 as placeholders. productId 0 and 1 are treated as placeholders and are blocked at runtime before preview-before-posting and before posting. If a product line is needed, first call brc_list_products and use a real product from the connected company. If no suitable product exists, ask the user whether to create/select a product, or use a service/non-product line only if the endpoint supports it. Sales invoices must use Sales VAT rates. Purchase/non-Sales VAT rates are blocked before preview-before-posting and before posting, even if the VAT percentage matches. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional. BRC "Note" field on the sales document (JSON field `note`). Leave blank to default it to the customer name (BRC customer "Name" / JSON `name`). Do not use the product name as the note. Only set this when the user explicitly provides a note.
acCodeYes
procDateYes
quantityYes
entryDateYes
netAmountYes
productIdYesproductCode is the BRC product "Code" (JSON `productCode`); productId is the BRC product "Id" (JSON `productId`) from brc_list_products. The product name is not a payload field — do not place it in the BRC "Note" field (JSON `note`).
referenceNoOptional. BRC "Reference" field (JSON field `reference`). BRC "Our Ref" (JSON `ourReference`) and BRC "Your Ref" (JSON `yourReference`) default to this value when not supplied separately.
saleRepIdYesSales rep id from brc_list_sales_reps.
unitPriceYes
vatRateIdYes
customerIdYes
deliveryToNoOptional. BRC "Delivery To" address (JSON field `deliveryTo`). Leave blank unless the user explicitly provides a delivery address. Do not invent or default a delivery address (for example "MCP Test").
priceBasisNoRequired when Gross Price Entry is enabled. Use `gross` when unit prices are VAT-inclusive/gross. Use `net` when unit prices are VAT-exclusive/net.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
accountCodeYes
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
descriptionYesProduct line description shown on the document line (BRC product line description / JSON `tranNotes`, also used on the line's analysis entry description). This is the line narrative, not the BRC "Note" field.
productCodeYesproductCode is the BRC product "Code" (JSON `productCode`); productId is the BRC product "Id" (JSON `productId`) from brc_list_products. The product name is not a payload field — do not place it in the BRC "Note" field (JSON `note`).
saleRepCodeYesSales rep code from brc_list_sales_reps.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
customerNameNoOptional. The selected customer's name (BRC customer "Name" / JSON `name`). Used as the default sales document note (BRC "Note" / JSON `note`) when no explicit note is given.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
vatPercentageYes
bookTranTypeIdYes
analysisCategoryIdYes
confirmCrAnalysisCategoryNoSet true only after the user confirms a CR sales analysis account code is intentional for this product line.
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior4/5

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

Annotations declare destructiveHint=true and readOnlyHint=false, and the description compliments this by stating 'Nothing is written to Big Red Cloud until you confirm' and explaining preview-before-posting plus confirmWrite semantics. It also discloses blocking rules for productId, VAT rates, and CR account codes. It doesn't explicitly say what the return value looks like, but for a mutation tool with this much safety context, this is strong transparency.

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

Conciseness3/5

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

The description is long and uses newline-separated blocks for optional fields, but it packs a large amount of critical safety and routing guidance into what is otherwise a single mega-paragraph. Although ordered logically, it lacks headers or bullet structure. For a high-stakes 28-parameter tool, the density is understandable, but readability suffers.

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

Completeness5/5

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

Given the tool's complexity (28 params, destructive side effect, multiple gating conditions), the description covers prerequisites (routeToken, saleRep, analysisCategory), constraints (VAT, priceBasis), explicit confirmation flags, and how to handle missing references or products. It leaves little unsaid about the intended usage order and safety guardrails.

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

Parameters4/5

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

Schema description coverage is 57%, and the description meaningfully supplements the schema by explaining the relationship between note/customerName, the meaning of productId vs productCode, priceBasis semantics, and the purpose of routeToken and confirmWrite. It does not merely repeat the schema—it adds behavioral context. It doesn't fully document every parameter, but the combination of schema and description is strong.

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

Purpose5/5

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

The description clearly states this creates a BRC sales invoice and explains the manual-reference variant vs. the gen_ref sibling. It names the sibling `brc_create_sales_invoice_gen_ref`, which immediately helps an agent distinguish when to use which. The verb+resource is precise, and the reference-handling detail explicitly differentiates it from the closely-named alternative.

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

Usage Guidelines5/5

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

The description repeatedly covers when and how to use this tool: 'Requires a reference when the company is configured for manual sales references; otherwise prefer brc_create_sales_invoice_gen_ref.' It also provides exclusionary guidance on calculating priceBasis, on when to set routeToken, confirmWrite, and confirmCounterpartyExplicit, and instructs calling `brc_route_request` first and listing sales reps if missing. This is exactly the kind of decision support an agent needs.

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

brc_create_sales_invoice_gen_refA
Destructive
Inspect

Creates a BRC sales invoice with an auto-generated reference using a raw BRC payload. Use when the company is configured for auto-generated sales references. Previews before posting include a Missing or not provided section for blank customer phone or email only — warnings only, do not invent values. Nothing is written to Big Red Cloud until you confirm. In the raw payload, the BRC "Note" field (JSON note) defaults to the customer name (BRC customer "Name" / JSON name) when omitted and must never be set to the product name; the BRC "Delivery To" address (JSON deliveryTo) is only included when explicitly provided. Raw BRC payloads for multi-line sales invoices must use productTrans[] (one object per product line). Each product line must include its own nested acEntries[] for Sales analysis posting — do not send a top-level acEntries array on the invoice. Required header fields include customerId, acCode, entryDate, procDate, saleRepId, saleRepCode, bookTranTypeId, totalNet, totalVAT, total, and unpaid. Red validates line amounts, nested analysis values, qty × unit price (using useTaxInclusiveUnitPrice), and header totals before posting, and returns all validation issues together when the payload does not reconcile. Preview-before-posting still shows what Red will post and waits for confirmation before anything is written to Big Red Cloud. Optional. BRC "Note" field on the sales document (JSON field note). Leave blank to default it to the customer name (BRC customer "Name" / JSON name). Do not use the product name as the note. Only set this when the user explicitly provides a note. Optional. BRC "Delivery To" address (JSON field deliveryTo). Leave blank unless the user explicitly provides a delivery address. Do not invent or default a delivery address (for example "MCP Test"). Requires saleRepId and saleRepCode. Do not use default or demo sales rep values. If missing, list sales reps or ask the user to choose one before creating. Requires analysisCategoryId and accountCode from a Sales Analysis category on each product line. Do not default to CR01/Customer or the first listed category. Set confirmCrAnalysisCategory=true only after the user confirms a CR account code is intentional. When Gross Price Entry is enabled for sales invoicing, this tool requires priceBasis. Use priceBasis "gross" when unit prices are VAT-inclusive/gross, or priceBasis "net" when unit prices are VAT-exclusive/net. Do not tell the user to disable Gross Price Entry if they have provided priceBasis. Do not invent productId values and do not use productId 0 or 1 as placeholders. productId 0 and 1 are treated as placeholders and are blocked at runtime before preview-before-posting and before posting. If a product line is needed, first call brc_list_products and use a real product from the connected company. If no suitable product exists, ask the user whether to create/select a product, or use a service/non-product line only if the endpoint supports it. Sales invoices must use Sales VAT rates. Purchase/non-Sales VAT rates are blocked before preview-before-posting and before posting, even if the VAT percentage matches. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply. Also requires confirmCounterpartyExplicit: true once the user has explicitly named or confirmed the customer/supplier in the current conversation. Do not reuse a counterparty from an earlier preview without that confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
payloadYesRaw BRC payloads for multi-line sales invoices must use `productTrans[]` (one object per product line). Each product line must include its own nested `acEntries[]` for Sales analysis posting — do not send a top-level `acEntries` array on the invoice. Required header fields include customerId, acCode, entryDate, procDate, saleRepId, saleRepCode, bookTranTypeId, totalNet, totalVAT, total, and unpaid. Red validates line amounts, nested analysis values, qty × unit price (using useTaxInclusiveUnitPrice), and header totals before posting, and returns all validation issues together when the payload does not reconcile. Preview-before-posting still shows what Red will post and waits for confirmation before anything is written to Big Red Cloud.
priceBasisNoRequired when Gross Price Entry is enabled. Use `gross` when unit prices are VAT-inclusive/gross. Use `net` when unit prices are VAT-exclusive/net.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
confirmCrAnalysisCategoryNoSet true only after the user confirms a CR sales analysis account code is intentional for this product line.
confirmCounterpartyExplicitNoMust be true only after the user explicitly named or confirmed the customer, supplier, or other counterparty in the current conversation. Never set true because a customer or supplier appeared in an earlier preview, was inferred from context, or was filled in without the user's explicit choice in this conversation.
Behavior5/5

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

The description discloses many behavioral constraints beyond the annotations, including preview-before-posting, blocking of placeholders and non-sales VAT, and the requirement for explicit counterparty confirmation.

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 extremely long and repetitive, with identical sentences repeated multiple times (e.g., about preview behavior and required fields), making it inefficient and not well-structured.

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

Completeness5/5

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

Despite verbosity, the description thoroughly covers all operational details, including route tokens, confirmation flags, product validation, VAT restrictions, and preview behavior, making it contextually complete.

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

Parameters5/5

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

Top-level parameter descriptions plus an extensive payload description clarify required fields, nested structures, enum meanings, and confirmation flags, exceeding basic schema information.

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?

Clearly states it creates a BRC sales invoice with an auto-generated reference using a raw BRC payload, distinguishing it from other invoice-creation tools like brc_create_sales_invoice.

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

Usage Guidelines5/5

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

Explicitly states when to use (company configured for auto-generated references) and provides step-by-step guidance such as calling brc_route_request first, listing products, and requiring confirmations, making usage conditions clear.

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

brc_create_sales_repAInspect

Creates a BRC sales rep using structured MCP fields. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesSales rep code.
nameYesSales rep name.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

The description discloses important behavioral traits beyond annotations: the necessity of an authentic routeToken, the exact routing sequence, and that 'A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.' This meaningfully supplements the annotations (readOnlyHint=false, destructiveHint=false) and gives agents safety-critical context for correct invocation.

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

Conciseness5/5

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

The description is focused and front-loaded: the first sentence states purpose, followed by the routing workflow and key guardrails. Every sentence adds meaningful operational detail—no filler or redundant repetition of schema properties. It is appropriately sized for the tool's complexity.

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

Completeness4/5

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

Given the absence of an output schema, the description does not need to detail return values. It provides sufficient context for the create workflow, including prerequisites, token handling, and confirmation requirements. It omits mention of connectionRef, but that parameter is fully described in the schema, so the description is not incomplete from a selection and invocation standpoint.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by clarifying the routeToken parameter's lifecycle and semantics: it must come from brc_route_request, be retained through the workflow, and is not a posting permission. This goes beyond the schema's 'Opaque routeToken... required for transactional tools' explanation, warranting a 4.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Creates a BRC sales rep using structured MCP fields.' It uses a specific verb and resource, and the routeToken workflow context helps distinguish it as a transactional create action. However, it does not explicitly differentiate from sibling tools like brc_batch_sales_reps, which may also create sales reps, so it falls just short of 5.

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

Usage Guidelines4/5

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

The description provides explicit usage guidance: call brc_route_request first, retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional call. It also warns against inventing placeholder tokens. It does not explicitly compare against alternatives or state when not to use this tool, but the workflow steps are actionable and clear.

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

brc_create_supplierAInspect

Creates a BRC supplier using a raw BRC payload. Does not create or update opening balance transactions. If the user provides an opening balance, warn them that it must be entered directly in Big Red Cloud. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
payloadYesRaw BRC-compatible payload for this endpoint.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

Annotations (readOnlyHint=false) confirm a write operation, and the description enriches this with safety and workflow caveats: a routeToken is not permission to post, preview-before-posting and confirmWrite still apply, and the token requirement is disclosed. No contradiction with annotations.

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

Conciseness4/5

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

The description is dense but each sentence carries meaning, covering the action, negative behavior, edge case, and multi-step workflow. Could be broken into shorter paragraphs for scannability, but nothing is wasted.

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

Completeness5/5

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

Given the tool's complexity — a mutating transactional call with token-based workflow and nested payload — the description covers the action, prerequisites, error-avoidance (no placeholder token), and post-auth guardrails (preview/confirm still apply). No output schema exists, so nothing is lost there.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds valuable runtime semantics for routeToken (the full action workflow) and confirmWrite (never true on first call), going beyond the schema's attribute-level documentation, though some of this duplicates what's already in the schema.

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

Purpose5/5

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

The description leads with a specific verb+resource ('Creates a BRC supplier') and differentiates from siblings by noting it uses a 'raw BRC payload' and explicitly does not handle opening balances. This clearly positions it against the ~160 sibling tools.

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

Usage Guidelines5/5

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

Provides explicit workflow guidance: call brc_route_request first, retain the token through lookup/preview/confirmation, and never invent a placeholder. Also gives an exclusion ('Does not create or update opening balance transactions') and a conditional instruction (warn users about opening balances).

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

brc_delete_accrualA
Destructive
Inspect

Removes an existing parent Accrual by id. Requires the accrual timestamp in Base64 string format. Use brc_get_accrual first to retrieve the current timestamp. Do not call with confirmWrite=true until the user explicitly confirms deletion. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesParent accrual id.
timestampYesBase64 timestamp returned by the accrual, for example K94UQIbL3gg=.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after the user explicitly confirms deleting this accrual.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

Annotations already mark destructiveHint=true, but the description adds critical safety behavior: requiring explicit user confirmation before confirmWrite=true, retaining the same routeToken through lookup/preview/confirmation, and clarifying that routeToken does not grant posting permission. This meaningfully exceeds the structured annotations.

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

Conciseness5/5

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

The description is front-loaded with the primary action and each sentence carries necessary workflow or safety information. It is dense but not verbose, with no wasted words.

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

Completeness5/5

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

For a destructive transactional tool with a multi-step workflow, the description covers prerequisites (route_request, get_accrual), user confirmation requirement, and routeToken handling. Since there is no output schema, not describing return values is acceptable.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining how to obtain the timestamp via brc_get_accrual and emphasizing routeToken lifecycle (from brc_route_request, reused across steps). It does not add much for companyName or connectionRef, but key parameters are enriched.

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?

Description states 'Removes an existing parent Accrual by id' – a specific verb, resource, and scope. It clearly distinguishes this from sibling create/update/get/list accrual tools.

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

Usage Guidelines4/5

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

The description gives explicit workflow guidance: call brc_route_request first, use brc_get_accrual to retrieve the current timestamp, and do not set confirmWrite=true until user confirmation. It does not explicitly discuss when not to use the tool or alternatives, but the context is clear.

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

brc_delete_allocation_resolverA
Destructive
Inspect

Reverses/deletes a single allocation by allocation resolver id. Use brc_list_allocated_transactions first to find the allocation id. Do not call with confirmWrite=true until the user explicitly confirms the reversal/deletion. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAllocation resolver id to reverse/delete.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after the user explicitly confirms reversing/deleting this allocation.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

The description fully discloses the destructive nature ('Reverses/deletes') consistent with annotations (destructiveHint=true), and adds critical behavioral context: the need for explicit user confirmation via confirmWrite, the routeToken requirement, and that routeToken alone is not sufficient for posting. It also explains connectionRef reuse, providing beyond-annotation transparency about session handling. No contradictions with annotations.

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

Conciseness5/5

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

The description is long but every sentence is informative and earns its place. It leads with the core action, then covers prerequisites (list first), safety (confirmWrite), the routing workflow (routeToken), and connectionRef handling. There is no fluff; each sentence addresses a specific aspect of using the tool.

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

Completeness5/5

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

Given the tool's complexity (destructive, requires routing, confirmation, and a multi-step workflow), the description is exceptionally complete. It explains the full flow: use list to get id, route request, get token, pass same token, confirm, and connectionRef reuse. With no output schema, it doesn't need to explain return values. This covers all necessary context for correct use.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already fully describes all five parameters. The description does not add meaning beyond the schema for parameters themselves (e.g., it doesn't explain id beyond what's in schema, though it mentions how to obtain it). The contribution is workflow context rather than parameter semantics, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Reverses/deletes a single allocation'), specifies the resource ('by allocation resolver id'), and distinguishes from siblings by explicitly directing the user to 'Use brc_list_allocated_transactions first to find the allocation id' and mentioning routeToken workflow. This differentiates it from other delete tools and provides specific verb+resource clarity.

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

Usage Guidelines5/5

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

The description provides explicit when and how to use: 'Use brc_list_allocated_transactions first', 'Do not call with confirmWrite=true until the user explicitly confirms', 'Requires routeToken from brc_route_request', 'Call brc_route_request first', and 'Never invent a placeholder token.' It also clarifies that routeToken is not permission to post and preview/confirm still apply. These are clear usage guidelines with prerequisites and safety exclusions.

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

brc_delete_bank_accountA
Destructive
Inspect

Deletes a BRC bank account by id. Only call this after the user has explicitly confirmed deletion. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesbank account id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
confirmDeleteNo
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

Annotations already mark destructiveHint=true and readOnlyHint=false, but the description adds critical behavioral details: it requires explicit user confirmation, mandates a routed workflow from brc_route_request, and explicitly warns that a routeToken is not permission to post and that preview-before-posting and confirmWrite/confirmDelete still apply. No contradiction with annotations.

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

Conciseness4/5

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

The description is dense and front-loaded, with each sentence addressing a necessary aspect (action, confirmation, routing, token handling, preview). While slightly long, every clause serves a purpose and there is no fluff. It is comprehensive rather than concise, but appropriately so for a destructive transactional tool.

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

Completeness5/5

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

For a destructive transactional tool with no output schema, the description covers all critical aspects: target identification, required user confirmation, routing prerequisites, and the persistence of preview/confirmation gates. It fully equips an agent to invoke the tool correctly, given the complexity of the workflow.

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 high (83%), so the schema documents most parameters. The description adds meaningful context by explaining the routeToken lifecycle (retain through lookup/preview/confirmation) and emphasizing that confirmWrite/confirmDelete still apply, which complements the schema definitions beyond simple field descriptions.

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

Purpose5/5

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

The description uses a specific verb ('Deletes'), names the resource ('BRC bank account'), and specifies the scope ('by id'). It clearly distinguishes this from sibling delete tools by stating the exact target resource and the requirement for a routeToken.

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

Usage Guidelines5/5

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

Explicitly says 'Only call this after the user has explicitly confirmed deletion,' providing a clear gate. It also specifies the required sequence: call brc_route_request first, retain the routeToken, and pass it on the final permitted transactional call. This is direct, actionable guidance on when and how to use the tool.

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

brc_delete_cash_paymentA
Destructive
Inspect

Deletes a BRC cash payment by id. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYescash payment id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
confirmDeleteNo
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

Annotations already declare destructiveHint=true, so the destructive nature is established. The description adds important behavioral context: the routeToken requirement, that it is not permission to post, and that preview-before-posting and confirmation still apply. This goes beyond the annotation and explains the preconditions and safety steps. No contradiction with annotations.

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

Conciseness5/5

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

The description is concise (about 4 sentences) and front-loaded with the core purpose. Every sentence adds necessary workflow or safety context without redundancy. Well-structured and easy to parse.

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

Completeness5/5

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

Given the complexity (required routeToken workflow, confirmation gates, destructive action) and the absence of an output schema, the description fully covers the necessary context: prerequisites, exact sequence, and safety constraints. It is complete for an agent to execute correctly.

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

Parameters4/5

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

Schema description coverage is 83%, so parameters are largely documented. The description adds semantic value by explaining the routeToken's role (opaque, from brc_route_request, not a permission) and reinforces the confirmWrite/confirmDelete requirement. This enhances understanding beyond the schema. It does not explicitly describe id or companyName, but those are already covered in schema.

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

Purpose5/5

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

The description clearly states 'Deletes a BRC cash payment by id' – a specific verb and resource. It distinguishes from sibling delete tools (e.g., delete_cash_receipt, delete_payment) by naming the exact entity type (cash payment).

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

Usage Guidelines5/5

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

Provides explicit workflow instructions: call brc_route_request first, retain the returned routeToken through lookup/preview/confirmation, pass the same token on the final transactional call. Also gives clear 'never invent a placeholder token' and clarifies that routeToken is not permission to post, with confirmWrite/confirmDelete still applying. This fully guides when and how to use the tool.

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

brc_delete_cash_receiptA
Destructive
Inspect

Deletes a BRC cash receipt by id. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYescash receipt id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
confirmDeleteNo
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the destructive nature is known. The description adds meaningful behavioral context beyond annotations: the required routing workflow (routeToken), the need for preview/confirmation, and the distinction that routeToken is only routing permission. No contradiction with annotations. This adds valuable context about the operational requirements.

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

Conciseness4/5

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

The description is moderately sized but every sentence contributes to understanding the workflow and safety requirements. It is front-loaded with the action ('Deletes a BRC cash receipt by id') and then succinctly explains the routing and confirmation prerequisites. No filler or redundancy.

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

Completeness4/5

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

Given the complexity of the routing workflow and the destructive nature, the description covers essential operational steps (route request, token retention, preview, confirm). It is complete enough for an agent to know the required sequence. There is no output schema, but for a delete operation, output is likely minimal and not critical. The description adequately addresses the tool's complexity.

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

Parameters3/5

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

Schema description coverage is 83%, so the schema already documents most parameters. The description adds emphasis on routeToken and confirmWrite, but this repeats what is already in the schema (e.g., 'Opaque routeToken from brc_route_request...' and confirmWrite's boolean semantics). No new parameter meaning is introduced, so it stays at the baseline of 3 for high coverage.

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

Purpose5/5

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

The description clearly states 'Deletes a BRC cash receipt by id,' which is a specific verb and resource. It distinguishes this from other delete tools by naming the exact entity (BRC cash receipt), though it does not explicitly contrast with sibling delete tools, the purpose is unambiguous.

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

Usage Guidelines4/5

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

The description provides explicit usage guidance: it instructs to call brc_route_request first, retain the returned routeToken, and never invent a placeholder. It also clarifies that routeToken is not permission and that preview-before-posting and confirmation still apply. However, it does not explicitly state when NOT to use this tool or compare it with alternatives like other deletes, so it lacks a direct alternative comparison.

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

brc_delete_customerA
Destructive
Inspect

Deletes a BRC customer by id. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYescustomer id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
confirmDeleteNo
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds important behavioral details: it requires a valid routeToken from brc_route_request, warns against inventing placeholder tokens, and emphasizes that a routeToken is not permission to post (preview and confirmation still mandatory). While it does not describe cascading effects or data loss specifics, it adds significant context beyond the annotations.

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

Conciseness5/5

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

The description is a single, well-structured paragraph that efficiently conveys the tool's purpose and usage without redundancy. It flows logically from the action to the token requirement to the safety caveats, making it concise yet comprehensive.

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

Completeness4/5

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

The description provides essential context about the routing workflow and safety checks, which is critical for this transactional delete tool. It references related tools (brc_route_request) and concepts (preview-before-posting, confirmWrite/confirmDelete) that are necessary for correct invocation. However, it does not specify the output format or error handling, but given the schema and annotations, it is sufficiently complete for an agent to use the tool properly.

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 descriptions cover 5 of 6 parameters (confirmDelete lacks a description but has a default). The tool description reinforces the critical role of routeToken and mentions confirmWrite/confirmDelete, helping the agent understand their proper usage. companyName and connectionRef are described in the schema. Overall, the parameter semantics are well-documented and the description adds clarity for the workflow-specific parameters.

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

Purpose5/5

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

The description clearly states 'Deletes a BRC customer by id' which specifies the verb (deletes), resource (BRC customer), and scope (by id). It distinguishes from sibling delete tools by specifying the resource type and mentions the required routing workflow, leaving no ambiguity about its purpose.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: it must be preceded by brc_route_request, which supplies the routeToken. It instructs the agent to retain the token through lookup, preview, and confirmation, and to pass the same token on the final transactional call. It also clarifies that preview-before-posting and confirmWrite/confirmDelete still apply, which helps differentiate from non-transactional or read-only tools.

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

brc_delete_nominal_journal_batchA
Destructive
Inspect

Removes an existing Nominal Journal Batch by id. Requires the batch timestamp in Base64 string format. Use brc_get_nominal_journal_batch first to retrieve the current timestamp. Do not call with confirmWrite=true until the user explicitly confirms deletion. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNominal Journal Batch id.
timestampYesBase64 timestamp returned by the Nominal Journal Batch, for example 7aIZQIbL3gg=.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after the user explicitly confirms deleting this Nominal Journal Batch.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

Annotations indicate destructiveHint: true, consistent with the description's 'Removes' language. The description adds substantial behavioral context beyond annotations, such as the need for a valid timestamp from the get function, the routeToken flow, and the explicit statement that a routeToken is not permission to post, reinforcing preview-before-posting and confirmation. No contradictions.

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

Conciseness5/5

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

Despite being long, every sentence carries necessary operational detail for a transactional delete with confirmation. The structure flows logically: purpose, prerequisite, workflow, and caveats. It is not verbose but efficiently packed with required guidance.

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

Completeness5/5

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

The description fully covers the complex workflow: how to obtain the timestamp, the routeToken sequence, confirmation requirement, and connectionRef reuse. It also warns against placeholder tokens. With no output schema and high complexity, this description is complete and leaves no ambiguous steps.

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

Parameters5/5

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

Even with 100% schema coverage, the description adds meaning beyond the schema. It clarifies that timestamp comes from brc_get_nominal_journal_batch, explains the purpose and handling of routeToken, warns about confirmWrite requiring explicit confirmation, and describes connectionRef as opaque and reusable. This enhances parameter understanding significantly.

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

Purpose5/5

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

The description clearly states the action: 'Removes an existing Nominal Journal Batch by id.' It specifies the resource and method, and it distinguishes from sibling delete tools by targeting a specific entity. It also mentions the timestamp requirement, which is unique to this tool.

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

Usage Guidelines5/5

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

Explicitly instructs to call brc_get_nominal_journal_batch first to retrieve the timestamp, and details the routeToken workflow including calling brc_route_request and retaining the token. It also warns against using confirmWrite=true without explicit user confirmation and never inventing a placeholder token. This provides thorough when-to-use and how-to-use guidance, including exclusions.

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

brc_delete_paymentA
Destructive
Inspect

Deletes a BRC payment by id. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYespayment id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
confirmDeleteNo
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

Annotations already mark this tool as destructive (destructiveHint: true), and the description adds meaningful context about the routeToken lifecycle, preview-before-posting, and confirmWrite/confirmDelete requirements. It stops short of explaining post-delete effects or irreversibility, but the destructive flag covers the core safety signal.

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

Conciseness5/5

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

The description front-loads the purpose, then provides essential workflow steps in compact, imperative sentences. Every sentence contributes useful guidance—no filler or repetition—and the structure is easy to follow.

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

Completeness4/5

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

For a destructive transactional tool with no output schema, the description covers the required preconditions, token handling, and confirmation requirements adequately. It does not describe return values or post-deletion consequences, but the routeToken workflow and confirmation guardrails make the tool sufficiently usable.

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

Parameters4/5

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

Schema description coverage is high at 83%, so the baseline is 3. The description adds value by explaining the routeToken's provenance, retention, and non-authorization semantics beyond the schema's brief field note. It also reinforces confirmWrite/confirmDelete expectations, though it does not elaborate on the confirmDelete parameter itself.

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

Purpose4/5

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

The description clearly states a specific action ('Deletes a BRC payment by id') and identifies the required routeToken workflow. It is unambiguous about the resource and operation, though it does not explicitly distinguish this tool from the similarly named brc_delete_cash_payment sibling.

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

Usage Guidelines4/5

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

The description gives explicit workflow guidance: call brc_route_request first, retain the returned routeToken through lookup/preview/confirmation, and pass the same token on the final transactional call. It also warns against inventing placeholder tokens and reminds that routeToken is not permission to post, but it does not discuss alternative delete tools or exclusion conditions.

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

brc_delete_prepaymentA
Destructive
Inspect

Removes an existing parent Prepayment by id. Requires the prepayment timestamp in Base64 string format. Use brc_get_prepayment first to retrieve the current timestamp. Do not call with confirmWrite=true until the user explicitly confirms deletion. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesParent prepayment id.
timestampYesBase64 timestamp returned by the prepayment, for example bgUcQIbL3gg=.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after the user explicitly confirms deleting this prepayment.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

Annotations already declare destructiveHint, but the description adds substantial behavioral context: a routeToken is routing permission only, preview-before-posting still applies, confirmWrite must be user-confirmed, and the timestamp must come from the retrieval step. It also reinforces that the same routeToken must be retained through the full workflow.

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

Conciseness4/5

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

The description is longer than average but front-loaded with the core purpose and each subsequent sentence covers a distinct requirement or safety rule. There is minor repetition with the routeToken schema description, but no genuinely irrelevant content.

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

Completeness4/5

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

Given a destructive 6-parameter tool with no output schema, the description covers prerequisites, token flow, confirmation semantics, and the required lookup step. It does not describe return/error behavior, but for a standard delete operation this is a minor 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. The description adds value beyond the schema by explaining where timestamp comes from, how to obtain and use routeToken, and when confirmWrite is allowed. This helps the agent sequence parameter acquisition correctly rather than just knowing parameter names.

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

Purpose5/5

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

The description opens with 'Removes an existing parent Prepayment by id,' which is a specific action on a named resource. It clearly distinguishes this tool from the many other brc_delete_* siblings.

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

Usage Guidelines4/5

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

The description gives explicit preconditions and ordering: use brc_get_prepayment first to fetch the timestamp and call brc_route_request before the transactional call. It also explicitly says confirmWrite=true should not be used until user confirmation. It does not compare against an alternative like updating rather than deleting, but the usage guidance is otherwise strong.

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

brc_delete_productA
Destructive
Inspect

Deletes a BRC product by id. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesproduct id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
confirmDeleteNo
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

The annotations already declare destructiveHint=true and readOnlyHint=false, which tells the agent this is a mutating operation. The description adds valuable context beyond this: it explains the routing workflow (routeToken required, must be from a prior brc_route_request call), and emphasizes that routeToken is 'Routing permission only' and does not replace the confirmation gates. This is rich behavioral context about prerequisites and safety, though it doesn't go into specific side effects (e.g., whether deletion is hard or soft, cascading effects) - but that is reasonable given the annotation already flags destructiveness.

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

Conciseness5/5

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

The description is two sentences with a strong front-loaded first sentence stating exactly what the tool does. Every subsequent sentence earns its place by explaining the critical routing workflow and confirmation requirements. There is zero filler, and the structure is logical: purpose first, then workflow guidance, then safety caveats. No wasted words.

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

Completeness4/5

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

The tool is a request-following tool that returns nothing and is one of over 100 sibling tools. The description, combined with the detailed schema (including confirmWrite and confirmDelete semantics), is sufficient for an agent to orchestrate the delete workflow correctly. It clearly explains the routing dependency on brc_route_request, the confirmation gates, and the connectionRef requirement (though connectionRef is documented mainly in the schema, the description mentions it in context of routing). Slight deduction for not explicitly stating what happens if the product is not found or any side effects beyond deletion, but the destructiveHint annotation and the description's focus on workflow largely cover the essentials.

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

Parameters4/5

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

Schema description coverage is 83%, which is high. The description adds value by explaining the purpose of the routeToken parameter in the workflow context ('Opaque routeToken from brc_route_request... Required for transactional tools.') which is richer than just the schema description. It doesn't re-describe id or companyName since the schema covers those. The confirmWrite/confirmDelete parameters are well-documented in the schema, and the description reinforces the workflow around them. This goes slightly beyond the baseline 3 by adding workflow-level guidance for the key parameter.

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

Purpose5/5

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

The description uses a specific verb ('Deletes') plus the resource ('BRC product by id'), immediately clarifying the exact action and target. It also distinguishes itself from sibling deletion tools (e.g., brc_delete_customer, brc_delete_sales_invoice) by naming the resource. The first sentence is a clear, unambiguous statement of purpose.

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

Usage Guidelines5/5

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

This is exemplary. The description explicitly states the prerequisite workflow: 'Call brc_route_request first with the user's complete original action request.' It defines the precise role of the routeToken and explicitly warns against inventing a placeholder. It also clarifies that routeToken alone is not permission and that preview-before-posting and confirmWrite/confirmDelete still apply. This is exactly the 'when/when-not/alternatives' guidance the dimension asks for, naming the sibling tool brc_route_request directly.

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

brc_delete_purchaseA
Destructive
Inspect

Deletes a BRC purchase by id using timestamp confirmation. Historical purchases are not automatically blocked because they belong to an earlier financial year. The BRC endpoint determines whether the historical deletion is supported. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPurchase id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
confirmDeleteNo
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds beyond those: historical purchases are not automatically blocked, the BRC endpoint determines historical deletion support, and routeToken is routing permission only, not permission to post. This gives useful operational context without contradicting the annotations.

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

Conciseness4/5

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

The description is front-loaded with the core action and then adds necessary workflow caveats. Although it is about eight sentences long, each sentence adds relevant guidance for a destructive, confirmation-gated tool; there is no fluff.

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

Completeness5/5

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

For a destructive delete tool with required routing and confirmation, the description covers prerequisites, token lifecycle, historical-purchase edge cases, and confirmWrite/confirmDelete behavior. Despite having no output schema, it gives an agent enough context to safely execute the operation.

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

Parameters4/5

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

Schema description coverage is 83%, and the schema already documents routeToken and confirmWrite well. The description adds routeToken lifecycle meaning—call brc_route_request first, retain it, never invent a placeholder—and clarifies that confirmDelete still applies even though confirmDelete itself has no schema description. It does not add meaning to id or companyName, but those are adequately covered by the schema.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Deletes a BRC purchase by id', which clearly distinguishes it from get_purchase, create_purchase, and update_purchase siblings. The 'timestamp confirmation' phrase is slightly opaque, but the overall purpose is unambiguous and scoped.

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

Usage Guidelines4/5

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

The description gives explicit workflow guidance: call brc_route_request first with the user's complete original action request, retain the routeToken through lookup/preview/confirmation, and pass the same token on the final transactional call. It does not explicitly name when-not-to-use alternatives, but it clearly states prerequisites and that preview/confirm still apply.

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

brc_delete_quoteC
Destructive
Inspect

Deletes a BRC quote by id using timestamp confirmation. Loads the quote once to obtain its timestamp and to preview id, reference, customer, total, open or closed state, any linked sales invoice, and timestamp before asking for confirmation. A successful delete is the result; if a later lookup by quote id returns an unexpected error, treat that check as inconclusive rather than as a failed delete. Confirm remaining quotes from the quote list by quote id — quote references are not necessarily unique. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesQuote id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
confirmDeleteNo
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

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

The destructive nature is clear from the verb 'Deletes' and the confirmDelete parameter, and the annotations confirm destructiveHint. However, the repetitive explanation about routeToken and confirmWrite adds confusion rather than clarity, and the 'timestamp confirmation' mention is inconsistent with the schema.

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

Conciseness1/5

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

The description is extremely verbose and repetitive, with phrases like 'Requires routeToken...' and 'Never invent a placeholder token' repeated nearly verbatim from the schema. It reads as a generic template applied without tailoring, making it difficult to extract the essential information.

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

Completeness2/5

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

The description lacks crucial information such as the expected return value or success/failure indicators. It also fails to clearly outline the confirmation flow (preview vs. confirmDelete vs. confirmWrite) and does not explain how the tool integrates with the routing workflow beyond generic statements.

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 description largely repeats the schema's parameter descriptions (e.g., for routeToken, confirmWrite) without adding new meaning. It does not explain the actual 'id' parameter beyond the schema's 'Quote id.' and introduces a non-existent timestamp concept.

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

Purpose3/5

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

The description states 'Deletes a BRC quote by id' which clearly identifies the primary action, but the mention of 'timestamp confirmation' is confusing since no timestamp parameter exists in the schema. It also includes extensive boilerplate that obscures the core purpose.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus sibling delete tools (e.g., delete_sales_invoice) or how to decide if deletion is appropriate. It only describes internal steps without contextual decision-making information.

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

brc_delete_sales_credit_noteA
Destructive
Inspect

Deletes a BRC sales credit note by id using timestamp confirmation. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSales credit note id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
confirmDeleteNo
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

Beyond the destructiveHint annotation, it discloses timestamp confirmation, the mandatory routeToken workflow, and that possession of a routeToken alone is not permission to post. This meaningfully expands the agent's understanding of the operation's behavior.

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

Conciseness5/5

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

The description is four tight sentences with the core action first, followed by workflow prerequisites and warnings. Every sentence contributes information not already obvious from the schema.

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

Completeness4/5

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

The routing-workflow context is thoroughly covered and the schema already documents most parameters, but with no output schema the description doesn't indicate what the agent should expect after a successful deletion or how errors are surfaced. Minor gap for an otherwise complete transactional description.

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 83%, so baseline is 3. The description adds value by explaining the routeToken's lifecycle—retain the same returned token and never invent it—and by noting confirmWrite/confirmDelete still apply, though it adds little beyond schema for companyName and connectionRef.

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

Purpose5/5

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

The description opens with 'Deletes a BRC sales credit note by id', giving a specific verb, resource, and lookup method. This clearly distinguishes it from sibling delete and credit-note tools.

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

Usage Guidelines5/5

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

It explicitly says to call brc_route_request first, retain the routeToken through lookup/preview/confirmation, and use the same token for the final transactional call. It also warns never to invent a placeholder token and notes that preview-before-posting and confirmDelete/confirmWrite still apply.

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

brc_delete_sales_entryA
Destructive
Inspect

Deletes a BRC sales entry by id using timestamp confirmation. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSales entry id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
confirmDeleteNo
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

Although destructiveHint=true already signals destructive behavior, the description adds essential workflow context beyond annotations: deletion requires timestamp confirmation, a routeToken from brc_route_request, and that confirmWrite/confirmDelete still apply. It also clarifies that routeToken is not posting permission, which is a critical behavioral nuance not available in the annotations.

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

Conciseness5/5

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

Five sentences, each serving a distinct purpose: state the operation, identify prerequisite, describe the workflow, warn against placeholder tokens, and clarify confirmation requirements. No filler; front-loaded with the core action.

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

Completeness5/5

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

For a destructive action with six parameters and no output schema, the description covers the full workflow: prerequisite routing, token retention, confirmation obligations, and the relation to preview-before-posting. It addresses the key context an agent needs to invoke the tool safely and correctly.

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

Parameters3/5

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

Schema coverage is high (83%), so the schema already documents most parameters. The description reinforces the routeToken and confirmWrite/confirmDelete flow but does not add significant new semantics for individual parameters (e.g., what 'timestamp confirmation' means for 'id' or precise confirmDelete behavior). It meets the baseline for high schema coverage but adds limited extra value.

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

Purpose5/5

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

The description opens with 'Deletes a BRC sales entry by id using timestamp confirmation,' which names the specific action, resource, and required identifier. This clearly distinguishes it from sibling delete tools (e.g., brc_delete_sales_invoice) and other operations like updates or reads.

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

Usage Guidelines5/5

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

The description provides explicit workflow instructions: call brc_route_request first, retain the returned routeToken, pass the same token on the final transactional call, and never invent a placeholder token. It also states when not to use it (token alone is not permission) and reinforces confirmation requirements, making usage conditions unambiguous.

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

brc_delete_sales_invoiceA
Destructive
Inspect

Deletes a BRC sales invoice by id using timestamp confirmation. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSales invoice id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
confirmDeleteNo
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

Annotations already signal destructiveHint=true; the description adds valuable behavior beyond that: routeToken is mandatory, the same token must be preserved from lookup through confirmation, placeholder tokens are prohibited, and confirmWrite/confirmDelete still apply after preview. This gives the agent the security-relevant workflow it needs, with no contradiction against the annotations.

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

Conciseness4/5

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

The description is front-loaded with the delete purpose and remains reasonably compact given the safety-critical workflow. A small amount of routeToken repetition could be tightened, but every sentence contributes to correct invocation.

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

Completeness4/5

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

For a destructive operation with no output schema, the description covers the essential prerequisites, token lifecycle, and confirmation gates. It does not explain the 'timestamp confirmation' phrase or describe expected return/error behavior, but it provides enough context to use the tool safely and correctly.

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

Parameters4/5

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

Schema coverage is high (83%), so the baseline is 3, but the description adds meaning for routeToken by specifying its source, continuity across calls, and prohibition on fabricated tokens. It also clarifies that confirmWrite/confirmDelete remain applicable, while companyName and connectionRef are already well described in the schema.

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

Purpose5/5

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

The description opens with a specific action and resource: 'Deletes a BRC sales invoice by id', which clearly identifies what the tool does and distinguishes it from sibling delete/create/update tools. The routeToken mention adds an important qualification without obscuring the core purpose, though the 'timestamp confirmation' phrase is not fully explained.

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

Usage Guidelines4/5

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

It gives an explicit prerequisite and sequence: call brc_route_request first, retain the returned routeToken through the workflow, and pass the same token on the final transactional call. It also warns not to invent tokens and that routeToken does not grant posting permission, but it does not explicitly name alternative tools or when-not-to-use scenarios.

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

brc_delete_sales_repA
Destructive
Inspect

Deletes a BRC sales rep by id using timestamp confirmation. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSales rep id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
confirmDeleteNo
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

Annotations already indicate destructiveHint: true and readOnlyHint: false. The description adds meaningful context: the tool is transactional, requires a routeToken from a prior routing step, and still requires preview-before-posting and confirmWrite/confirmDelete approval. It clarifies that routeToken is not blanket permission, enhancing transparency beyond the annotation flags.

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

Conciseness5/5

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

Four sentences, each adding actionable information about the workflow or constraints. No filler, no repetition of schema fields, and the core action is front-loaded in the first sentence.

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

Completeness4/5

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

The description covers the complete workflow: prerequisite routeToken, retention through steps, final call, and confirmation requirements. It doesn't describe return values or error handling, but for a transactional delete tool with no output schema and moderate complexity, it is quite complete. The phrase 'timestamp confirmation' is slightly ambiguous and could be clearer.

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 83%, so the baseline is 3. The description enriches routeToken semantics with lifecycle guidance (retain through lookup/preview/confirmation, never invent a placeholder, doesn't replace confirmation). It also connects the id parameter to the deletion target and mentions timestamp confirmation. It doesn't elaborate on companyName or connectionRef, but those are already well described in the schema.

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

Purpose5/5

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

The description opens with a specific verb and object: 'Deletes a BRC sales rep by id,' clearly identifying the resource and operation. This distinguishes it from the many other brc_delete_* sibling tools and from brc_create_sales_rep/brc_update_sales_rep.

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

Usage Guidelines4/5

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

The description gives explicit workflow guidance: call brc_route_request first with the user's original request, retain the routeToken through lookup/preview/confirmation, and pass the same token on the final call. It also provides a clear exclusion ('Never invent a placeholder token') and warns that routeToken is not permission to post. It doesn't explicitly contrast with alternative delete tools, but the workflow context is strong.

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

brc_delete_supplierA
Destructive
Inspect

Deletes a BRC supplier by id. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYessupplier id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
confirmDeleteNo
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

While the destructiveHint annotation already signals destructive behavior, the description adds critical context: the routeToken is routing permission only, and preview-before-posting plus confirmWrite/confirmDelete still apply. This goes beyond the structured annotations and alerts the agent to the full safety protocol.

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

Conciseness5/5

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

The description is three dense sentences with no fluff. It front-loads the action, then provides necessary workflow and safety caveats. Every sentence contributes essential information.

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

Completeness5/5

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

Given the multi-step workflow involving route_request, lookup, preview, and confirmation, the description covers all necessary context for a delete operation. It explains the token lifecycle and confirmation requirements. No output schema is present, but the return value is not critical for correct invocation.

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

Parameters4/5

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

Schema coverage is high (83%), so the baseline is 3. The description adds value by reinforcing the routeToken's role and explicitly mentioning confirmWrite/confirmDelete, which is particularly helpful because confirmDelete lacks a schema description. However, it does not elaborate on companyName or connectionRef, though those are already well described in the schema.

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

Purpose5/5

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

The description opens with 'Deletes a BRC supplier by id', which specifies the exact verb, resource, and identifier. This clearly distinguishes it from sibling delete tools (e.g., brc_delete_customer) and leaves no ambiguity about what the tool does.

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

Usage Guidelines5/5

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

The description provides explicit workflow instructions: call brc_route_request first, retain the routeToken, and pass it on the final transactional call. It also warns against inventing tokens and clarifies that routeToken is not permission to post, making when-to-use and what-to-avoid very clear.

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

brc_find_help_resourcesA
Read-only
Inspect

Find Big Red Cloud customer help across Freshdesk support articles, customer documentation, recorded webinar videos, and upcoming live webinars. Use when the customer asks a support question or how-to question about Big Red Cloud. For reserved red-help / /red-help commands, prefer brc_red_help (this tool remains for backward compatibility). When the user's message begins with the reserved red-help command (red-help, red-help:, red-help,, or /red-help), treat it as a request for manual instructions — not permission to perform the accounting action. red-help is Red's reserved manual-help command. When a user begins a message with red-help, provide customer-help resources and manual instructions instead of performing the accounting action. Pass the user's question (including the red-help command); the server strips the command and searches with the cleaned query. In red-help mode: do not ask for customer details first; do not call create, update, delete, email, or batch tools unless the user later explicitly asks Red to perform the action. Use brc_start_company_connection only when the cleaned red-help query is specifically about connecting companies. Ordinary wording such as help me, how do I, or show me how does not by itself activate red-help mode — follow normal model-driven routing for those messages. Do not use for connecting companies, listing connected companies, clearing connections, or any company books data. Read-only. Does not require a connected company. Return a concise synthesized answer for the customer: direct answer, clear steps where applicable, then a Sources section with Articles / Videos groupings and exact public links from customerFacingSourcesMarkdown or the sources array. Use only publicUrl or registrationUrl values returned in resources for hyperlinks. Freshdesk links use bigredcloud.freshdesk.com — never rewrite them onto bigredcloud.com/support. Keep screenshot Markdown links beside their related steps — never move them into Sources. Prefer customer documentation for procedural questions, Freshdesk for detailed step-by-step instructions, recorded webinars for video walkthroughs, and upcoming webinars for training/onboarding/live help requests. When the customer asks about upcoming webinars and no upcoming_webinar resources are returned, use customerFacingEmptyUpcomingWebinarMarkdown — do not claim no webinars are scheduled, and do not present recorded webinars as upcoming. Do not show internal resource IDs, Azure blob names, storage URLs, relevance scores, or sync metadata to the customer. For Big Red Cloud how-to or tutorial questions, automatically open the best matching Freshdesk article from usedResourceIds with brc_get_help_resource_details using includeImages=true and imagePresentation=links. Place each relevant screenshot beside its step even when the user did not explicitly ask for images. Never claim no Freshdesk article exists when usedResourceIds includes a matching Freshdesk resource. Sources must list only usedResourceIds — never unrelated login, API-key, user, or webinar search hits. Under Sources, group Freshdesk / documentation under Articles and recorded webinars under Videos — omit an empty Videos heading. For procedural how-tos, automatically include the strongest topic-aligned training video under Videos when one exists — do not require the user to ask for a video. Always emit Sources before any Do this through Red section. When redActionAvailable is true, include customerFacingRedActionMarkdown after Sources and before support — do not start the action unless the user asks. Manual guidance must appear before any offer to perform the action through Red. Always end every help answer with Still need help? and Contact Big Red Cloud Support — support must be last. Never claim company data was changed by a tutorial answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoOptional source filter: freshdesk, customer_docs, recorded_webinar, youtube_video, upcoming_webinar, or all.
categoryNoOptional help category filter, for example bank_feeds or sales.
questionYesPlain-English help question, for example how do bank feeds work or how do I reconcile my bank account.
maxResultsNoMaximum number of matching resources to return. Defaults to 5.
Behavior5/5

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

Beyond the annotations (readOnlyHint=true, destructiveHint=false), the description adds substantial behavioral context: 'Read-only. Does not require a connected company.' It details response formatting (Sources section, Articles/Videos groupings, public URL constraints, screenshot placement), red-help restrictions ('do not call create, update, delete, email, or batch tools'), and rules about never claiming no Freshdesk article exists. No contradiction with annotations.

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

Conciseness3/5

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

The description is front-loaded with the core purpose but is extremely long and contains redundancy, especially around the red-help command: the same 'when a user begins with red-help' instruction is repeated multiple times. While many details are necessary due to the lack of an output schema, the text could be condensed into clearer structured directives.

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

Completeness5/5

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

With no output schema, the description fully compensates by explaining the expected return format in detail: 'Return a concise synthesized answer... then a Sources section with Articles / Videos groupings,' exact link restrictions, empty-webinar fallback behavior, and mandatory closing 'Still need help?' support line. It also covers edge cases like red-help mode, company-connection queries, and image placement, making it highly complete for a complex routing/help tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful parameter semantics for `question`, especially the red-help preprocessing behavior: 'Pass the user's question (including the red-help command); the server strips the command and searches with the cleaned query.' It also clarifies source-selection preferences that inform how `source` and `category` filters relate to routing.

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

Purpose5/5

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

The description opens with a specific verb-resource pair: 'Find Big Red Cloud customer help across Freshdesk support articles, customer documentation, recorded webinar videos, and upcoming live webinars.' It clearly distinguishes itself from brc_red_help (prefer brc_red_help for reserved red-help commands) and from data/accounting tools by stating 'Do not use for connecting companies, listing connected companies, clearing connections, or any company books data.'

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

Usage Guidelines5/5

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

The description gives explicit use conditions: 'Use when the customer asks a support question or how-to question about Big Red Cloud.' It names alternatives (brc_red_help, brc_start_company_connection), gives exclusions ('Do not use for connecting companies...'), and provides source-selection guidance ('Prefer customer documentation for procedural questions, Freshdesk for detailed step-by-step instructions').

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

brc_generate_sales_invoice_from_quoteA
Destructive
Inspect

Generates a sales invoice from a BRC quote. Preview-before-posting shows the exact POST /v1/quotes/generateSaleInvoice body (quoteId and optional entryDate/procDate only). Nothing is written until you confirm. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
quoteIdYesQuote id.
procDateNoOptional invoice processing date in ISO format.
entryDateNoOptional invoice entry date in ISO format.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

Even though annotations already indicate destructiveHint=true, the description adds crucial behavioral details: 'Nothing is written until you confirm,' 'Preview-before-posting shows the exact POST /v1/quotes/generateSaleInvoice body,' and 'A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.' These go well beyond the annotation and help the agent understand the two-phase commit flow and token limitations.

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

Conciseness5/5

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

The description is dense but every sentence earns its place: purpose, preview safety, routeToken workflow, and confirmation requirement. It is front-loaded with the core action and then logically expands to workflow details. No redundant content or filler.

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

Completeness5/5

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

Given the tool's complexity (transactional write, routeToken workflow, preview-before-posting, confirmWrite), the description covers all necessary context: prerequisite route_request call, token retention, safety checks, and the exact request body composition. Without an output schema it doesn't describe return values, but for a write operation that's acceptable, especially given the detailed behavior disclosure.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds valuable parameter semantics: it identifies which parameters appear in the POST body ('quoteId and optional entryDate/procDate only'), clarifies that confirmWrite must be true only after explicit user confirmation, and explains the role of routeToken as routing permission only. This significantly enriches the raw schema.

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

Purpose5/5

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

The description clearly states the tool's function: 'Generates a sales invoice from a BRC quote.' This is a specific verb (generates) with a resource (sales invoice) and source (BRC quote), distinguishing it from siblings like brc_create_sales_invoice (which generates from raw data) and brc_get_sales_invoice (which retrieves). It also adds the preview-before-posting behavior, further clarifying the operation.

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

Usage Guidelines5/5

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

Explicit usage workflow is provided: 'Call brc_route_request first with the user's complete original action request' and 'Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call.' It also gives a firm 'Never invent a placeholder token' and clarifies that a routeToken is not permission to post. This is strong when-to-use and prerequisite guidance.

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

brc_generate_support_reportA
Read-only
Inspect

Prepare a downloadable plain-text Red support diagnostic report for one currently connected company in this session. Read-only — does not write to Big Red Cloud. Use after showing the simple audit summary. Do not paste the full report into the chat summary unless the user's client cannot attach or download the file. Secrets, credentials, tokens, and connection references are excluded.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyNameYesCurrently connected company to include in the diagnostic report.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false; the description reinforces this with 'Read-only — does not write to Big Red Cloud.' It adds further transparency by stating that secrets, credentials, tokens, and connection references are excluded from the report, which is not implied by annotations alone.

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

Conciseness4/5

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

The description is packed into a single sentence but efficiently communicates purpose, read-only nature, timing, output handling, and exclusions. It is front-loaded with the main action. Slightly run-on but not overly verbose; earns its sentences.

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

Completeness4/5

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

With annotations covering the safety profile and no output schema, the description provides adequate context: what the tool does, when to use it, how to handle the output, and what is excluded. The report's content is not described but is implicitly a support diagnostic; this suffices given the tool's simplicity and existing annotations.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters have detailed descriptions in the input schema (companyName and connectionRef). The tool description does not add semantic value beyond the schema; it only reiterates the 'currently connected company' notion. Given full schema coverage, a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool prepares a downloadable plain-text Red support diagnostic report for one currently connected company. It specifies the output format (plain-text, downloadable) and scope (one company), distinguishing it from other brc_* tools by focusing on a support report rather than data manipulation or retrieval.

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

Usage Guidelines4/5

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

The description gives a specific usage context: 'Use after showing the simple audit summary.' It also provides a handling instruction for the output ('Do not paste the full report into the chat summary unless the user's client cannot attach or download the file'). It doesn't explicitly mention alternative tools, but the context is clear enough.

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

brc_get_accrualA
Read-only
Inspect

Returns information about a single parent Accrual by id. Child accruals are not exposed by the public API.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesParent accrual id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

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

Annotations already declare readOnlyHint=true, so safety is covered. Description adds that child accruals are not exposed, which is a scoping detail, but no further behavioral context like pagination or error conditions.

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

Conciseness5/5

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

Two concise sentences, no redundancy. The first sentence states the core purpose, the second adds an important limitation. Perfectly structured.

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?

Simple read operation, annotations cover safety, description adds the child accrual caveat. Missing output schema but not needed for this simple tool. Adequate for the complexity.

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

Parameters3/5

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

Schema descriptions cover all 3 parameters with clear details (id, companyName, connectionRef). Description adds nothing beyond what's in the schema, so baseline 3 applies.

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

Purpose5/5

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

Clear verb 'Returns' and resource 'information about a single parent Accrual by id' distinguishes from list_accruals. Also notes child accruals not exposed, adding specificity.

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

Usage Guidelines3/5

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

Implies use when you have an accrual id, but no explicit when-to-use vs alternatives or exclusions. Only hint about child accruals being unavailable, but no alternative named.

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

brc_get_bank_accountA
Read-only
Inspect

Gets one BRC bank account by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBank account id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

The description aligns with the readOnlyHint annotation by stating 'Gets', and it does not conflict with destructiveHint or openWorldHint. While it does not add extra context (like error behavior or idempotency), the annotations already cover the primary behavioral trait, and the description is consistent with them.

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

Conciseness5/5

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

The description is a single concise sentence with no unnecessary words or fluff. It clearly conveys the operation and target resource without redundancy.

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

Completeness4/5

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

Given the simplicity of a get operation, the description and schema are sufficient to understand the tool's functionality. Although there is no output schema, the description implies the return of the bank account object, which is adequate for a getter. No additional context (e.g., error handling or pagination) is needed for this simple operation.

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

Parameters3/5

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

The input schema provides descriptions for all three parameters (id, companyName, connectionRef), including a detailed explanation for connectionRef. The tool description itself does not add any additional parameter semantics beyond what the schema already states, so the schema carries the full burden of parameter explanation.

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

Purpose5/5

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

The description clearly states the tool fetches a single bank account by its ID, using the verb 'Gets' and specifying the resource. It is distinct from sibling tools like brc_list_bank_accounts (which lists multiple) and brc_update_bank_account (which modifies), making its purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage when a single bank account is needed by ID, but it does not explicitly contrast with alternatives like brc_list_bank_accounts or brc_get_bank_accounts (if any). There is no mention of when not to use this tool or specific scenarios, so the guidance is implicit rather than explicit.

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

brc_get_cash_paymentA
Read-only
Inspect

Gets one BRC cash payment by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCash payment id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds no further behavioral context such as not-found behavior or return details, and it does not contradict the annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundant phrasing. Every word contributes to the tool's meaning and purpose.

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

Completeness4/5

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

Given the low complexity of a single-record getter, the complete schema descriptions, and the safety annotations, the description is adequate. It does not explicitly describe the return shape, but no output schema exists and the result is reasonably inferable as the cash payment object.

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

Parameters3/5

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

Schema description coverage is 100%: id, companyName, and connectionRef each have meaningful descriptions. The tool description only restates 'by id' and adds no parameter semantics beyond what the schema already provides.

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

Purpose5/5

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

The description uses a specific verb ('Gets'), names the exact resource ('BRC cash payment'), and specifies the retrieval key ('by id'). This clearly distinguishes the tool from listing or batch variants like brc_list_cash_payments and brc_batch_cash_payments.

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

Usage Guidelines4/5

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

The phrase 'one ... by id' makes the intended usage clear: fetch a single cash payment when its ID is known, rather than listing or batching. It does not explicitly name sibling alternatives or exclusion conditions, but the context is unambiguous for a simple getter.

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

brc_get_cash_receiptC
Read-only
Inspect

Gets one BRC cash receipt by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCash receipt id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior1/5

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

The description does not disclose any behavioral traits beyond the annotations; it simply says 'Gets' without elaborating on side effects, reversibility, or permissions, leaving reliance on the readOnlyHint annotation.

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

Conciseness5/5

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

The description is minimal and to the point, consisting of a single concise sentence without unnecessary detail.

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

Completeness2/5

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

Given the lack of output schema and minimal description, it does not specify what is returned (e.g., the cash receipt object structure) or any error conditions, making it incomplete for a comprehensive understanding.

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

Parameters1/5

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

The tool description adds no additional meaning to the parameters beyond the schema, which already provides detailed descriptions for id, companyName, and connectionRef; the description merely mentions 'by id.'

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

Purpose5/5

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

The description clearly states the tool retrieves a single cash receipt by its identifier, distinguishing it from list or create operations.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives like brc_list_cash_receipts or other get_* tools; it lacks context on appropriate scenarios.

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

brc_get_company_api_key_statusA
Read-only
Inspect

Use when the user asks for an API key, secret, or what key was used. Also use for connection duration or time-left questions when listing all companies. Returns connection status only — never the key. The assistant must not repeat keys from chat history.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyNameNoOptional company context name. If omitted, summarises all contexts.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is known. The description adds critical behavioral context: it never returns the key, the assistant must not repeat keys from chat history, and the connectionRef is not an API key. These go beyond the annotations and prevent misuse.

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

Conciseness5/5

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

The description is three sentences, front-loaded with usage triggers and key safety constraints. Every sentence earns its place; there is no fluff or repetition of schema details.

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 simple read-only status tool with strong annotations and full schema coverage, the description covers when to use it, safety behavior, and what it returns ('connection status only'). It does not define exact output fields, and the phrase 'when listing all companies' could be clearer, but the overall context is adequate.

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

Parameters3/5

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

The input schema covers 100% of the parameters with rich descriptions, including connectionRef's opaque nature and reuse guidance. The tool description itself adds little parameter-level meaning but does reference listing all companies, which aligns with the optional companyName.

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

Purpose5/5

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

The description opens with explicit trigger phrases ('when the user asks for an API key, secret, or what key was used') and clearly states the tool's outcome: 'Returns connection status only — never the key.' This distinguishes it from any key-retrieval tool and aligns with the tool name.

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

Usage Guidelines4/5

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

The description gives concrete when-to-use scenarios: API key/secret inquiries and connection duration/time-left questions when listing all companies. It does not explicitly name sibling tools as alternatives, but the context is specific 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.

brc_get_company_processing_settingsA
Read-only
Inspect

Reads BRC company processing/options settings that affect VAT, cash receipts, payment terms, debtor statements, gross price entry, and transaction creation behaviour. Use this before VAT-sensitive write workflows where possible. These settings are read-only in Red; changes must be made in Big Red Cloud.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeRawNoIf true, includes the raw BRC settings record for operator review. Customer-facing responses should normally leave this false.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds meaningful behavioral context: 'These settings are read-only in Red; changes must be made in Big Red Cloud.' It also notes the settings affect transaction creation behavior, giving the agent a better understanding of what the tool reads. No contradiction with annotations.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the verb and resource, and every sentence adds value: what it reads, when to use it, and important read-only context. No fluff or repetition of schema details.

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

Completeness4/5

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

Given the tool is a read-only settings lookup with rich schema descriptions and clear annotations, the description fully covers the essential context: what settings it reads, when to use it, and the read-only constraint. It does not mention return format, but no output schema exists and the read action implies returning the settings.

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

Parameters3/5

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

Schema description coverage is 100%, and each parameter (includeRaw, companyName, connectionRef) already has detailed descriptions in the schema. The tool description itself does not add further parameter-level meaning, so the baseline of 3 applies.

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

Purpose4/5

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

The description clearly states the tool 'Reads BRC company processing/options settings' and enumerates the affected areas (VAT, cash receipts, payment terms, debtor statements, gross price entry, transaction creation). It is specific about the resource and scope, but it does not explicitly compare itself to sibling tools like brc_get_company_reference_settings or brc_check_transaction_settings, so it falls short of full differentiation.

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

Usage Guidelines4/5

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

The description provides an explicit usage context: 'Use this before VAT-sensitive write workflows where possible.' This tells the agent when to invoke the tool, though it does not mention when to avoid it or name alternatives, so it is clear but not comprehensive.

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

brc_get_company_reference_settingsA
Read-only
Inspect

Reads BRC reference auto-generation settings for sales, purchases, quotes, debtors journal, and creditors journal. Use this before preparing or creating quotes, invoices, purchases, or other reference-sensitive records. If Quotes is Unknown, do not assume auto-generate; ask for a quote reference or user confirmation first. These settings are read-only in Red; changes must be made in Big Red Cloud.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeRawNoIf true, includes the raw BRC company setup record for operator review. Customer-facing responses should normally leave this false.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds value by stating that the settings are read-only in Red and that changes must be made in Big Red Cloud. It also discloses the handling of 'Unknown' values for Quotes, which is additional context beyond the annotations.

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

Conciseness5/5

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

The description is three sentences: purpose, when-to-use, and a behavioral caveat plus a note about read-only in Red. Every sentence adds value, and the structure leads with the primary purpose and usage. No redundancy.

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

Completeness4/5

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

The tool has no output schema, but the description covers the what (reads settings), why (before creating records), how to handle unknown values, and the environment (read-only in Red). This is sufficiently complete for a read-only settings tool, though it could mention how the result is used in reference auto-generation, but that's not critical.

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

Parameters4/5

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

Schema description coverage is 100% (all parameters documented). The description adds meaning by explaining the purpose of the tool (reading reference settings affecting the parameters), but it doesn't significantly add to the already clear parameter descriptions. The baseline is 3 since coverage is high, and the description earns a 4 for putting parameters into context.

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

Purpose5/5

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

The description starts with 'Reads BRC reference auto-generation settings' and explicitly lists the covered document types (sales, purchases, quotes, debtors journal, creditors journal). This clearly identifies the resource and scope, distinguishing it from related tools like brc_check_transaction_settings or brc_get_company_processing_settings.

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

Usage Guidelines5/5

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

The description explicitly states when to use the tool ('before preparing or creating quotes, invoices, purchases, or other reference-sensitive records') and provides a clear exclusion/alternative guidance by noting that other settings are handled by different tools. It also gives specific behavioral guidance: if Quotes is Unknown, do not assume auto-generate but ask the user.

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

brc_get_company_setup_configA
Read-only
Inspect

Gets full BRC company setup configuration, including general details, financial year, reference settings, and processing options.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, establishing a safe read operation. The description adds value by specifying the scope of the returned configuration (general, financial year, reference settings, processing options), which helps the agent know what to expect without contradicting annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence. Every word earns its place: the verb, the resource, and a concise list of included content. No filler or redundancy.

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

Completeness4/5

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

Given this is a simple getter with two well-documented parameters and no output schema, the description provides a useful list of returned configuration areas. It does not detail the exact return structure or empty-result behavior, but for this tool's simplicity it is sufficiently complete.

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

Parameters3/5

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

Input schema covers 100% of the parameters with meaningful descriptions (companyName and connectionRef). The description adds no additional parameter-level detail, so it relies on the schema, which is already adequate. Baseline 3 applies.

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

Purpose5/5

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

The description uses 'Gets' as a specific verb and identifies the resource as 'full BRC company setup configuration'. It lists the included areas (general details, financial year, reference settings, processing options), which distinguishes it from sibling tools like brc_get_financial_year or brc_get_company_reference_settings that fetch individual pieces.

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

Usage Guidelines4/5

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

The phrase 'full BRC company setup configuration' implies using this tool when a comprehensive configuration snapshot is needed, rather than calling several individual getters. However, it does not explicitly state when-not-to-use or name alternative tools, leaving some inference to the agent from sibling names.

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

brc_get_customerB
Read-only
Inspect

Gets one BRC customer by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCustomer id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

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

The description's 'Gets' is consistent with the readOnlyHint annotation (true), showing no contradiction but adding no extra behavioral detail. It does not disclose behaviour such as that `companyName` is always required or that it might return empty results for wrong company contexts, but the simplicity of the operation aligns with the read-only annotation.

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

Conciseness5/5

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

The description is a single sentence of seven words, conveying the essential meaning with zero fluff. It is appropriately concise for a simple getter tool, though slightly more detail could be added without much cost.

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

Completeness3/5

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

For a simple read-only getter with fully documented parameters and a minimal input schema, the description is complete enough for an agent to invoke correctly. However, it misses the opportunity to mention that `companyName` is always required or that the tool returns full customer details, which could be inferred from the name.

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

Parameters3/5

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

Since schema_description_coverage is 100%, the schema already documents the parameters `id` and `companyName` with clear meanings. The description adds no new information about parameters, but does not need to, as the schema is sufficient for a straightforward get operation.

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

Purpose4/5

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

The description 'Gets one BRC customer by id' uses a specific verb and resource, clearly indicating it retrieves a single customer. It does not explicitly differentiate from sibling tools like brc_list_customers, but the singular 'one' implies a distinction.

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

Usage Guidelines2/5

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

The description lacks any guidance on when to use this tool versus alternatives like brc_list_customers or brc_get_customer_opening_balance, or when to prefer batch operations. No exclusions or alternative tools are mentioned, leaving usage context ambiguous.

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

brc_get_customer_opening_balanceB
Read-only
Inspect

Gets a customer's opening balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesCustomer item id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

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

The readOnlyHint annotation clarifies that no modifications occur, but the description gives no indication of what happens if the customer or balance is not found, or what output format to expect. No behavioral details are added.

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

Conciseness5/5

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

The description is a single, concise sentence with no unnecessary words. It directly states the tool's purpose without any fluff or redundancy.

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

Completeness3/5

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

The description is sufficient for a simple getter, but it lacks context about the financial period, currency, or how the opening balance is derived. It does not explain the significance of the parameters or expected result, making it adequate but not thorough.

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

Parameters3/5

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

The schema provides descriptions for all three parameters (itemId, companyName, connectionRef), so coverage is high. The tool description does not add any extra meaning, but given the schema's completeness, a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action (gets) and the target (customer's opening balance), distinguishing it from other getters like brc_get_customer or brc_get_supplier_opening_balance. It is specific but could elaborate on what exactly constitutes an opening balance.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, typical scenarios, or why you would choose this over related getter tools.

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

brc_get_deployment_policyA
Read-only
Inspect

Authoritative customer-facing permission and output policy summary for this Red session. Use when the user asks what they can do, what tools they have, what permissions are enabled, or whether technical details/code should be shown. Summarise the currently enabled read, write, delete, email, and batch capabilities in plain business language. Do not list MCP tool names, endpoint names, tool counts, JSON, schemas, local file paths, terminal commands, environment variables, or a full capability catalogue. Customer-facing answers must be plain-English business responses with evidence, assumptions, uncertainty, and limitations. Internal analysis is allowed, but code/scripts/commands/intermediate files must not be exposed to customer users unless dev mode is enabled. Assistant-only connection diagnostics (never include in customer answers): a missing result or empty list does not by itself mean the connection has expired; only a confirmed authentication failure should be treated as an invalid company credential.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds critical behavioral context: it is a summarization tool that must not reveal technical internals, and it includes a nuanced connection-diagnostics rule (missing result ≠ expired connection, only auth failure counts). This is beyond what annotations provide and fully transparent about what the tool does and does not do.

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

Conciseness5/5

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

The description is long but compact for its complexity—every sentence adds operational value. It front-loads the core purpose and usage, then details exclusions, formatting requirements, and diagnostic nuance. No filler or redundancy; well-organized for a policy-heavy tool.

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

Completeness5/5

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

Given zero parameters, no output schema, and the tool's role as a policy guardian, the description covers all essential dimensions: what it returns (summary of capabilities), how to phrase responses, what to avoid leaking, and how to handle edge cases like connection status. It is fully adequate for an agent to invoke it correctly and craft acceptable answers.

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

Parameters4/5

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

The tool has zero parameters, so per rubric the baseline is 4. The description correctly omits any parameter details since none exist, and the focus is entirely on output policy. No additional parameter semantics are needed.

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

Purpose5/5

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

The description states the tool's exact purpose: an authoritative summary of permission and output policy for the Red session. It explicitly lists when to use it (user asks about capabilities, permissions, or technical detail display) and clearly differentiates from all sibling data-access tools by its unique scope and instruction set.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use triggers ('Use when the user asks...') and detailed usage instructions: what to summarize, what to exclude (MCP tool names, JSON, paths, commands), and how answers should be formatted (plain business language with evidence/assumptions). It also gives specific guidance on not exposing internal diagnostics, and explains how to interpret connection results—far beyond a generic hint.

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

brc_get_financial_yearB
Read-only
Inspect

Gets BRC company financial year.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, which aligns with the 'Gets' description. The description adds no additional behavioral context such as error handling, default values, or what happens when no financial year is found. It is consistent with annotations but provides no extra transparency.

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

Conciseness4/5

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

The description is a single concise sentence that directly states the tool's action and target. There is no redundant or unrelated content, and the key information is front-loaded. It is appropriately minimal for a simple getter tool.

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

Completeness3/5

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

The tool is simple and the parameter schema is fully documented, but with no output schema, the description does not clarify what the returned financial year looks like (e.g., a year integer, date range, or object). The description is adequate but leaves some ambiguity about the return value and behavior in edge cases.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are documented in the schema. The description itself adds no parameter information, but with full schema coverage, the baseline of 3 is appropriate; it does not need to compensate for missing schema details.

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

Purpose4/5

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

The description 'Gets BRC company financial year' clearly identifies a read operation targeting a specific resource (financial year). It distinguishes itself from other get_* tools by naming the resource, though it does not differentiate from siblings that might also relate to company configuration.

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 explain when to use this tool versus alternatives, when it is appropriate, or any prerequisites or exclusions. The schema mentions connectionRef but the description gives no context for tool selection.

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

brc_get_help_resource_detailsA
Read-only
Inspect

Load full help-resource details for a resourceId returned by brc_red_help or brc_find_help_resources. For Big Red Cloud how-to or tutorial questions, call this automatically for the best matching Freshdesk article with includeImages=true and imagePresentation=links — even when the user did not explicitly ask for screenshots. Freshdesk resources return cleaned article text, the canonical Freshdesk publicUrl when available, preferred instructionBlocks, ready-to-use customerFacingScreenshotMarkdown / customerFacingInstructionMarkdown, screenshotUrls for backward compatibility, Sources fields, optional Red-action fields, and optional MCP image content. When includeImages is true, use imagePresentation='links' unless the user explicitly asks for inline image content. Copy the exact Markdown links returned in customerFacingScreenshotMarkdown or customerFacingInstructionMarkdown into the final answer. Place each link after its related step. Use the short View image link text (or View image N when one step has multiple images) — do not paste the descriptive caption as link text or as a second instruction sentence. Never omit valid returned screenshot links after telling the user screenshots are available. Do not merely describe the screenshots. Do not say Here are the screenshots without including the links. Do not replace links with Screenshot 1, Tool result, Show Image, or invent different URLs. Do not depend on tool-result image previews being visible to the user — the final answer must contain the exact signed Markdown links. If no links are returned, clearly say that no matching screenshot was found. Pass the customer question when available so Freshdesk screenshots are selected from the matching workflow branch (for example existing customer versus add customer). Prefer instructionBlocks / customerFacingInstructionMarkdown when present: follow them in order and keep every screenshot Markdown link exact. Never label screenshot links Show Image. Do not invent captions or URLs. Do not group screenshots under a Relevant screenshots section when step-and-link Markdown is available. Omit screenshots from unused workflow branches. Omit unclear screenshots rather than guessing. Do not repeat a screenshot. When instructionBlocks are absent, use customerFacingScreenshotMarkdown with View image links and place each after the most relevant paragraph where possible. Do not rewrite or alter supplied screenshot URLs. Copy customerFacingSourcesMarkdown into a Sources section using the exact publicUrl or registrationUrl returned by this tool. Group Freshdesk / documentation under Articles and recorded webinars under Videos — omit an empty Videos heading. Keep screenshot links beside steps — do not move them into Sources. When redActionAvailable is true, include customerFacingRedActionMarkdown after Sources. Do not start the Red action unless the user asks. Mention preview-before-posting for write actions. Always end with customerFacingSupportMarkdown (Still need help?) after Sources and any Red-action section. Freshdesk links use bigredcloud.freshdesk.com — never rewrite them onto bigredcloud.com/support. Customer documentation returns cleaned article text and the public docs URL. Recorded webinars return title, description, public video URL, and category. Upcoming webinars return title, weekday, description, topics, registration URL, and webinar-series page URL. Read-only. Does not require a connected company. MCP image content blocks are optional compatibility content when imagePresentation is inline or both. Do not claim screenshots were supplied when imageCount is 0 or when no Markdown links are returned. Do not expose Azure blob names, storage URLs, private Freshdesk image URLs, image hashes, or sync metadata in customer-facing text. Never claim company data was changed by a tutorial answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionNoOptional customer question used to select the matching Freshdesk workflow screenshots, for example an existing-customer opening balance question versus adding a new customer.
maxImagesNoMaximum Freshdesk screenshots to return. Defaults to 5. Hard maximum 8.
resourceIdYesResource ID from brc_red_help or brc_find_help_resources, for example customer_docs:bank-reconciliation or freshdesk:1001.
includeImagesNoWhen true, Freshdesk articles may include screenshot presentation. Defaults to true.
imagePresentationNoHow to present Freshdesk screenshots. Defaults to links (signed Markdown links only). Use inline for MCP image blocks, or both for Markdown plus image blocks.
Behavior5/5

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

Annotations declare readOnlyHint=true and destructiveHint=false. The description reinforces this with 'Read-only' and adds 'Does not require a connected company.' It also discloses return fields, optional MCP image content, and numerous formatting constraints, going well beyond the annotations.

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

Conciseness2/5

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

The description is extremely long and repetitive, with many overlapping 'do not' instructions (e.g., never omit links, do not merely describe screenshots, do not say 'Here are the screenshots' without links). While detailed, it could be trimmed significantly without losing essential information, so it fails the 'every sentence earns its place' test.

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

Completeness5/5

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

With no output schema, the description fully explains return values for different resource types (Freshdesk, docs, webinars), including fields like publicUrl, instructionBlocks, customerFacingScreenshotMarkdown, and imageCount. It also covers edge cases like no links returned and the behavior for upcoming webinars, making it highly complete despite the verbosity.

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

Parameters5/5

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

Schema coverage is 100% with descriptions for all 5 parameters. The description significantly enhances this by explaining how to use includeImages and imagePresentation ('use imagePresentation='links' unless the user explicitly asks for inline image content'), the purpose of the question parameter for workflow branch selection, and defaults for maxImages.

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

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence clearly states the tool loads full help-resource details for a resourceId returned by brc_red_help or brc_find_help_resources. This specifies the verb, resource, and distinguishes it from sibling tools by referencing the source tools for resourceId.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to call this automatically for Big Red Cloud how-to or tutorial questions, and provides context about when to use imagePresentation='links'. It does not explicitly state exclusions or alternatives, but referencing brc_red_help/brc_find_help_resources as the source of resourceId gives clear prerequisite guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_get_nom_ac_ledger_by_idsA
Read-only
Inspect

Gets nominal accounts for specific ids by calling GET /v1/nominalAccounts/{id} for each id. Month 1–Month 12 nominal figures are period movements for each financial month, not balances. Running balance = opening balance + cumulative monthly movements. Do not describe individual monthly movement values as monthly balances. If the user asks for balances over time, calculate them from opening balance plus cumulative movements, or explain that only movements are available.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesComma-separated nominal account ids.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=true, destructiveHint=false), the description adds crucial behavioral context: month figures are period movements, not balances; running balance is opening balance plus cumulative movements; and it warns against mislabeling movements as balances. This prevents a very plausible agent misinterpretation and is substantive added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then gives necessary interpretive guardrails. It is slightly repetitive—both sentence 2 and sentence 4 emphasize that monthly figures are not balances—but the repetition is unlikely to cause confusion and the overall length is justified by the semantic subtlety.

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?

There is no output schema, so the description carries the burden of explaining the returned figures and how to handle balance-related requests. It does this well by clarifying movements, opening balance, and cumulative calculations. It could be more complete by describing the exact response shape or edge cases, but for this tool the key semantic risk is adequately covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all three parameters, including ids as comma-separated and companyName as context, so schema coverage is 100%. The description does not add new parameter-level meaning; it focuses on output interpretation, which is appropriate but does not elevate the parameter semantics score above the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'Gets nominal accounts for specific ids' and explicitly identifies the underlying operation: calling GET /v1/nominalAccounts/{id} for each id. This makes the plural/batch nature of the tool obvious and distinguishes it from the singular sibling brc_get_nominal_account_ledger_by_id.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (when fetching nominal accounts by specific ids) and provides semantic usage guidance about movements versus balances. However, it does not explicitly mention alternatives, such as the singular getter or list/report tools, or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_get_nominal_account_ledger_by_idA
Read-only
Inspect

Gets one BRC nominal account by id. Month 1–Month 12 nominal figures are period movements for each financial month, not balances. Running balance = opening balance + cumulative monthly movements. Do not describe individual monthly movement values as monthly balances. If the user asks for balances over time, calculate them from opening balance plus cumulative movements, or explain that only movements are available.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNominal account id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and destructiveHint, but the description adds valuable behavioral context: clarifies the semantics of monthly figures (movements vs balances) and the method to compute running balances. This goes beyond the annotations and helps prevent misinterpretation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief (two sentences) and front-loaded with the main purpose. The second sentence is somewhat long but packs crucial semantic guidance. There is no wasted wording, though it could be slightly more structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema, the description adequately explains what the tool returns (nominal account with monthly movements) and how to interpret it. It does not list individual return fields, but the critical caveat about movements vs balances is covered, making it sufficiently complete for the tool's purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage for all parameters (id, companyName, connectionRef) with descriptions. The tool description adds no additional parameter-level detail, but given the schema's completeness, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Gets') and resource ('BRC nominal account by id'), clearly distinguishing it from sibling tools like brc_get_nom_ac_ledger_by_ids (plural) and listing tools. The singular focus is explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage guidance by explaining that monthly figures are movements, not balances, and instructs the agent on how to handle balance requests (calculate from opening balance + cumulative movements). It doesn't explicitly mention alternatives but sets expectations for data interpretation, which is crucial for correct usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_get_nominal_journal_batchA
Read-only
Inspect

Returns information about a single Nominal Journal Batch by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNominal Journal Batch id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no behavioral details beyond that (e.g., what happens if id not found, whether it returns full details). With annotations present, the bar is lower, and the description adds minimal context, so a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the purpose. Zero waste, perfectly sized for a simple get-by-id tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with full schema coverage and readOnly annotations, the description is complete enough. It doesn't need to explain return values since there's no output schema, and the purpose is clear. Slight deduction for not mentioning the companyName context requirement, but the schema covers it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters. The description adds no additional meaning beyond the schema. Baseline 3 is correct when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns information about a single Nominal Journal Batch by id, which is specific and distinguishes it from list and create/update/delete siblings. However, it doesn't explicitly mention the companyName parameter or contrast with brc_list_nominal_journal_batches, so it's clear but not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving a single batch by id, but doesn't explicitly state when to use this vs. brc_list_nominal_journal_batches or other get tools. No exclusions or alternatives are mentioned, so it's adequate but lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_get_paymentB
Read-only
Inspect

Gets one BRC payment by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPayment id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds no behavioral detail beyond 'gets', such as failure behavior or return format, providing no additional transparency beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It is appropriately sized for a simple getter tool and wastes no tokens.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity getter with well-documented schema and clear annotations, the minimal description is adequate. However, there is no output schema, and the description does not indicate what the returned payment object contains or what happens on not-found, leaving some ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all three parameters, including detailed guidance for connectionRef. The tool description itself adds no parameter semantics, but the high schema coverage means it need not compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Gets one BRC payment by id' uses a specific verb and resource, clearly indicating a single-record retrieval. It is clear but does not differentiate from sibling getter tools like brc_get_cash_payment or explain what a BRC payment is.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as brc_list_payments or brc_get_cash_payment. It simply states what it does without any context for selection or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_get_prepaymentA
Read-only
Inspect

Returns information about a single parent Prepayment by id. Child prepayments are not exposed by the public API.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesParent prepayment id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false. The description adds that only parent prepayments are returned and that child prepayments are not exposed, which is a meaningful behavioral constraint. It does not discuss auth or rate limits, but the annotation coverage is strong enough that a 4 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused two-sentence statement. The first sentence names the operation and resource clearly; the second adds a valuable scope limitation. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple single-get by id with no output schema and no nested objects. The annotations fully cover safety, the schema covers all parameters, and the description adds the key nuance about parent vs child prepayments. This is complete for a straightforward read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the structured schema already documents all three parameters (id, companyName, connectionRef). The description adds no new parameter-level detail, but the schema's coverage earns a baseline of 3, and the rich descriptions of id and connectionRef push it to 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns information about a single parent Prepayment by id, distinguishing it from child prepayments and sibling get/list tools. The verb 'Returns' plus the resource 'Prepayment by id' makes the operation unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys the scope (single parent prepayment) and explicitly notes that child prepayments are not exposed, which helps the agent avoid using it for child-level lookups. It doesn't explicitly name alternatives, but the sibling list includes brc_list_prepayments and brc_update_prepayment, providing sufficient context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_get_productA
Read-only
Inspect

Gets one BRC product by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProduct id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and destructiveHint=false, so the agent knows this is safe. The description adds nothing beyond the schema, but with annotations covering the safety profile, a neutral score is appropriate. It doesn't describe return behavior or potential edge cases (e.g., what happens if id not found).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of eight words, entirely free of fluff. It's front-loaded with the verb and resource, achieving maximum clarity in minimal space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple read operation with clear annotations and full schema coverage. The description is adequate for the tool's simplicity, but it doesn't provide any additional context about behavior when the product doesn't exist or whether related data is included. It's complete enough for a straightforward get-by-id with good schema, but leaves a slight gap on return behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already documented in the schema. The description adds no additional meaning to parameters; it simply names the resource. Baseline 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Gets one BRC product by id' clearly states the action (gets) and resource (product), and the singular 'one' differentiates from list/batch tools. It doesn't explicitly name sibling alternatives but the 'by id' qualifier is sufficient to distinguish from list operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use: when you need a single product by ID rather than a list or batch. However, it provides no explicit guidance on when not to use it (e.g., when you need multiple products, use brc_list_products). It doesn't mention alternatives by name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_get_purchaseA
Read-only
Inspect

Gets one BRC purchase by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPurchase id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations readOnlyHint=true and destructiveHint=false already disclose the safety profile. The description adds no extra behavioral detail such as not-found behavior, return semantics, or side effects, but it also does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler, repetition, or unnecessary detail. It communicates the essential operation in six words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-fetch tool, the description is reasonably complete: it states what is fetched and by what key. However, with no output schema, a little more detail about what the returned purchase object contains would make the result more predictable for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter semantics are already fully documented by the input schema, including id, companyName, and connectionRef. The description adds no additional meaning beyond restating that lookup is by id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Gets') with a clear resource ('BRC purchase') and scope ('by id'), which both names the operation and distinguishes it from sibling list/delete/update purchase tools. It is immediately obvious that this is a single-record retrieval operation.

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 guidance is given about when to use this tool versus alternatives. It does not mention that brc_list_purchases should be used for fetching multiple purchases, nor does it specify any prerequisites, exclusions, or context for choosing this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_get_quoteA
Read-only
Inspect

Gets one BRC quote by id. List and get may not return the same fields (for example note or analysis account codes); treat those as representation differences, not as create or update failures.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesQuote id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds valuable behavioral context by warning that list and get may return different fields and that these should be treated as representation differences, not failures. This goes beyond the annotations and helps prevent false error reporting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. The first sentence front-loads the core purpose, and the second sentence earnestly explains an important behavioral caveat about list/get differences. Every sentence contributes value.

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 simple single-get tool with rich schema descriptions and safety annotations, the description covers the key operational concern (representation differences between list and get). It does not enumerate return fields, but no output schema is provided and the caveat about field differences gives the agent enough context to use the result appropriately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter (id, companyName, connectionRef) already has a clear description in the input schema. The tool description adds no additional parameter meaning beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the operation with a specific verb ('Gets one BRC quote by id'), identifies the resource (quote), and distinguishes it from list/create/update siblings. It is immediately obvious what this tool does and how it differs from related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving a single quote by id, and the caveat about list/get field differences provides practical context for interpreting results. However, it does not explicitly state when to prefer this tool over alternatives like brc_list_quotes or brc_get_customer_quotes, nor does it mention any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_get_sales_credit_noteB
Read-only
Inspect

Gets one BRC sales credit note by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSales credit note id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, so the safe-read behavior is covered. The description adds little behavioral context beyond those annotations — no mention of not-found behavior, return shape, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is six words and front-loads the action and resource. There is no fluff or redundant restatement of the schema.

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 simple single-resource read tool, the description is adequate: the schema fully documents all parameters, and annotations cover safety. It is missing explicit output/error context, but the simplicity of the action keeps the overall gap small.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents each parameter clearly, including the special connectionRef behavior. The description's 'by id' adds no new information beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Gets'), a concrete resource ('BRC sales credit note'), and a clear selection method ('by id'). This distinguishes it from sibling tools like brc_list_sales_credit_notes and brc_batch_sales_credit_notes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives. It implies use when you have an id, but it does not mention list/batch tools for multiple notes or suggest when another getter might be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_get_sales_entryA
Read-only
Inspect

Gets one BRC sales entry by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSales entry id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint and destructiveHint annotations already establish that this is a safe read operation, and the description aligns with that. The description adds minimal behavioral context beyond what annotations provide, such as the single-record scope, but does not describe error behavior, return content, or any access prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, grammatically complete sentence that front-loads the action and resource. There is zero filler or redundancy, and the description is easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple single-record getter with rich parameter documentation in the schema and annotations covering safety. The description is sufficient for basic selection, though a brief note about expected behavior when the id does not exist would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (id, companyName, connectionRef) are already documented. The description's 'by id' phrase reinforces the role of the id parameter but adds no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Gets'), names the exact resource ('BRC sales entry'), and specifies the lookup criterion ('by id'). This distinguishes it from list-style siblings like brc_list_sales_entries and other get_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for retrieving a single existing sales entry by its id, but it provides no explicit guidance on when to prefer this over brc_list_sales_entries or other related getters. No exclusions or alternative tool mentions are present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_get_sales_invoiceB
Read-only
Inspect

Gets one BRC sales invoice by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSales invoice id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds no new behavioral details (e.g., authentication, rate limits, or side effects). It is consistent with annotations, and the detailed connectionRef parameter schema complements transparency, but the description itself does not go beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, grammatically correct sentence with no unnecessary words. It directly states the action and object, front-loading the key information effectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of a get-by-id operation with read-only annotations and no output schema, the description is adequately complete. It could mention return format, but that is often implied; the schema and annotations cover the remaining context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter clearly explained, including a comprehensive note on connectionRef. The tool description adds no parameter-specific semantics, but the baseline of 3 applies due to high schema coverage and self-explanatory parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Gets one BRC sales invoice by id' uses a specific verb ('Gets'), identifies the resource ('BRC sales invoice'), and the scope ('one... by id'). It clearly differentiates from list or batch operations, though it doesn't elaborate beyond the basic retrieval function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives like brc_list_sales_invoices or brc_get_sales_entry. There are no when-to-use, when-not-to-use, or alternative mentions, leaving the selection to be inferred from the name and simple retrieval purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_get_sales_repB
Read-only
Inspect

Gets one BRC sales rep by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSales rep id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds only the trivial 'one...by id' selection behavior and no further context such as not-found behavior, response format, or connection requirements. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. Every word carries meaning, and it is easy to scan and parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple read-only getter, and the schema plus annotations cover most operational details. However, with no output schema, the description does not hint at the return shape or behavior when the id is not found, leaving some ambiguity for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema fully documents id, companyName, and connectionRef, including the detailed connectionRef reuse guidance. The description's 'by id' adds little beyond the id property description, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses the specific verb 'Gets,' names the resource 'BRC sales rep,' and specifies retrieval by 'id.' This clearly distinguishes it from sibling tools like brc_list_sales_reps and brc_batch_sales_reps.

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 guidance is given on when to use this tool versus brc_list_sales_reps, brc_batch_sales_reps, or other sales-rep-related siblings. 'By id' implies a known id is needed, but there are no explicit usage conditions, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_get_supplierA
Read-only
Inspect

Gets one BRC supplier by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSupplier id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description aligns with the readOnlyHint annotation but does not disclose potential errors, rate limits, or data freshness, leaving transparency thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no redundancy, achieving high conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of a get-by-id operation, the description sufficiently indicates the return of a supplier object; no output schema exists, so no return details are needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter details, but the input schema already provides comprehensive descriptions for all parameters, so the baseline is acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (gets), the resource (BRC supplier), and the method (by id), making it unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly mention when to use this tool versus list or update tools, nor does it mention prerequisites like the connectionRef and companyName, so guidance is limited.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_get_supplier_opening_balanceB
Read-only
Inspect

Gets a supplier's opening balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesSupplier item id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'Gets' is consistent. However, the description adds no extra behavioral context such as return format, error handling, or what 'opening balance' means (e.g., as of a specific date).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no unnecessary words. It is appropriately concise for a simple getter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter with full schema coverage and clear annotations, the description is adequate but minimal. It doesn't explain the meaning of 'opening balance', distinguish from brc_list_supplier_op_bal_trans, or indicate return value (especially since no output schema is provided).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes all three parameters, including detailed descriptions for itemId, companyName, and connectionRef. The description contributes no parameter information, so the schema carries the full burden, which aligns with the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Gets') and a clear resource ('supplier's opening balance'), making the tool's purpose immediately understandable. It distinguishes from siblings like brc_get_customer_opening_balance and brc_get_supplier, though it doesn't explicitly contrast with brc_list_supplier_op_bal_trans.

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 guidance is provided on when to use this tool versus alternatives such as brc_list_supplier_op_bal_trans or brc_get_supplier. The description simply states the function without any context, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_grouped_nominal_accounts_reportA
Read-only
Inspect

Creates a grouped nominal accounts report from GET /v1/nominalAccounts, grouping by account group/type fields when available. Month 1–Month 12 nominal figures are period movements for each financial month, not balances. Running balance = opening balance + cumulative monthly movements. Do not describe individual monthly movement values as monthly balances. If the user asks for balances over time, calculate them from opening balance plus cumulative movements, or explain that only movements are available.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even though readOnlyHint=true is already provided, the description adds substantial behavioral context beyond it: it warns that month figures are period movements, supplies the running-balance formula (opening balance + cumulative movements), warns against describing monthly values as balances, and acknowledges the 'when available' limitation on grouping fields. These are non-obvious behaviors that annotations alone do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact sentences, each earning its place: purpose and data source, core semantic caveat, running-balance definition, and handling guidance for balance queries. It is appropriately sized for the semantic pitfalls it prevents and is front-loaded with the most important information first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema, the description covers the key tricky semantics: the movement-based monthly figures, running-balance computation, and how to handle a user's request for balance over time. It could be slightly more explicit about the output's layout or which group/type fields appear, but the critical interpretation hazards with the report are all addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is complete at 100%: companyName is illustrated with an example, and connectionRef has an extensive explanation about session-id rotation, reuse, and what it is not. The description adds no parameter information beyond the schema — which is fine, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names the specific deliverable ('Creates a grouped nominal accounts report'), the concrete data source ('GET /v1/nominalAccounts'), and the distinguishing behavior ('grouping by account group/type fields when available'). This clearly differentiates it from siblings like brc_list_nominal_accounts (a flat listing) and brc_get_nominal_account_ledger_by_id (a single-account ledger).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives strong contextual usage guidance, especially the pivotal instruction that Month 1–12 figures are period movements rather than balances and the instruction to calculate running balances or explain that only movements are available. However, it stops short of explicitly naming when the user should use this report instead of sibling alternative tools like brc_list_nominal_accounts or brc_multi_company_nom_ac_report.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_accountsC
Read-only
Inspect

Lists BRC accounts.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds no extra behavioral context. It does not mention that the tool is safe to call repeatedly, nor does it describe any side effects or limitations 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise ('Lists BRC accounts.'), but it is under-specified and lacks structure. While it avoids redundancy, it does not earn its place by adding explanatory value, so it is not ideal despite its brevity.

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?

Given the tool has 8 parameters, no output schema, and the presence of many similar list tools, the description is severely incomplete. It does not define what an account is, what the list returns, or how to use the parameters effectively, making it inadequate for an agent to select and invoke correctly.

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?

Schema coverage is 50%, with descriptions for filter, orderBy, companyName, and connectionRef. The tool description adds no parameter context, failing to explain what 'BRC accounts' means or how parameters like top, page, skip, and pageSize affect the results. It does not compensate for the undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Lists') and a resource ('BRC accounts'), but 'accounts' is ambiguous given the presence of sibling tools like brc_list_nominal_accounts and brc_list_bank_accounts. It does not differentiate from other list tools, making the purpose somewhat vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus the many sibling list tools. There is no mention of filters, pagination, or prerequisites like company connection, leaving the agent without context on appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_accrualsA
Read-only
Inspect

Returns a list of the company's Accruals. Supports optional OData filtering by entryDate. Supports optional ordering by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoOptional page size.
skipNoOptional number of records to skip.
filterNoOptional OData filter. Filtering is allowed by entryDate, for example: entryDate ge 2024-03-01T00:00:00.
orderByNoOptional OData order by. Ordering is allowed by id, for example: id desc.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not contradict the read-only and non-destructive annotations, but it adds minimal behavioral context beyond the annotations. It does not mention pagination behavior, error handling, or rate limits, which are not covered by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct, consisting of three short sentences that convey the core functionality and key capabilities without any unnecessary information. It is well-structured and easy to read.

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 list operation, the description is complete enough: it states the return type, mentions optional filtering and ordering, and implies pagination via the parameter names. It does not need to detail the output schema since none is provided, and the parameters are well-documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool description adds meaning to the filter and orderBy parameters by specifying that filtering is allowed by entryDate and ordering by id. This goes beyond the generic schema descriptions, though the schema already provides detailed descriptions for each parameter, including pagination and connection handling.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool returns a list of accruals for the company, using the verb 'Returns' and specifying the resource (Accruals). It distinguishes itself from create/update/delete operations and other list tools by focusing solely on listing accruals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage guidance by mentioning optional OData filtering by entryDate and ordering by id, which helps users construct queries. However, it does not explicitly state when not to use this tool or compare it to alternative list methods, though no direct alternative exists for listing accruals.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_allocated_transactionsA
Read-only
Inspect

Returns transactions already allocated from the specified sender book transaction. Use this to review existing allocations before reversing/deleting one. Requires bookTranId.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookTranIdYesBook transaction id to allocate from, for example 1001.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the scoping detail that results are tied to a sender book transaction, but it does not disclose return formatting, pagination, or edge-case behavior. This is acceptable for a simple read-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the core purpose and followed by a practical use hint. There is no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list operation with full schema coverage and clear annotations, this description provides enough context to use the tool correctly. The absence of an output schema is acceptable because the purpose and input are clearly defined, though return structure is not described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% coverage, with descriptions for bookTranId, companyName, and connectionRef. The description only restates that bookTranId is required, which adds no extra semantic meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Returns') and a specific resource ('transactions already allocated from the specified sender book transaction'), which clearly explains what the tool does. It also distinguishes itself from general list tools by focusing on allocations from a sender book transaction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: 'Use this to review existing allocations before reversing/deleting one.' This provides clear context and a practical trigger for invocation, though it does not name alternative tools explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_allocation_resolversA
Read-only
Inspect

Returns transactions eligible for allocation from the specified sender book transaction. Use this before updating allocations so the user can see which receiver transactions are available. Requires bookTranId.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookTranIdYesBook transaction id to allocate from, for example 1001.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe-read nature is covered. The description adds workflow placement and states bookTranId is required, but it doesn't discuss return details, pagination, or eligibility conditions. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded. It states the core function in the first sentence and the relevant workflow in the second, with no filler or repetition.

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?

There is no output schema, but the description adequately indicates what is returned: receiver transactions available for allocation. Combined with rich parameter descriptions and annotations, this is reasonably complete. A bit more explanation about what 'eligible for allocation' means would make it even stronger.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all three parameters thoroughly, including example values for bookTranId and companyName, and clear guidance for connectionRef. The description adds only that bookTranId identifies the sender transaction, which is mild additional context but not a necessity given 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool does: it returns transactions eligible for allocation from a sender book transaction. It also gives workflow context ('Use this before updating allocations'), which differentiates it from sibling tools that list allocated transactions or update allocations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use the tool: before updating allocations, so the user can see available receiver transactions. It does not provide explicit exclusions or name alternatives, but the usage context is clear enough for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_analysis_categoriesA
Read-only
Inspect

Lists BRC analysis categories. For sales invoice and sales credit note product lines, choose a Sales analysis category that matches the income type. Do not default to a CR/customer category such as CR01 Customer — CR categories are customer control categories, not sales categories. If no clearly correct Sales category stands out, ask the user instead of picking the first plausible-looking one.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful domain behavior: the returned category list includes CR/customer categories that are not appropriate for sales income, and selection requires judgment. It does not mention pagination or return shape, but the read-only annotation and list nature reduce the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no filler. The first sentence states the core purpose, and the next two deliver high-value selection rules and a concrete example. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list endpoint with standard pagination parameters and a clear purpose, the description supplies the necessary selection context, boundary cases, and a user-ask fallback. It could briefly clarify the shape of returned items or filtering behavior, but the current guidance is sufficient for correct invocation and category choice.

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?

Schema coverage is 50%; companyName and connectionRef are well described, filter/orderBy have generic descriptions, but top, page, skip, and pageSize are undocumented in the schema. The description adds no parameter-level detail at all, so it does not compensate for the missing pagination parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Lists BRC analysis categories', a clear verb+resource statement, and then immediately ties the tool's purpose to a concrete decision context: choosing a Sales analysis category for sales invoice and sales credit note product lines. This distinguishes it from sibling list tools and makes its intended role unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use the tool (for sales invoice and sales credit note product lines) and gives a strong exclusion: do not default to a CR/customer category such as CR01 Customer. It also provides a fallback behavior—ask the user when no clearly correct Sales category stands out—which is unusually actionable guidance for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_audit_logA
Read-only
Inspect

Show a record of data changes (create, update, delete, batch, quote close/reopen, emails, etc.) made through this Red MCP server session. Read-only API calls are not logged. Use this as the source of truth for "what did I do today in Red?" style questions. Show only this simple activity summary in chat. After showing it, also prepare a downloadable support diagnostic with brc_generate_support_report — do not paste technical diagnostic fields into the chat summary. When the user asks what they did "in Red" (or in Big Red Cloud), answer only from Red/BRC activity for the current Red session and for companies currently connected in this session: the Red/BRC audit log, BRC session actions, and connector-visible BRC activity. Never include activity from other MCP sessions, other users, other connections, or companies that are not currently connected (including ones that were disconnected or cleared). For "what did I do today/yesterday/last week in Red", only summarise current-session audit entries for currently connected companies; if older entries exist outside this scope, ignore them completely rather than reporting them. Do not include unrelated Claude chat history such as MCP debugging, Mistral debugging, coding work, or other non-BRC conversations unless the user explicitly asks for broader chat history.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
includeTechnicalDetailsNoOnly set this to true if the user asks for technical details. Sensitive values are still redacted.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description adds valuable behavioral context: read-only API calls are not logged, only the current Red MCP session and currently connected companies are in scope, and older/external activity must be ignored. It also tells the agent to show only a simple summary and not paste technical diagnostic fields, which is useful behavioral guidance not inferable from the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average, but the extra length is justified by important scope restrictions and workflow instructions. It is front-loaded with the core purpose and then details exceptions. Some repetition about current sessions and connected companies could be tightened without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even though there is no output schema, the description makes the general return purpose clear: a simple activity summary of BRC data changes. It does not describe the exact shape of the audit entries or pagination, but it gives enough contextual detail for successful use, including scope limitations and how to handle the result in chat.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not need to restate the parameter details, and the schema already explains connectionRef and includeTechnicalDetails well. However, the description itself adds no extra parameter-level semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a specific verb and resource: 'Show a record of data changes (create, update, delete, batch, quote close/reopen, emails, etc.) made through this Red MCP server session.' It unambiguously identifies the tool as an audit log reader and distinguishes it from siblings like brc_clear_audit_log by clarifying it only lists the log rather than clearing or generating support reports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: it is 'the source of truth for "what did I do today in Red?" style questions.' It also provides clear exclusions and alternatives, such as not using it for unrelated chat history, and instructs the agent to pair it with brc_generate_support_report for a downloadable diagnostic.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_bank_accountsB
Read-only
Inspect

Lists BRC bank accounts.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description 'Lists' is consistent with the readOnlyHint annotation. No additional behavioral details (e.g., side effects, authentication) are provided, but the annotation already covers safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 8 parameters and no output schema, yet the description only states the basic action. Missing details on pagination semantics, return format, or any required parameters (e.g., companyName is required but not explained) leave the description incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides descriptions for half the parameters (filter, orderBy, companyName, connectionRef) but not for pagination parameters (top, page, skip, pageSize). The tool description adds no parameter explanations, so it does not improve on schema coverage, but since coverage is exactly 50%, the baseline is maintained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists bank accounts (verb+resource). It does not explicitly differentiate from sibling list tools like brc_list_accounts or brc_get_bank_account, but the name 'list_bank_accounts' is self-explanatory.

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 guidance on when to use this tool versus other list or get operations. The description lacks context about filtering, pagination, or appropriate scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_book_tran_typesC
Read-only
Inspect

Lists BRC book transaction types.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description aligns with the readOnlyHint annotation (true) and does not contradict it, but it adds no behavioral detail beyond the annotation. It does not disclose any side effects, pagination behavior, or other runtime aspects, so it offers minimal transparency beyond what annotations already provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no unnecessary words. It is highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema provided, and the description does not indicate what the tool returns (e.g., a list, pagination details, or response structure). It also does not mention any context like required company settings or connection prerequisites, making it incomplete for an agent to fully understand the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides descriptions for only 4 of 8 parameters (companyName, connectionRef, filter, orderBy), leaving top, page, skip, and pageSize without descriptions. The tool description does not compensate by explaining these parameters or their roles, so parameter semantics remain largely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Lists') and resource ('BRC book transaction types'), which is a specific verb+resource combination. It is distinct from other list tools in the sibling set, though it could benefit from a bit more context about what book transaction types are.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus other list tools. It does not mention any specific conditions or scenarios, leaving the agent to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_cash_paymentsB
Read-only
Inspect

Lists BRC cash payments.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and destructiveHint=false, so the agent knows it's a safe read operation. The description adds no additional behavioral context, such as return pagination or default ordering, but the annotations already cover the safety profile. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short sentence with no extraneous words. It is appropriately front-loaded and efficient for a simple list tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 8 parameters and no output schema, the description is too sparse. It lacks details about pagination behavior, filtering options, or return format. While the schema provides some parameter definitions, the description does not clarify how to effectively use the list, such as default page size or how to iterate. This is a gap for a listing endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%, meaning half the parameters (top, page, skip, filter, orderBy, pageSize, connectionRef) are not described in the input schema. However, the schema does describe companyName and the OData parameters. The description itself adds no parameter information, so the burden falls on the schema; baseline is 3 due to moderate coverage. It does not compensate for missing descriptions of pagination parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description "Lists BRC cash payments." clearly states the action (list) and the resource (BRC cash payments), distinguishing it from sibling tools like brc_get_cash_payment (singular get) and brc_list_cash_receipts. It is unambiguous, though it does not explicitly differentiate from other list tools beyond the resource name.

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 guidance is provided on when to use this tool versus alternatives. There is no mention of filters, pagination, or comparison with brc_get_cash_payment or brc_list_cash_receipts. The description only states the tool's action without context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_cash_receiptsA
Read-only
Inspect

Lists BRC cash receipts.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true and destructiveHint=false, which appropriately signal a safe read operation. The description adds little beyond that, but nothing contradicts. It doesn't disclose pagination behavior or that results might be partial, which is a minor gap given the read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, zero fluff, front-loaded with the action. Very concise and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 8 parameters and no output schema, but it's a simple list operation. The description is minimal but adequate for a basic list; however, it could benefit from noting pagination defaults or that it lists all receipts, which would help the agent. Given the schema covers half the params and annotations declare read-only, the description is acceptable but not rich.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%, so about half the parameters are documented (filter, orderBy, companyName, connectionRef). The description itself provides no parameter details. Baseline 3 is appropriate because the schema partly covers, but the description does not compensate for the remaining undocumented parameters like top, page, skip, pageSize.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Lists BRC cash receipts' clearly identifies the action (list) and resource (BRC cash receipts), making it distinct from siblings like brc_list_cash_payments or brc_get_cash_receipt. It could be improved by noting the scope (e.g., all receipts vs. filtered), but it's a clear and specific purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies listing cash receipts but provides no guidance on when to use this tool over siblings like brc_batch_cash_receipts or brc_get_cash_receipt. Minimal usage context is provided, with no explicit alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_category_typesC
Read-only
Inspect

Lists BRC category types.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral detail beyond the read-only action implied by 'Lists.' Annotations already provide readOnlyHint=true and destructiveHint=false, and the text does not disclose pagination behavior, output format, or any side effects. It does not contradict the annotations, but it also contributes no extra transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundant detail. It is efficient, though it borders on under-specification because it omits helpful context that would make the tool easier to select.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters, no output schema, and a crowded sibling list of brc_list_* tools, the one-line description is insufficient for confident selection and invocation. It does not explain output contents, pagination behavior, or relationship to other category-type list tools; the important connectionRef instructions live only in the schema, not in the description.

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 description adds no meaning about any of the 8 parameters. The schema documents companyName, connectionRef, filter, and orderBy, but the pagination parameters top, page, skip, and pageSize are only represented by names and constraints. With 50% schema coverage and no parameter clarification in the description, the semantics are only partially supported.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the core operation with a specific verb and resource: 'Lists BRC category types.' It is clear what the tool does on the surface, but it does not explain what a category type is or explicitly distinguish itself from sibling tools like brc_list_analysis_categories or brc_list_vat_categories.

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?

There is no guidance about when to use this tool versus the many other list-type tools. It does not mention context requirements, exclusions, or alternatives, so an agent has little help choosing between this and related brc_list_* tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_company_contextsA
Read-only
Inspect

Show connected companies and check existing Red company connections. This tool is brc_list_company_contexts. Use this when the user asks which companies are connected, show connected companies, check existing Red company connections, list connected companies, or whether a company is already connected to Red. Lists company contexts currently connected in this MCP server session. Also use when the user asks how long the connection lasts, how much time is left, when companies disconnect, when the session expires, or what timezone the expiry is in. Present the result to the user with the customerMessage text, company names, and expiryMessage when connected. Answer duration and time-left questions using connectionDurationText, timeRemainingText, expiryTimeWithTimezoneText, expiryTimezoneName, expiryTimezoneAbbreviation, expiryUtcOffset, and expiryMessage from the response — do not say you do not know the current time or that you lack a live clock when timeRemainingText is present. Do not ask the user to check their device clock. Do not say local time on its own. Customer duration answers should explain how long the connection lasts, that a fresh secure link is needed after expiry, and that the one-time connection link itself cannot be reused. Do not mention authentication classifications, empty-result logic, connectionRef, rehydration, HTTP status codes, session bindings, or other internal diagnostics in customer answers. Do not show connectionRef, activeConnectionRef, redconn_ values, session IDs, or diagnostic metadata to normal users. Do not show raw ISO expiresAt or credentialType to normal users unless they specifically ask or dev mode is enabled. Connection credentials are never returned. If you have connectionRef from brc_confirm_company_connection, pass it silently on this call when the MCP client rotates session ids. An empty list with a working connectionRef means no companies are bound yet — not a reason to start a new connection if other tools already succeeded with the same connectionRef.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and destructiveHint=false, and the description does not contradict these. It adds substantial behavioral transparency beyond the annotations: credentials are never returned, diagnostic fields must stay hidden from users, expiry answers should come from specific response fields, and an empty result with a valid connectionRef means no companies are bound rather than an error.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with its core purpose and includes a long list of useful trigger phrases. However, it is verbose and mixes tool-selection guidance with detailed customer-answer instructions, repeated display restrictions, and redundant phrasing such as 'This tool is brc_list_company_contexts.' Structure could be improved by organizing the behavioral rules into clearer sections.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema, the description carries the full burden of describing the response semantics, and it does so thoroughly. It names the key response fields, explains what to display and what to hide, covers empty-list behavior, connection-reference reuse, expiry/ duration questions, and the no-credentials guarantee. This is sufficient for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, connectionRef, is already fully documented in the input schema with 100% schema coverage, so the description does not need to restate it. However, the tool description adds a little extra operational nuance by saying connectionRef should be passed silently during session-ID rotation and that reusing the same connectionRef after an empty result is correct behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action and resource: 'Show connected companies and check existing Red company connections.' It also lists user-intent trigger phrases such as 'list connected companies' and 'whether a company is already connected to Red,' which makes the purpose unmistakable and distinguishes it from connection-starting tools like brc_start_company_connection and brc_confirm_company_connection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use the tool: when the user asks about connected companies, existing connections, connection duration, expiry, or timezone. It also gives meaningful exclusion guidance: an empty list with a valid connectionRef does not mean a new connection should be started, and it instructs the agent to reuse the connectionRef from brc_confirm_company_connection instead of creating a separate workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_company_settingsB
Read-only
Inspect

Lists BRC company settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and destructiveHint=false, which the description does not contradict. The description adds minimal behavioral context beyond 'lists', but since annotations already cover the safety profile, the description doesn't need to. The connectionRef parameter is well-documented, but that's part of the schema description, not the main description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The main description is a single efficient sentence with no wasted words. The parameter schema carries the descriptive weight in a structured manner. The only mark against is that a bit more detail in the description could help disambiguate from related settings listers without bloating it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list endpoint with 8 parameters including complex pagination and OData filters, the description is adequate but thin. It lacks expectations about default page sizes, whether response is paged, or how settings differ from get_* settings siblings. The absence of an output schema means the description should compensate by hinting at the return shape, which it doesn't. However, the annotations confirm this is a read-only operation, and the connectionRef documentation shows awareness of common usage patterns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (4 out of 8 params described). The description itself adds no parameter detail, but the schema covers the key parameter (companyName) with a helpful example. The connectionRef param has extensive guidance on reuse semantics, which is valuable. However, pagination params (top, skip, pageSize) are left entirely to the schema types without semantic context on defaults or interaction.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource (Lists BRC company settings), which is specific enough to distinguish it from sibling tools like brc_list_accounts. However, it doesn't elaborate on what 'settings' includes or how it differs from similar list tools like brc_get_company_processing_settings, leaving slight ambiguity about its exact scope.

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 guidance is given on when to use this tool versus alternatives like brc_get_company_processing_settings or brc_get_company_reference_settings. The description implies it lists settings but provides no context on prerequisites, exclusions, or when a sibling would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_customer_account_transA
Read-only
Inspect

Gets a customer's account transactions, including historical transactions. Returned transactions can contain bookTranId and bookTranTypeId. When acting on a returned transaction, do not choose a CRUD endpoint from bookTypeDesc alone. Resolve bookTranTypeId against the company's /v1/bookTranTypes result first, then use the matching Red transaction tool. Do not assume bookTranId is valid for a different document endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesCustomer item id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral detail beyond the readOnlyHint annotation by explaining that returned transactions include bookTranId and bookTranTypeId and that these need resolution. This informs the agent about the nature of the output and potential pitfalls, supplementing the annotation without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is composed of three sentences: purpose, output characteristics, and usage guidance. It is logically structured and not overly verbose, though the third sentence is lengthy. It strikes a balance between completeness and brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, highlights key output fields, and provides crucial guidance for subsequent actions. For a simple read-only list operation, it addresses potential misuse and resolution needs, making it sufficiently complete for the agent to use effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool description does not elaborate on parameters beyond what is already provided in the schema. Since the schema descriptions are thorough (e.g., explaining connectionRef's purpose and reuse), the description does not add extra value here. Baseline of 3 is appropriate given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Gets a customer's account transactions, including historical transactions.' It uniquely identifies this as a listing operation for customer account transactions, distinguishing it from other list tools like brc_list_sales or brc_list_purchases.

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?

While it doesn't explicitly compare with alternative tools, it provides critical usage guidance for handling the returned data, such as resolving bookTranTypeId against /v1/bookTranTypes before using a transaction tool, and warns against assuming bookTranId validity. This helps the agent use the tool correctly, though it could be more explicit about when to choose this tool over others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_customer_op_bal_transB
Read-only
Inspect

Gets a customer's opening balance transaction list.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesCustomer item id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral context beyond what annotations already state. Annotations declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, but the description merely repeats the operation without adding details like pagination, return format, or prerequisites. It neither contradicts annotations nor enriches them, so it falls short of the added-value bar.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the key action and resource. It contains zero fluff and is immediately scannable.

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 simple list operation with readOnly annotations and no output schema, the description is adequate. It states exactly what is returned (opening balance transaction list) and relies on the schema for parameter details. However, it does not differentiate from similar list tools or mention any scoping filters, but the tool's name and purpose are clear enough for most agents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All parameters are fully described in the schema (100% coverage). The description adds no extra meaning to the parameters—it does not explain how they interact or provide usage examples. Per the baseline for high schema coverage, this scores 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Gets a customer's opening balance transaction list' clearly states the verb and resource. It distinguishes from related tools like brc_get_customer_opening_balance (which likely returns a single balance) and brc_list_customer_account_trans (which lists all customer account transactions) by specifying 'opening balance transaction list'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention any exclusions or name alternative tools, leaving the agent to infer usage from the name alone. The purpose clarity gives some implied context, but explicit usage guidance is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_customer_quotesB
Read-only
Inspect

Gets quotes for a specific customer.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesCustomer item id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to restate that it is a read operation. However, the description adds no extra behavioral context such as whether pagination is used, what filtering is applied, or any connection requirements. It merely echoes the tool's name, providing no additional transparency beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no unnecessary words. It is appropriately concise and front-loaded, clearly stating the action and scope. Every word earns its place, and there is no bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with only three parameters and no output schema, the description provides the minimum viable information. It explains what is being listed and the filter context (a specific customer) but does not mention any limitations, such as whether quotes are restricted to certain statuses or date ranges. The availability of good annotations compensates somewhat, but the description could have offered more context about the return value or usage nuance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and schema descriptions already explain the parameters (e.g., companyName, itemId, connectionRef). The tool description's phrase 'for a specific customer' weakly maps to the customer/company parameters but adds no new meaning. Since schema coverage is high, a baseline of 3 is appropriate, but no further semantic value is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb+resource combination ('Gets quotes') and specifies the scope ('for a specific customer'), effectively conveying the tool's basic function. However, it does not differentiate this tool from siblings like brc_list_quotes, which could list all quotes, or brc_get_quote, which might retrieve a single record. The purpose is clear but not distinguished from alternatives.

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?

There is no guidance on when to use this tool versus alternatives such as brc_list_quotes or other list tools. No contextual hints about prerequisites, intended use cases, or exclusions are provided. The description is silent on usage scenarios, forcing the agent to infer from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_customersC
Read-only
Inspect

Lists BRC customers.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral information beyond what annotations already indicate. It does not mention pagination, filtering capabilities, or return structure. Annotations declare readOnlyHint=true and destructiveHint=false, so there is no contradiction, but the description provides no additional transparency.

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?

While the description is short and to the point, it is under-specified. It reads as a simple restatement of the tool's name and lacks essential details, making it more of a placeholder than a helpful description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 8 parameters, one required, and no output schema. The description fails to explain the required companyName, the role of connectionRef, or the pagination and filter options. An agent would have to rely solely on the schema, which is only partially described.

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 description adds no parameter semantics. Some parameters have schema descriptions (companyName, filter, orderBy, connectionRef), but others like top, page, skip, and pageSize lack explanation. With schema coverage at 50%, the description does not compensate for the undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool lists BRC customers, which is clear at a basic level. However, it lacks specificity about scope (e.g., whether it includes dormant customers) and does not differentiate from the sibling tool brc_list_customers_without_dormant. It is not a tautology but is minimal.

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 guidance is given on when to use this tool versus alternatives like brc_list_customers_without_dormant or brc_get_customer. There is no mention of prerequisites, such as the required companyName parameter, or any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_customers_without_dormantB
Read-only
Inspect

Lists BRC customers without dormant records.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is consistent with the annotations (readOnlyHint=true, destructiveHint=false, openWorldHint=false) and adds the filtering behavior of excluding dormant records. However, it does not disclose additional behavioral context such as pagination behavior, required connection semantics, or edge cases around the 'dormant' definition. With annotations already covering the safety profile, this is acceptable but not enriched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of six words, fully front-loaded with the key action and target. Every word contributes meaning, and there is no filler or redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters and no output schema, the description leaves significant gaps: the agent cannot anticipate the return format, pagination details, or how this tool relates to brc_list_customers. The description is too terse to fully support correct invocation in complex scenarios. Additional context about response shape and selection criteria is needed.

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?

Schema description coverage is 50%, and the description itself provides no parameter-level information. Parameters like top, page, skip, and pageSize are undocumented in both schema and description, leaving the agent to infer their meaning. The description does not compensate for this coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Lists'), names the resource ('BRC customers'), and adds a scope qualifier ('without dormant records'), making it clear this is a filtered list operation. The qualifier distinguishes it from the sibling tool brc_list_customers, which presumably returns all customers. This meets the bar for a specific verb+resource+scope description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to choose this tool over siblings like brc_list_customers or other list tools. There are no stated alternatives, exclusions, or contextual hints. Usage is only implied by the tool's name, not explained.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_nominal_accountsA
Read-only
Inspect

Lists BRC nominal accounts. Month 1–Month 12 nominal figures are period movements for each financial month, not balances. Running balance = opening balance + cumulative monthly movements. Do not describe individual monthly movement values as monthly balances. If the user asks for balances over time, calculate them from opening balance plus cumulative movements, or explain that only movements are available.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and non-destructive. The description goes beyond by exposing a key behavioral nuance: the monthly figures are period movements, not balances. It includes the running balance formula and warns against mislabeling movements as balances. This is valuable contextual disclosure not present 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tightly written: one clear opening sentence, followed by two sentences that explain the critical data semantics and provide actionable guidance. Every sentence earns its place, with no fluff or repetition.

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 list tool with a non-obvious data interpretation, the description addresses the most important contextual need: distinguishing movements from balances and explaining how to calculate running balance. It does not describe the exact response structure or pagination behavior, but the critical pitfalls are well covered, especially since no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not add any parameter-specific semantics. The schema covers 50% of parameters with descriptions (filter, orderBy, companyName, connectionRef), while the remaining pagination parameters (top, page, skip, pageSize) are left undocumented here. Since the missing parameters are fairly inferable from their names and the schema provides partial coverage, the description's silence on parameters is acceptable but not compensating.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Lists BRC nominal accounts' – a specific verb and resource. It also adds crucial semantic detail about monthly figures being movements rather than balances. However, it does not explicitly differentiate from sibling tools like brc_list_accounts or brc_grouped_nominal_accounts_report.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on how to handle user queries about balances: calculate from opening balance plus cumulative movements or explain that only movements are available. This gives clear context on when to use this tool's output. It does not, however, name alternative tools or when to prefer them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_nominal_journal_batchesA
Read-only
Inspect

Returns a list of the company's Nominal Journal Batches. Supports optional OData filtering by entryDate and ordering by id. Use this before updating or deleting a nominal journal batch so the user can identify the correct id and timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoOptional page size.
skipNoOptional number of records to skip.
filterNoOptional OData filter. Filtering is allowed by entryDate, for example: entryDate ge 2024-01-01T00:00:00
orderByNoOptional OData order by. Ordering is allowed by id, for example: id desc.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that the tool only lists data and supports OData filtering by entryDate and ordering by id, reinforcing a safe, non-mutating behavior without side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states purpose, second gives the usage scenario. Every sentence earns its place with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 parameters fully documented in schema and no output schema, the description covers purpose, capabilities, and a concrete use-case. It implies list contents include id and timestamp, but minor details like pagination behavior are left to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with detailed descriptions for top, skip, filter, orderBy, companyName, and connectionRef. The description mentions filtering and ordering but adds no new parameter 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with a specific verb+resource: 'Returns a list of the company's Nominal Journal Batches.' This clearly distinguishes it from sibling get/update/delete tools and adds filtering/ordering capabilities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit use-case: 'Use this before updating or deleting a nominal journal batch so the user can identify the correct id and timestamp.' This gives clear context for when to choose this tool, though it does not name alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_owner_type_groupsC
Read-only
Inspect

Lists BRC owner type groups.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true and destructiveHint=false, so the agent knows it is a safe read operation. However, the description adds no additional behavioral context beyond this, such as what data is returned, pagination behavior, or any side effects. With annotations covering the safety profile, the description still fails to disclose the nature of 'owner type groups' (e.g., whether they are hierarchical, what fields are included).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no fluff, front-loading the core purpose. It is efficient, though it could arguably add a bit more context without becoming wordy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a list/read operation with no output schema and minimal description. The complexity is low (8 params, 1 required), but the description does not compensate for the missing output schema or clarify the semantics of the response. For a tool that lists 'owner type groups', the agent is left without understanding what those groups contain or how they relate to other entities, making the description incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (only 'filter' and 'orderBy' are described, plus companyName and connectionRef have descriptions). The description of the tool does not add any parameter semantics beyond what the schema already provides. The key parameters like 'top', 'page', 'skip', and 'pageSize' are self-explanatory from their names, but the description does not clarify how they interrelate (e.g., whether page and skip are mutually exclusive). Since coverage is moderate and the description adds nothing new, a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Lists BRC owner type groups' is a clear verb+resource statement. However, it does not distinguish itself from the closely related sibling 'brc_list_owner_types', which likely serves a similar purpose. The agent might struggle to choose between these two tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. Specifically, the difference between 'owner type groups' and 'owner types' (the sibling tool) is unexplained. The description provides no context on typical use cases or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_owner_typesC
Read-only
Inspect

Lists BRC owner types.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'Lists' matches the read-only behavior. However, the description adds no extra behavioral context such as pagination behavior, data completeness, or any caveats about the response, relying fully on annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no wasted words, but it is under-specified rather than helpfully concise. It provides only a nominal overview, delivering slightly more than the tool name but little else.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, no output schema, and a rich set of sibling tools, the description is insufficient. It does not explain return values, the meaning of owner types, the role of connectionRef, or the pagination expectations, making the tool's use ambiguous in a broader workflow.

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?

Schema description coverage is only 50%, and the description text mentions no parameters at all. The required companyName and pagination parameters (top, page, skip, pageSize) are left without any added explanation beyond the schema, so the description fails to compensate for the schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Lists BRC owner types' uses a specific verb and resource, clearly indicating the tool's function. It distinguishes from the sibling tool 'brc_list_owner_type_groups' by focusing on owner types themselves, though it does not explain what 'owner types' are.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like brc_list_owner_type_groups or other list tools. There are no exclusion criteria, use-case scenarios, or references to sibling tools, leaving the agent to guess.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_paymentsC
Read-only
Inspect

Lists BRC payments.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral detail beyond the annotations. While readOnlyHint:true is already declared, the description does not mention pagination, filtering, or that the result is a list. It does not contradict annotations, but it does not enhance transparency for operational expectations like response format or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise, but it is too terse and does not convey essential information. It earns its place only marginally; it could be expanded with a few words about scope or key parameters without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with eight parameters and no output schema, the description is inadequate. It does not explain what the response contains, how pagination works, or how filtering/ordering are applied. The lack of this context makes it incomplete for an agent to use effectively.

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?

Schema description coverage is 50% (only companyName, filter, orderBy, and connectionRef have descriptions). The tool description adds no information about parameters, leaving users to rely entirely on the schema. Since coverage is not high, the description should compensate, but it does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Lists BRC payments' provides a clear verb and resource, but it does not differentiate from sibling tools like brc_list_cash_payments, brc_list_sales, or brc_list_sales_invoices. 'BRC' is an unexplained acronym, leaving ambiguity about the specific entity type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. There is no mention of when to use this tool versus alternatives like brc_list_cash_payments or brc_get_payment, nor any indication of prerequisites such as the required companyName parameter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_prepaymentsA
Read-only
Inspect

Returns a list of the company's Prepayments. Supports optional OData filtering by entryDate. Supports optional ordering by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoOptional page size.
skipNoOptional number of records to skip.
filterNoOptional OData filter. Filtering is allowed by entryDate, for example: entryDate ge 2024-03-01T00:00:00.
orderByNoOptional OData order by. Ordering is allowed by id, for example: id desc.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds lightweight value by exposing filtering and ordering behavior, and these claims are fully consistent with the annotations — no contradiction. The description need not re-disclose read-only semantics since annotations handle that. The only shortfall is not disclosing default pagination behavior or maximum result size, but this is minor for a simple list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three crisp sentences cover purpose, scope, and capability constraints with zero wasted words. Every sentence earns its place: what it returns, what filtering is allowed, and what ordering is supported. This is a model of economy for a simple list operation — no padding, obvious fluff, or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list operation with no output schema, no nested objects, and 100% schema parameter documentation, the description plus schema together provide an agent with nearly everything needed to invoke this correctly. The connectionRef parameter's documentation is exemplary — it anticipates a real-world failure mode (session ID rotation causing unnecessary reconnections) and tells the agent exactly how to behave. The description could add default page-size behavior or note whether an unfiltered call returns all records, but these are minor gaps for an operation of this simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema carries the load — every parameter has a meaningful description with realistic examples ('entryDate ge 2024-03-01T00:00:00', 'id desc', 'YOUR-COMPANY-NAME'). The description's mention of filtering by entryDate and ordering by id is helpful as an at-a-glance summary but is largely redundant with the schema's filter and orderBy examples, which are actually more specific. The exceptional connectionRef documentation further enriches the schema beyond the description. Baseline 3 is appropriate since the description adds no unique parameter insights the schema doesn't already provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource pattern ('Returns a list of the company's Prepayments') with clear scope and capability constraints (filter by entryDate, order by id). However, it does not explicitly differentiate from closely related siblings like brc_list_payments, brc_list_accruals, or brc_get_prepayment — the differentiation relies on the naming convention rather than explicit statements.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states capabilities ('Supports optional OData filtering by entryDate') but offers no guidance on when to choose this tool over alternatives such as brc_get_prepayment for single records or brc_list_payments for general payments. No when-to-use, when-not-to-use, or exclusion scenarios are provided — the agent must infer usage context from the tool name and capabilities alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_productsC
Read-only
Inspect

Lists BRC products.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent with those. However, the description adds no behavioral detail beyond the operation name, such as pagination behavior, whether dormant products are included, or company/connection requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single sentence with no filler, so it is concise. But it is too sparse for an 8-parameter tool with many sibling list/get tools, and it does not provide any structured orientation for the agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 does not explain pagination, return content, or when to prefer this over brc_list_products_without_dormant. The schema fills in some gaps, but the overall tool documentation is insufficient for confident selection and invocation.

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 tool description says nothing about the 8 parameters. The schema describes companyName, filter, orderBy, and connectionRef, but top, page, skip, and pageSize are left to be inferred from their names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Lists BRC products." clearly states the operation and resource. However, it is effectively a restatement of the tool name and does not distinguish this listing from the sibling brc_list_products_without_dormant.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus brc_list_products_without_dormant, brc_get_product, or brc_batch_products. It also does not mention filtering, pagination intent, or any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_products_without_dormantB
Read-only
Inspect

Lists BRC products without dormant records.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to restate safety. It adds the 'without dormant records' filtering behavior, but does not explain what 'dormant' means or disclose pagination or response details, keeping this at a baseline level.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the main action and resource. It contains no wasted words and is maximally concise for the level of detail provided.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 does not explain return values, pagination behavior, or the meaning of 'dormant'. With eight parameters and partial schema coverage, this minimal description is insufficient for robust agent decision-making.

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?

Schema description coverage is 50%, so the description should compensate for undocumented parameters, but it does not. It adds no meaning about the required companyName or pagination parameters (top, page, skip, pageSize), leaving a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Lists' and the resource 'BRC products', with the qualifier 'without dormant records' differentiating it from sibling tools like brc_list_products. However, the term 'dormant records' is not explained, which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states what the tool returns but provides no explicit when-to-use guidance, exclusions, or alternatives. It does not explain how this tool differs from brc_list_products beyond the 'without dormant' qualifier, leaving usage entirely implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_product_typesC
Read-only
Inspect

Lists BRC product types.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description does not contradict them. However, the description adds no behavioral context, such as pagination behavior, output shape, or the need to pass connectionRef and companyName.

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 a single sentence with no fluff, but it is under-specified for a tool with 8 parameters and no output schema. Conciseness is achieved at the expense of necessary detail, making it more under-specification than effective conciseness.

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?

Given 8 parameters, no output schema, and a non-trivial connectionRef requirement, the one-sentence description is far from complete. It does not explain return values, pagination, company context, or how to use the tool correctly in a multi-step workflow.

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?

Schema description coverage is only 50%, and the tool description adds no parameter-level meaning. Parameters like top, page, skip, and pageSize are undocumented in both the schema and the description, so the agent must infer their semantics from names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Lists') and identifies the resource ('BRC product types'), making the core purpose clear. However, it does not differentiate from sibling tools like brc_list_products or brc_list_category_types beyond the resource name, so it doesn't earn a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention filtering, pagination, company context, or any exclusions, leaving the agent without selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_purchasesC
Read-only
Inspect

Lists BRC purchases.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint: true and destructiveHint: false, but the description adds no behavioral context beyond that. It does not disclose pagination behavior, default limits, data scoping, or any side effects, missing an opportunity to enrich the agent's understanding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, using only four words. It is free of fluff, though it sacrifices important clarifying details that could be included without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, no output schema) and the fact that it is a list operation, the description is grossly incomplete. It does not clarify whether all purchases are returned, how pagination works, or what data is included in the response, making it hard for the agent to use correctly without additional investigation.

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?

Schema coverage is only 50%, and the description adds no additional meaning to parameters like 'top', 'skip', or 'filter'. Without description support, the agent must rely on often ambiguous parameter names, and the uncommunicated pagination parameters are particularly unclear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists BRC purchases, using a specific verb and resource. However, it provides no scope or filtering context and does not differentiate from other list_* sibling tools, such as brc_list_sales or brc_list_purchases_with_conditions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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 versus alternatives. It does not mention required parameters, typical use cases, or any exclusions, leaving agents without direction on proper invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_quotesA
Read-only
Inspect

Lists BRC quotes. List and get may not return the same fields (for example note or analysis account codes); treat those as representation differences, not as create or update failures. Quote references are not necessarily unique — identify a quote by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds genuine value beyond these annotations by disclosing that list/get field representations differ (e.g., note, analysis account codes) and that quote references are not unique, requiring id-based identification. This is exactly the kind of non-obvious behavior that prevents costly agent mistakes. A point is dropped because it could mention response size, pagination behavior, or what fields ARE stable across calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, each earning its place: a one-line declaration of intent, followed by two high-impact caveats that prevent real-world integration bugs. Front-loaded, free of filler, and perfectly scoped for the reader.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list operation with robust annotations (readOnlyHint=true), the description covers the essential contract: list vs get differences and id-based identity. With no output schema, the representation caveat is especially important and appreciated. It would be a 5 if it briefly mentioned pagination or filtering expectations, but this is still a well-rounded description overall.

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?

With only 50% schema description coverage, the description offers no additional parameter clarification. It doesn't explain the difference between top/skip/page/pageSize, what filters are supported, or the nuances of companyName versus connectionRef. The pagination params (top, skip, page, pageSize) are left entirely to the schema, which provides no descriptions for them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'Lists BRC quotes' and meaningfully differentiates it from get/other operations by explaining representation differences and ID uniqueness — distinguishing it from brc_get_quote and brc_batch_quotes. It loses a point because it never explicitly distinguishes this general list from the similarly-named sibling brc_list_customer_quotes, and the 'identify by id' guidance would be even stronger with an explicit nod to these related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context: 'treat those as representation differences, not as create or update failures' signals the agent not to misuse the list output when comparing against get/create/update operations. However, no explicit when-to-use versus alternatives is provided, and the guidance is embedded rather than stated as a directive — a clear gap given the large sibling surface area.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_salesA
Read-only
Inspect

Lists combined BRC sales entries, sales invoices and sales credit notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds that the result combines three types of sales documents, which is a behavioral trait beyond annotations. It does not mention pagination behavior, response size, or other side effects, but with annotation coverage, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that directly states the tool's function without any fluff or repetition. It is front-loaded and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and a high-parameter tool (8 params, 50% schema coverage), the description is too sparse. It does not explain the combined nature clearly, nor does it provide any expectations about the returned data structure, pagination defaults, or parameter semantics. The tool is a list operation with multiple sources, so more context is needed for correct invocation.

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 description coverage is only 50%, yet the description provides no explanation of the parameters (top, page, skip, pageSize, filter, orderBy, companyName, connectionRef). It does not compensate for the parameters lacking schema descriptions, leaving agents guessing about pagination and filtering behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Lists' and the resource 'combined BRC sales entries, sales invoices and sales credit notes', distinguishing it from siblings like brc_list_sales_entries, brc_list_sales_invoices, and brc_list_sales_credit_notes. It conveys a specific aggregate retrieval purpose without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (to get a combined view of sales documents) but does not explicitly state when not to use it or mention alternatives like the individual list tools. There is no guidance on choosing between the combined and per-type listings, so usage context is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_sales_credit_notesB
Read-only
Inspect

Lists BRC sales credit notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description only restates the action 'Lists' and adds no behavioral detail beyond what the readOnlyHint annotation already communicates. It does not mention pagination behavior, the required companyName context, filtering possibilities, or the shape of results. The description is not contradicted by the annotations, but it adds no transparency value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence: 'Lists BRC sales credit notes.' It contains no filler, no redundant restatement of the tool name, and is easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters and no output schema, the description leaves important context missing: the required companyName, pagination defaults, filter/order support, and the distinction from batch credit-note listing. A one-line description is not enough for an agent to confidently invoke this tool in a varied scenario.

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?

Schema description coverage is only 50%, and the description adds no meaning for any of the 8 parameters. The schema does document companyName, connectionRef, filter, and orderBy, but top, page, skip, and pageSize remain under-described in the schema and completely unaddressed in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states a specific verb ('Lists') and a precise resource ('BRC sales credit notes'), making the core function clear. It distinguishes from sibling tools like brc_get_sales_credit_note (single record), brc_create_sales_credit_note (creation), and brc_list_sales_invoices (different document type).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as brc_get_sales_credit_note or brc_batch_sales_credit_notes. No context about pagination, company scoping, or which sibling covers batch operations is provided, leaving the agent to infer usage from naming patterns.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_sales_entriesB
Read-only
Inspect

Lists BRC sales entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds no further behavioral context, such as pagination behavior or return format. Since annotations cover the safety profile, a moderate score is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, straightforward sentence with no redundant information, achieving maximum conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool, the description is adequate but lacks usage context. It does not specify pagination, filtering, or how this tool differs from related list tools. While annotations provide safety, the description could be more informative for agent decision-making.

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 half of the parameters with descriptions, but the description itself does not explain any parameters. Pagination parameters like top, page, skip, and pageSize lack descriptions, and the tool description offers no clarification. The description does not compensate for the schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Lists BRC sales entries' clearly states the action (Lists) and the resource (BRC sales entries), making it distinct from sibling list tools for other entities. It is concise and unambiguous.

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 guidance is provided on when to use this tool versus other list tools like brc_list_sales or brc_list_sales_invoices. The description does not mention alternatives or exclusions, so usage context is lacking.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_sales_invoicesC
Read-only
Inspect

Lists BRC sales invoices.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false. The description adds no behavioral context beyond the word 'Lists'—no pagination behavior, filtering scope, or company-context requirements are disclosed, and no contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, which is concise. However, it is under-specified for an 8-parameter list tool with pagination and filtering options, so it reads as minimal rather than appropriately informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and only a one-line description, the tool is missing essential context: pagination defaults, required companyName usage, filtering/ordering support, and connectionRef reuse. For a list tool with eight parameters, this description is not complete enough for reliable invocation.

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?

Schema description coverage is only 50%, and the description provides no parameter explanations. Parameters like top, page, skip, and pageSize lack meaningful semantics in the schema, and the description does not compensate for that gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('Lists') and a clear resource ('BRC sales invoices'), so the primary function is identifiable. However, it does not differentiate this tool from sibling list tools such as brc_list_sales or brc_list_sales_entries, and it does not describe what kind of sales invoice records are returned.

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?

There is no guidance on when to use this tool versus alternatives like brc_get_sales_invoice, brc_batch_sales_invoices, or brc_list_sales_entries. It also does not mention required company context or pagination behavior, leaving the agent without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_sales_repsC
Read-only
Inspect

Lists BRC sales reps.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include readOnlyHint=true and destructiveHint=false, which already convey the safe read-only nature. The description adds no additional behavioral context (e.g., pagination, filtering, or connection requirements). It does not contradict the annotations, so a baseline score 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, making it concise and front-loaded. However, it is under-specified for a tool with 8 parameters, and the brevity borders on tautological (the name already implies this). It is not verbose but lacks substance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 8 parameters, no output schema, and no additional annotations beyond readOnly, the description is severely incomplete. It omits pagination, filtering, ordering, and the need for companyName and connectionRef. A list operation with many controls requires far more explanation.

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?

Schema description coverage is only 50% (4 of 8 params have descriptions). The description does not compensate by explaining any parameters—it only says 'Lists BRC sales reps.' It offers zero semantic value beyond the schema itself, leaving undocumented params like top, page, and skip unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists BRC sales reps, with a specific verb and resource. However, it does not differentiate from other list tools (e.g., brc_list_sales, brc_list_customers) beyond the resource name, so it lacks explicit scope or uniqueness.

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 mention when to use this tool vs alternatives like brc_get_sales_rep or brc_list_sales, nor does it note prerequisites (e.g., companyName required) or exclusions. It simply states the purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_supplier_account_transA
Read-only
Inspect

Gets a supplier's account transactions, including historical transactions. Returned transactions can contain bookTranId and bookTranTypeId. When acting on a returned transaction, do not choose a CRUD endpoint from the display description alone. Resolve bookTranTypeId against the company's /v1/bookTranTypes result first, then use the matching Red transaction tool. Do not assume bookTranId is valid for another document endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesSupplier item id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral details beyond the annotations: it mentions that transactions can contain bookTranId and bookTranTypeId, warns against selecting CRUD endpoints based on display descriptions alone, and instructs to resolve bookTranTypeId. These are useful operational notes that complement the readOnlyHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is fairly concise but contains multiple clauses and instructions. It is well-structured and each sentence adds value, though it could be slightly trimmed. The extra detail is warranted given the complexity of handling returned transactions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers what the tool returns and how to handle the data, including important cautions about using the transaction IDs. It does not mention pagination, error handling, or performance, but for a read-only list operation it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides detailed descriptions for each parameter: itemId is described as 'Supplier item id', companyName includes an example, and connectionRef is thoroughly explained with usage instructions and clarification that it is not an API key. The description text does not need to add anything beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: it gets a supplier's account transactions, including historical ones. This is specific and distinguishes it from other list tools by focusing on supplier account transactions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides guidance on handling returned transactions (resolving bookTranTypeId and using the appropriate Red transaction tool), but does not explicitly state when to use this tool versus alternatives. It implies usage when supplier account transactions are needed, but lacks explicit context on choosing this over other list operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_supplier_op_bal_transA
Read-only
Inspect

Gets a supplier's opening balance transaction list.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemIdYesSupplier item id.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is established. The description's 'Gets' is consistent with these annotations but adds no further behavioral context (e.g., sorting, pagination, scope). It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence: 'Gets a supplier's opening balance transaction list.' It is front-loaded with the verb and resource, contains no filler, and every word contributes to meaning.

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 simple read-only list tool with full schema coverage and strong annotations, the description is adequately complete. It clearly states the action and resource, and while there is no output schema or mention of return format, the phrase 'transaction list' implies an array of transactions. No significant gaps are evident.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (itemId, companyName, connectionRef) have meaningful descriptions. The tool description itself does not add parameter semantics beyond what is already in the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Gets' and a clear resource 'supplier's opening balance transaction list'. It distinguishes from sibling tools like brc_list_customer_op_bal_trans and brc_get_supplier_opening_balance by specifying both the entity (supplier) and the data type (opening balance transactions).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention related tools such as brc_list_supplier_account_trans or brc_get_supplier_opening_balance, nor any exclusions or context for selection. Usage is only implied by the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_suppliersB
Read-only
Inspect

Lists BRC suppliers.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as a safe, read-only operation, so the description's safety burden is low. However, the description adds no behavioral context beyond the name, such as pagination behavior, supported filters, or what data is actually returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short sentence with no filler or repetition. It is appropriately concise and immediately front-loads the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, no output schema, and no explanation of the connection requirement or pagination semantics, the description is too sparse to fully equip an agent. The schema covers some parameter context, but the tool description itself leaves important operational details missing.

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?

Schema description coverage is only 50%, and the tool description adds no parameter explanation. Parameters like top, page, skip, and pageSize are not documented, and even filter/orderBy are conditionally described in the schema without confirming whether this endpoint supports them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the specific action and resource: 'Lists BRC suppliers.' This makes the core purpose clear, but it does not distinguish the tool from related siblings such as brc_get_supplier, brc_batch_suppliers, or brc_list_supplier_account_trans.

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 guidance is given about when to use this tool versus alternatives, when it requires an active company connection, or whether listing is the only appropriate use case. The description simply states what it does without providing usage context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_user_defined_fieldsD
Read-only
Inspect

Lists BRC user defined fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers safety, but the description adds no additional behavioral details (e.g., side effects, permissions, or response characteristics). It doesn't contradict but provides no extra transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no unnecessary words or fluff. It is appropriately brief.

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?

There is no output schema, and the description provides no context about what user defined fields are, how they relate to BRC, or what the response contains. The tool is incomplete in explaining its purpose and usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not explain any parameters. The schema has generic descriptions for some parameters (filter, orderBy, etc.) but top, page, skip are unexplained. The tool description adds no value in clarifying parameter usage.

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 states 'Lists BRC user defined fields' which names a resource but is vague about what 'BRC' and 'user defined fields' mean. It lacks specificity to distinguish from the many sibling list tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of context, prerequisites, or scenarios where this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_vat_analysis_typesC
Read-only
Inspect

Lists BRC VAT analysis types.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no extra behavioral details such as pagination, filtering limitations, or return-value characteristics beyond the bare 'lists' action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundancy. It is concise, though its extreme brevity provides no structural benefit for understanding the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, no output schema, and many similar list tools, this description is too sparse. It omits pagination semantics, what 'VAT analysis types' means, output shape, and any disambiguation from sibling tools.

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 description does not explain any parameters. The schema covers only 4 of 8 parameters with descriptions; top, page, skip, and pageSize lack semantic explanations, and the description does nothing to compensate for those gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('Lists') and resource ('BRC VAT analysis types'), so the basic purpose is understandable. However, it does not distinguish this from sibling tools like brc_list_vat_types or brc_list_analysis_categories, and the wording closely mirrors the tool name.

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 guidance is provided about when to use this tool versus alternatives. There are no examples, prerequisites, or context signals for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_vat_categoriesA
Read-only
Inspect

Lists BRC VAT categories (for example Sales, Purchases for Resale, Purchases not for Resale). Use this to tell which VAT category a VAT rate belongs to. Sales invoices and sales credit notes must use VAT rates from a Sales VAT category, not a purchase category.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear and the description does not contradict it. The description adds useful domain context about category usage, but it does not disclose behavioral details such as pagination behavior, filtering/ordering support, or response shape. This is adequate given the annotations but 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences with no filler. The first sentence immediately states the action and resource with examples, and the remaining sentences add essential purpose and domain constraints. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters and no output schema, the description is adequate but incomplete. It gives purpose and a key domain rule, but does not mention the required companyName, pagination/filtering semantics, or what the returned list looks like. For a simple list tool this is workable, but clear gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%, covering companyName, connectionRef, filter, and orderBy. The description itself adds no parameter-level meaning, and pagination params (top, page, skip, pageSize) are undocumented. The given descriptions are generic for OData, so the agent still lacks detail on supported filter fields, but the required companyName and connectionRef are at least schema-described.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists BRC VAT categories, provides concrete examples (Sales, Purchases for Resale, Purchases not for Resale), and explains its purpose: mapping VAT rates to categories. It also distinguishes the practical role of sales vs purchase categories, which differentiates it from related list tools like brc_list_vat_rates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance on when to use the tool: 'Use this to tell which VAT category a VAT rate belongs to.' It also provides a domain rule about sales invoices and credit notes requiring Sales VAT categories. However, it does not name alternative tools or state exclusions, 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.

brc_list_vat_ratesA
Read-only
Inspect

Lists BRC VAT rates. Each rate belongs to a VAT category via vatCategoryId (for example Sales, Purchases for Resale, Purchases not for Resale). For a sales invoice or sales credit note line, use a VAT rate whose vatCategoryId is a Sales VAT category, even if a purchase rate has the same percentage. Cross-reference brc_list_vat_categories to group rates by Sales vs Purchase category before choosing.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds real behavioral context by explaining the vatCategoryId grouping and the Sales vs Purchase distinction, which is valuable beyond the structured annotations. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no wasted words. The first sentence states the action, and the next two deliver high-value usage guidance. It avoids repeating schema details and remains tightly scoped.

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 simple read-only list endpoint, the description covers purpose, the category relationship, and the critical selection rule for sales vs purchase usage. It does not document return fields or pagination details, but with no output schema and safe-read annotations, the description is sufficiently complete for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not add meaning to parameters like top, page, skip, pageSize, filter, or orderBy; its semantic value is mostly about the returned vatCategoryId concept. Schema description coverage is 50%, so some parameters rely on self-explanatory names and defaults, which is adequate but not enriched by the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with the clear action 'Lists BRC VAT rates' and immediately adds the rate-to-category relationship. This distinguishes the tool from sibling tools like brc_list_vat_categories and brc_list_vat_types by naming the exact resource and the relevant selection context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a concrete, actionable rule: use a Sales VAT category for sales invoice or sales credit note lines even if a purchase rate has the same percentage. It also explicitly names brc_list_vat_categories as the complementary tool to cross-reference, satisfying the alternatives guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_list_vat_typesC
Read-only
Inspect

Lists BRC VAT types.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
pageNo
skipNo
filterNoOptional OData $filter expression, only if this endpoint supports filtering.
orderByNoOptional OData $orderby expression, only if this endpoint supports ordering.
pageSizeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate read-only behavior (readOnlyHint: true, destructiveHint: false). The description adds no additional transparency about side effects, permissions, rate limits, or return behavior. It provides no extra context beyond the annotations, so the score is low.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no verbosity. However, it is overly terse and lacks essential detail, making it less effective. It is well-structured but sacrifices necessary information for brevity.

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?

The description is extremely minimal. It does not explain what a VAT type is, what the response contains, how pagination or filtering works, or any business context. Given the complexity of the tool (8 parameters, no output schema), the description is severely incomplete and does not enable effective use.

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?

Five of eight parameters have descriptions in the schema, but those descriptions are generic (e.g., 'Optional OData $filter expression', 'Company context name') and not tool-specific. The tool description does not clarify the meaning or purpose of the parameters in the context of listing VAT types. Coverage is moderate (~62%), but the description adds no value for parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Lists BRC VAT types', which conveys a clear action (listing) and subject (VAT types). However, it is vague and does not differentiate from closely related sibling tools like brc_list_vat_analysis_types, brc_list_vat_categories, or brc_list_vat_rates, so the purpose is only partially clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/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 versus the sibling VAT-related list tools, nor does it mention any prerequisites, typical scenarios, or how the parameters should be used. It lacks any contextual direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_multi_company_nom_ac_reportA
Read-only
Inspect

Creates a grouped nominal accounts report for multiple companies using GET /v1/nominalAccounts for each company. Month 1–Month 12 nominal figures are period movements for each financial month, not balances. Running balance = opening balance + cumulative monthly movements. Do not describe individual monthly movement values as monthly balances. If the user asks for balances over time, calculate them from opening balance plus cumulative movements, or explain that only movements are available.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyNamesYesThe company names to report on.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds critical behavioral context beyond annotations: it clarifies that monthly figures are period movements, not balances, and explains how to calculate running balance. This is essential for correct reporting and prevents misinterpretation. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph but is compact and informative. It front-loads the main purpose and then adds necessary data interpretation guidance. No redundant sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool is read-only (annotations indicate), has 100% schema coverage, and no output schema, the description covers the key aspects: what it does, data semantics, and how to interpret results. It is sufficient for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides full descriptions for both parameters (companyNames and connectionRef), so the description does not need to add extra. It does not duplicate schema information, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it creates a grouped nominal accounts report for multiple companies using GET /v1/nominalAccounts per company. It distinguishes from the sibling 'brc_grouped_nominal_accounts_report' by explicitly mentioning 'multiple companies'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context for when to use this tool (for multi-company grouped report) and explains how to interpret data (movements vs balances) and how to handle balance requests. It does not explicitly name alternative tools, but the inclusion of 'multiple companies' differentiates it from the single-company variant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_open_edu_adminA
Read-only
Inspect

Return the protected URL for Red's content administration page (Freshdesk articles, YouTube videos, and visibility controls). Use when a Big Red Book / Big Red Cloud staff member asks to open Red's admin page, the BRC Edu admin page, or the content resources admin. Returns only the customer-facing protected admin URL — never a shared secret, query parameter, token, or bypass link. Opening the link still requires Microsoft Entra sign-in; only authorised staff can access the page. Does not bypass authentication. Does not require a connected company. Do not invent or append secret query parameters. Do not expose BRC_EDU_ADMIN_UPLOAD_SECRET or any upload secret.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral context beyond this: the returned URL still requires Microsoft Entra sign-in, does not require a connected company, and never returns secrets or tokens. This aligns with and enriches the read-only annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is somewhat long but every sentence earns its place: purpose, trigger, return scope, auth requirement, company requirement, and security caveats are each addressed in a front-loaded, logical order. The security emphasis on not leaking BRC_EDU_ADMIN_UPLOAD_SECRET is justified given the sensitivity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 0 parameters, no output schema, and clear annotations, the description is nearly complete: it covers return value, authentication flow, and security constraints. It could arguably add failure/edge-case behavior but is comprehensive relative to its simplicity.

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?

With 0 parameters and 100% schema coverage, the description correctly focuses on the return value and behavioral constraints rather than params. It explains what the tool returns (a protected URL) and explicitly what it does not return (secrets, tokens, bypass links), fully covering the empty-parameter surface.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource construction: 'Return the protected URL for Red's content administration page' and enumerates the content types (Freshdesk articles, YouTube videos, visibility controls). It clearly distinguishes what this tool is not (a bypass, a secret-exposing tool), which differentiates it from any sibling accounting/list tools 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit trigger criteria are given: 'Use when a Big Red Book / Big Red Cloud staff member asks to open Red's admin page, the BRC Edu admin page, or the content resources admin.' It provides clear context for invocation but doesn't explicitly name an alternative tool to prefer in exclusion scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_process_vat_category_ratesA
Destructive
Inspect

Processes VAT rates for VAT categories via POST /v1/vatCategories/vatRates. Requires a full vatCategoryRates array and confirmProcess=true. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
payloadNoDeprecated. Use vatCategoryRates instead of a raw payload object.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
effectiveDateNoNot a valid standalone payload. Use vatCategoryRates instead.
confirmProcessNo
vatCategoryRatesNoFull BRC payload array for POST /v1/vatCategories/vatRates, e.g. [{ vatCategoryId: 1, vatRates: [...] }].
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true, and the description adds valuable nuance: it clarifies that routeToken is not permission to post and that preview-before-posting and confirmWrite/confirmDelete still apply. This goes beyond the annotations without contradicting them, giving the agent essential operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured: it states the action, requirements, workflow, and a caution. Each sentence carries critical information without redundancy. It is slightly long but every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 8 parameters, nested objects, no output schema, and a dependent workflow, the description covers prerequisites, the routeToken flow, and safety constraints. It explains what the user must do before calling this tool and what permissions are still needed, making it nearly complete.

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 88%, so the schema already documents most parameters. The description adds meaningful guidance on confirmProcess (must be true), the role of routeToken (must come from brc_route_request, never invented), and the vatCategoryRates array (must be full). This enriches the schema's bare definitions.

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?

Clear verb 'Processes' with specific resource 'VAT rates for VAT categories' and the exact endpoint POST /v1/vatCategories/vatRates. It distinctly sets this apart from sibling tools like brc_list_vat_rates or brc_update_* which handle different actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to call brc_route_request first and retain the returned routeToken, and stresses that confirmProcess=true is required. It also warns that routeToken alone does not grant permission, providing a clear workflow. It lacks direct mention of alternative tools, but given the specificity, this is adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_red_helpA
Read-only
Inspect

MANDATORY FOR RED-HELP COMMANDS: When the user's message starts with red-help or /red-help, call this tool before searching for or calling any accounting action tool. Red Help — Manual Instructions and Resources. This tool is brc_red_help. Also use it for Big Red Cloud help and how-to questions: how do I, how can I, show me how, tell me how, where do I, what are the steps, tutorial, help article, and manual instructions in Big Red Cloud. This tool gives manual Big Red Cloud instructions and searches Freshdesk, YouTube, BRC Edu, webinars, screenshots and other available help resources. red-help means the user does not want Red to perform the accounting action — never replace a red-help request with create, update, delete or post tools. Pass the text after red-help as the query. Examples: User: "red-help how do I add a sales invoice" Call: brc_red_help({ query: "how do I add a sales invoice" }) User: "/red-help add a customer manually" Call: brc_red_help({ query: "add a customer manually" }) Searchable for common accounting-help topics: manual instructions, how to, help article, tutorial, screenshots, sales invoice, purchase invoice, customer, supplier, bank reconciliation, credit note, payment, receipt, VAT, reports and company setup. Read-only. Does not require a connected company, companyName, connectionRef, or accounting record details. After results, call brc_get_help_resource_details for the best Freshdesk match with includeImages=true and imagePresentation=links. Recommended entry point for reserved red-help / /red-help commands. brc_find_help_resources remains available for backward compatibility.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesText after the red-help command, for example how do I add a sales invoice or add a customer manually.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only annotation, the description discloses that the tool searches multiple resources (Freshdesk, YouTube, BRC Edu, webinars, screenshots), requires no connected company, enforces a guardrail against performing accounting actions, and recommends a follow-up call to brc_get_help_resource_details. This provides substantial behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is thorough but contains redundancy: 'This tool is brc_red_help' and 'Recommended entry point' repeat information stated earlier. While front-loaded and well-organized, it includes sentences that do not earn their place, making it less concise than ideal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a routing/help tool with a single parameter and no output schema, the description is exceptionally complete. It covers when to trigger, what it does, which resources it searches, that it requires no company context, the read-only nature, and post-action steps, leaving minimal gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes the query parameter with examples. The description repeats these examples and adds a list of searchable topics, but does not fundamentally extend the parameter semantics beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: it is the mandatory handler for red-help commands, providing manual instructions and searching help resources. It distinguishes itself from sibling tools like brc_find_help_resources and brc_get_help_resource_details, and explicitly says it should not be replaced with accounting action tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: mandatory for red-help//red-help commands, also for help/how-to questions, and never for performing accounting actions. It names alternative tools (brc_find_help_resources) and provides examples of user messages and corresponding calls.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_reopen_quoteAInspect

Reopens a BRC quote. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesQuote id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that a routeToken is not permission to post and that preview-before-posting and confirmWrite/confirmDelete still apply, adding behavioral nuance beyond the annotation flags. It also establishes the prerequisite dependency on brc_route_request. This is consistent with readOnlyHint=false and destructiveHint=false, so no contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the purpose, followed by the essential workflow and a safety caveat. Every clause adds value, with no filler or redundant restating of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's transactional nature, the description covers the required routing flow, the confirmation requirement, and the warning about placeholder tokens. The schema handles parameter details, and there is no output schema to explain. It doesn't elaborate on what reopening means at the business level, but for a single-action tool with rich schema and annotations, this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All five parameters are already documented in the schema with helpful descriptions (coverage is 100%), so the baseline for parameter semantics is 3. The description adds some extra emphasis on routeToken's non-inventability, but it doesn't add per-parameter 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Reopens a BRC quote,' a specific verb and resource that immediately conveys the tool's function. The name itself also disambiguates it from siblings like brc_close_quote, brc_create_quote, and brc_delete_quote, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit workflow guidance: call brc_route_request first, retain the returned routeToken, and pass the same token on the final permitted transactional call. It also warns against inventing placeholder tokens. While it doesn't name alternative tools, the prerequisite order and the 'never invent' caution give clear how-and-when context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_resolve_book_transaction_typeA
Read-only
Inspect

Resolves a bookTranTypeId from a BRC customer or supplier account transaction against the connected company's live /v1/bookTranTypes list. Use this before choosing a get/update/delete transaction tool when accountTrans returns bookTranId and bookTranTypeId. Do not infer the document type from bookTypeDesc alone and do not assume transaction type ids are globally fixed across companies.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
bookTranTypeIdYes
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and destructiveHint=false, so the description doesn't need to repeat safety. It adds valuable context about IDs being company-specific and not globally fixed, which is a key behavioral caveat. Also highlights that resolution is against the live list, implying freshness. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose and usage. The first sentence states what it does; the second gives when-to-use and crucial cautions. No fluff, every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple resolver with no output schema, and the description effectively explains its role and inputs. However, it does not explicitly state what it returns (e.g., the resolved bookTranType object or just confirmation). Given the lack of output schema, a bit more clarity on the return value would improve completeness, but the description is adequate for the tool's purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% with descriptions for companyName and connectionRef; bookTranTypeId has constraints but no description. The description mentions accountTrans and the live list, providing context for bookTranTypeId and companyName, but doesn't add format or syntax details beyond schema. It doesn't compensate fully for the missing bookTranTypeId description, but the schema constraints are clear enough. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: resolving a bookTranTypeId from a customer or supplier account transaction against the company's live bookTranTypes list. It specifies the input source (accountTrans) and the target (live list), and distinguishes it from sibling get/update/delete transaction tools by positioning it as a preparatory step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use guidance is provided: 'Use this before choosing a get/update/delete transaction tool when accountTrans returns bookTranId and bookTranTypeId.' It also gives explicit warnings against alternatives (do not infer from bookTypeDesc, do not assume global IDs), which clarifies when not to use this tool and what to avoid.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_route_requestA
Read-only
Inspect

MANDATORY FIRST STEP for broad Red requests involving read, create, update, delete, correct, undo, reverse, email, or batch actions. This tool is brc_route_request. Classify and route a user request between Red's two main behaviours: action (perform the accounting workflow) and help (manual Big Red Cloud instructions). Also returns connection, read, correction, unsupported_action, or unknown when those specialised modes apply. Pass the user's complete original message — never only a confirmation word such as yes or delete it when starting a new action. Action mode always returns a non-empty preferredTools list, allowedTools, and an opaque short-lived routeToken — pass that routeToken on every subsequent transactional tool call for the permitted workflow, including after lookup and preview. unsupported_action means Red cannot map the request to an enabled workflow — explain that to the user; do not invent a routeToken. Help mode runs the unified help search, returns manual resources, sets blockTransactionalTools true, and never issues a transactional routeToken. How-to wording (how do I, how can I, show me how, tell me how, where do I, what are the steps, manual steps for, red-help, /red-help) → mode help. Explicit action wording (add a customer, create a sales invoice, delete customer ABC, can you add a customer for me) → mode action with routeToken. Correction / undo / reverse / put it back / change it back / restore wording → mode correction: plan first, do not write immediately, and do not issue a transactional routeToken. This first request is not write confirmation. A routeToken does not replace preview-before-posting or user confirmation (confirmWrite). Help mode does not persist — each brc_route_request call is classified independently unless returning confirmation continuation for a pending preview. Read-only classification and help search. Does not require a connected company. When a company is already connected, pass connectionRef silently so the routeToken can bind to that connection and survive MCP session rotation.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe user's complete original message to classify, for example add a customer or how do I add a customer.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is rich in behavioral details beyond the annotations: it explains that the tool is read-only ('Read-only classification and help search'), that it is stateless for help mode, that routeToken is opaque and short-lived, and that it does not require a connected company. It also clearly states that this first request is not write confirmation. The annotations (readOnlyHint: true, destructiveHint: false) are consistent with the description; it adds specific behaviors like connection binding and session rotation survival.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and comprehensive, but it is quite long and could be better structured. It packs many details (mode routing, routeToken behavior, help mode specifics, connection handling) into a single paragraph, which is a lot of text. However, every sentence does provide value, and it is front-loaded with the mandatory-first-step warning. A 3 acknowledges the density, but it's still structured enough for a task of this complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of this tool (it orchestrates routing between modes, issues routeTokens, handles connection references, and supports session rotation), the description covers all critical aspects: when to use it, how to pass the message, what outputs to expect (routeToken, preferredTools, blockedTransactionalTools), what to do in unsupported_action, and the distinction between help and action modes. There is no output schema, but the description sufficiently explains the return values. It is complete for the tool's purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema describes both parameters clearly: `message` as the user's complete original message and `connectionRef` as an opaque connection reference. The description reinforces the semantics by emphasizing passing the complete original message and explaining the connectionRef's role in session rotation. Since schema coverage is 100%, the description adds context that enhances (e.g., what to include in message, not just a confirmation word) — but it doesn't add entirely new parameters, so a 4 is fair.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: classify and route a user request between action, help, and other specialized modes, and return a routeToken when appropriate. It distinguishes itself from siblings by naming the specific routing behavior and its outputs. However, it does not list the sibling alternatives explicitly, relying on the broad scope of 'MANDATORY FIRST STEP' — a 4 is appropriate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: 'MANDATORY FIRST STEP for broad Red requests' and lists triggers for each mode (e.g., 'How-to wording... → mode help', 'Explicit action wording... → mode action'). It also tells what not to do: 'never only a confirmation word' and 'pass the routeToken on every subsequent transactional tool call.' This is exemplary guidance, though it does not mention the specific sibling tools by name — the alternative is implicit (all transactional tools depend on it).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_send_email_statementA
Destructive
Inspect

Sends a customer statement email. Supported document type only. Red email sending is available for sales invoices, quotes, and customer statements — not for cash receipts, purchases, payments, bank accounts, customers, suppliers, products, reports, or other document types. If the user asks to email an unsupported document type, say Red cannot email it through the current MCP tools, list the supported types, and stop without preparing an email preview or attempting a workaround. Do not call this tool with confirmSend=true until the user has reviewed a plain-English email preview and explicitly confirmed they want to send it. The email preview must show the recipient email address clearly before asking for send confirmation. If there is no customer email on file and no recipient override, stop and ask for a recipient email address — do not send. Create/post confirmation and email send confirmation are separate steps. If the user provides multiple recipient addresses, ask whether to send one email using BCC or separate individual emails. Only use sendMode='separate' when the user explicitly chooses separate emails. Do not ask about BCC unless the user provides multiple recipients or asks to copy another address. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
sendModeNoHow to handle multiple recipients. Use separate only when the user explicitly asks to send separate individual emails.
toPeriodNoStatement period end (ISO date-time, e.g. 2026-05-31T00:00:00).
toAddressNoOptional single recipient override. If omitted or empty, BRC uses the customer's email address.
customerIdYesBRC field: customerId.
fromPeriodNoStatement period start (ISO date-time, e.g. 2026-01-01T00:00:00).
minBalanceNoMinimum balance threshold for transactions included on the statement.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmSendNoMust be true only after the user has reviewed the email preview and explicitly confirmed sending.
fromAddressNoOptional sender address override.
messageBodyNoOptional custom email message body.
toAddressesNoOptional list of recipients. If more than one is provided, ask the user whether to send one email with BCC or separate individual emails.
bccAddressesNoOptional BCC email addresses. Only use if the user explicitly provides BCC addresses or chooses one email with BCC.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint=true and readOnlyHint=false, but the description goes far beyond by detailing the confirmSend requirement, separate preview and send steps, the need for a routeToken, and handling of missing email addresses. It clearly discloses the approval workflow and does not contradict any annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long, but it is logically organized and every sentence adds necessary context. It front-loads the purpose, then covers exclusions, confirmation steps, and routeToken requirements. While slightly verbose, the density of critical safety instructions justifies the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (14 parameters, no output schema, destructive action), the description covers all essential aspects: scope, prerequisites, approval workflow, recipient handling, and error cases. It leaves little ambiguity for the agent, making it complete for successful invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, baseline is 3, but the description adds substantial meaning. It explains the critical confirmSend parameter (must be true only after explicit user confirmation), the sendMode logic (separate only when explicitly chosen), how toAddresses and bccAddresses should be used, and the role of routeToken. These clarifications go well beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Sends a customer statement email,' clearly stating the verb and resource. It distinguishes this tool from the sibling email tools (brc_send_quote_email, brc_send_sales_invoice_email) by focusing on customer statements. The mention of 'Supported document type only' reinforces the specific scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use and when-not-to-use guidance. It lists unsupported document types and instructs to stop without workarounds. It specifies the required brc_route_request prerequisite, the preview-then-confirm flow, and how to handle multiple recipients (BCC vs separate), including not asking about BCC unless needed. This is comprehensive and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_send_quote_emailA
Destructive
Inspect

Sends a quote email. Supported document type only. Red email sending is available for sales invoices, quotes, and customer statements — not for cash receipts, purchases, payments, bank accounts, customers, suppliers, products, reports, or other document types. If the user asks to email an unsupported document type, say Red cannot email it through the current MCP tools, list the supported types, and stop without preparing an email preview or attempting a workaround. Do not call this tool with confirmSend=true until the user has reviewed a plain-English email preview and explicitly confirmed they want to send it. The email preview must show the recipient email address clearly before asking for send confirmation. If there is no customer email on file and no recipient override, stop and ask for a recipient email address — do not send. Create/post confirmation and email send confirmation are separate steps. If the user provides multiple recipient addresses, ask whether to send one email using BCC or separate individual emails. Only use sendMode='separate' when the user explicitly chooses separate emails. Do not ask about BCC unless the user provides multiple recipients or asks to copy another address. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
quoteIdYesBRC field: quoteId.
sendModeNoHow to handle multiple recipients. Use separate only when the user explicitly asks to send separate individual emails.
toAddressNoOptional single recipient override. If omitted or empty, BRC uses the customer's email address.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmSendNoMust be true only after the user has reviewed the email preview and explicitly confirmed sending.
fromAddressNoOptional sender address override.
messageBodyNoOptional custom email message body.
toAddressesNoOptional list of recipients. If more than one is provided, ask the user whether to send one email with BCC or separate individual emails.
bccAddressesNoOptional BCC email addresses. Only use if the user explicitly provides BCC addresses or chooses one email with BCC.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate this is a destructive, write operation (readOnlyHint=false, destructiveHint=true). The description adds substantial behavior beyond annotations: it explains the need for user confirmation before sending, the necessity of a routeToken, the prohibition on inventing placeholder tokens, the requirement to show a plain-English preview and recipient address, and the separate steps for create/post vs. email confirmation. It also discloses that it cannot handle unsupported document types and instructs to refuse rather than workaround. No contradictions found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence earns its place, covering critical usage constraints, workflow steps, and edge cases. It is front-loaded with the core purpose and then logically structured into limitations, confirmation requirements, recipient handling, and routing. While verbose, it is efficient and not redundant, though it could be slightly condensed without losing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity—11 parameters, destructive nature, multi-step workflow (route request, preview, confirm), and potential for misuse—the description is exceptionally complete. It addresses unsupported types, multiple recipient scenarios, missing recipient addresses, confirmation requirements, and token handling. No important behavioral aspect is left unexplained, and the absence of an output schema is compensated by explicit descriptions of what the tool does not do (e.g., cannot email unsupported types).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers all 11 parameters with descriptions (100% coverage). The tool description adds significant meaning beyond the schema: it clarifies sendMode usage ('Only use sendMode='separate' when the user explicitly chooses separate emails'), explains the routing token's purpose and that it's not a placeholder, details the confirmation flow for confirmSend, and specifies how to handle multiple recipients with BCC vs. separate emails. This goes far beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Sends a quote email' and specifies the supported document type (quote). It distinguishes from sibling email tools like brc_send_sales_invoice_email and brc_send_email_statement by naming the specific document type, which makes the tool's scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use and when-not-to-use guidance: it lists unsupported document types and instructs to refuse those, explains the required routeToken from brc_route_request, details the preview-before-posting and confirmSend workflow, and gives clear handling for multiple recipients. It also explicitly names alternative tools (like brc_send_sales_invoice_email) by referencing unsupported types, making the decision process clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_send_sales_invoice_emailA
Destructive
Inspect

Sends a sales invoice email. Supported document type only. Red email sending is available for sales invoices, quotes, and customer statements — not for cash receipts, purchases, payments, bank accounts, customers, suppliers, products, reports, or other document types. If the user asks to email an unsupported document type, say Red cannot email it through the current MCP tools, list the supported types, and stop without preparing an email preview or attempting a workaround. Do not call this tool with confirmSend=true until the user has reviewed a plain-English email preview and explicitly confirmed they want to send it. The email preview must show the recipient email address clearly before asking for send confirmation. If there is no customer email on file and no recipient override, stop and ask for a recipient email address — do not send. Create/post confirmation and email send confirmation are separate steps. If the user provides multiple recipient addresses, ask whether to send one email using BCC or separate individual emails. Only use sendMode='separate' when the user explicitly chooses separate emails. Do not ask about BCC unless the user provides multiple recipients or asks to copy another address. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
sendModeNoHow to handle multiple recipients. Use separate only when the user explicitly asks to send separate individual emails.
toAddressNoOptional single recipient override. If omitted or empty, BRC uses the customer's email address.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmSendNoMust be true only after the user has reviewed the email preview and explicitly confirmed sending.
fromAddressNoOptional sender address override.
messageBodyNoOptional custom email message body.
toAddressesNoOptional list of recipients. If more than one is provided, ask the user whether to send one email with BCC or separate individual emails.
bccAddressesNoOptional BCC email addresses. Only use if the user explicitly provides BCC addresses or chooses one email with BCC.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
salesInvoiceIdYesBRC field: salesInvoiceId.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations by disclosing preview-before-posting, the separation between create/post confirmation and email send confirmation, and the requirement to withhold confirmSend until explicit user review. It also clarifies that routeToken is not permission to post and that a missing recipient email should halt sending. No contradiction with the annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but front-loaded with purpose and packed with necessary operational guardrails for a high-stakes transactional tool. There is some repetition around BCC questioning and confirmSend conditions, but the complexity of the workflow justifies most of the length. It is not as tight as the highest-caliber examples, but it is well-organized enough.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is highly complete for a complex email-sending tool: it covers supported and unsupported document types, routeToken lifecycle, preview confirmation, recipient-address handling, BCC vs. separate mode, and the final send step. The schema covers the remaining parameter details, and there is no output schema that needs to be explained. This is a fully specified operational description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptive text for all 11 parameters, so the baseline is 3. The description adds a few operational details, such as stopping when no recipient email exists and the BCC/separate-email handling, but it largely reaffirms schema descriptions for confirmSend, sendMode, and routeToken rather than adding substantial new parameter-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action ('Sends a sales invoice email') and immediately scopes the tool to one supported document type. It also lists the broader Red email-capable document types and explicitly names unsupported types, which distinguishes it from sibling tools like brc_send_quote_email and brc_send_email_statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-not-to-use guidance: it lists unsupported document types, instructs the agent to stop rather than work around, and specifies the required routeToken/confirmation workflow. However, it does not explicitly name the sibling tools for quote or statement emailing as alternatives, so alternatives are implied rather than directly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_start_company_connectionAInspect

MANDATORY FIRST TOOL for company connection requests. This tool is brc_start_company_connection. Use this FIRST when the user says connect my company, connect my companies, connect my companies to Red, connect Big Red Cloud, link a company, add another company, set up Red, authenticate a company, reconnect a company, or onboard one or multiple companies. Call it immediately: it works before any company is connected and does not require companyName or connectionRef. Do not tell the user to go manually to the Big Red Cloud website when this tool is available — start the secure Red / Big Red Cloud connection flow here instead. Starts the secure Red / Big Red Cloud connection flow and generates a fresh one-time secure Red connection link and confirmation code. Supports one or multiple companies in the same visit. Use only when there is no active company connection, no valid connectionRef, the user explicitly asks to connect or reconnect, try again after a failed connection, expired session credentials, or when an old, used, or stale secure connection link no longer works. Do not call this tool when a valid connectionRef from brc_confirm_company_connection is already available and recent tool calls succeeded with it. Do not call this tool because a lookup returned no rows, partial data, or an empty list — that means no matching records, not an expired connection. Do not call this tool after successful company data retrieval unless the user explicitly asks to connect, reconnect, or add more companies. Always call this tool again to generate a new link — never reuse a previous connection link. Returns a one-time connection page URL (no time expiry, but each link works only once). On that page the user can enter a single company or upload a CSV for multiple companies — never in chat. After completing the secure page, the user should return to this chat and provide (copy/paste) the confirmation code shown on the success page. Do not paste an API key into chat.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint=false, destructiveHint=false), the description reveals key behaviors: generates a one-time link with no time expiry but single-use only, works before any connection, requires no connectionRef, and instructs the user to return confirmation code in chat. It also explicitly states 'never reuse a previous connection link' and 'Do not paste an API key into chat,' adding significant operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with 'MANDATORY FIRST TOOL' and covers all essential guidance. However, it is quite long and repeats some 'do not call' instructions in multiple variations, which could be tightened. Each sentence adds some unique value, so it earns a 4 rather than lower, but it is not as concise as it could be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and minimal annotations, the description fully compensates: it explains the flow (start → link → confirmation code), return values (URL, code), prerequisites (none), exclusions, and security cautions. It is complete for an onboarding/connection tool, covering both agent and user actions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully describes connectionRef (100% coverage). The description adds value by clarifying that this tool does not require connectionRef or companyName, and by reinforcing that the tool should be called again to generate a new link rather than reusing one. This helps the agent understand when the parameter is needed (later calls, not this one).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'MANDATORY FIRST TOOL for company connection requests' and clearly states it 'Starts the secure Red / Big Red Cloud connection flow and generates a fresh one-time secure Red connection link and confirmation code.' It names specific verbs (start, generate) and a resource (Red/Big Red Cloud connection), and differentiates itself from sibling brc_confirm_company_connection by positioning itself as the first step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides extensive when-to-use triggers ('connect my company', 'reconnect', 'try again after a failed connection', etc.) and explicit when-not-to-use conditions (valid connectionRef exists, after successful data retrieval, empty lookup does not indicate expiry). It also names an alternative tool indirectly via 'connectionRef from brc_confirm_company_connection' and warns against manual website redirection, making usage boundaries very clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_accrualA
Destructive
Inspect

Updates an existing parent Accrual by id. Use brc_get_accrual first to retrieve the current accrual and timestamp. Child accruals are not exposed by the public API. Do not call with confirmWrite=true until the user has reviewed the preview and explicitly confirmed the update. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesParent accrual id.
totalYesAccrual total amount.
acCodeYesNominal account code, for example 4000.
procDateYesProcessing date, for example 2024-03-15T00:00:00.
entryDateYesEntry date, for example 2024-03-01T00:00:00.
referenceYesAccrual reference, for example ACC0001.
timestampYesBase64 timestamp returned by the accrual, for example K94UQIbL3gg=.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
firstDetailNoFirst detail text.
confirmWriteNoMust be true only after the user explicitly confirms updating this accrual.
secondDetailNoSecond detail text.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the mutation nature is known. The description goes beyond by specifying the required workflow: call brc_route_request, retain the routeToken, and use preview-before-posting and confirmWrite. It also warns not to invent tokens and clarifies that routeToken is routing permission only, adding context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph with 4 sentences, dense but not excessively long. It front-loads the main action and then provides critical workflow instructions. Each sentence adds value regarding the required sequence and safeguards. Slightly long but efficient given the complexity of the workflow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 13 parameters, no output schema, and complex workflow requirements. The description covers the essential workflow (get first, route first, confirmWrite after preview, retain token, connectionRef reuse) and captures the transactional nature. Given the complexity, the description is sufficiently complete to guide the agent through the correct sequence, including the confirmation safety step.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema description coverage is 100%, so all parameters already have meaning. The description adds some workflow context (like the routeToken being from brc_route_request, timestamp from brc_get_accrual, and connectionRef usage), but does not fully explain each parameter's value beyond the schema. Since schema coverage is high, the baseline is 3, and the description provides some extra context but not exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool updates an existing parent accrual by id, clearly identifying the verb ('Updates') and the resource ('parent Accrual'). It also distinguishes from siblings by mentioning child accruals are not exposed, which separates it from other update tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to use brc_get_accrual first to retrieve current data and timestamp, and to call brc_route_request for the routeToken. It provides critical 'when-not' guidance: do not call with confirmWrite=true until user confirmation, and do not invent placeholder tokens. It also clarifies that routeToken alone is not permission to post.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_allocationsA
Destructive
Inspect

Creates or updates allocations for a sender book transaction. Use brc_list_allocation_resolvers first to identify eligible receiver transactions. Do not call with confirmWrite=true until the user has reviewed the allocation preview and explicitly confirmed posting. Required fields: bookTranId and allocationResolvers with allocated amounts and receiver book transaction ids. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookTranIdYesBook transaction id to allocate from, for example 1001.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after the user explicitly confirms posting the allocation update.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
allocationResolversYesAllocations to create or update.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true, and the description aligns with this by framing the operation as a write that must not run without confirmed user intent. It adds meaningful behavioral context: routeToken is only routing permission and does not replace preview-before-posting or confirmWrite, and the token must never be fabricated. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

First sentence clearly states the purpose, and subsequent sentences carry necessary workflow and safety guidance. It is somewhat long and repeats routeToken-related warnings, but each sentence adds meaningful operational detail for a potentially destructive workflow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a transactional write tool with no output schema and destructive annotation, the description covers the required safety, routing, prerequisite lookup, required field category, and confirmation flow. It gives the agent enough context to sequence calls correctly and avoid dangerous unconfirmed posting.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters well. The description re-emphasizes the critical role of confirmWrite, allocationResolvers, and routeToken, but adds limited new parameter-level detail beyond the schema. Its incomplete mention of companyName in the list of required fields is minor because the schema covers it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with 'Creates or updates allocations for a sender book transaction', which is a specific verb plus resource and clearly distinguishes this from siblings like brc_list_allocation_resolvers, brc_delete_allocation_resolver, and other update_* tools. It also clarifies the directionality of the operation (sender book transaction to receiver transactions).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit workflow sequence: call brc_route_request first, retain the routeToken, use brc_list_allocation_resolvers to find eligible receivers, and do not call with confirmWrite=true until explicit user confirmation. It clearly indicates when not to act and names prerequisites, though it does not discuss alternatives beyond the prerequisite lookup tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_bank_accountA
Destructive
Inspect

Updates a BRC bank account using merged fields. Before calling this tool, show the user a plain-English summary of the changes and ask for explicit confirmation. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBank account id.
payloadNoAlias for updates.
updatesNoFields to merge into the existing record.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

It reveals that routeToken is not permission to post, and that confirmWrite/confirmDelete still apply, which goes beyond the annotations indicating a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly verbose and repetitive, restating the same routing and confirmation instructions multiple times, which detracts from conciseness.

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?

It provides sufficient context for the routing workflow and confirmation requirements, making it complete enough for an agent to use correctly, though it could be more efficiently expressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already has 100% parameter coverage and detailed descriptions; the description adds minimal extra meaning like 'merged fields' but is largely redundant.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates a BRC bank account using merged fields, distinguishing it from create/delete/get bank account tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit workflow steps: call brc_route_request first, retain the token, and obtain confirmation, but does not explicitly compare with alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_cash_paymentA
Destructive
Inspect

Updates an existing Cash Payment by merging supplied fields onto the current record. Fields that can be merged include total, entryDate, procDate, supplierId, acCode, note, ledger, discount, bankAccountId, bankAccountCode, lodgement, analysisCategoryId, accountCode, and description. This update flow is a verified action on the existing record. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCash payment id.
payloadNoAlias for updates.
updatesNoFields to merge into the existing record.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description explains that this is a verified action on an existing record and that nothing is posted until the user confirms after preview. It clarifies that routeToken is only routing permission and not posting permission, adding critical behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action, followed by a compact field list and a focused route/confirmation workflow paragraph. It is dense but purposeful, with no fluff; slight repetition of the confirmation requirement is the only redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, required routeToken flow, stranded nested payload/updates objects, and destructive annotation, the description covers the necessary context well. It does not mention the return value or output shape, which would improve completeness because no output schema is provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes all parameters with 100% coverage. The description adds meaning beyond the schema by enumerating the specific mergeable record fields such as total, entryDate, supplierId, and accountCode, which are not defined in the generic updates/payload objects.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair ('Updates an existing Cash Payment') and contrasts with sibling create/delete actions by explaining the merge semantics. It also lists the specific fields accepted on the record, making the tool's scope unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit workflow guidance: call brc_route_request first, retain and pass the routeToken through preview and confirmation, and never invent a placeholder token. It also states that routeToken does not replace preview-before-posting or confirmWrite/confirmDelete, clearly distinguishing this tool's required usage pattern from alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_cash_receiptA
Destructive
Inspect

Updates a BRC cash receipt using merged fields. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCash receipt id.
payloadNoAlias for updates.
updatesNoFields to merge into the existing record.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation indicates destructiveHint=true, and the description reinforces the need for preview-before-posting and confirmWrite, making the mutating nature transparent. It also explains the token lifecycle and the non-negotiable confirmation step, so the agent knows side effects and prerequisites.

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 overly repetitive, repeating the same guidance about routeToken, confirmWrite, and connectionRef in nearly identical phrasing. For example, the requirement to call brc_route_request first and retain the token appears multiple times. This redundancy makes it less concise than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides sufficient guidance on how to use the tool, including prerequisites and safety checks. While it does not describe the return value or error handling, the absence of an output schema makes this less critical. Overall, it is complete enough for the agent to correctly invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides descriptions for all parameters, and the tool description adds extra context for routeToken, confirmWrite, and connectionRef, explaining their purpose and usage. This goes beyond simple schema labels and clarifies the exact behaviors expected.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool updates a BRC cash receipt using merged fields, and the verb 'updates' is specific to the resource. It is distinct from other update tools in the sibling list, which target different entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to call brc_route_request first, retain the returned routeToken, and never invent a token. It also clarifies that routeToken is not permission to post and that confirmation is required. While it does not explicitly mention alternative update tools, the context of cash receipts makes the intended use clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_customerA
Destructive
Inspect

Updates a BRC customer using merged fields. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCustomer id.
payloadNoAlias for updates.
updatesNoFields to merge into the existing record.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description emphasizes that routeToken is not a permission and that confirmation (confirmWrite) is required, adding detail beyond the destructiveHint annotation. It accurately reflects the non-readonly nature without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph but repeats the routeToken and confirmWrite concepts multiple times, making it slightly verbose. It could be streamlined without losing clarity.

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?

It covers the required workflow (routing, token retention, confirmation) for a transactional update. It does not explain return values (no output schema), but that is not required. The mention of 'merged fields' implies partial updates, which is sufficient context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides descriptions for all parameters (100% coverage). The description largely repeats these (routeToken, confirmWrite, connectionRef) and does not add new semantic meaning, such as what fields can be updated in the payload/updates object. It is adequate but not enhancing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Updates a BRC customer using merged fields', specifying the action (update) and resource (customer). It distinguishes from create/delete tools and is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit workflow instructions: call brc_route_request first, retain routeToken, pass it on final call. Also clarifies that preview-before-posting and confirmWrite apply. However, it does not compare to alternative tools (e.g., create vs update) or mention when not to use, but the guidance is concrete for the intended usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_nominal_journal_batchA
Destructive
Inspect

Updates an existing Nominal Journal Batch by id. Use brc_get_nominal_journal_batch first to retrieve the current batch, including timestamp and account transaction line timestamps. Do not call with confirmWrite=true until the user has reviewed the preview and explicitly confirmed the update. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNominal Journal Batch id.
totalYes
procDateYesDate/time string, for example 2024-01-15T00:00:00.
entryDateYesDate/time string, for example 2024-01-15T00:00:00.
timestampYesBase64 timestamp for the nominal journal batch.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after the user explicitly confirms updating this Nominal Journal Batch.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
bookTranTypeIdNoBook transaction type id. Nominal Journal Batch is usually 7.
accountTransactionsYesUpdated nominal journal account transaction lines.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses the required routeToken workflow, preview-before-posting, confirmWrite gating, and timestamp preservation requirements. It also warns against inventing placeholder tokens and clarifies that a routeToken is not permission to post. These are significant behavioral traits not visible from annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average, but it is front-loaded and every sentence addresses a real workflow or safety concern. Minor redundancy exists in the final sentence restating preview-before-posting, but overall the length is justified for a complex transactional tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 11 parameters, a nested accountTransactions array, no output schema, and rich annotations, the description covers the critical invocation sequence and safety constraints well. It does not describe the success return value, but the schema and sibling context make the tool's behavior sufficiently clear.

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 high at 91%, so the schema already documents most parameters. The description adds important operational meaning for routeToken and confirmWrite: retain the same token through lookup/preview/confirmation, never invent one, and only set confirmWrite=true after explicit user confirmation. This goes beyond the schema's field-level descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: "Updates an existing Nominal Journal Batch by id." This clearly separates it from sibling create/delete/get tools and states the core operation unambiguously.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs calling brc_get_nominal_journal_batch first to retrieve timestamps, and brc_route_request first for the routeToken. It also states when not to proceed: "Do not call with confirmWrite=true until the user has reviewed the preview and explicitly confirmed the update." This provides strong when-to-use and safety-gate guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_paymentA
Destructive
Inspect

Updates a BRC payment using merged fields. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPayment id.
payloadNoAlias for updates.
updatesNoFields to merge into the existing record.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark destructiveHint: true. The description adds value by explaining the routeToken is 'not permission to post', warning 'Never invent a placeholder token', and emphasizing the preview-before-posting and confirmWrite/confirmDelete steps. It clearly explains the safety workflow. Since annotations already provide a solid baseline, the description's added context on the routing workflow and error-prevention earns a high score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two focused sentences that pack in critical usage context without unnecessary fluff. It is appropriately sized for a destructive transactional tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 params and 100% schema coverage, the description adds the crucial workflow context that is not present elsewhere: the routeToken lifecycle, the sequence of calls, and safety caveats. The description is complete and context-rich. It also explicitly addresses potential misuse cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description mentions 'merged fields' which ties to the 'updates' and 'payload' schema fields, providing some conceptual clarity. However, it doesn't deeply explain each parameter beyond the schema, but this is acceptable given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear purpose: 'Updates a BRC payment using merged fields.' It then goes further to explain the workflow around routeToken, distinguishing this from other tools. This clearly distinguishes it from siblings like brc_delete_payment or brc_create_payment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: 'Updates a BRC payment using merged fields. Requires routeToken from brc_route_request for the matching action workflow.' It also explains the workflow of calling brc_route_request first 'with the user's complete original action request' and retaining the token 'through lookup, preview, and confirmation.' This is a perfect 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_prepaymentA
Destructive
Inspect

Updates an existing parent Prepayment by id. Use brc_get_prepayment first to retrieve the current prepayment and timestamp. Child prepayments are not exposed by the public API. Do not call with confirmWrite=true until the user has reviewed the preview and explicitly confirmed the update. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesParent prepayment id.
totalYesPrepayment total amount.
acCodeYesNominal account code, for example 4000.
procDateYesProcessing date, for example 2024-03-15T00:00:00.
entryDateYesEntry date, for example 2024-03-01T00:00:00.
referenceYesPrepayment reference, for example PRE0001.
timestampYesBase64 timestamp returned by the prepayment, for example bgUcQIbL3gg=.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
firstDetailNoFirst detail text.
confirmWriteNoMust be true only after the user explicitly confirms updating this prepayment.
secondDetailNoSecond detail text.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description thoroughly discloses behavioral requirements beyond the destructiveHint annotation: routeToken is required but 'is not permission to post', preview-before-posting applies, and confirmWrite must only be true after explicit user confirmation. It also warns against inventing placeholder tokens and notes child prepayments are not exposed. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph with no wasted words; every sentence contributes either the primary action, a prerequisite, a safety guardrail, or the routing workflow. It is front-loaded with the core purpose and then provides necessary operational context.

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 complex transactional tool with 13 parameters and routing/confirmation requirements, the description covers prerequisites, workflow, and safety constraints comprehensively. It does not, however, describe the expected response/return value (no output schema), and it references 'preview' without naming the specific preview tool, which is a minor gap for full completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already has 100% parameter coverage, and the description enriches key parameters: timestamp is described as a Base64 value retrievable via brc_get_prepayment, routeToken's role in the workflow is expanded, and confirmWrite is tied to explicit user confirmation. This adds meaning beyond the schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Updates an existing parent Prepayment by id', giving a specific verb, resource, and scope. It also distinguishes from sibling tools by noting 'Child prepayments are not exposed by the public API', clarifying the exact object being modified.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly instructs to 'Use brc_get_prepayment first to retrieve the current prepayment and timestamp' and provides a clear routing workflow: call brc_route_request first, retain the routeToken, and pass it on the final transactional call. It also states when not to proceed ('Do not call with confirmWrite=true until... user... explicitly confirmed').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_productA
Destructive
Inspect

Updates a BRC product using merged fields. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProduct id.
payloadNoAlias for updates.
updatesNoFields to merge into the existing record.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds valuable context beyond annotations: routeToken must be retained and never invented, routeToken is not permission to post, and preview-before-posting plus confirmWrite/confirmDelete still apply. This meaningfully explains the tool's safety model without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five sentences, all information-dense and front-loaded with the core purpose. Every sentence earns its place — purpose, prerequisite, token handling, and confirmation requirements — with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 params, nested objects, no output schema) and strong annotations, the description covers the critical workflow and safety constraints. It does not describe return values, but no output schema exists and the schema already documents parameters thoroughly. The description is sufficient for correct selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds extra meaning by explaining 'merged fields' for updates/payload and by clarifying the routeToken lifecycle and its non-authorization nature. This goes beyond the schema's per-property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Updates a BRC product using merged fields' — a specific verb and resource with merge semantics. This distinguishes it from create, delete, get, and list siblings in the tool set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit workflow guidance: call brc_route_request first, retain the routeToken through lookup/preview/confirmation, and pass the same token on the final permitted transactional call. It does not explicitly name alternative tools, but the routeToken workflow and 'final permitted transactional tool call' language clearly frame when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_purchaseA
Destructive
Inspect

Updates a BRC purchase using structured MCP fields. Historical transaction dates are not automatically blocked. Existing historical purchases may support text, monetary, date and delete operations; the BRC endpoint is the source of truth. When changing monetary values, preserve the existing unpaid/unallocated state and allow BRC to recalculate allocation fields where required. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPurchase id.
noteNo
acCodeNo
procDateNo
entryDateNo
netAmountNo
vatRateIdNo
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
supplierIdNo
accountCodeNo
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
descriptionNo
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
vatPercentageNo
bookTranTypeIdNo
analysisCategoryIdNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds substantial behavioral context: historical transaction dates are not automatically blocked, existing historical purchases may support text/monetary/date/delete operations, the endpoint is the source of truth, and monetary changes must preserve unpaid/unallocated state while allowing BRC to recalculate allocation. These details go well beyond annotations and are crucial for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is somewhat lengthy but every sentence contributes essential workflow, safety, and behavioral details. It is front-loaded with the primary purpose and then layers work flow and constraints. No filler or repetition beyond the necessary emphasis on routeToken workflows.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (17 parameters, no output schema, low schema coverage), the description covers the critical workflow (routeToken, preview/confirm), safety considerations (preserve state, allocation recalculation), and behavioral nuances (historical support). However, it lacks detailed per-parameter explanations and does not describe expected return values or error conditions, so it is not fully complete but adequate for a knowledgeable agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 29% (5 of 17 parameters have descriptions), so the description is expected to compensate. It does provide important guidance about routeToken and confirmWrite, and a key note about preserving unpaid/unallocated state when changing monetary values. However, it does not explain the semantics of most other parameters (e.g., netAmount, vatRateId, analysisCategoryId), leaving gaps that the schema cannot fill.

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?

Purpose is clearly stated: 'Updates a BRC purchase using structured MCP fields.' It distinguishes from create/delete/get/list siblings by focusing on update semantics. The mention of 'historical transaction dates' and 'existing historical purchases' adds specificity about the update scope, further clarifying what it does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to call brc_route_request first with the user's complete original action request, retain the returned routeToken, and pass it on the final permitted transactional tool call. It also clarifies that routeToken is not permission to post and that preview-before-posting and confirmWrite/confirmDelete still apply, giving clear when-to-use and workflow context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_quoteA
Destructive
Inspect

Updates a BRC quote's manual reference only. Quote.note is not persisted by this update and is not accepted here. Loads the current quote, preserves all other fields (including timestamp, product lines, analysis entries, totals, customer, sales rep, dates, comments, and closed state), applies the new reference, then PUTs the full record. Manual quote references must be 6 characters or fewer because Big Red Cloud truncates longer references. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesQuote id.
referenceNoOptional manual quote reference, max 6 characters. Required when quote references are manual, or when the quote reference setting is unknown. Quote reference must be 6 characters or fewer because Big Red Cloud truncates longer references.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond annotations by explaining the full loading/preserving/PUT process, highlighting that note is not persisted, and detailing the truncation behavior for references. It also clarifies the routeToken is not permission to post and that confirmWrite/confirmDelete still apply. This adds substantial behavioral context that the annotations (destructiveHint: true) do not convey, and it is fully consistent with them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is somewhat lengthy (6 sentences), but every sentence adds essential operational or safety context. It is logically organized from primary action to exclusions, detailed behavior, and token flow. It avoids redundant phrasing, though it could be tightened without losing value. It earns a 4 for being appropriately detailed rather than minimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 params, no output schema, destructive annotation), the description covers the critical behavior: what is updated, what is preserved, the truncation rule, and the required routeToken/confirmation flow. It does not explicitly describe the return value, but with no output schema this is a minor gap. The description is sufficiently complete for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% parameter coverage with descriptions, so the baseline is 3. The description adds extra value by explaining why the reference must be ≤6 characters (BRC truncates longer), and by elaborating on the routeToken lifecycle and confirmation requirements. This enriches the meaning beyond the schema's basic constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Updates a BRC quote's manual reference only.' It specifies the action (updates), resource (BRC quote), and scope (manual reference only), which distinguishes it from sibling tools like create_quote, delete_quote, close_quote, etc. The explicit limitation to 'manual reference only' prevents confusion with broader update tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: it says to call brc_route_request first, pass the routeToken, and respect preview-before-posting. It also excludes the note field explicitly ('Quote.note is not persisted...'). However, it does not name alternative tools for other update scenarios (e.g., creating a quote), though the narrow scope makes this less critical. This is strong guidance but not fully explicit about when-not-to-use versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_sales_credit_noteA
Destructive
Inspect

Updates an existing BRC sales credit note. Supports text/reference fields, transaction dates, customer/sales-rep fields, and complete product/monetary updates. Historical credit notes are not automatically blocked because they belong to an earlier financial year. The BRC API is the source of truth for whether the requested historical change is permitted. For monetary changes, provide productTrans, totalNet, totalVAT and total together. Do not manually change unpaid; Red preserves the existing BRC value. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSales credit note id.
noteNo
totalNo
detailsNo
procDateNoProcessing date. Historical dates may be attempted; BRC determines whether the update is permitted.
totalNetNo
totalVATNo
entryDateNoEntry date. Historical dates may be attempted; BRC determines whether the update is permitted.
referenceNo
saleRepIdNo
vatTypeIdNo
customerIdNo
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
ourReferenceNo
productTransNoComplete BRC productTrans collection. Preserve existing line ids and accounting/VAT data when modifying an existing credit note.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
yourReferenceNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal destructive/write behavior; description adds substantial non-obvious context: historical updates are not auto-blocked, unpaid should not be manually altered, and routeToken is not permission to post. This materially helps the agent avoid unsafe calls.

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?

First sentence front-loads purpose, followed by dense caveats. Slight redundancy in routeToken guidance, but the length is justified by high-risk behavior and workflow rules.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive 19-parameter mutation with no output schema and low parameter descriptions, the description covers the main workflows, tool ordering, and safety constraints. It doesn't describe return values or all field semantics, but the critical risk areas are addressed.

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 only 42%, and the description compensates by grouping fields (text/reference, transaction dates, customer/sales-rep) and explicitly requiring productTrans+totalNet+totalVAT+total for monetary changes. It does not explain every remaining parameter, but the key constraints and groupings are covered.

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 'Updates an existing BRC sales credit note' with a specific verb and resource, and the update-versus-create/delete distinction is clear from sibling tools. It also lists supported update dimensions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-to-use context: existing credit notes, historical notes possible, BRC decides, and it mandates the brc_route_request → lookup → preview → confirm workflow. It doesn't explicitly state 'do not use for creating/deleting', but the update scope is evident from the name and siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_sales_entryA
Destructive
Inspect

Updates an existing BRC Sales Entry. Supports text/reference changes, transaction dates, customer/account fields, and complete monetary/accounting update attempts. Historical Sales Entries are not automatically blocked because they belong to an earlier financial year. The BRC API is the source of truth for whether a requested historical change is permitted. A note/reference-only update may be performed without supplying monetary fields. For monetary changes, provide totalNet, totalVAT, total, acEntries and vatEntries together so Red can validate the accounting values before sending the update. Do not manually change unpaid; Red preserves the existing BRC value. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSales Entry id, normally the bookTranId returned by customer account transactions.
noteNoOptional. BRC "Note" field on the sales document (JSON field `note`). Leave blank to default it to the customer name (BRC customer "Name" / JSON `name`). Do not use the product name as the note. Only set this when the user explicitly provides a note.
totalNoNew gross total. For monetary edits this must equal totalNet + totalVAT.
acCodeNoCustomer account code.
detailsNoSales Entry details/description field.
procDateNoProcessing date in ISO format. Historical dates may be attempted; BRC determines whether the change is permitted.
totalNetNoNew total net value. For monetary edits this must be supplied together with totalVAT, total, acEntries and vatEntries.
totalVATNoNew total VAT value. For monetary edits this must be supplied together with totalNet, total, acEntries and vatEntries.
acEntriesNoComplete BRC accounting-entry collection. For monetary edits, the sum of each entry's value must equal totalNet.
entryDateNoEntry date in ISO format. Historical dates may be attempted; BRC determines whether the change is permitted.
referenceNoOptional. BRC "Reference" field (JSON field `reference`). BRC "Our Ref" (JSON `ourReference`) and BRC "Your Ref" (JSON `yourReference`) default to this value when not supplied separately.
vatTypeIdNoVAT type id.
customerIdNoCustomer id.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
vatEntriesNoComplete BRC VAT-entry collection. Each entry should contain the BRC vatRateId, percentage and net amount used to calculate VAT.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
bookTranTypeIdNoBook transaction type id. Sales Entries normally use the existing record's transaction type.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description discloses key behaviors: historical sales entries are not blocked but BRC decides, unpaid is preserved by Red, routeToken is not permission to post, and confirmation is mandatory. It also explains that the BRC API is the source of truth for historical checks, adding valuable context about side effects and prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but highly informative, with each sentence addressing a critical aspect (purpose, historical behavior, monetary field requirements, routeToken workflow, confirmation). It is front-loaded with the purpose and then structures the workflow logically. While verbose, it earns its length given the tool's complexity and the need to prevent misuse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 19 parameters, no output schema, and destructive annotations, the description covers all necessary contextual aspects: the workflow dependency on routeToken, historical date handling, grouping of monetary fields, and the confirmation requirement. It fully prepares the agent to use the tool correctly and safely, with no obvious gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the description still adds significant meaning by specifying that totalNet, totalVAT, total, acEntries, and vatEntries must be provided together for monetary edits, and that note/reference-only updates are possible without them. It also clarifies the routeToken's role and the rule to not manually change unpaid, which is not evident from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Updates an existing BRC Sales Entry' with a clear verb and resource, and elaborates that it supports text/reference changes, transaction dates, customer/account fields, and monetary/accounting updates. This clearly distinguishes it from sibling update tools like brc_update_sales_invoice or brc_update_sales_credit_note by specifying the sales entry focus.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: when to include monetary fields together, when note-only updates are possible, the required routeToken workflow from brc_route_request, and the need for preview-before-posting and confirmWrite/confirmDelete. It also explains historical entry handling, giving clear context on when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_sales_invoiceA
Destructive
Inspect

Updates an existing BRC sales invoice. Can update text/reference fields, transaction dates, customer/sales-rep fields, and the full productTrans line collection. Historical invoices are not automatically blocked because they fall outside the current financial year. The BRC API is the source of truth for whether a historical invoice can be changed. When changing monetary values, provide a complete internally consistent productTrans collection and matching totalNet, totalVAT and total. Do not guess monetary fields. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSales invoice id.
noteNoOptional. BRC "Note" field on the sales document (JSON field `note`). Leave blank to default it to the customer name (BRC customer "Name" / JSON `name`). Do not use the product name as the note. Only set this when the user explicitly provides a note.
totalNo
detailsNo
procDateNoProcessing date. Historical dates are permitted as an attempted update; BRC may accept or reject them.
totalNetNo
totalVATNo
entryDateNoEntry date. Historical dates are permitted as an attempted update; BRC may accept or reject them.
referenceNoOptional. BRC "Reference" field (JSON field `reference`). BRC "Our Ref" (JSON `ourReference`) and BRC "Your Ref" (JSON `yourReference`) default to this value when not supplied separately.
saleRepIdNo
vatTypeIdNo
customerIdNo
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
ourReferenceNo
productTransNoComplete BRC productTrans collection. Use this when changing invoice lines, quantities, unit prices, VAT or line amounts.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
yourReferenceNo
bookTranTypeIdNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description discloses critical behavioral nuances: historical invoices are not automatically blocked, BRC API is the source of truth, monetary changes require a complete internally consistent productTrans collection, and a routeToken does not grant posting permission. This is rich, non-obvious context that materially affects invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized for a complex mutation tool. It is front-loaded with the core purpose, then delivers essential warnings and workflow instructions in six sentences. No filler or redundant restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (20 parameters, destructive, no output schema), the description covers the critical workflow prerequisites, historical-date behavior, monetary consistency requirements, and safety confirmation. It is thorough enough for an agent to execute the update correctly and avoid common pitfalls.

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?

With 50% schema coverage, the description compensates by explaining the key semantic constraint for monetary fields: provide a complete productTrans collection matching totalNet, totalVAT, and total. It also clarifies the routeToken workflow and confirms the confirmWrite requirement. It does not explain every parameter, but the schema descriptions cover many, and the description adds meaning where it matters most.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Updates an existing BRC sales invoice,' and enumerates exactly what can be updated (text/reference fields, transaction dates, customer/sales-rep fields, productTrans line collection). This clearly distinguishes it from sibling update tools like brc_update_sales_entry or brc_update_quote.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool by specifying it updates existing invoices and by detailing the mandatory routeToken workflow (call brc_route_request first, retain the token through preview/confirmation). It does not explicitly name alternatives or say 'do not use for new invoices,' but the context is strong enough for an agent to infer correct usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_sales_repA
Destructive
Inspect

Updates a BRC sales rep using structured MCP fields. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSales rep id.
codeNo
nameNo
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Although annotations already flag destructiveHint=true and readOnlyHint=false, the description adds meaningful behavioral context: the routeToken requirement, the necessity of preview-before-posting and confirmWrite/confirmDelete. It also clarifies that routeToken is not a posting permission. It does not over-explain return values (no output schema), but the description adds valuable workflow context beyond annotations. Slightly deducted because it doesn't mention idempotency or partial update semantics, but it covers the critical transactional guarantees.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact yet information-dense, covering purpose, prerequisites, sequence, and caveats in four sentences. It front-loads the primary action and then clearly explains the mandatory workflow. No fluff, no redundant restating of schema details. Exceptionally well-structured for guiding an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (7 params, 3 required, no output schema, destructive annotation), the description covers both the 'when/how to use' and 'what to be careful about' dimensions. It explicitly ties the tool to the route_request→lookup→preview→confirm→post sequence, includes confirmWrite semantics, and warns about token handling. The only missing piece might be intended use cases (e.g., updating existing sales rep fields), but this is fairly obvious. Overall, it is comprehensive for a transactional mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 7 parameters, and description coverage is 71%, meaning the remaining parameters (id, code, name) lack detailed descriptions. However, the description intentionally focuses on the workflow-critical parameters: routeToken (opaque token, required, permission only), companyName (example given), confirmWrite (explicit plain-English preview requirement, never true on first call), and connectionRef (opaque connection reference, reuse guidance). This goes beyond the schema's field-level descriptions, adding significant semantic value for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Updates a BRC sales rep using structured MCP fields' with a specific verb and resource, distinguishing it from sibling create/delete/get/list sales rep tools. The tool name and description align perfectly, and the context makes the transactional workflow explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit sequential guidance: 'Call brc_route_request first...', 'Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call.' It also tells the agent when NOT to invent a placeholder token and warns that routeToken is not permission to post. This is strong usage guidance with clear prerequisites and ordering.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_update_supplierA
Destructive
Inspect

Updates a BRC supplier using merged fields. Requires routeToken from brc_route_request for the matching action workflow. Call brc_route_request first with the user's complete original action request. Retain the returned routeToken through lookup, preview, and confirmation, and pass the same token on the final permitted transactional tool call. Never invent a placeholder token. A routeToken is not permission to post — preview-before-posting and confirmWrite/confirmDelete still apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSupplier id.
payloadNoAlias for updates.
updatesNoFields to merge into the existing record.
routeTokenYesOpaque routeToken from brc_route_request for this action workflow. Required for transactional tools. Routing permission only — does not replace preview-before-posting or confirmWrite.
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
confirmWriteNoMust be true only after a plain-English preview before posting has been shown in the current conversation and the user explicitly confirmed posting (for example yes, create it / post it now / confirm). Never set true on the first call or because the user initially asked to create something. Nothing is written to Big Red Cloud until you confirm.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal destructiveHint=true, and the description does not contradict them. It adds meaningful behavioral context by explaining that routeToken is workflow-routing permission only and does not replace explicit confirmation steps. This helps the agent understand the safety-relevant handoff between routing, previewing, and the final transactional call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then expands on the required routeToken workflow and confirmation caveat. It is 5 shortish sentences; a slight redundancy exists between 'Requires routeToken...', 'Call brc_route_request first...', and 'Retain the returned routeToken...', but every point earns its place and there is no filler or irrelevant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, transactional update tool with no output schema, the description covers the critical context: the mandatory prior route request, token lifecycle, the need for preview/confirmation, and the limitation of what routeToken actually grants. Combined with a fully described schema and destructiveHint annotation, the tool is well-specified enough for an agent to invoke it correctly in the intended workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter already has clear descriptions including routeToken, confirmWrite, and payload/updates semantics. The tool description does not add new parameter-level detail; it focuses on workflow context. Per the baseline guideline, 3 is appropriate because the schema carries the parameter-semantics weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Updates a BRC supplier using merged fields.' This clearly distinguishes it from create/delete/list/read supplier operations and makes the purpose instantly obvious. The mention of 'merged fields' also adds a useful implementation detail beyond the bare tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit workflow guidance: call brc_route_request first, retain and reuse the same routeToken, and pass it on the final permitted transactional call. It also tells the agent when not to treat the token as authorization, noting that preview-before-posting and confirmWrite/confirmDelete still apply. It does not explicitly enumerate alternatives to updating a supplier, but the update-vs-other action context is implicit and clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brc_validate_transaction_dateA
Read-only
Inspect

Checks whether a proposed transaction date is inside the connected BRC company's current financial year.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyNameYesCompany context name, for example YOUR-COMPANY-NAME.
connectionRefNoOpaque Red connection reference returned by brc_confirm_company_connection. Pass this exact value on every later tool call when the MCP client rotates session ids (for example Vibe/Mistral). Keep reusing the same connectionRef after successful tool calls — do not start a new connection because a lookup returned empty or partial data. It is not an API key and does not contain credentials.
transactionDateYesDate to validate in YYYY-MM-DD format.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is consistent with the readOnlyHint and destructiveHint annotations, adding specific context about the financial year check. However, it does not disclose the return format (e.g., boolean), error behavior, or edge cases like boundary dates, so the behavioral picture remains incomplete despite the annotations covering safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly worded sentence of about 15 words, front-loaded with the core verb and object. It contains no filler, redundant phrases, or unnecessary detail, earning top marks for conciseness and structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the safety annotations, the description is minimally adequate, but it lacks a return-value specification since there is no output schema. It does not explicitly state that the result is a boolean, nor does it mention edge cases or connection prerequisites, making it incomplete for an agent to fully predict the outcome.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides full descriptions for all three parameters (100% coverage), so the baseline is 3. The description does not add any extra meaning beyond the schema; it only implicitly references companyName and transactionDate without elaborating on format, constraints, or relationships.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Checks'), names the resource ('proposed transaction date'), and defines the exact scope ('inside the connected BRC company's current financial year'). This clearly differentiates it from sibling tools like brc_get_financial_year, which retrieves the fiscal year rather than validating a date.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage as a validation step but provides no explicit when-to-use guidance, exclusions, or alternatives. It does not mention when not to use this tool, such as when needing to retrieve the financial year itself rather than validate a date, leaving the usage context underdefined.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Hosted MCP server for Exact Online. Ask questions, pull reports, and prepare bookings you approve first.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables interaction with Bigcapital accounting through MCP, providing tools for customers, vendors, invoices, payments, reports, and more via an unofficial API wrapper.
    5
    AGPL 3.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for ConnectWise PSA (Manage) enabling ticket management, time entry, and read-only lookups of companies, contacts, and configurations with role-based access control and bring-your-own-API-keys support.
    143
    4
    MIT

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.