finance-engines-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@finance-engines-mcpcompute product margins for black mass at current index prices"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@cubiczan/finance-engines
Deterministic finance engines for AI agents: commodity margins, loan covenants, invoice audit, AP exceptions, and five-day close — as a TypeScript library and a licensed MCP server.
LLM agents are good at judgment and bad at arithmetic. This package gives them the arithmetic: pure, offline, fully deterministic engines that always return the same numbers for the same inputs — no network, no state, no hallucinated math. Use them directly from TypeScript/JavaScript, or hand them to any MCP-compatible agent (Claude Code, Claude Desktop, Cursor, custom agents) as a stdio tool server.
Commercial software.
UNLICENSED— all rights reserved. Use requires a commercial agreement: sam@cubiczan.com. See LICENSE.md and PROVENANCE.md.
Engines
Margin — index-linked product economics for commodity processors (e.g. battery recycling): revenue/margin per tonne from assay x payable x index price, inventory mark-to-market, shock-grid price sensitivity, breakeven prices, and config-driven contract structures (grade multiplier, discount + profit share, collar, assay payables).
Covenant — loan covenant monitoring: parse a trial balance (Xero payload or plain records), compute EBITDA / DSCR / current ratio / leverage / liquidity, evaluate against covenant thresholds with headroom, and render a signable markdown compliance certificate.
Audit — vendor-invoice anomaly detection for procure-to-pay: duplicate invoice numbers, entry lag, overdue-unpaid, amount outliers, unit-rate changes, new charge types, unexplained credits, inconsistent tax.
Close — multi-ERP five-day-close readiness (source freeze, subledger cutoffs, reconciliation queue, evidence bundle, exception SLA, controller sign-off) plus an AP exception taxonomy with confidence and reason codes. Operator metrics: straight-through rate, synthetic double-handling minutes, stale-input rate, hours-to-close.
Related MCP server: financeskills
Quickstart — library
npm install @cubiczan/finance-enginesimport {
productEconomics, sensitivity, breakevenPrices, evaluateAllContracts,
parseXeroTrialBalance, computeMetrics, evaluateCovenants, certificateMarkdown,
runAllAuditRules, normalizeInvoiceNumber,
classifyApExceptions, runFiveDayClose, assessCloseReadiness,
defaultMarginConfig, defaultCovenantConfig,
} from "@cubiczan/finance-engines";
// Margins: bring your own config/prices, or use the bundled defaults
const prices = { LI2CO3: 12000, "LME-NI": 16000, "LME-CO": 34000, "LME-CU": 9600 };
const econ = productEconomics(defaultMarginConfig, prices);
const grid = sensitivity(defaultMarginConfig, prices, "black_mass");
const be = breakevenPrices(defaultMarginConfig, prices, "black_mass");
const contracts = evaluateAllContracts(defaultMarginConfig, prices);
// Covenants: trial balance -> metrics -> evaluation -> certificate
const tb = parseXeroTrialBalance(xeroTrialBalanceJson);
const metrics = computeMetrics(tb, defaultCovenantConfig);
const results = evaluateCovenants(metrics, defaultCovenantConfig);
const certificate = certificateMarkdown(results, metrics, "Q2 2026");
// Invoice audit: plain rows in, findings out
const findings = runAllAuditRules(invoiceRows, itemRows, { today: "2026-07-03" });
normalizeInvoiceNumber("#INV20481"); // -> "20481"
// AP exceptions + five-day close: see the cookbook below
const exceptions = classifyApExceptions(invoiceRows, itemRows);
const close = runFiveDayClose(closePayload); // period, now, freeze_at, sources, …The engine core has zero runtime dependencies (the MCP SDK is only loaded by the server entry point).
UiPath can hand invoice rows, trial balances, or contract payloads to the same deterministic tools through the uipath_handoff MCP tool or directly into the library.
Quickstart — MCP server
The package ships a stdio MCP server as the finance-engines-mcp binary.
# Claude Code
claude mcp add finance-engines -- npx -y @cubiczan/finance-engines finance-engines-mcp
# or, with the package installed:
claude mcp add finance-engines -- finance-engines-mcpOr in a generic MCP client config:
{
"mcpServers": {
"finance-engines": {
"command": "npx",
"args": ["-y", "@cubiczan/finance-engines", "finance-engines-mcp"]
}
}
}All tools are deterministic and offline. Where config/prices are optional,
bundled sample defaults apply — supply your own to price your own book.
MCP tools
Tool | Engine | What it does |
| margin | Revenue, cost, and margin per MT per product, with metal contributions and inventory mark |
| margin | Margin/MT scenario grid under uniform and per-metal price shocks |
| margin | Implied per-metal index prices at which a product's margin hits zero |
| margin | Evaluate grade-multiplier / profit-share / collar / assay-payables contract structures at spot |
| covenant | Flatten a Xero Reports/TrialBalance payload into netted section balances |
| covenant | EBITDA, DSCR, current ratio, leverage, liquidity, etc. from a trial balance |
| covenant | Test metrics against covenant thresholds with % headroom |
| covenant | End-to-end signable markdown covenant certificate for a period |
| audit | Run all eight invoice anomaly rules over supplied invoice/item rows |
| audit | Canonicalize an invoice number for duplicate detection |
| audit | AP exception taxonomy with confidence + reason codes (reuses duplicate/tax rules) |
| close | Inventory extracts, stale inputs, reconciliation coverage, hours-to-close |
| close | Six-gate five-day close + metrics; optional covenant evidence |
| UiPath | Route a UiPath payload to invoice audit, covenant certificate, contract evaluation, AP exceptions, or five-day close |
Development
npm install
npm run build # tsc -> dist/
npm test # builds, then runs all suites + MCP smoke test (node --test)
npm run example:close # multi-ERP five-day close fixtureThe test suites mirror the donor Python test suites number-for-number (same fixtures, same hand-computed expectations), proving the ports equivalent.
Cookbook — five-day close + AP exceptions
PE-style close pressure (multiple ERPs, five-day clock, AP exceptions killing straight-through rate) is the operator problem this example is built against. The engines stay offline and deterministic; they do not talk to NetSuite, SAP, or Xero.
npm run example:close
# or, after a build:
node examples/five-day-close/run.mjsThe fixture (examples/five-day-close/fixture.json) is a synthetic June 2026
close across three ERPs:
System | ERP | Entity |
| NetSuite | US HoldCo |
| SAP | DE OpCo GmbH |
| Xero | UK Shared Services Ltd |
It walks the six gates — source freeze, subledger cutoffs, reconciliation
queue, evidence bundle, exception SLA, controller sign-off — and classifies
the AP corpus (duplicates reuse normalizeInvoiceNumber; plus missing /
mismatched PO, missing receipt, wrong legal entity, tax review, ownerless
approval).
Library equivalent:
import { readFileSync } from "node:fs";
import { runFiveDayClose, classifyApExceptions, apExceptionTaxonomy } from "@cubiczan/finance-engines";
const payload = JSON.parse(readFileSync("examples/five-day-close/fixture.json", "utf8"));
const report = runFiveDayClose(payload);
// report.gates, report.metrics, report.exceptions, report.covenant, report.signoff_readyPass the same payload to MCP tools five_day_close / close_readiness
({ "close": { …payload } }) or classify_ap_exceptions.
Illustrative vs production
Deterministic engine (this package)
Gate status, stale flags, coverage, hours-to-close, exception codes / reason codes / confidence, and the four operator metrics — given the same payload, every run returns the same JSON.
Duplicate detection is the existing audit normalizer, not a second scheme.
Covenant flash, when a trial balance is supplied, is the existing covenant engine (same certificate markdown).
Illustrative only (do not treat as measured ops data)
Every timestamp in the fixture (
now,freeze_at, extract times, SLA clocks). Production should inject real freeze/extract/sign-off times.Double-handling minutes — a published synthetic table (
DEFAULT_HANDLING_MINUTES+ retouch minutes), not stopwatch data.Entity names, checksums, invoice amounts, and the mid-close “blocked” story (stale Xero extract, open intercompany rec, past-SLA exceptions, DSCR breach).
No ERP connector, OCR, workflow engine, or system of record. Straight- through rate here is exception-free invoices / invoices, not OCR capture rate.
Taxonomy: docs/ap-exceptions.md.
Gates and metrics: docs/five-day-close.md.
Copyright (c) 2026 Shyam Desigan (Cubiczan). All rights reserved.
Available Tools
14 toolsaudit_invoicesAudit vendor invoicesA
Run all anomaly rules over a set of invoices (and optional line items): duplicate numbers, entry lag, overdue-unpaid, amount outliers, unit-rate changes, new charge types, unexplained credits, and inconsistent tax. Header-level rules always run; item-level rules run only when line items are supplied.
| Name | Required | Description | Default |
|---|---|---|---|
| items | No | Optional line-item rows: invoice_id, name, price, quantity, line_sum, tax_percent. | |
| today | No | ISO date used as 'today' for overdue checks (default: current date). | |
| invoices | Yes | Invoice rows: id, invoice_number, supplier_id, supplier_name, issue_date, create_date, required_date, sum, sum_paid, status. | |
| overdue_days | No | Days past due before flagging an approved-but-unpaid invoice (default 10). | |
| entry_lag_days | No | Days between issue and entry before flagging entry lag (default 14). | |
| rate_change_pct | No | Percent unit-price change to flag for a recurring item (default 5.0). | |
| amount_outlier_multiple | No | Multiple of a vendor's median to flag as an outlier (default 3.0). | |
| min_invoices_for_baseline | No | Minimum invoices per vendor before outlier logic runs (default 3). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that header-level rules always run and item-level rules only when line items are supplied, and it explains default thresholds via parameter descriptions. However, it does not state whether the operation is read-only or if there are side effects, which would be useful but is not critical for an analysis tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused paragraph that front-loads the core action and lists rules concisely. The conditional note about item-level rules is included efficiently without excessive length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the tool's behavior and inputs adequately, but it does not describe the output format or return values, which is a gap given there is no output schema. The lack of any mention of result structure may leave an agent uncertain about how to interpret the tool's response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds a small amount of extra context by clarifying the conditional behavior of item-level rules, but it does not significantly elaborate on parameter semantics beyond the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs anomaly rules over invoices and line items, naming the specific rule categories. This distinguishes it from sibling tools like classify_ap_exceptions or normalize_invoice_number, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention exclusions, prerequisites, or conditions that would select this tool over siblings. The rule list implies a use case, but no explicit direction is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
breakevenBreakeven index pricesA
Implied per-metal index prices at which a product's margin/MT hits zero (uniform cost/revenue multiple applied to current prices).
| Name | Required | Description | Default |
|---|---|---|---|
| config | No | Margin config (products, indices, cost_per_mt, inventory_mt, sensitivity_shocks, contracts). Defaults to the bundled sample config. | |
| prices | No | Index prices {symbol: usd_per_tonne}. Defaults to the bundled sample feed. | |
| product | Yes | Product name (must exist in config.products). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral aspects. It mentions the method ('uniform cost/revenue multiple applied to current prices'), which adds insight into how the calculation works. However, it does not describe potential side effects, error behavior, or the nature of outputs beyond 'prices'. Since this is a read-only calculation tool, the lack of side-effect warnings is acceptable, but more context (e.g., that it uses sample configs by default) would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core concept and adds the methodological detail about the uniform multiple. There is no redundant information, and the phrasing is efficient. It fully earns its place without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description should at least hint at the return format. It says 'implied per-metal index prices', which implies a mapping of metal symbols to prices, but does not explicitly state the structure. Defaults for config and prices are covered in the schema, and the product requirement is clear. The description is adequate for a calculation tool, though it could be more explicit about the output shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter (config, prices, product) is already documented. The description does not add any additional meaning to the parameters, such as clarifying the structure of config or the expected format of prices. Baseline 3 is appropriate because the schema carries the burden, and the description offers no extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool computes 'implied per-metal index prices at which a product's margin/MT hits zero', which is a specific and well-defined purpose. It distinguishes itself from sibling tools like product_margins (which likely returns margins) and price_sensitivity (which analyzes sensitivity) by focusing on the breakeven point. The verb 'implied' conveys computation without being ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Given sibling tools like product_margins and price_sensitivity, the description does not explain scenarios where breakeven is more appropriate, nor does it mention any prerequisites or conditions. The user must infer the tool's role based on its name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
classify_ap_exceptionsClassify AP exceptionsA
Classify vendor invoices into the AP exception taxonomy: duplicate invoice (reuses audit normalize/duplicate rules), missing/mismatched PO, missing receipt, wrong legal entity, tax review, and ownerless approval. Each exception includes confidence and a stable reason code. Invoices without match-context fields are only eligible for duplicate and inconsistent-tax reuse.
| Name | Required | Description | Default |
|---|---|---|---|
| items | No | Optional line items (enables inconsistent-tax → tax_review). | |
| today | No | ||
| invoices | Yes | Invoice rows plus optional PO/receipt/entity/tax/approval fields. | |
| include_audit_tax | No | ||
| include_duplicates | No | ||
| po_amount_tolerance_pct | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does well by disclosing output behavior (confidence and stable reason code) and an important behavioral limitation (match-context eligibility). It also notes reuse of audit normalize/duplicate rules, adding useful context beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core verb and resource. Every clause contributes useful information: the taxonomy list, the output guarantee, and the eligibility constraint. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the purpose, output, and one eligibility rule, which is adequate for a high-level understanding. However, with no output schema and no annotations, the missing semantics for four control parameters and the lack of any alternative routing to sibling tools leave meaningful gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, and the description partially compensates by explaining invoices (PO/receipt/entity/tax/approval fields) and items (enables inconsistent-tax → tax_review). But key parameters—today, include_audit_tax, include_duplicates, and po_amount_tolerance_pct—are undocumented in both the schema and description, leaving the agent without enough information to set them correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation—classifying vendor invoices into the AP exception taxonomy—and enumerates the concrete exception categories, so there is no ambiguity about what the tool does. It clearly distinguishes itself from sibling audit or normalization tools by focusing on taxonomy assignment rather than auditing or cleaning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when AP exceptions need classification) and states an input eligibility constraint (invoices without match-context fields qualify only for duplicate and tax_review). However, it does not explicitly name alternatives like audit_invoices or give when-not-to-use guidance, leaving some selection reasoning to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_readinessClose readinessA
Inventory ERP extracts, flag stale inputs, report reconciliation coverage, and compute hours-to-close from freeze (or earliest extract) to sign-off or the supplied now. Does not mutate state. Pass precomputed exceptions or invoices to include STP / double-handling.
| Name | Required | Description | Default |
|---|---|---|---|
| close | Yes | Close payload: period {label, period_end}, now (ISO), freeze_at, sources[], cutoffs[], reconciliations[], evidence[], invoices[], optional items/exceptions/signoff/trial_balance/config. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden, and it openly states 'Does not mutate state'. It also discloses a fallback behavior (earliest extract if freeze is absent), the use of `now` as an alternative endpoint, and stale-input handling via flagging rather than failing. It still omits output format and error semantics, so it is not a five.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences cover outputs, side-effect safety, computation basis, and optional inputs with no filler. The density is good, though the first sentence's front-loaded phrasing is slightly ambiguous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The input payload is a single complex nested object and there is no output schema, so the description is the main source of result-shape guidance; it explains the core computation and optional inclusions but does not define the return structure or clarify fields like config and trial_balance. Overall adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the close payload at 100% coverage, so the baseline is 3. The description adds semantic value by linking freeze_at to the earliest-extract fallback, tying sign-off/now to the calculation endpoint, and explaining that precomputed exceptions/invoices enable STP/double-handling inclusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates concrete deliverables: taking inventory of ERP extracts, flagging stale inputs, reporting reconciliation coverage, and computing hours-to-close from freeze or earliest extract to sign-off or now. It goes well beyond the title and gives enough specific behavior to distinguish this readiness assessment from invoice-audit or covenant siblings, though the opening phrase 'Inventory ERP extracts' is grammatically awkward.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides conditional input guidance ('Pass precomputed exceptions or invoices to include STP / double-handling') and states non-mutation, which implies it is safe to run. However, it never explicitly says when to choose close_readiness over five_day_close or other close-process tools, and it gives no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compliance_certificateCompliance certificateA
Generate a full markdown covenant compliance certificate for a period. End-to-end: computes metrics, evaluates covenants, and renders the signable lender certificate in one call.
| Name | Required | Description | Default |
|---|---|---|---|
| config | No | Covenant config (account_map, annual_debt_service, covenants). Defaults to the bundled sample config. | |
| period | Yes | Reporting period label, e.g. "Q2 2026". | |
| trial_balance | Yes | Section balances (revenue/expenses/assets/liabilities/equity), each mapping account name -> netted balance, as returned by parse_trial_balance. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It conveys non-destructive behavior implicitly ('computes', 'evaluates', 'renders') but does not explicitly state it is read-only, nor does it mention any permissions, rate limits, or side effects. It covers the core action but lacks explicit safety disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, information-dense sentence that front-loads the primary purpose and then outlines the end-to-end flow. No filler or redundancy; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with nested objects, 3 parameters, and no output schema, the description is adequate: it explains the composite nature and output format. The schema covers parameter details. It could mention potential limitations or dependencies beyond the schema, but the given information is sufficient for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters, including the trial_balance format. The description adds no parameter-specific detail beyond what the schema provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Generate'), a clear resource ('full markdown covenant compliance certificate'), and the scope ('for a period'). It distinguishes itself from granular siblings like compute_covenant_metrics and evaluate_covenants by emphasizing the end-to-end nature in one call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when the full certificate is needed, not just metrics or evaluation) and highlights its composite nature. However, it does not explicitly name alternatives or conditions for using them, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compute_covenant_metricsCompute covenant metricsB
Compute financial metrics used by loan covenants from a trial balance: revenue, net_income, ebitda, cash, current_ratio, dscr, debt_to_net_worth, total_debt, equity.
| Name | Required | Description | Default |
|---|---|---|---|
| config | No | Covenant config (account_map, annual_debt_service, covenants). Defaults to the bundled sample config. | |
| trial_balance | Yes | Section balances (revenue/expenses/assets/liabilities/equity), each mapping account name -> netted balance, as returned by parse_trial_balance. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It merely states it 'computes' metrics, implying a read-only operation, but does not explicitly confirm it is non-destructive, whether it modifies inputs, or what side effects exist. There is no mention of permissions, reversibility, or output format, which is a gap given the lack of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the verb and purpose, then lists the metrics. It is concise with no filler. However, it is slightly terse, omitting potential clarifications about output format or prerequisites, though it remains efficient for its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, and the tool has nested objects (trial_balance). The description does not explain the return value structure (e.g., an object with the listed metric keys), nor does it mention that the input trial_balance should come from parse_trial_balance (though the schema does). It lacks essential context about expected output and dependencies, making it incomplete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters (config and trial_balance) with 100% coverage. The description adds a list of computed metrics, which gives hints about the output shape but not about the parameters themselves. Since the schema fully documents parameters, a baseline of 3 is appropriate; the description does not add significant parameter-level meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Compute') and resource ('financial metrics used by loan covenants from a trial balance'), and enumerates the exact metrics it produces (revenue, net_income, ebitda, etc.). It clearly distinguishes from siblings like parse_trial_balance (which parses input) and evaluate_covenants (which presumably evaluates compliance), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is used when you have a trial balance and need covenant-related metrics, but it does not explicitly state when to prefer it over alternatives or when not to use it. It names the source ('from a trial balance') but does not mention that the trial balance must first be parsed via parse_trial_balance, nor does it contrast with evaluate_covenants.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_contractsEvaluate contract structuresA
Evaluate all configured offtake/feedstock contract structures at spot. Supports grade_multiplier, discount_profit_share, collar, and assay_payables. Returns each contract's outputs and binding flags (collar floor/ceiling binding, profit-share triggered).
| Name | Required | Description | Default |
|---|---|---|---|
| config | No | Margin config (products, indices, cost_per_mt, inventory_mt, sensitivity_shocks, contracts). Defaults to the bundled sample config. | |
| prices | No | Index prices {symbol: usd_per_tonne}. Defaults to the bundled sample feed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that the tool evaluates all configured contracts and returns per-contract outputs plus binding flags, including specific flag meanings. Since this is a read-style evaluation tool, no side-effect disclosure is critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states the action and scope, the second lists supported structures and return values. Information is front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description explains the return value well enough (per-contract outputs and binding flags). It does not detail the exact output shape or edge cases, but for a two-parameter evaluation tool with defaults documented in the schema, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds value by naming the supported contract structures (grade_multiplier, discount_profit_share, collar, assay_payables) and clarifying that evaluation happens at spot prices, which maps meaningfully to the prices parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Evaluate'), a clear resource ('all configured offtake/feedstock contract structures'), and the context ('at spot'). It also enumerates supported structure types and return contents, making it easy to distinguish from siblings like evaluate_covenants or product_margins.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'at spot' gives a clear usage context, and 'all configured ... contract structures' indicates scope. It does not explicitly name alternatives or exclusions, but the intended scenario is clear enough for an agent to select it over margin or covenant tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_covenantsEvaluate covenantsB
Test computed metrics against covenant thresholds. Each result reports the metric value, operator, threshold, compliant flag, and percentage headroom to the threshold.
| Name | Required | Description | Default |
|---|---|---|---|
| config | No | Covenant config (account_map, annual_debt_service, covenants). Defaults to the bundled sample config. | |
| metrics | Yes | Metric values, as from compute_covenant_metrics. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It states that it tests and reports, implying a read-like operation, but it does not mention whether it has side effects, requires specific permissions, or how it handles invalid metrics or missing config. The default config behavior is left to the schema, and the description offers no additional context about safety or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core action and then lists the output fields. There is no filler or redundancy, and every word contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool involves nested objects, optional config, and a meaningful output format, but the description is minimal. It does not explain the prerequisite relationship with compute_covenant_metrics, how to construct the metrics object, or what happens when config is omitted. With no output schema and no annotations, the description leaves significant gaps for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, so the schema already documents 'config' and 'metrics'. The description adds no further meaning about parameter structure or usage beyond the schema's descriptions. It mentions 'computed metrics' which aligns with the metrics parameter, but no new details are provided, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Test') and a specific resource ('computed metrics against covenant thresholds'), and even enumerates the result fields. It is distinct from sibling tools like compute_covenant_metrics (which computes metrics) and compliance_certificate (which likely generates a certificate), so an agent can immediately understand its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used after computing metrics (via 'computed metrics') but does not explicitly state when to choose it over compute_covenant_metrics or compliance_certificate. No exclusions or alternative conditions are given, so the agent must infer the usage context from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
five_day_closeFive-day close workflowB
Run the six-gate five-day close reference: source freeze, subledger cutoffs, reconciliation queue, evidence bundle, exception SLA, and controller sign-off. Classifies AP exceptions when invoices are supplied, optionally flashes covenants, and returns operator metrics (straight-through rate, double-handling minutes, stale-input rate, hours-to-close).
| Name | Required | Description | Default |
|---|---|---|---|
| close | Yes | Close payload: period {label, period_end}, now (ISO), freeze_at, sources[], cutoffs[], reconciliations[], evidence[], invoices[], optional items/exceptions/signoff/trial_balance/config. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It states actions and outputs but does not disclose side effects, permissions, data mutation, or whether 'flashes covenants' or exception classification writes anything. This is a meaningful gap for a workflow-level operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences pack the gate list, conditional behaviors, and output metrics without filler. The first sentence front-loads the core purpose; the second adds conditional and return details. Slightly dense but well organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the workflow's gates and named metrics, but with no output schema and no annotations it does not explain return structure, side effects, prerequisites, or how the optional covenant/config options are supplied. That leaves an agent with guesses about invocation consequences beyond what is stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single close parameter is already described in the schema with 100% coverage, listing period, now, freeze_at, arrays, and optional fields. The description adds conditional behavior (invoices trigger classification; optional covenant flash) but does not add structural meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Run the six-gate five-day close reference') and enumerates the six gates, distinguishing it as an end-to-end workflow from focused siblings like close_readiness or classify_ap_exceptions. It also states the conditional classification, covenant flash, and metric outputs, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by the title and gate list: this is for executing the full close workflow. However, the description never explicitly says when to choose it over close_readiness, classify_ap_exceptions, or the covenant tools, nor does it mention excluded scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normalize_invoice_numberNormalize invoice numberA
Normalize an invoice number for duplicate detection: strips punctuation, uppercases, and drops common prefixes so 'INV123', '#INV123', and 'NV123' collide to the same canonical form.
| Name | Required | Description | Default |
|---|---|---|---|
| number | Yes | A raw invoice number as printed by the vendor. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It specifies the exact transformation steps: strip punctuation, uppercase, and drop common prefixes, and it demonstrates the canonical collision effect with examples. It does not explicitly state the output type, but the canonical form is strongly implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the purpose, then gives the algorithm and examples. Every element contributes to agent understanding, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has one well-documented parameter, and the description covers purpose, transformation rules, and examples. The only minor omission is an explicit statement of the return value, but the canonical form is clearly implied by the examples.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already fully documents the 'number' parameter. The description adds useful examples of acceptable inputs, but it does not significantly extend parameter meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Normalize'), a specific resource ('invoice number'), and a concrete purpose ('for duplicate detection'). Concrete examples ('INV123', '#INV123', 'NV123') make the behavior unmistakable and distinguish it from unrelated siblings like audit_invoices or evaluate_covenants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for use: normalization for duplicate detection. It does not explicitly name alternatives or state when not to use it, but no sibling tool serves a comparable normalization role, so the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_trial_balanceParse trial balanceA
Flatten a Xero Reports/TrialBalance payload into netted section balances (debit positive for assets/expenses, credit positive for revenue/liabilities/equity). Returns a dict keyed by section, each mapping account name -> balance.
| Name | Required | Description | Default |
|---|---|---|---|
| report | Yes | A parsed Xero Reports/TrialBalance JSON payload. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the transformation logic, sign conventions, and return shape. However, it does not mention error behavior, handling of malformed or missing sections, or whether the input is validated. This is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences with no filler. The core action and output structure are front-loaded, and each sentence carries necessary information. It is appropriately concise for a single-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema or annotations, the description must explain both inputs and outputs fully. It covers the transformation and the returned dict structure, but omits usage context, possible section names, and failure behavior. It is sufficient for basic invocation but not fully complete for an agent operating autonomously.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's 'Xero Reports/TrialBalance payload' essentially repeats the schema's description of the 'report' property without adding new format constraints, examples, or edge-case semantics. It meets the baseline but adds no extra value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Flatten'), an explicit resource ('Xero Reports/TrialBalance payload'), and the exact output (netted section balances with sign conventions). This clearly distinguishes it from its financial-analysis siblings like price_sensitivity, breakeven, or compute_covenant_metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives, nor what prerequisites the input must satisfy. The intended use case is implied by the name and domain, but there is no explicit when/when-not/alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
price_sensitivityPrice sensitivity gridB
Margin-per-tonne sensitivity for one product under price shocks: an 'all metals' row plus one row per metal, showing margin/MT under each configured shock (default -25%/-10%/+10%/+25%).
| Name | Required | Description | Default |
|---|---|---|---|
| config | No | Margin config (products, indices, cost_per_mt, inventory_mt, sensitivity_shocks, contracts). Defaults to the bundled sample config. | |
| prices | No | Index prices {symbol: usd_per_tonne}. Defaults to the bundled sample feed. | |
| product | Yes | Product name (must exist in config.products). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does add useful context: it specifies the output rows, the metric (margin/MT), and default shock values (-25%/-10%/+10%/+25%). It does not explicitly state read-only behavior, error conditions, or how config/prices defaults affect results, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler; the core computation is front-loaded and the output structure plus defaults are packed efficiently. The sentence is fairly dense, but each clause contributes necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter tool with no output schema and no annotations, the description covers the output structure and defaults adequately. However, it omits when-to-use guidance and any caveats about config/prices behavior, so an agent gets a workable but not fully complete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces that product selects one product and that shocks are configurable with defaults, but it does not add meaning beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific computation (margin-per-tonne sensitivity for one product under price shocks) and describes the output shape (all-metals row plus per-metal rows with margin/MT under configured shocks). It does not explicitly differentiate from siblings like product_margins or breakeven, but the resource and metric are clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as product_margins or breakeven. The phrase 'under price shocks' implies a scenario, but there are no exclusions, prerequisites, or alternative routing instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
product_marginsProduct margins per tonneB
Compute per-product revenue, cost, and margin per metric tonne. Revenue/MT = sum over metals of (assay% x payable% x index price), marked to market against inventory. Returns one record per product with metal contributions and inventory valuation.
| Name | Required | Description | Default |
|---|---|---|---|
| config | No | Margin config (products, indices, cost_per_mt, inventory_mt, sensitivity_shocks, contracts). Defaults to the bundled sample config. | |
| prices | No | Index prices {symbol: usd_per_tonne}. Defaults to the bundled sample feed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the burden. It discloses the calculation method, market-to-market aspect, and output structure, but it doesn't explicitly state whether the tool is read-only or if it modifies state. It also omits dependencies like the need for sample configs or feed availability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences deliver purpose, formula, and output. The critical formula is front-loaded, and there is zero wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a compute tool without an output schema, the description explains the return format (one record per product with metal contributions and inventory valuation) and gives the calculation formula. It could mention side effects or data prerequisites, but given the tool's analytical nature, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for both parameters (config and prices). The description adds context about how the formula uses these inputs, but it largely restates the schema. It doesn't clarify nested structures beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it computes per-product revenue, cost, and margin per metric tonne, with a precise formula. It distinguishes itself from siblings like price_sensitivity or breakeven by focusing on margin computation, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus siblings. It doesn't mention prerequisites, exclusions, or typical scenarios, leaving the agent to infer based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uipath_handoffUiPath handoffB
Accept a UiPath payload and route it to the matching deterministic engine: invoice audit, covenant certificate, contract evaluation, AP exception classification, or five-day close.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Which deterministic engine the UiPath handoff should trigger. | |
| close | No | Five-day close payload (period, now, sources, …) for five_day_close. | |
| items | No | Optional line-item rows for the audit engine. | |
| config | No | Optional engine config passed through from UiPath. | |
| period | No | Reporting period label for compliance certificates. | |
| prices | No | Index prices {symbol: usd_per_tonne}. Defaults to the bundled sample feed. | |
| source | No | Optional source label from UiPath. | |
| summary | No | Optional UiPath summary to echo back. | |
| invoices | No | Invoice rows for the audit engine. | |
| overdue_days | No | ||
| trial_balance | No | Trial balance sections for covenant evaluation. | |
| entry_lag_days | No | ||
| rate_change_pct | No | ||
| amount_outlier_multiple | No | ||
| min_invoices_for_baseline | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only states that payloads are accepted and routed; it does not disclose what happens after routing, whether inputs are passed through unchanged, how unknown kinds are handled, or what output the caller should expect. The behavior beyond routing is opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and then compactly enumerates the five routing targets. There is no filler, repetition, or extraneous detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's 15 parameters, no annotations, and no output schema, a one-sentence description is insufficient. It omits when-to-use guidance, engine-specific payload expectations, failure behavior, and return characteristics, leaving an agent without enough information to invoke the tool confidently beyond guessing from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds a human-readable mapping of the five engine categories to the kind enum, which helps select the right value. However, with 15 parameters and only 67% schema description coverage, it does not compensate for the undocumented parameters or explain how the payload fields relate to each engine beyond the schema's own property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names an explicit action (accept a UiPath payload and route it) and a specific resource (the deterministic engine set), enumerating the five engine categories. This clearly distinguishes the wrapper tool from the sibling engine tools it dispatches to.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'route it to the matching deterministic engine' implies this is the entry point for UiPath payloads, but it does not explicitly say when to call this tool versus calling an engine directly, nor does it name alternatives or exclusions. Usage context is present but left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
14 tool updates
v0.1.0- First observed
audit_invoices - First observed
breakeven - First observed
classify_ap_exceptions - First observed
close_readiness - First observed
compliance_certificate - First observed
compute_covenant_metrics - First observed
evaluate_contracts - First observed
evaluate_covenants - First observed
five_day_close - First observed
normalize_invoice_number - First observed
parse_trial_balance - First observed
price_sensitivity - First observed
product_margins - First observed
uipath_handoff
TDQS
Tools cluster around distinct sub-domains (margins, covenants, invoices, close) with clear delineation in descriptions. Some overlap exists (e.g., product_margins vs price_sensitivity, evaluate_covenants vs compliance_certificate), but each tool's scope is explicit enough to avoid misselection.
All names are snake_case and mostly readable, but verb usage is inconsistent: many start with a verb (compute_covenant_metrics, evaluate_covenants, audit_invoices) while others start with a noun (product_margins, breakeven, compliance_certificate, close_readiness). This mixed convention is understandable but not uniformly predictable.
14 tools sit within the ideal 3-15 range and cover multiple finance engines without feeling bloated. Each tool has a distinct purpose, and the breadth of domains (margins, covenants, invoices, close, contracts) justifies the count, though it edges toward the upper bound for such a server.
The tool surface covers major workflows end-to-end: margin analysis (compute, sensitivity, breakeven), covenant handling (metrics, evaluation, certificate), invoice processing (audit, normalization, AP classification), close execution (readiness, five-day), contract evaluation, and trial balance parsing. Minor gaps exist (e.g., no tool to reference available products or list covenant definitions), but for an analytics engine the coverage is strong.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Structured financial modeling for AI agents: build, version, audit models, export to Excel.
Connect AI agents to financial institution origination, analytics, and compliance workflows.
- LayerzOAuthcc.layerz.app
A structured financial modeling layer for AI agents. Build, version, and audit financial models without drift, then export to Excel, from Claude or any MCP client. Learn more: https://layerz.cc/for-agents
The financial MCP for AI agents - 90+ financial tables, SEC filings, signals, alt-data.
Related MCP Servers
- AlicenseAqualityDmaintenanceFinancial intelligence for AI agents. 31 tools across 8 data sources — regime, derivatives, stablecoin flows, momentum, volatility, macro, DeFi, weather patterns, political cycles, seasonality. The context layer between your agent and a bad trade.31199MIT
- AlicenseCqualityCmaintenanceAI-powered skills for financial professionals. Comprehensive collection of finance, accounting, audit, and compliance skills for AI agents. IFRS/GAAP compliant with industry-specific applications.10017MIT
- AlicenseAqualityAmaintenanceConnects AI agents to over 4 million certified SEC EDGAR financial facts with cryptographic provenance and zero hallucination.67Apache 2.0
- AlicenseAqualityDmaintenanceEnables AI assistants to perform financial analysis, budget forecasting, compliance checks, expense categorization, and risk assessment, returning structured JSON with audit-ready governance receipts.51041Business Source 1.1
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Cubiczan/finance-engines'
If you have feedback or need assistance with the MCP directory API, please join our Discord server