schedule-iii
Server Details
Deterministic Schedule III statements for Indian companies: trial balance in, Excel workbook out.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
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.
Tool Definition Quality
Average 4.4/5 across 47 of 47 tools scored. Lowest: 2.6/5.
Most tools have clearly distinct purposes, but several clusters (confirm_centre_mappings vs confirm_groupings vs confirm_reporting_lines, and various list_* tools) share similar naming and workflows, requiring careful reading of descriptions to avoid misselection.
All tool names follow a consistent verb_noun snake_case pattern (create_, get_, list_, confirm_, save_), with only minor abbreviations (tb, py, schedule3) that do not break overall consistency.
With 47 tools, the server is well above the typical 3-15 range and even the borderline 16-25 category. While the Schedule III domain is broad, this many tools imposes a high cognitive load on agents and feels excessive.
The tool set comprehensively covers the Schedule III workflow: setup, upload, mapping, confirmation, statement generation, notes, downloads, and management reporting. There are no obvious gaps or dead ends; every major step and data read is supported.
Available Tools
59 toolsconfirm_capture_reviewConfirm a section has been reviewedAInspect
Record your user’s confirmation that they have REVIEWED a whole section and it is complete — the entire previous-year comparative column, or the entire disclosure set. A review confirmation is your user’s professional assertion, recorded as authorised by them. Before calling this, show them what you are confirming — the whole comparative, or the whole disclosure set — and get their explicit go-ahead. Never confirm a review that has not happened. Saving figures or text does NOT complete these two sections and never has; only this confirmation does. The confirmation is pinned to the exact set that was reviewed, so ANY later save to that section withdraws it — if a confirmation appears not to stick, the next step is to re-review and confirm again, never to retry. Only two sections take a review confirmation: the previous-year comparative and the disclosure set. Every other section is answered by saving its rows, or by declare_capture_na. Datavrn notifies the member you name that this was recorded in their name. Generate a fresh version after your last capture change — finalisation checks the version’s frozen capture state, not today’s.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | ||
| reason_code | Yes | ||
| template_id | Yes | ||
| capture_kind | Yes | ||
| on_behalf_of | Yes | The email address your user signs in to Datavrn with. This records who authorised the change alongside the connection that made it. Ask them for it — do not guess. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals critical behaviors beyond annotations: the confirmation is pinned to the exact reviewed set and any later save to that section withdraws it; it notifies the named member; it requires generating a fresh version after capture changes because finalisation checks the frozen capture state. These traits are not indicated by the readOnly/destructive hints, so the description fully carries 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence contributes important context, including warnings and behavioral nuances. It is front-loaded with purpose and then logically flows into usage, exceptions, and versioning. It is longer than average but earns its length. Minor redundancy exists between 'Saving figures or text does NOT complete these two sections' and 'Every other section is answered by saving its rows,' but this reinforcement is acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and low schema coverage, the description covers the essential context: what to do, what not to do, the specific sections, the side effects, and the unusual withdrawal behavior. The only gap is an explicit mapping of capture_kind values to the two sections, but reason_code covers that differentiation, so the description is nearly complete 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?
Schema description coverage is low (29%), but the description clarifies the meaning of the two critical enums: reason_code (comparative vs disclosures) and capture_kind implicitly by tying the action to the two sections. It also explains the on_behalf_of side effect (notification). However, it does not explicitly explain client_id, template_id, period_id, or note, leaving some burden unmet for a 7-parameter tool.
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: 'Record your user’s confirmation that they have REVIEWED a whole section and it is complete.' It clarifies the two specific sections (previous-year comparative and disclosure set) and distinguishes itself from siblings by stating that every other section is answered by saving rows or declare_capture_na. This uniquely identifies the tool's 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?
Explicit usage guidance is provided: before calling, show the user the entire section and obtain explicit go-ahead; never confirm an unreviewed section; saving figures does not complete these sections; if the confirmation doesn't stick, re-review and confirm again, never retry. It also clearly states that only two sections take a review confirmation and every other section uses save_* or declare_capture_na, naming the alternative directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_centre_mappingsConfirm cost-centre mappingsADestructiveInspect
Persist only the explicit account-to-centre decisions the user approved. Before calling, show the proposal grouped by confidence tier and target with exact counts, call out every medium/low-confidence row, and get a clear approval for the enumerated items. Omitted accounts stay unchanged; there is no apply-all, auto-confirm, or use-suggestions flag. After the write, report confirmed, unmapped_total, and unmapped_with_balance so the user knows exactly what remains. This tool never returns rupee amounts.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Every account decision explicitly approved by the user; never a blanket flag. | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| removal_count | No | The exact removal count returned by the removal preview. | |
| removal_token | No | Only include the short-lived token returned by the removal preview for this exact proposal. | |
| effective_from | Yes | The effective date shown to the user. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true, readOnlyHint=false), the description discloses key behaviors: omitted accounts remain unchanged, no auto-confirm, and the tool never returns rupee amounts. It also states the post-write report fields (confirmed, unmapped_total, unmapped_with_balance), adding clarity about side effects and output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is five sentences, each serving a purpose: purpose, pre-call requirement, behavioral constraints, output summary, and a safety note. It is front-loaded with the primary action and remains concise, though slightly longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by explaining what the agent should report after the write. Combined with the detailed input schema and annotations, it provides enough context for an agent to use the tool correctly, including preconditions and post-conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add new parameter-level meaning beyond the schema; it references 'enumerated items' and approval but doesn't elaborate on removal_token or effective_from specifics, which are already described well in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Persist only the explicit account-to-centre decisions the user approved,' which specifies a clear verb (persist) and resource (account-to-centre decisions). This distinguishes it from sibling tools like confirm_column_mapping or confirm_groupings by focusing on centre mappings specifically.
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 explicit when-to-use guidance: 'Before calling, show the proposal grouped by confidence tier... and get a clear approval.' It also indicates a when-not by stating there is no apply-all or auto-confirm flag. However, it does not explicitly name alternative tools for generating proposals, only implies them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_column_mappingConfirm column mappingAInspect
Confirm the column→field mapping for a staged upload and run validation. Returns the full validation result (row counts, warnings, blocking issues). Mapping suggestions are never auto-applied — pass exactly the mapping your user approved. Review any warnings with your user before ingesting.
| Name | Required | Description | Default |
|---|---|---|---|
| mapping | Yes | ||
| options | No | ||
| save_as | No | ||
| upload_id | Yes | The upload session id returned by upload_trial_balance. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint=false, destructiveHint=false), so the description adds valuable behavioral detail: it never auto-applies mapping suggestions, returns a full validation result (row counts, warnings, blocking issues), and advises reviewing warnings before ingestion. This goes beyond the annotations and clarifies side effects 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose, and every sentence adds unique value (purpose, return value, usage caveat). There is no redundancy or fluff, making it highly concise and well-structured.
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 has a complex options object and no output schema. The description covers the primary workflow and return summary, but it leaves the many options entirely unexplained, and does not mention what save_as does. Given the tool's complexity, the description is not fully complete for an agent to invoke it optimally without further guidance.
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 25%: only upload_id is described. The description clarifies the mapping parameter by stating it must be exactly what the user approved, but it provides no guidance for the nested options object or save_as. With low schema coverage, the description only partially compensates for the missing parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pairing: "Confirm the column→field mapping for a staged upload and run validation." This clearly distinguishes it from sibling confirm tools (e.g., confirm_centre_mappings, confirm_groupings) by focusing on column mapping for uploads. The return value is also described, adding further clarity.
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 usage context: "Mapping suggestions are never auto-applied — pass exactly the mapping your user approved" and "Review any warnings with your user before ingesting." This implies a workflow (after upload, before ingestion) and warns against auto-applying suggestions, but it does not explicitly name alternative 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.
confirm_groupingsConfirm account groupingsADestructiveInspect
Persist USER-approved account→line groupings. Omitted accounts stay unchanged. Only explicit leaf_code:null clears a saved grouping. When clearing a saved grouping, use the current grouping_version from list_grouping_suggestions. An actual clear first returns an approval request; nothing changes then. Resend the unchanged request with the approval details to proceed. Clearing an already-unclassified account is an idempotent no-op. Every row must be explicit — there is deliberately no "apply all suggestions" option.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | The entity (client) id — from list_clients. | |
| decisions | Yes | ||
| template_id | Yes | ||
| removal_count | No | ||
| removal_token | No | ||
| grouping_version | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations already marking destructiveHint=true, the description adds substantial behavioral detail: omitted accounts stay unchanged, only explicit leaf_code:null clears, clearing returns an approval request before any change, and the exact resend/approval flow. It also discloses idempotent behavior for already-unclassified accounts and deliberately no apply-all option, far exceeding what annotations alone convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Six sentences deliver multiple high-value caveats without redundancy. The opening sentence states the primary purpose, followed by concise, ordered details on omission, clearing, approval flow, idempotency, and the no-apply-all constraint. Every sentence contributes operational guidance, and the length is appropriate for the tool's complexity.
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 complex two-step clearing behavior and no output schema, the description covers most critical workflow aspects well. It explains what changes, what does not, idempotency, and the approval request flow. It falls short only in not naming the exact removal parameters or describing the success response, leaving slight ambiguity around the approval details.
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 17%, so the description carries heavy responsibility. It clarifies critical parameter semantics: decisions must be explicit, leaf_code:null means clear, and grouping_version must be current from list_grouping_suggestions. However, it does not explicitly explain removal_count and removal_token, only hints at 'approval details', and optional fields like suggested_reason, is_cash_equivalent, and suggested_confidence are not addressed.
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 'Persist USER-approved account→line groupings', a specific verb-plus-resource statement that clearly identifies the tool's function. It distinguishes itself from sibling confirm_* tools by naming the exact resource type (account groupings) and emphasizes it is a user-approved confirmation action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: after user approval, with explicit rows, and notes 'no apply all suggestions' alternative. It also names a prerequisite source (list_grouping_suggestions) for grouping_version when clearing. However, it does not explicitly compare against sibling confirm_* tools, though the resource-specific wording makes the distinction implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_reporting_linesConfirm reporting-line mappingsADestructiveInspect
Persist only the explicit reporting-line decisions the user approved. Before calling, show the proposal grouped by confidence tier and target with exact counts, flag every medium/low-confidence row, and get clear approval for the enumerated decisions. Omitted accounts stay unchanged. Sending leaf_code:null permanently removes that account saved reporting line; send it only when the user explicitly asked to clear that row. There is no apply-all or auto-confirm flag. The response tells you how many were confirmed, cleared, and whether the balance-bearing set is fully mapped; never claim completion without checking those fields.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | The entity (client) id — from list_clients. | |
| decisions | Yes | ||
| removal_count | No | The exact removal count returned by the removal preview. | |
| removal_token | No | Only include the short-lived token returned by the removal preview for this exact proposal. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, and the description adds substantial behavioral detail: 'Sending leaf_code:null permanently removes that account saved reporting line,' 'Omitted accounts stay unchanged,' and the warning to never claim completion without checking the response fields. This goes well beyond the annotations and discloses important 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is five sentences and every sentence carries essential information—purpose, preconditions, null semantics, no apply-all, and response interpretation. It is front-loaded with the core action, but the density of warnings makes it longer than absolutely minimal, which is appropriate for a destructive 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?
Given the tool's complexity—four parameters, a nested decisions array, destructive behavior, and no output schema—the description is remarkably complete. It covers prerequisites, user approval steps, edge cases, response fields to check, and the caution not to assume completion. This fully compensates for the missing output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, and the description enriches the most critical parameter: leaf_code:null is explicitly linked to permanent removal, and the decisions array is clarified by noting omitted accounts stay unchanged and there is no auto-confirm flag. It does not explain removal_token, but the schema already describes its purpose adequately.
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 'Persist only the explicit reporting-line decisions the user approved'—a specific verb (persist) and resource (reporting-line decisions). It clearly distinguishes from sibling confirm tools like confirm_centre_mappings and confirm_column_mapping by narrowing scope to reporting-line mappings.
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 provides explicit when-to-use guidance: 'Before calling, show the proposal grouped by confidence tier... and get clear approval.' It also gives when-not-to-use cautions, such as sending leaf_code:null only when the user explicitly asked to clear the row, and notes there is no apply-all flag. However, it does not explicitly name alternative tools, so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_capture_declarationsCopy last period’s capture answersAInspect
Copy the previous period’s "nothing this period" and "does not apply" answers into this period, for sections that have no answer yet. It NEVER copies a review confirmation — a review is about this period’s content and cannot be inherited. Last period’s answer is not evidence about this period: list what it would copy to your user, section by section, and get their go-ahead before calling it. Answers already recorded for this period are left alone. Generate a fresh version after your last capture change — finalisation checks the version’s frozen capture state, not today’s.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | ||
| template_id | Yes | ||
| on_behalf_of | Yes | The email address your user signs in to Datavrn with. This records who authorised the change alongside the connection that made it. Ask them for it — do not guess. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (write, non-destructive), the description adds crucial behavioral details: it doesn't touch already-answered sections, review confirmations are never inherited, and finalisation uses the frozen version state rather than current state. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence carries meaningful safety/behavioral information; slightly long but front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool without an output schema, it covers purpose, exclusions, user approval requirement, and versioning behavior. It does not mention return values or errors, but those are not essential given the context.
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 describes only client_id and on_behalf_of; the description does not clarify period_id or template_id semantics, and does not explicitly map "previous period" to any parameter. It leaves half the parameters undocumented.
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 explicitly states the tool copies "nothing this period" and "does not apply" answers from the previous period into the current period, only for sections without answers. This specific verb+resource+scope clearly distinguishes it from sibling save/confirm/revoke declaration tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit required precondition: list what would be copied and obtain user approval. It also states an exclusion (never copies review confirmations) and a workflow note about generating a fresh version after capture changes, so usage context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_clientCreate entityAInspect
Create a new entity (company) in the organization. Requires a Manager-role key. Use only when the user explicitly asks to set up a new entity; show them the name you will create first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| business_model_code | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (write operation) and destructiveHint=false. The description supplements this with a 'Manager-role key' requirement and the need to show the name to the user first, adding meaningful context about auth and confirmation behavior. It does not contradict 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 consists of three concise sentences, front-loaded with the core purpose, then the auth requirement, and finally the usage/confirmation guideline. Every sentence adds value with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, auth requirements, and a usage constraint, which is good given the simple tool signature. However, it omits the optional business_model_code parameter entirely and provides no indication of return values or post-create behavior, leaving some important context for an agent.
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 0%, so the description must compensate. It only vaguely references 'the name' but does not explain the required 'name' parameter or the optional 'business_model_code' parameter, their constraints, or their purpose. This leaves an agent without crucial parameter-level understanding.
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 ('Create') and a clear resource ('new entity (company)'), which distinguishes it from sibling tools like create_cost_centre and create_profit_centre that create different resource types. It clearly identifies what the tool does without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit condition for use: 'Use only when the user explicitly asks to set up a new entity' and adds a required confirmation step ('show them the name you will create first'). However, it does not mention alternative tools or when not to use it beyond the 'only when' clause, so it misses the top tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cost_centreCreate a cost centreAInspect
Create one cost centre for an entity after showing the user the exact name, kind, parent, effective date, and reason. This is one explicit centre at a time; there is no apply-all shortcut. After creating it, call list_cost_centres again and explain which mapping suggestions can now use it.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Optional short code. | |
| name | Yes | The cost-centre name to create. | |
| reason | Yes | Why the user asked for this centre. | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| centre_kind | No | Operating or shared-support centre; defaults to operating. | |
| description | No | Optional plain-language description. | |
| effective_from | No | Date from which this centre applies; defaults to the start of the entity data. | |
| parent_cost_centre_id | No | Optional existing parent cost-centre id. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false). The description adds valuable behavioral context: the user must be shown the exact parameters before creation, there is no bulk/apply-all behavior, and a post-create verification step is required. This goes beyond the basic write semantics and helps the agent understand the intended interaction flow.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each earning its place: the first states the action and required confirmation, the second clarifies scope (one at a time, no shortcut), and the third gives the mandatory follow-up action. 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?
For a create tool with 8 parameters and no output schema, the description covers the essential workflow: pre-conditions (user confirmation), constraints (one at a time), and post-conditions (call list_cost_centres). It does not explain return values, but the follow-up instruction effectively compensates by telling the agent how to verify the result and continue the workflow.
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 covers all 8 parameters with descriptions (100% coverage), so the baseline is 3. The description adds meaning by identifying which parameters are user-facing and must be confirmed (name, kind, parent, effective date, reason), and by emphasizing that only one centre is created at a time. This is a helpful layer above 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 clearly states the action ('Create one cost centre for an entity') and specifies the exact fields to be confirmed with the user (name, kind, parent, effective date, reason). It also distinguishes this tool from a bulk or apply-all operation by explicitly saying there is no shortcut, setting it apart from sibling tools like create_profit_centre.
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 usage context: show the user the exact details before creating, create one at a time, and follow up by calling list_cost_centres again to explain which mapping suggestions can use the new centre. It does not explicitly mention alternatives or when not to use this tool, but the workflow is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_profit_centreCreate a profit centreAInspect
Create one profit centre for an entity after showing the user the exact name, optional parent, and description. This is one explicit centre at a time; there is no apply-all shortcut. Re-list the centres after creation so the user can see the new target before any mapping confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The profit-centre name to create. | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| description | No | Optional plain-language description. | |
| parent_profit_centre_id | No | Optional existing parent profit-centre id. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating, non-destructive operation. The description adds valuable behavioral context: it confirms a user-confirmation step before creation and states that centres are re-listed afterwards, which goes beyond the basic 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the primary action, and every sentence adds value: scope, a limitation, and a post-creation behavior. 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?
Given the tool's moderate complexity (4 params, no output schema) and available annotations, the description covers purpose, workflow (confirmation), and post-creation listing. It does not detail return values or error scenarios, but the mention of re-listing centres supplies practical context.
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 parameters are fully documented in the schema. The description mentions "exact name, optional parent, and description" which maps to name, parent_profit_centre_id, and description but does not add additional meaning 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 clearly states "Create one profit centre for an entity" with a specific verb and resource, distinguishing it from siblings like create_cost_centre. It also notes there is no apply-all shortcut, reinforcing its single-resource scope.
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 a clear usage context: create one profit centre at a time, after showing the user the exact name/parent/description. It also states an explicit limitation (no apply-all shortcut), though it does not name alternative tools or explicit 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.
create_upload_linkCreate upload linkAInspect
Mint a single-use, login-free upload link so YOUR USER can give Datavrn a file directly from their browser — the file never passes through you, so it cannot truncate or corrupt. Use this whenever a human has the file (a trial balance export, etc.). The link stages the file for ONE entity and expires in about 15 minutes; nothing is ingested until the column mapping is confirmed.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Leave unset — the assistant handles Trial Balances only; any other format is refused (use the Datavrn web app). | |
| source | No | Set 'tally_file' when the file is a Tally xlsx export; omit otherwise. | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| file_name | Yes | The file the user is expected to upload, e.g. 'tb-2026-03.xlsx' (shown on the upload page). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the minimal annotations (readOnlyHint=false, destructiveHint=false). Discloses single-use, login-free, 15-minute expiry, staging for one entity, and the key fact that nothing is ingested until column mapping is confirmed. Also mentions the file never passes through the assistant, preventing truncation/corruption.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose/benefit, when to use, and behavioral lifecycle. No redundancy, front-loaded with the action, and highly scannable.
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 schema is well-documented and the description covers usage, benefits, expiration, and security, it is nearly complete. The only minor gap is lack of explicit mention of the return value (the link URL), but this is strongly implied by 'mint' and not required for selection/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?
Input schema has 100% description coverage; the tool description adds no new parameter-level details beyond what's already in the schema. It reinforces the trial-balance context but doesn't explain any parameter more than the schema does. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Mint a single-use, login-free upload link' – a specific verb ('mint') and clear resource ('upload link'), distinguishing it from siblings like upload_trial_balance and get_upload_link_status. The benefit ('file never passes through you') reinforces the distinct purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Use this whenever a human has the file (a trial balance export, etc.)'. It also provides the alternative context via schema param description: 'any other format is refused (use the Datavrn web app)'. This gives clear guidance without naming siblings directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
declare_capture_naRecord nothing to report, or not applicableAInspect
Record that a capture section had NOTHING to report this period, DOES NOT APPLY to this entity, or that this is the entity’s FIRST YEAR (previous-year figures only). These are three different statements and are not interchangeable: "nothing this period" means the section applies but had no activity; "does not apply" means it never applies to this entity at all. This is your user’s professional assertion, recorded as authorised by them — ask which one is true, and never guess. NOT every reason is available for every section — call get_schedule3_workspace and read allowed_reason_codes on the section before you ask your user, so you never put a choice to them that Datavrn will refuse. The restrictions: Settings takes NO answer here at all (it is only answered by saving the settings); share capital and partner capital take only "nothing this period", because those sections are shown only for statement formats they apply to, so "does not apply" can never be true; and "first year" belongs only to previous-year figures. To record a REVIEW being complete (previous-year figures, disclosures) use confirm_capture_review instead; this tool cannot make that assertion. A section can only hold one active answer: to change one, revoke it with revoke_capture_declaration and record a new one — an answer is never edited in place. Generate a fresh version after your last capture change — finalisation checks the version’s frozen capture state, not today’s.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | ||
| reason_code | Yes | ||
| template_id | Yes | ||
| capture_kind | Yes | ||
| on_behalf_of | Yes | The email address your user signs in to Datavrn with. This records who authorised the change alongside the connection that made it. Ask them for it — do not guess. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavioral context beyond annotations: the declaration is a professional assertion requiring user authorization ('ask which one is true, and never guess'), answers are never edited in place and must be revoked first, and a fresh version must be generated after the last change because finalisation checks the frozen capture state. No contradiction with readOnlyHint=false or destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but information-dense; every sentence delivers critical domain rules (allowed reason codes, restrictions, alternatives, versioning). It opens with a clear purpose statement and then elaborates. It could be slightly tightened, but the structure is logical and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description fully covers the tool's complex business rules: three distinct assertions, per-section allowed reason codes, specific capture_kind restrictions, the alternative review tool, the revoke workflow, and the version-frozen finalisation requirement. This is complete for an agent to invoke correctly without needing further clarification.
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 low (29%), but the description compensates well for the two enum parameters: it explains the meaning of the three reason_code values and gives concrete restrictions per capture_kind value. However, it does not explain the 'note' parameter semantics or the 'period_id'/'template_id' beyond what schema names show, so a small gap remains.
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 records a capture section as having nothing to report, not applicable, or first year, with a specific verb ('record') and resource ('capture section'). It distinguishes from siblings by explicitly pointing to confirm_capture_review for review completion, and from save_* tools by focusing on absence-of-data declarations.
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?
Provides explicit when-to-use guidance: tells the agent to call get_schedule3_workspace and read allowed_reason_codes, outlines per-section restrictions (settings takes no answer, share/partner capital only 'nothing this period', first-year only for previous-year figures), and names confirm_capture_review as the alternative for review completion. Also explains the revoke-then-recreate workflow for changing an answer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finalise_statementSeal the permanent client copy of a versionAInspect
Seal a statement version as Datavrn’s permanent client copy, recorded as authorised by the member you name. THIS IS NOT APPROVAL OR ADOPTION OF THE FINANCIAL STATEMENTS AND IT IS NOT A SIGNATURE. It does not discharge section 134(1) for a company or section 34(3) for an LLP. THERE IS NO UNDO. A change afterwards means generating a new version and finalising that one; the version you seal here stays sealed. Call get_finalise_readiness first, show your user every gate and every warning it returns, get their explicit go-ahead, and only then send the confirm_token it gave you together with the acknowledgements. Never acknowledge a warning your user has not seen, and never write the acceptance reason yourself — it is their professional judgment in their own words. Datavrn will refuse if anything about the statement changed after you read the state, and nothing will be finalised. If the response comes back with reused set to true, a finalisation of this same version was already under way: nothing new was done and your approval was not used. Do not call finalise_statement again — the status field says where that finalisation is (queued, running, or paused, which means it hit a temporary problem and Datavrn will retry it on its own). Poll get_job with the job_id and tell your user what it says.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | The entity (client) id — from list_clients. | |
| snapshot_id | Yes | ||
| on_behalf_of | Yes | The email address your user signs in to Datavrn with. This records who authorised the change alongside the connection that made it. Ask them for it — do not guess. | |
| confirm_token | Yes | ||
| acknowledgments | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses many behavioral traits beyond the annotations: 'THERE IS NO UNDO', refusal if the statement changed, the reused-as-true behavior, the status field semantics, and the asynchronous polling requirement. It also emphasizes the professional-judgment caveat about acknowledgments. This is rich context that the annotations (readOnlyHint: false, destructiveHint: false) do not provide.
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 long but each sentence earns its place, given the irreversible, high-stakes nature of the operation. It is front-loaded with the purpose and immediately follows with critical caveats (no undo, not approval), then step-by-step workflow, then failure-mode handling. No fluff.
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 irreversible action, preconditions, failure modes, and follow-up actions (poll get_job). It does not give a full response schema, but it highlights the key response fields (reused, status, job_id) and explains each relevant scenario. This is adequate for an agent to act correctly, though a fully specified response structure would make it 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the input schema has only 40% description coverage, the description adds meaning to key parameters: confirm_token and acknowledgments are explained in context ('send the confirm_token it gave you together with the acknowledgements', 'never write the acceptance reason yourself'). It also implies the on_behalf_of field via 'recorded as authorised by the member you name'. However, snapshot_id is not explicitly tied to a parameter, so there is a minor gap.
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 action: 'Seal a statement version as Datavrn’s permanent client copy, recorded as authorised by the member you name.' It uses a specific verb ('seal') and resource ('statement version'), and goes further to distinguish itself from approval/adoption/signature, which also helps differentiate it from sibling tools like get_finalise_readiness.
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 explicit usage instructions: 'Call get_finalise_readiness first', 'get their explicit go-ahead', 'Do not call finalise_statement again' in the reused case, and 'Poll get_job with the job_id'. It also names the alternative (get_finalise_readiness) and explains when not to call the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_schedule_iiiGenerate Schedule III statementsAInspect
Queue the Schedule III workbook build (returns a job_id to poll with get_job — the build runs as a background job). REFUSES when ungrouped accounts exist unless acknowledged: before acknowledging, present the ungrouped accounts to your user and obtain their explicit go-ahead; record it in acknowledge_reason and pass the exact count in acknowledge_count — an acknowledgement WITHOUT its count is always re-demanded. A multi-month statement period additionally requires acknowledge_multi_month_pnl WITH acknowledge_month_count (confirm with your user that the TBs are period movements, not cumulative). Never acknowledge anything the user has not seen. Once queued, the build usually completes in a few minutes — tell your user their statements are being prepared and poll get_job periodically; do not present the wait as a problem.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | ||
| template_id | Yes | ||
| acknowledge_count | No | ||
| acknowledge_reason | No | ||
| acknowledge_month_count | No | ||
| acknowledge_unclassified | No | ||
| acknowledge_multi_month_pnl | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the sparse annotations (readOnlyHint=false, destructiveHint=false), the description discloses the background job nature, refusal conditions, acknowledgment dependencies, and expected user communication. It fully exposes the behavioral contract of the 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 long but dense, with every sentence serving a purpose. It is front-loaded with the primary action and return value, then methodically covers refusal and multi-month handling. No wasted words given the tool's complexity.
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 8-parameter schema and no output schema, the description covers the async flow, user-consent requirements, and polling guidance. It does not enumerate possible errors or describe the resulting workbook contents, but it is sufficient for correct invocation and follow-up.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 13%, but the description compensates by explaining the semantics of acknowledge_count/acknowledge_reason and acknowledge_multi_month_pnl/acknowledge_month_count, including their interdependencies. However, template_id and period_id remain largely unexplained beyond the schema, leaving a minor gap.
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 specific action: 'Queue the Schedule III workbook build' and notes the async job_id return, distinguishing it from sibling get_*/save_* tools. It 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit instructions on handling refusal conditions (present ungrouped accounts, obtain user go-ahead, record reason and count) and directs the agent to poll get_job after queueing. This is precise when-to-use and how-to-proceed guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_allocation_account_figuresRead allocation account figuresARead-onlyInspect
MANAGEMENT data class. Read the current persisted allocation run at account grain: books figure plus spreading adjustment equals MIS figure, all as decimal-string rupees. Filter account names or minimum absolute MIS amount before paging. The summary covers the full filtered set and ties the spreading reconciliation; no target-level split or source transactions are returned. The signed page_token is source-pinned, so restart at page 1 if source_changed. known_stale and not_assessed disclose run state; neither means fresh.
| Name | Required | Description | Default |
|---|---|---|---|
| period | Yes | Management month in YYYY-MM. | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| page_size | No | Rows per source-pinned page (default 50, max 200). | |
| page_token | No | Signed continuation from the prior page; restart without it if source_changed. | |
| min_abs_mis | No | Minimum absolute MIS figure in rupees as a decimal string, e.g. '100000'. | |
| account_name_patterns | No | Up to 10 case-insensitive account-name substrings; any match is retained. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, openWorldHint, destructiveHint), the description discloses significant behavioral traits: the output format is decimal-string rupees, the summary covers the full filtered set and ties the spreading reconciliation, no target-level split or source transactions are returned, page tokens are source-pinned and expiration behavior is described, and run-state fields (known_stale, not_assessed) are explained. This far exceeds the annotation coverage and gives the agent a precise mental model of the tool'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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and information-dense. It leads with 'MANAGEMENT data class' and a clear statement of purpose, then efficiently layers in the data model, filtering, paging, summary behavior, and run-state semantics across four sentences. Every sentence adds unique information, and there is no filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 6 parameters, no output schema, and no nested objects, the description is remarkably complete. It explains the output grain, the arithmetic relationship of figures, filtering options, paging behavior, what data is excluded, and how to interpret run-state flags. It leaves no major ambiguities about what the tool returns or how to handle pagination edge cases, making it fully self-sufficient for the agent.
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 covers all 6 parameters with descriptions (100% coverage), so the baseline is 3. The tool description adds semantic value by explaining the data context (books + spreading = MIS, decimal-string rupees), which helps understand parameters like min_abs_mis. It also clarifies the interaction between filtering and paging, and reinforces the source-pinned nature of page_token. While it doesn't describe each parameter individually, the holistic context meaningfully aids parameter understanding, so a 4 is justified.
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 ('Read') and a specific resource ('the current persisted allocation run at account grain'), and explicitly clarifies the data model (books + spreading adjustment = MIS figure). It distinguishes itself from the sibling get_allocation_target_figures by noting that no target-level split is returned, 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.
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 this tool: it reads management allocation data at account grain, supports filtering before paging, and clarifies that target-level splits are excluded. It also gives explicit paging guidance (restart at page 1 if source_changed) and explains how to interpret run-state flags. However, it does not name a direct alternative tool or state explicit 'when not to use' conditions, 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.
get_allocation_target_figuresRead allocation target figuresARead-onlyInspect
MANAGEMENT data class. Read the current persisted allocation run at account × target × source × mode grain, with decimal-string allocated amounts. For step-down, filter allocation_sources=['step_down']; for profit centres, filter target_types=['profit_centre','sub_profit_centre']. Use filters before paging; the signed page_token is source-pinned, so restart at page 1 if source_changed. Target labels are cost-centre names as of the run and current profit-centre names; no owners, descriptions, source transactions, or recomputation are returned.
| Name | Required | Description | Default |
|---|---|---|---|
| period | Yes | Management month in YYYY-MM. | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| page_size | No | Rows per source-pinned page (default 50, max 200). | |
| page_token | No | Signed continuation from the prior page; restart without it if source_changed. | |
| target_types | No | Restrict to allocation target types. | |
| min_abs_amount | No | Minimum absolute allocated amount in rupees as a decimal string, e.g. '100000'. | |
| allocation_sources | No | Restrict to allocation sources. | |
| account_name_patterns | No | Up to 10 case-insensitive account-name substrings; any match is retained. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, but the description adds valuable behavior: 'the signed page_token is source-pinned, so restart at page 1 if source_changed' and 'Target labels are cost-centre names as of the run and current profit-centre names'. This exceeds the annotation-only 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with 'MANAGEMENT data class' and the grain. No filler—each sentence adds unique information: data grain, filtering patterns, pagination caveat, and label semantics/exclusions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters and no output schema, the description covers the essential context: grain, amount format, recommended filters, pagination behavior, and what is not returned. This gives an agent enough to invoke correctly and set expectations.
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 parameters are documented. The description adds meaning beyond the schema by explaining how to use enum values (allocation_sources, target_types) and the page_token behavior ('source-pinned, restart at page 1 if source_changed'). Minor gap: doesn't elaborate on min_abs_amount or account_name_patterns, but the schema covers them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'Read the current persisted allocation run at account × target × source × mode grain, with decimal-string allocated amounts.' It clearly distinguishes from the sibling get_allocation_account_figures by specifying the target grain and returned data format.
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?
Provides explicit when-to-use guidance: 'For step-down, filter allocation_sources=["step_down"]; for profit centres, filter target_types=["profit_centre","sub_profit_centre"]' and 'Use filters before paging'. It also states exclusions ('no owners, descriptions, source transactions, or recomputation are returned'), making it clear 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.
get_budgetRead budgetARead-onlyInspect
MANAGEMENT data class. Read one versioned budget: identity-free header, its pinned P&L tree, and filtered/paginated cells with entered-versus-inferred truth. Amounts and locked FX rate are decimal strings. Filter months, lines, centres, or inference before paging; the signed page_token is source-pinned, so restart at page 1 if source_changed. Cells across different P&L lines are not one meaningful grand total, so no cross-line grand total is exposed. No people, ownership, editability, or approval identities are returned.
| Name | Required | Description | Default |
|---|---|---|---|
| month | No | Optional budget month in YYYY-MM. | |
| budget_id | Yes | Budget id from list_budgets. | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| inference | No | Cell inference state (default all). | |
| page_size | No | Cells per source-pinned page (default 100, max 200). | |
| line_codes | No | Up to 25 P&L line codes. | |
| page_token | No | Signed continuation from the prior page; restart without it if source_changed. | |
| cost_centre_ids | No | Up to 25 cost-centre ids. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=true, destructiveHint=false), the description discloses substantive behavioral traits: amounts and FX rate are decimal strings, page_token is source-pinned and requires restart on source_changed, no cross-line grand total is exposed, and identity-related fields are omitted. This goes well beyond what annotations provide.
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 information-dense but well-structured: it opens with the core purpose, then covers data types, pagination/filtering, a caveat about grand totals, and exclusions. Every sentence contributes unique value, and the text is front-loaded with the primary action.
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 8 parameters and no output schema, this description is notably complete. It explains the return contents (header, P&L tree, cells), pagination/filtering semantics, and important limitations (no grand total, no identity fields), giving an agent enough context to invoke the tool 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?
All 8 parameters have schema descriptions (100% coverage), setting a baseline of 3. The description adds extra meaning by mentioning filter dimensions ('months, lines, centres, or inference') and the source-pinned page_token behavior, which clarifies how parameters interact beyond the schema's individual 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 clearly states the tool's purpose with a specific verb ('Read') and a distinct resource ('one versioned budget'), and it enumerates the returned components (identity-free header, pinned P&L tree, filtered/paginated cells). It differentiates itself from sibling get_* tools by focusing on budget data and including a data-class qualifier ('MANAGEMENT').
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 provides context about what the tool returns and notes exclusions (no people/ownership/approval identities), but it does not explicitly indicate when to use this tool versus alternatives like list_budgets or get_tb_rows. Usage guidance is implied by the tool name and the first sentence, but no explicit alternatives or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_consolidated_statementsRead sealed consolidated statementsARead-onlyInspect
CONSOLIDATED data class. Read one sealed group profit-and-loss, balance-sheet, or cash-flow face for an exact periodicity and period. The response exposes presentation currency and exactly one decimal-string amount per line: section-natural for P&L/BS, signed cash movement for CFS. Amounts are persisted on the sealed run; P&L/BS labels are current display metadata and the signed page_token is source-fingerprinted across the complete safe face, so a changed value or label requires restarting at page 1. A stale sealed run is disclosed on every page and is never called current. Member names, components, eliminations, journal references and lineage are not returned. Consolidated cash-flow is available only for an all-domestic group in v1. If any member uses a foreign currency, Datavrn does not present a consolidated cash-flow statement.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | An active group UUID or its exact case-insensitive display name. | |
| period | Yes | The period matching periodicity. | |
| page_size | No | Rows per source-pinned page (default 50, max 100). | |
| statement | No | Statement face (default pnl). | |
| page_token | No | Signed continuation from the prior page; restart without it if source_changed. | |
| periodicity | Yes | Period grammar: monthly YYYY-MM, quarterly FYyyyy-Qn, annual FYyyyy. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description goes well beyond: it explains the sealed-run persistence, page-token fingerprinting and restart requirement, stale-run disclosure, and the exact return format (single decimal-string amount per line, signed for CFS). This significantly enriches the agent's understanding of the tool'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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence contributes unique information: purpose, response shape, persistence behavior, pagination requirements, limitations, and missing data. It is front-loaded with the core purpose and then layers behavioral details without 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?
Given the tool's complexity and the absence of an output schema, the description covers the response format, what is not returned, pagination and change detection, and feature availability. It provides sufficient context for an agent to select and invoke the tool correctly without needing additional documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with useful parameter descriptions. The description adds extra meaning for parameters like page_token (source-fingerprinted) and statement (section-natural vs signed cash movement), but most parameter semantics remain in the schema. This is above the baseline 3 due to the additional context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Read') and resource ('sealed consolidated statements'), enumerates the statement faces (P&L, balance-sheet, cash-flow), and scopes by periodicity/period. It distinguishes itself from sibling tools by the 'CONSOLIDATED data class' label and detailed behavioral characteristics.
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 provides clear context on when the tool is appropriate, including limitations (cash-flow only for all-domestic groups, no foreign currency). However, it does not explicitly name alternative tools or state 'use this instead of X', so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_finalise_readinessCheck finalisation state and get approvalAInspect
Read the full finalisation state of one statement version, and get the approval finalise_statement needs. Call it ONCE immediately before finalising — it re-reads the stored workbook, so do not poll it. SHOW YOUR USER EVERY ROW THIS RETURNS — the gates that must be green, each warning they would be accepting and why, how many input cells are still empty, any control that could not be evaluated, and capture_live_diverged_message when it is present — before you finalise. Do not summarise the warnings away. capture_live_diverged_message means a capture answer changed after this version was generated: the version can still be sealed as it stands, and generating a fresh one is the alternative. Read it out and let your user choose. A control that "could not be evaluated" is not a pass: it is a check Datavrn did not run, and your user is entitled to know what was not checked before they seal the version. The approval is single-use, expires in 15 minutes, and is tied to this exact version, this connection and the member you name — if anything about the statement changes in between, finalise_statement will refuse and you start again from here. If your connection is not permitted to finalise, you still get the whole state; there is simply no approval to hand back.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | The entity (client) id — from list_clients. | |
| snapshot_id | Yes | The statement version id — from list_snapshots or get_schedule3_workspace. | |
| on_behalf_of | Yes | The email address your user signs in to Datavrn with. This records who authorised the change alongside the connection that made it. Ask them for it — do not guess. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important non-obvious behaviors beyond annotations: the tool re-reads stored workbook, approval is single-use/expires in 15 minutes, tied to exact version/connection/member, and will cause finalise_statement to refuse if anything changes. It also explains semantics of capture_live_diverged_message and 'could not be evaluated' controls. No contradictions with annotations (readOnlyHint false is consistent with approval issuance).
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 long but every sentence carries actionable guidance. It is front-loaded with the purpose and includes critical operational warnings (do not poll, show every row). Some redundancy exists (e.g., 'Do not summarise warnings away' vs 'SHOW YOUR USER EVERY ROW'), but the density of unique, important instructions justifies the length. Minor structural improvements (e.g., bullets) would make it a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must explain return values. It does so comprehensively by enumerating the key content: gates that must be green, warnings, empty input cells, unevaluated controls, capture_live_diverged_message, and the approval itself. It also covers edge cases like lack of permission and version changes. This is complete for a tool with this complexity and criticality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3 applies. The description does not add parameter-level syntax or format details beyond what the schema already provides. It relates on_behalf_of to the approval being tied to the named member, but this is behavioral context, not parameter semantics. The schema already instructs to ask the user for the email, so no further explanation needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Read the full finalisation state of one statement version, and get the approval finalise_statement needs,' using a specific verb, resource, and distinguishing it from the sibling finalise_statement. It also clarifies this is the pre-finalisation check, which differentiates it from 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage instructions: 'Call it ONCE immediately before finalising — it re-reads the stored workbook, so do not poll it.' It also tells the agent to show every row to the user before finalising, and explains behavior if connection is not permitted. This gives clear when-to-use and what-to-do guidance, and indirectly distinguishes from finalise_statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_helpGet the agent guideARead-onlyInspect
Get the Datavrn agent guide: how connecting works (OAuth and API key), what an assistant can do, how reading a statement as data works, and the guarantees and limits — plus the current list of tools. Call this to answer a user's questions about how Datavrn works from canonical documentation instead of guessing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and destructiveHint=false. The description adds valuable context by specifying what the guide contains (OAuth/API key, assistant capabilities, statement-as-data, guarantees/limits, tool list) and that it serves as canonical documentation. This goes beyond the annotations 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: two sentences, front-loaded with the tool's purpose, followed by a structured list of contents and a direct usage instruction. Every word earns its place, with no redundancy or padding.
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 simplicity (no parameters, no output schema), the description is fully sufficient. It explains what the guide covers, why to use it, and frames it as the canonical source for answering user questions, making it complete in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, which sets a baseline of 4. The description does not need to explain parameters and instead clarifies the tool's scope, maintaining the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and names a concrete resource ('the Datavrn agent guide'), then lists its contents. It clearly distinguishes from sibling tools that perform data operations, making this uniquely about documentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it: 'Call this to answer a user's questions about how Datavrn works from canonical documentation instead of guessing.' It provides clear context but does not mention any exclusions or alternative tools, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobGet job statusARead-onlyInspect
Poll a background job by id until status is succeeded or failed. A failed job carries its user-safe error reason — show it to your user. Jobs run on a background worker that claims queued work on a schedule, so a job sitting at "queued" (0 attempts) for the first few minutes is NORMAL, not a fault — keep polling every ~30–60s and reassure the user it is being prepared; do NOT report this as an error or a Datavrn bug. Only if it is still "queued" well past a few minutes should you tell the user it is taking longer than usual.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The job id returned by generate_schedule_iii. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description significantly expands on the annotations. While readOnlyHint=true and destructiveHint=false are useful, the description adds critical behavioral details: the asynchronous nature of jobs, that 'queued' for a few minutes is normal, that the tool returns a user-safe error reason on failure, and that the agent should keep polling. This is far beyond the annotations and helps the agent understand the tool's runtime behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a clear first sentence stating the core action, followed by failure handling, then queued-status behavior, and a final clause on when to escalate. Each sentence earns its place, and the length is justified by the need to prevent misinterpretation of the queued status. There is no fluff 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?
Even without an output schema, the description adequately covers the essential return information: statuses (succeeded, failed, queued), the presence of an error reason on failure, and the attempts count implied by '0 attempts'. It does not enumerate all possible statuses or include other fields, but for a polling tool, it provides sufficient context for an agent to act 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 schema already provides 100% coverage for the single parameter 'job_id', stating that it is the job id returned by generate_schedule_iii. The description does not add any additional semantic detail about the parameter itself. Therefore, the baseline of 3 is appropriate, as the schema does the heavy lifting and the description adds 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's function: 'Poll a background job by id until status is succeeded or failed.' It identifies the specific resource (background job) and action (poll by id), and it distinguishes this tool from siblings by focusing on generic background job status rather than specific entity statuses. The description also clarifies the end condition, which fully captures the tool's purpose.
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 extensive usage context, including polling frequency (every ~30–60s), how to interpret the 'queued' status (normal initially), and how to communicate results to the user (show error reasons, reassure user). However, it does not explicitly name alternative tools or state when not to use this tool, so it falls short of a 5 but provides clear enough context for when it should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_partner_capitalRead partner or owner capital scheduleARead-onlyInspect
Read the partner or owner capital schedule currently on file — Note 3a and Note 3b. THIS RETURNS PEOPLE’S NAMES, along with each person’s profit-sharing ratio and amounts. Call it before save_partner_capital so you can show your user what is on file and what your change would do — that save replaces the whole section, so a schedule you cannot see is a schedule you cannot safely replace. It also returns the total of the capital-account profit-sharing ratios, because Datavrn warns about a total that is not 100% only when at least two rows carry a ratio.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size (default 50, max 200). | |
| offset | No | Rows to skip (default 0). | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | The reporting period id — from list_periods. | |
| template_id | Yes | The statement template id (e.g. 'schedule3_v1' Division I; see list_snapshots/workspace). | |
| account_kind | No | Limit to one section: 'capital' is Note 3a, 'current' is Note 3b. Omit for both. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false, but the description adds meaningful behavioral detail: it returns people's names, profit-sharing ratios, amounts, and the total of ratios. It also explains why the total is returned (Datavrn warns only when at least two rows carry a ratio), which goes beyond the structured annotation.
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 yet complete, with the core purpose in the first sentence and all additional sentences carrying actionable context (usage before save, return contents, and ratio-total behavior). No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with no output schema, the description adequately covers the return contents and why the total is included. It also ties into the save sibling. Minor gaps like pagination behavior are already covered by the schema's limit/offset descriptions, so the overall context is strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter has a thorough schema description (e.g., account_kind maps 'capital' to Note 3a and 'current' to Note 3b). The tool description reinforces the Note 3a/3b framing but does not add significant parameter-level 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 clearly states the tool reads the partner or owner capital schedule (Note 3a and Note 3b), with a specific verb ('Read') and resource. It differentiates from siblings such as save_partner_capital by explicitly framing itself as the read-before-write companion.
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 guidance is explicit: 'Call it before save_partner_capital so you can show your user what is on file and what your change would do.' It explains why reading first is necessary because the save replaces the whole section, and even discusses the Datavrn total-ratio warning behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pending_workList pending work across entitiesARead-onlyInspect
Answer "what's left to do?" across every entity you can see — one row per entity, with what is blocking its Schedule III statement: whether the trial balance is in, how many accounts are still ungrouped, the latest generated version, and whether it has been finalised. Pass period_label to pick a period, or omit to default to the period most of your entities have a trial balance for (not necessarily the newest — one entity uploading a future period early will not flip the board). Rows include deep links that open the Datavrn web app (a login is needed there).
| Name | Required | Description | Default |
|---|---|---|---|
| period_label | No | Reporting period label, e.g. '2026-03'; omit to default to the period most of your entities have a trial balance for. |
Tool Definition Quality
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 beyond that: it explains the default period selection logic (not necessarily the newest period, resistant to early future uploads), states that deep links require a Datavrn login, and clarifies the per-entity row structure. This exceeds the minimal bar.
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 three sentences, front-loaded with the core purpose, followed by parameter guidance and a note about deep links. Every sentence contributes essential information without redundancy or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with one optional parameter and no output schema, the description is complete: it explains what is returned (one row per entity, with specific blocking fields), how the default period is chosen, and that deep links require login. No critical behavior is left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers period_label with a clear description (100% coverage), so the baseline is 3. The description adds extra nuance about the default period selection ('not necessarily the newest — one entity uploading a future period early will not flip the board') and the optional omit behavior, which provides 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 uses a specific verb ('Answer') and resource ('what's left to do? across every entity you can see'), clearly stating the tool's purpose. It distinguishes itself from sibling tools by emphasizing cross-entity aggregation of Schedule III blocking factors, which is a unique scope.
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 provides clear context on when to use the tool (to see pending work across entities) and how to invoke it (pass period_label or omit for default). It does not explicitly name alternative tools or say when not to use it, so it stops short of the highest level of guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_schedule3_workspaceGet Schedule III workspaceARead-onlyInspect
THE state tool: grouping progress, every required capture answer, generated/finalised versions, finalisation blockers, and bounded per-version control summaries. Report generation never marks capture complete. Exception output is rule/severity/count only — no account names or amounts. Call this to know what is left before finalising.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | The reporting period id — from list_periods. | |
| template_id | Yes | The statement template id (e.g. 'schedule3_v1' Division I; see list_snapshots/workspace). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds non-obvious behavioral details: it will never mark capture complete, and exception output is deliberately limited to rule/severity/count without sensitive account data. This sets accurate expectations for side effects and data scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense, informative sentences with no filler; each clause earns its place. Slightly heavy on domain jargon like 'bounded per-version control summaries' may impede quick comprehension, but overall it is appropriately sized.
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 its read-only nature and rich annotations, the description covers tool outputs, non-side-effect behavior, and output limitations. It lacks only a full return structure, which is acceptable without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds no parameter-specific semantics. The baseline of 3 applies because the schema already fully documents each parameter's 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 clearly positions this as the central state tool for Schedule III, enumerating specific components (grouping progress, capture answers, versions, blockers, control summaries). This distinguishes it from sibling tools like get_statement_figures or get_setup_status by framing it as the holistic workspace view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Call this to know what is left before finalising', providing a clear when-to-use scenario. It does not name alternative tools or exclusions, but the context is sufficient for selecting this over other read-only tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_setup_statusShow setup status and the next stepARead-onlyInspect
Answer "how do I get started?", "what do I do next?", or help a user who seems lost setting up. Returns where they are in the journey from an empty organization to a finished Schedule III statement, and the ONE next step to take. Call it WITHOUT client_id first (the organization view): it lists the entities this credential can see, or — if there are none — the step to create the first one. Then call it again WITH one entity’s client_id for that entity’s full step-by-step path (upload trial balance → confirm groupings → capture figures → generate → download). Each step has a status (done / next / todo / blocked / web_only) and either the exact tool to call or a web-app link. NARRATE ONE STEP AT A TIME — walk the user through the single next step; do not dump the whole list unprompted. Steps marked web_only are done in the Datavrn web app and need a login — never claim you can do them yourself. This tool reports STATUS only (counts, names, what is done) — it never returns a figure or balance; read those with get_statement_figures once a statement is generated.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | No | An entity id (from list_clients or the organization view) for that entity’s full path; omit for the organization-level overview and, on an empty org, the create-entity step. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable context: it only reports status (counts, names, what is done), never returns a figure or balance, and explains that web_only steps require login. It also discloses that on an empty organization it returns the create-first-entity step. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence carries actionable information: two calling modes, step statuses, narration instruction, web_only caveat, and scope limitation. It is front-loaded with the use case. The length is justified by the tool's complexity; there is zero fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully explains return semantics: org vs entity views, step statuses, tool links, and the narration rule. It even cross-references get_statement_figures to clarify what the tool does NOT return. Given the tool's dual-mode nature, this is complete and leaves no critical ambiguity.
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 covers the single parameter well (omit for org view, include for entity path). The description reinforces this and adds the step sequence and the 'create entity' fallback, deepening the agent's understanding of how the parameter affects output. Since schema coverage is 100%, this extra context raises it above a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens by naming the exact user questions ('how do I get started?', 'what do I do next?') and states it 'Returns where they are in the journey... and the ONE next step to take.' This clearly identifies the tool's purpose (reporting setup status) and distinguishes it from sibling tools like get_pending_work or generate_schedule_iii.
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 explicit when-to-use guidance (user lost during setup) and a precise two-call protocol: first without client_id, then with one entity's client_id. It also instructs the agent to narrate one step at a time, warns against claiming to perform web_only steps, and points to get_statement_figures for figures. This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spreading_reconciliationRead spreading reconciliationARead-onlyInspect
MANAGEMENT data class. Read the persisted books-to-MIS spreading reconciliation, not a new allocation run. Accounts view gives account-grain books plus adjustments equals MIS; adjustments view requires one account and pages its rule adjustments. Money is decimal-string rupees. Whole-run summary figures never change with account filters. The signed page_token is source-pinned, so restart at page 1 if source_changed. Raw warning context is withheld; known_stale and not_assessed are disclosure states, not freshness claims.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | accounts (default) or adjustments; adjustments requires account_id. | |
| period | Yes | Management month in YYYY-MM. | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| page_size | No | Rows per source-pinned page: accounts default 25/max 100; adjustments default 50/max 200. | |
| account_id | No | Required for adjustments view; an account in this entity and run. | |
| page_token | No | Signed continuation from the prior page; restart without it if source_changed. | |
| account_name_patterns | No | Up to 10 case-insensitive account-name substrings; any match is retained. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds extensive behavioral detail: view-specific output semantics, decimal-string rupees, invariant summary figures, source-pinned page_token behavior, and the meaning of warning states. This significantly aids the agent in interpreting results and pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise yet information-dense, with every sentence contributing unique value. It is front-loaded with the core purpose and uses a logical flow (purpose, views, data format, pagination, warnings). No redundancy or fluff.
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?
Despite the absence of an output schema, the description covers critical contextual aspects: view contents, pagination semantics, data type, summary behavior, and disclosure states. This is a complex tool with 7 parameters, and the description provides enough context for the agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description mostly reinforces schema information (e.g., adjust view requires account_id, page_token source pinning) and adds output-related context rather than new parameter depth. It does not materially elevate parameter understanding 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 clearly states the tool reads the persisted books-to-MIS spreading reconciliation, using a specific verb and resource. It explicitly distinguishes from a new allocation run and explains the two view modes, making its purpose unambiguous relative to sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is for reading the persisted reconciliation, not a new allocation run, and explains when to use accounts vs adjustments view. It lacks explicit alternatives by name, but the exclusion and view guidance are sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statement_figuresRead statement figuresARead-onlyInspect
Read a generated Schedule III statement's figures: the balance-sheet and profit-and-loss faces, current-year and previous-year balance-sheet tie verdicts separately (a null verdict means UNKNOWN, never a pass: either no comparative was captured, or the version predates per-column balance recording), the unclassified count, and the notes listed by number. Also returns bounded exception counts by rule/severity and the frozen control changes versus the immediately previous recorded version; it never recomputes either from live books. Figures come from a generated version (the latest unless you pass a specific version) and match the workbook exactly. If the version was generated before figure reads existed it returns available:false with reason "figures_not_available" and only the legacy flat tie verdict; tell the user to generate the statement again, read the latest version, then retry. For a note's line-by-line breakdown, use its note_index entry with get_statement_notes. Amounts are decimal strings in rupees. Figures are Datavrn's deterministic engine output; interpretation is your assistant's.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | A specific statement version; omit for the latest. | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | The reporting period id — from list_periods. | |
| template_id | Yes | The statement template id (e.g. 'schedule3_v1' Division I; see list_snapshots/workspace). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint, the description discloses that it never recomputes from live books, null verdicts mean UNKNOWN (never a pass), old versions return available:false with a specific reason, and amounts are decimal strings in rupees. These behavioral traits add significant context beyond annotations and do not contradict them.
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?
Although lengthy, every sentence provides a distinct, non-redundant fact (return list, null semantics, no live recomputation, version behavior, retry guidance, sibling alternative, amount format, interpretation responsibility). The description is front-loaded with the primary purpose and is appropriately structured for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description thoroughly enumerates return values, edge cases (unavailable versions), and data types, covering the major aspects of a complex read tool. It even notes 'bounded exception counts' and matches the workbook exactly, leaving no significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all four parameters described), so baseline is 3. The description's version phrase ('the latest unless you pass a specific version') merely restates the schema's 'omit for the latest' and adds no new meaning. No other parameter is elaborated beyond 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 opens with a specific verb+resource ('Read a generated Schedule III statement's figures') and enumerates the returned components (balance-sheet/P&L faces, tie verdicts, unclassified count, notes, exception counts, control changes). It explicitly distinguishes from a sibling tool by directing note line-by-line breakdown to get_statement_notes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly indicates this tool reads figures from a generated version, provides an alternative (get_statement_notes for note breakdowns), and instructs how to handle old versions ('generate the statement again, read the latest version, then retry'). This constitutes explicit when/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statement_notesRead statement notesARead-onlyInspect
Read the line-by-line breakdown of a generated statement's notes — every line's current and prior-year amount, and the note total. Pass note_numbers (from get_statement_figures' note_index) to fetch specific notes, or omit for all. Use this to answer "what's in Other Expenses?" or "what makes up trade receivables?". Each line has a kind: 'component' (an additive line), 'subtotal' (a presentational group subtotal — do NOT add it into the total, or you double-count), or 'header'. Fixed-asset / intangible notes carry a block per class with gross_block, accumulated depreciation, and net (the additions/deletions movement schedule itself lives in the workbook). If the full set is too large it returns too_large:true with a note_index — fetch note_numbers in small batches. A single very large note (e.g. a PPE schedule or an ageing note) is returned in explicitly-flagged line pages: each page carries the authoritative note total, lines_page, lines_total, and has_more_lines — keep fetching lines_page until has_more_lines is false; never treat one page's lines as the whole note. Amounts are decimal strings in rupees. Figures are Datavrn's deterministic engine output; interpretation is your assistant's.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | A specific statement version; omit for the latest. | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | The reporting period id — from list_periods. | |
| lines_page | No | For a single very large note returned in line pages: the 1-based line page to fetch (fetch exactly one note; keep going until has_more_lines is false). | |
| template_id | Yes | The statement template id (e.g. 'schedule3_v1' Division I; see list_snapshots/workspace). | |
| note_numbers | No | Specific note numbers to fetch (from note_index); omit for all notes. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly and non-destructive annotations, the description discloses line kinds ('component', 'subtotal', 'header'), warns against double-counting subtotals, explains fixed-asset block structure, details pagination (lines_page, has_more_lines), the too_large flag, decimal strings, and deterministic engine output. This is extensive behavioral context far exceeding annotation value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense yet front-loaded with the core purpose, then systematically covers line kinds, blocks, pagination, and data format. Every sentence delivers distinct, actionable information without redundancy, making it easy for an agent to parse and apply.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by explaining response features (line kinds, totals, pagination fields, too_large flag) and edge cases like double-counting subtotals and single large notes. It fully equips an agent to safely interpret and consume the tool's output across normal and paginated scenarios.
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?
Although schema coverage is 100%, the description adds operational meaning: note_numbers can be omitted for all notes, lines_page should be fetched until has_more_lines is false, and how note_index from get_statement_figures feeds into note_numbers. This deeply enriches the schema's basic 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?
The description opens with a specific verb and resource: "Read the line-by-line breakdown of a generated statement's notes," and clearly states what is included (current/prior-year amounts, note total). It also distinguishes from siblings by referencing get_statement_figures' note_index and the note-level scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit use cases are given ("Use this to answer 'what's in Other Expenses?'...") and it directs users to get_statement_figures for note_numbers. However, it does not explicitly state when not to use this tool or name alternative tools for higher-level summaries, missing the 'when-not/alternatives' part of the 5-level criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tb_rowsRead trial-balance source dataARead-onlyInspect
Read the SOURCE DATA behind a statement: the trial-balance rows (account name, debit, credit) as landed for a period, BEFORE grouping — the pre-statement numbers, not statement figures. PREFER FILTERS over fetching everything: name_patterns (e.g. ['cash','bank','od']), side ('debit'/'credit' by net balance), and min_abs_balance return a small exact subset with its own debit/credit totals — e.g. wrong-side cash accounts = name_patterns ['cash','bank'] + side 'credit'. Paginated (page 1-based; page_size default 50, max 500). These are the CURRENT live rows: statement figures are frozen at a generated version, so if the trial balance was re-uploaded after a version was generated, these rows may not tie to that version (the response note says so). Amounts are decimal strings in rupees. Figures are Datavrn's deterministic engine output; interpretation is your assistant's.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number (default 1). | |
| side | No | Keep only accounts whose net balance falls on this side (debit = debits exceed credits). Accounts netting to zero match neither. | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| page_size | No | Rows per page (default 50, max 500 — prefer filters over big pages). | |
| period_id | Yes | The reporting period id — from list_periods. | |
| name_patterns | No | Up to 10 case-insensitive substrings; an account matches if its name contains ANY of them (e.g. ['gst','tds']). | |
| min_abs_balance | No | Keep only accounts whose balance (the larger of its debit/credit) is at least this many rupees — a decimal string like '100000'. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark read-only and non-destructive, but the description adds valuable behavior: rows may not tie to a generated version after re-upload, amounts are decimal strings in rupees, output is deterministic, and pagination behavior. These go 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: purpose, filtering guidance, pagination, data freshness caveat, amount format, and interpretation responsibility. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description covers the key output fields (account name, debit, credit, totals, note), filters, pagination, and data semantics. It is complete for an agent to decide and 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?
Schema has 100% coverage, so baseline is 3. The description enhances this by providing examples for name_patterns, side, and min_abs_balance, plus clarifying pagination defaults, adding meaningful context 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+resource+scope: 'Read the SOURCE DATA behind a statement: the trial-balance rows (account name, debit, credit) as landed for a period, BEFORE grouping'. It clearly distinguishes from statement figures and sibling tools like get_statement_figures.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to 'PREFER FILTERS over fetching everything', gives a concrete example (wrong-side cash accounts), and notes the 'CURRENT live rows' vs frozen statement figures, indicating when not to use this tool. It also contrasts with statement figures.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_uploadGet upload statusARead-onlyInspect
Read an upload session: status, detected header row and columns, the confirmed mapping (if any), and the stored validation outcome. Use to check what a staged upload still needs.
| Name | Required | Description | Default |
|---|---|---|---|
| upload_id | Yes | The upload session id returned by upload_trial_balance. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description aligns by saying 'Read'. It adds value by listing the specific data returned, which goes beyond the annotation. It does not mention side effects, but for a read-only tool this is sufficient.
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 sentences, front-loaded with the action and resource, and every sentence contributes. There is no redundant information or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and no output schema, the description fully covers what the tool returns and when to use it. No additional behavioral context seems necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the upload_id parameter already has a clear description ('returned by upload_trial_balance'). The tool description adds no additional parameter semantics, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads an upload session and enumerates exactly what it returns (status, header row/columns, confirmed mapping, validation outcome). The verb 'Read' plus resource 'upload session' is specific and distinct from siblings like get_upload_link_status.
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 line 'Use to check what a staged upload still needs' provides clear usage context. However, it does not explicitly mention alternatives or when not to use this tool, so it falls 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.
get_upload_link_statusGet upload link statusARead-onlyInspect
Check an upload link's state: pending (the user has not uploaded yet), uploaded (returns the upload_id — continue with get_upload), or expired (mint a fresh link with create_upload_link). Poll after the user says they uploaded the file.
| Name | Required | Description | Default |
|---|---|---|---|
| link_id | Yes | The link id returned by create_upload_link. |
Tool Definition Quality
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 by enumerating the three states and what they return (e.g., upload_id for uploaded). It doesn't mention edge cases or rate limits, but for a simple read-only status check, this is adequate.
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 sentences, front-loaded with the core purpose, and every clause adds value. No fluff 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?
For a simple status-check tool with strong annotations and a single well-documented parameter, the description fully covers the states and next actions. The lack of an output schema is acceptable here because the description verbally explains what is returned for each state.
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 parameter link_id is documented in the schema with 'The link id returned by create_upload_link.' The description does not add further parameter-level detail beyond that, but since schema coverage is 100%, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Check' and clearly identifies the resource (upload link) and its states (pending, uploaded, expired). It also distinguishes itself from sibling tools by referencing get_upload and create_upload_link, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('Poll after the user says they uploaded the file') and provides action guidance for each possible state, including alternatives like continuing with get_upload or creating a new link via create_upload_link.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_variance_reportRead variance reportARead-onlyInspect
MANAGEMENT data class. Read the existing budget-or-prior variance report for a month; it never recalculates it. Amounts are decimal strings; a null actual or variance means unavailable, never zero. Rows view has whole-report unfiltered rollups and no cross-side grand total; filters affect only rows and filtered grain counts. Explanations view withholds internal notes and may redact structured PII. Filter lines or centres before paging; the signed page_token is source-pinned, so restart at page 1 if source_changed.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | Report rows (default) or safe explanations. | |
| basis | No | Comparator basis (default budget). | |
| period | Yes | Management month in YYYY-MM. | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| page_size | No | Rows per source-pinned page (default 50, max 100). | |
| line_codes | No | Up to 25 P&L line codes. | |
| page_token | No | Signed continuation from the prior page; restart without it if source_changed. | |
| cost_centre_ids | No | Up to 25 cost-centre ids. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true and destructiveHint=false. The description significantly expands on this with deep behavioral details: null semantics ('null actual or variance means unavailable, never zero'), rollup behavior ('whole-report unfiltered rollups and no cross-side grand total'), privacy filtering ('withholds internal notes and may redact structured PII'), and pagination semantics ('source-pinned, so restart at page 1 if source_changed'). This goes far beyond the annotations and is highly informative.
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 dense, well-structured paragraph that front-loads the core purpose ('MANAGEMENT data class. Read the existing budget-or-prior variance report') and then packs high-value edge-case details into a compact series of clauses. Every sentence contributes distinct information (nulls, rollups, explanations view, paging) without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with 8 parameters, two views, pagination, and subtle data semantics, and there is no output schema. The description covers critical operational details: null handling, rollup behavior, explanation-view redaction, and paging restart logic. It is thorough enough that an agent could invoke this tool correctly with minimal additional inference, making it effectively complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter has a baseline description. However, the tool description adds meaningful semantics about how parameters interact: filters affect rows and filtered grain counts, and page_token is source-pinned. This goes beyond individual parameter docs, enriching understanding of view, line_codes, cost_centre_ids, and page_token. Given the high schema coverage, a 4 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 'Read the existing budget-or-prior variance report for a month; it never recalculates it.' This clearly identifies the action (read), the resource (existing variance report), and the scope (budget/prior, monthly). It distinguishes this from sibling read tools like get_budget or get_statement_figures by specifying the variance-report resource and its read-only, non-recalculating nature.
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 establishes usage context by stating it reads an existing report and never recalculates, implying it should be used when a pre-computed variance report is needed. It also provides practical guidance: 'Filter lines or centres before paging' and the page_token restart condition. However, it does not explicitly name alternative tools or state when not to use it, so it falls 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.
get_workbook_downloadDownload workbookARead-onlyInspect
Mint a short-lived signed URL for a frozen workbook version (the Excel file). Give the URL to your user to open in a browser — it needs no login and expires in about 10 minutes. The bytes are immutable and integrity-hashed.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | The entity (client) id — from list_clients. | |
| snapshot_id | Yes | The snapshot id from list_snapshots. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond annotations: short-lived signed URL, ~10-minute expiry, no login required, immutable bytes with integrity hashing. These details help the AI understand the tool's behavior without needing to invoke it. No contradiction with the readOnlyHint=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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, no redundant phrasing. The second sentence adds essential usage and behavioral details without waste. 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?
The description explains what the tool returns (a URL) and gives key attributes (short-lived, no login, immutable). It does not specify the exact response format (e.g., JSON field name), but for a low-complexity tool with no output schema, this covers the essential context. Slight gap in not mentioning any error conditions or prerequisites.
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 provides 100% coverage with descriptions for client_id and snapshot_id, referencing list_clients and list_snapshots. The description adds minimal meaning for snapshot_id ('frozen workbook version') but does not elaborate on parameter syntax or format. Baseline of 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Mint a short-lived signed URL for a frozen workbook version (the Excel file).' The verb 'mint' is specific and the resource (workbook download) is unambiguous. It distinguishes itself from sibling download/upload tools by focusing on the frozen workbook version download.
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 provides clear context: 'Give the URL to your user to open in a browser — it needs no login and expires in about 10 minutes.' This implies the tool is for user-facing download of a frozen workbook, but it does not explicitly mention alternatives or when not to use. The context is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_uploadIngest upload into the booksADestructiveInspect
Commit a validated upload into the entity’s books. If validation produced WARNINGS, this refuses until acknowledge_warnings=true — present every warning to your user and obtain their explicit go-ahead first; never acknowledge warnings the user has not seen. Returns the ingestion outcome including any notices.
| Name | Required | Description | Default |
|---|---|---|---|
| upload_id | Yes | The upload session id returned by upload_trial_balance. | |
| confirm_merges | No | ||
| acknowledge_warnings | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include destructiveHint=true, but the description adds critical behavioral context: it refuses on warnings unless acknowledge_warnings=true, requires explicit user consent for each warning, and never auto-acknowledges unseen warnings. This goes well beyond the structured fields and clarifies the destructive action's safeguards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, purpose first, then warning behavior, then return value. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description communicates the commit action, warning refusal policy, user-consent requirement, and return outcome. It lacks detail on confirm_merges semantics and any side effects beyond 'ingestion outcome,' but given the absence of an output schema and the succinct structure, it is largely sufficient. A 5 would require covering the confirm_merges parameter or more explicit post-conditions.
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 only 33% (only upload_id described). The description adds meaning to acknowledge_warnings by explaining its role in overriding warning refusal. However, confirm_merges remains entirely unexplained; its schema shows prior_account_id and new_name but no semantic description. This partial compensation yields an average score.
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: 'Commit a validated upload into the entity’s books.' This clearly distinguishes it from sibling tools like upload_trial_balance (which likely uploads but does not commit) and the confirm_* tools (which handle pre-ingest mappings).
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 usage after validation, stating it commits a 'validated upload' and that warnings block ingestion until acknowledged. It does not name alternative tools explicitly but provides clear context: this is the final ingestion step. No exclusions or when-not-to-use are given, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_account_mappingsReview account mappingsARead-onlyInspect
Review account-to-cost-centre mapping status and deterministic suggestions for an entity. This is status-only: it returns account names, types, target names, confidence, reasons, and balance-bearing booleans, but never debit, credit, balance, or any rupee amount. Always present the rows grouped by confidence tier and target, state exact counts, flag every medium/low-confidence row, and show the two distinct completion counts: unmapped_total and unmapped_with_balance. Do not call either count pending.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number (default 1). | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| page_size | No | Rows per page (default 100, max 200). | |
| name_patterns | No | Return accounts whose code or name contains at least one of these case-insensitive patterns. | |
| unmapped_only | No | Return only accounts that still need a centre mapping. | |
| balance_bearing_only | No | Return only accounts that carry a balance, without returning the balance itself. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds substantial context: it is 'status-only', never returns rupee amounts, returns deterministic suggestions, and imposes presentation rules (grouping by confidence tier, exact counts, flagging medium/low rows, and avoiding the word 'pending'). This goes well beyond the annotations and clarifies the tool's behavioral safety and output expectations.
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, front-loaded with the primary purpose. The second sentence packs many required presentation rules, which is dense but each clause earns its place. It could be broken into bullet points for readability, but it is efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description takes on the burden of explaining return values: account names, types, target names, confidence, reasons, balance-bearing booleans, and the two completion counts. It also covers usage context. Gaps remain (e.g., ordering of results, definition of confidence tiers, pagination behavior) but the core information is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with every parameter documented (e.g., client_id, page, page_size, name_patterns, unmapped_only, balance_bearing_only). The description does not add additional parameter-level meaning beyond what the schema already provides, and the baseline is 3 when the schema carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb+resource: 'Review account-to-cost-centre mapping status and deterministic suggestions'. It clearly distinguishes from sibling tools like confirm_centre_mappings or list_grouping_suggestions by emphasizing 'status-only' and listing exactly what is returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly sets the context: use this to review mapping status before confirming, and it explicitly states what data is NOT returned (no amounts). However, it does not name alternative tools or explicitly say when not to use it, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_allocation_runsList allocation runsARead-onlyInspect
MANAGEMENT data class. Discover persisted allocation runs and their conservation heads; this does not generate or recompute allocation. Money is decimal-string rupees. Results are ordered period, version, then run id, and the signed page_token is pinned to the complete filtered source: if it reports source_changed, restart at page 1. current_only means latest generated version, not source freshness; known_stale and not_assessed are both warnings, never a claim that the source is fresh. Raw stale reasons and warning context are not returned.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Optional management month in YYYY-MM. | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| page_size | No | Rows per source-pinned page (default 20, max 50). | |
| page_token | No | Signed continuation from the prior page; restart without it if source_changed. | |
| current_only | No | Return only the latest generated version per period (default true); this is not a freshness claim. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, but the description adds substantial behavior beyond that: ordering by period/version/run id, page_token pinning and source_changed handling, current_only semantics (not freshness), stale warnings ('never a claim that the source is fresh'), and absence of raw reasons. This is rich context and fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, each adding new information: classification, purpose, money format, ordering, pagination semantics, stale warnings, and exclusion of raw reasons. Front-loaded with purpose and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description fully covers the operational semantics: ordering, pagination with source pinning, current_only meaning, stale warning interpretation, and data format (decimal-string rupees). It is complete for a read-only list tool and handles edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters are fully described in the schema (100% coverage), so the baseline is 3. The description elevates this by adding deeper meaning for page_token ('pinned to the complete filtered source... restart if source_changed') and current_only ('latest generated version, not source freshness'), which goes beyond the schema's 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 opens with a specific verb-resource pair ('Discover persisted allocation runs') and immediately clarifies scope ('conservation heads') while explicitly stating what it does not do ('does not generate or recompute allocation'). This strongly distinguishes it from generation tools like generate_schedule_iii.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly indicates when to use (discover persisted runs) and includes an explicit exclusion ('does not generate or recompute allocation'), but it does not name alternative tools or provide broader when-to-use guidance beyond this scope. The context is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_budgetsList budgetsARead-onlyInspect
MANAGEMENT data class. Discover budget ids and versions without identity fields. Locked FX rate and all money-valued fields are decimal strings. Filter status or fiscal-year start before paging. The signed page_token is pinned to the complete filtered source; restart at page 1 if source_changed. This lists budget headers only, not cells, approvals identities, or a recalculated budget.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Optional budget status. | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| page_size | No | Rows per source-pinned page (default 20, max 50). | |
| page_token | No | Signed continuation from the prior page; restart without it if source_changed. | |
| fiscal_year_start | No | Optional fiscal-year first-of-month date, e.g. 2026-04-01. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=true, destructiveHint=false), the description adds meaningful behavioral context: money-valued fields are decimal strings, page_token is pinned to the complete filtered source, and restart at page 1 if source_changed. These details are not present in annotations and 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each carrying distinct information: data class, purpose, data format, pagination, and scope exclusions. The 'MANAGEMENT data class' phrase is somewhat cryptic, but the description is not bloated and front-loads the core purpose.
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 list tool with 5 parameters and no output schema, the description covers purpose, pagination behavior, data format, and exclusions, providing a solid mental model. It does not explicitly describe the full response structure but implies the return contains budget ids and versions, which is adequate.
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 covers all parameters (100%), but the description adds usage semantics: 'Filter status or fiscal-year start before paging' and explains the page_token's pinning behavior. This goes beyond the schema's individual 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?
Description explicitly states 'Discover budget ids and versions' and 'lists budget headers only', clearly identifying the resource (budgets) and action (list/discover). It distinguishes itself from sibling tools like get_budget by scoping to headers only and excluding cells, approvals identities, and recalculated budgets.
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?
Provides clear usage context: filter status or fiscal-year start before paging, and explains page_token pinning with restart guidance if source_changed. It notes what the tool does NOT list, implying alternatives, but does not explicitly name sibling tools like get_budget.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_clientsList entitiesARead-onlyInspect
List the entities (companies) this credential can work with. Call this first to resolve the client_id every other tool needs. Returns each entity id and name.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
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 behavioral context by stating the returned data (entity id and name) and the credential-scoping behavior, which is useful beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the primary action and immediately followed by the key usage instruction. Every sentence earns its place with no 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?
For a parameterless read-only list tool, the description fully covers purpose, usage, return format, and relationship to other tools. No output schema exists, but the description explicitly states what is returned (entity id and name), making it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100% by default. The description adds meaningful context about the resource being listed and the return value, fulfilling the baseline for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('List') and resource ('entities (companies) this credential can work with'), and explicitly distinguishes the tool's purpose by explaining it resolves the client_id needed by other tools. This differentiates it from sibling tools like create_client or list_budgets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs 'Call this first to resolve the client_id every other tool needs,' giving concrete when-to-use guidance and positioning it as a prerequisite step. This is strong usage direction beyond what annotations provide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cost_centresList cost centresARead-onlyInspect
List the cost centres for an entity. Use this before proposing account mappings so you can group the proposal by target name and distinguish operating from support centres. This is status-only: it returns names and kinds, never rupee amounts. Tell the user what the existing structure means before suggesting a change.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number (default 1). | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| page_size | No | Rows per page (default 100, max 200). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds meaningful context beyond annotations: it is 'status-only', returns only names/kinds (never rupee amounts), and advises informing the user about the existing structure before suggesting changes. This enriches the behavioral profile 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: primary action, workflow context, and behavioral caveat. Front-loaded with the verb+resource, no filler, and well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description explains the return content (names and kinds, no amounts) and covers purpose, usage, and user interaction guidance. Combined with detailed schema and annotations, the tool is fully contextualized for an agent to invoke and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter (client_id, page, page_size) fully described in the schema. The description adds no parameter-specific detail beyond what the schema provides, 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+resource ('List the cost centres for an entity') and distinguishes from siblings like list_profit_centres by clarifying it returns names and kinds only, never rupee amounts. The purpose is unambiguous and clearly scoped.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('before proposing account mappings') and what to do with the results (group by target name, distinguish operating vs support, explain structure before suggesting changes). It does not name alternatives or provide explicit 'when not to use' exclusions, but the context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_grouping_suggestionsList grouping suggestionsARead-onlyInspect
List ungrouped accounts with DETERMINISTIC grouping suggestions (curated rules + name/group-path matching — no AI is involved; Datavrn never applies a suggestion itself). Paginated. Each row carries a reason and a confidence tier: present them to your user GROUPED BY CONFIDENCE, and call out low-confidence and balance-bearing rows for individual attention — a single blanket approval is not a review of the low-confidence tail. Confirm only what your user approves via confirm_groupings. Returns a summary (counts by confidence tier) plus one page of suggestion rows — fetch tier by tier with the confidence filter instead of everything at once; pass include='confirmed' to see already-confirmed groupings.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size (default 50, max 200). | |
| offset | No | Rows to skip (default 0). | |
| include | No | Which rows to page: 'suggestions' (default), 'confirmed' (already-grouped accounts), or 'both'. | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | The reporting period id — from list_periods. | |
| confidence | No | Keep only suggestion rows in this confidence tier ('none' = accounts with no deterministic suggestion). Filters rows only — the summary counts stay over the whole population. | |
| has_balance | No | Keep only suggestion rows whose account carries a live balance (true) or not (false). | |
| template_id | Yes | The statement template id (e.g. 'schedule3_v1' Division I; see list_snapshots/workspace). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior. The description adds substantial behavioral context: deterministic rules (no AI), Datavrn never auto-applies, pagination behavior, summary counts remain whole-population when filtering, and return format. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded, but somewhat long (~170 words). Every sentence adds value, though some phrases like 'a single blanket approval is not a review...' could be tightened without losing meaning.
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 complexity (8 params, pagination, confidence tiers, confirmation workflow) and no output schema, the description is remarkably complete. It explains return format, pagination, filtering strategy, and the confirmation flow, offering sufficient context for correct tool 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 already covers 100% of parameters, so baseline is 3. The description adds usage semantics for confidence (fetch tier by tier), include ('confirmed' shows already-grouped), and has_balance (call out balance-bearing rows), which goes beyond schema 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 lists ungrouped accounts with deterministic grouping suggestions, using a specific verb and resource. It distinguishes itself from the sibling confirm_groupings tool by explicitly noting that suggestions are never auto-applied.
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?
Provides explicit usage guidance: present suggestions grouped by confidence, call out low-confidence rows, confirm only via confirm_groupings, and fetch tier by tier instead of all at once. It also tells when to use include='confirmed'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_periodsList reporting periodsARead-onlyInspect
List the reporting periods a Schedule III statement can be prepared for (periods with a live Trial Balance). Returns period ids for get_schedule3_workspace, save_py_values, and generate_schedule_iii.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | The entity (client) id — from list_clients. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior. The description adds meaningful context by specifying that only periods with a live Trial Balance are listed and that the output consists of period IDs used by specific downstream tools. This goes beyond the 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first leads with the primary action and scope, the second clarifies the output and consumers. Every word adds value, 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?
For a simple read-only list operation with one parameter and no output schema, the description fully covers purpose, the condition (live Trial Balance), and return value (period IDs). Naming the downstream tools provides integration context, making the description complete on its own.
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 fully documents the single parameter client_id, including its type and derivation ('from list_clients'), so the description need not add further detail. The description does not mention parameters at all, which is acceptable given the schema coverage is 100%.
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 ('List'), a clear resource ('reporting periods for a Schedule III statement'), and a distinguishing condition ('periods with a live Trial Balance'). It also names downstream consumers (get_schedule3_workspace, save_py_values, generate_schedule_iii), which differentiates it from other list_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: before preparing a Schedule III statement, to obtain valid period IDs. It explicitly names the tools that consume these IDs, giving clear workflow context. However, it does not explicitly state when not to use it or mention 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.
list_profit_centresList profit centresARead-onlyInspect
List the profit centres for an entity. Use this to explain available targets before a user confirms any explicit mapping. This is status-only: it returns names and hierarchy, never rupee amounts.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number (default 1). | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| page_size | No | Rows per page (default 100, max 200). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds meaningful context: 'It returns names and hierarchy, never rupee amounts,' which clarifies the return scope 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each earning its place: purpose, usage context, and behavioral caveat. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple read-only list tool, the description plus schema fully cover what an agent needs: return type (names/hierarchy), non-financial nature, and pagination parameters. No output schema exists, but the description adequately conveys return content.
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 doesn't add parameter-specific details beyond the schema, but it doesn't need to; the schema already documents client_id, page, and page_size thoroughly.
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 'List the profit centres for an entity', a specific verb+resource with scope. It further distinguishes itself from siblings by noting it's used 'before a user confirms any explicit mapping', clarifying its role versus confirmation/mutation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear when-to-use context: 'Use this to explain available targets before a user confirms any explicit mapping.' However, it doesn't explicitly name alternative tools or state when not to use it, though the phrase implies it precedes confirm_centre_mappings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_reporting_linesReview reporting-line mappingsARead-onlyInspect
Review reporting-line classification status and deterministic suggestions for an entity and reporting period. This is status-only: it returns names, line labels, confidence, reasons, and balance-bearing booleans, but never debit, credit, balance, or any rupee amount. Present suggestions grouped by confidence tier and target, with exact counts and both unmapped_total and unmapped_with_balance; do not call either count pending.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number (default 1). | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| page_size | No | Rows per page (default 100, max 200). | |
| period_id | Yes | The reporting period id from list_periods. | |
| name_patterns | No | Return accounts whose code or name contains at least one of these case-insensitive patterns. | |
| unmapped_only | No | Return only accounts without a confirmed reporting line. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and destructiveHint annotations, the description discloses that the tool returns names, line labels, confidence, reasons, and balance-bearing booleans but never debit, credit, balance, or any rupee amount. It also clarifies the output is deterministic and instructs not to label the two counts as pending, giving meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the purpose and safety scope stated in the first two sentences. The final sentence adds useful presentation guidance but is somewhat opaque, especially the do not call either count pending clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates well by enumerating the key returned fields and count semantics. It does not fully specify the response structure or pagination behavior, but the schema already covers paging parameters and the description provides enough for a reasonable agent to invoke and interpret the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100 percent, so the parameters are already well documented. The description adds only the general notion of entity and reporting period, which does not materially improve on the schema, justifying the baseline score.
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, Review, and identifies the exact resource: reporting-line classification status and deterministic suggestions for an entity and reporting period. The explicit status-only framing clearly distinguishes it from sibling confirmation and mutation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The read-only, status-only description makes the intended review use case clear and implicitly separates it from confirm_reporting_lines and other mutation tools. It does not explicitly name exclusions or alternatives, so it falls slightly short of a perfect usage-guidance score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_snapshotsList statement versionsARead-onlyInspect
List the frozen Schedule III workbook versions for an entity (newest first), including each version’s period, template, and unclassified count at build time.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | The entity (client) id — from list_clients. | |
| template_id | No | Filter to one template. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds useful behavioral context: versions are 'frozen' (immutable), ordered 'newest first', and include 'unclassified count at build time'. This exceeds the annotation baseline 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence packs all essential information: what is listed, the scope, ordering, and key fields included. No wasted words 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?
With no output schema, the description helpfully enumerates returned fields (period, template, unclassified count) and ordering. It may omit a version identifier/timestamp, but for a straightforward list tool with two parameters, this is largely 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 description coverage is 100%, and both parameters have clear descriptions (client_id source from list_clients, template_id as a filter). The tool description aligns with these but does not add additional semantic nuance 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 uses a specific verb ('List') and specifies the exact resource ('frozen Schedule III workbook versions') with scope ('for an entity') and ordering ('newest first'). This distinguishes it clearly from sibling list tools like list_clients or list_budgets.
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 usage for retrieving a client's frozen version history, but it does not explicitly mention when to use this tool versus alternatives such as get_workbook_download or get_schedule3_workspace. No exclusions or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_statement_policy_choicesReview policy and affirmation choicesARead-onlyInspect
List every Significant Accounting Policy and Other Regulatory Information affirmation for this statement, with the text that will print, whether a template choice is still unresolved, and what was answered LAST YEAR. This is what makes two rules actionable rather than decorative: never resolve a bracketed choice for your user, and always tell them when an answer differs from last year. CHECK THE ROW’S captured FLAG BEFORE YOU CALL ANYTHING A POLICY CHANGE. differs_from_prior is true in two different situations and only one of them is a change: with captured true the wording was set this year and genuinely differs, which IS a change in accounting policy requiring disclosure under AS-5 / Ind AS 8; with captured false nothing has changed — last year was answered, this year has not been, and the text shown is Datavrn’s generic template wording, which is what will PRINT unless last year’s wording is entered again. Warn your user about that second case explicitly: it silently replaces a policy they wrote. The summary gives you both numbers separately — changed_total (real AS-5 changes) and not_carried_forward_total (answered last year, not yet this year); differs_from_prior_total is simply the two added together. An unresolved choice blocks finalisation, so work through them with your user before generating the version you intend to finalise. "Last year" means the SAME MONTH ONE YEAR EARLIER — the same comparative period the statement itself reports — not the period immediately before this one. The summary names it: prior_period_label is the year that was compared against, and prior_period_found tells you whether Datavrn holds that year at all. A blank last-year answer means nothing was recorded for that year — when prior_period_found is false it means Datavrn has no such reporting period, so there is nothing to compare. Either way it does NOT mean last year matched this year; say which of the two it is.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size (default 50, max 200). | |
| offset | No | Rows to skip (default 0). | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | The reporting period id — from list_periods. | |
| template_id | Yes | The statement template id (e.g. 'schedule3_v1' Division I; see list_snapshots/workspace). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already declare readOnlyHint=true and destructiveHint=false, the description adds substantial behavioral nuance: the captured flag distinction, the two meanings of differs_from_prior, the definition of 'last year' as the same month one year earlier, and the meaning of prior_period_found. It also warns about a critical trap ('Warn your user about that second case explicitly') that annotations cannot convey. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but front-loaded with the core purpose in the first sentence. It then delivers critical rules in a structured, information-dense manner. Every sentence serves a purpose, but the overall length is substantial and could be tightened. It earns a 4 rather than a 5 due to verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of explaining return values and important nuances. It covers the listed fields, summary counts (changed_total, not_carried_forward_total, differs_from_prior_total), the definition of 'last year', prior_period_found semantics, and finalisation blocking. This is more than adequate for an agent to understand and act on the tool's results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with descriptions for all five parameters (client_id, template_id, period_id, limit, offset). The tool description does not add parameter-specific meaning beyond that, but it does reference statement context and prior-period semantics which indirectly relate to period_id. Since schema already does the heavy lifting, 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 opens with a specific verb+resource+scope: 'List every Significant Accounting Policy and Other Regulatory Information affirmation for this statement, with the text that will print, whether a template choice is still unresolved, and what was answered LAST YEAR.' This clearly distinguishes the tool from siblings like save_accounting_policies or finalise_statement, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong contextual guidance on when to use it: 'An unresolved choice blocks finalisation, so work through them with your user before generating the version you intend to finalise.' It also warns about the silent-replacement scenario. It does not explicitly name alternative tools or state when not to use it, but the context is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_capture_declarationWithdraw a recorded capture answerAInspect
Withdraw a recorded capture answer or review confirmation. Statement readiness will show that section as unanswered again. A version you have already generated is NOT affected — if you do not want that version finalised, answer the section again and generate a fresh version. Nothing is deleted: the withdrawn answer stays on the record with who recorded it and who withdrew it, and recording a new answer afterwards creates a new entry rather than overwriting the old one. One thing on this connection is affected immediately: if you already called get_finalise_readiness and hold an approval for that version, withdrawing an answer invalidates it, and the next finalise_statement will refuse and ask you to review the current state again.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | ||
| template_id | Yes | ||
| capture_kind | Yes | ||
| on_behalf_of | Yes | The email address your user signs in to Datavrn with. This records who authorised the change alongside the connection that made it. Ask them for it — do not guess. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses non-destructive behavior ('Nothing is deleted'), the audit trail, and the side effect of invalidating approvals. This goes well beyond annotations (readOnlyHint=false, destructiveHint=false) and provides critical 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence adds a distinct behavioral or usage detail; the main action is front-loaded. The length is justified by the tool's complexity.
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 thoroughly covers side effects, invalidation, and alternative actions. However, it does not mention the tool's return value or what happens on error or when no answer exists, which is a small gap given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%. The description adds context about who recorded/withdrew and the invalidation effect, which helps with on_behalf_of, but period_id and template_id lack schema descriptions and are not explained in the description. The enum for capture_kind is helpful, but overall the description does not fully compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence clearly states 'Withdraw a recorded capture answer or review confirmation', combining a specific verb and resource. It also explains the effect on statement readiness, distinguishing it from confirm/save tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit context: if a generated version is not wanted, the tool alone won't prevent finalisation; instead, answer again and generate fresh. It also describes the impact on get_finalise_readiness and finalise_statement, making it clear when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_accounting_policiesSave significant accounting policiesADestructiveInspect
Save the Significant Accounting Policies text (Note 2) your user has chosen, one policy per title. SEND THE COMPLETE SET EVERY TIME: this replaces all of Note 2, so any title you leave out of this call is removed — including one someone answered in the Datavrn app. Call list_statement_policy_choices first and send back every title. If your call would drop a saved policy, Datavrn saves nothing and returns an approval request naming how many would be dropped — show your user, and send the approval back only if they mean to drop them. A complete resend drops nothing and saves straight away. Use the exact policy headings this statement format carries; a heading Datavrn does not recognise is refused and nothing is saved. Resolving a bracketed template choice such as "[FIFO / weighted average]" is an ACCOUNTING POLICY DECISION SPECIFIC TO THIS ENTITY: get your user’s explicit choice, and never pick one because it is the common answer. If a policy was set this year and differs from last year’s answer, that is a CHANGE IN ACCOUNTING POLICY requiring disclosure under AS-5 / Ind AS 8 — tell your user before you save it. Check list_statement_policy_choices first: a row that differs from last year while its captured flag is false is NOT a change — last year’s wording has simply not been carried forward, and unless you send it again this note prints Datavrn’s generic template wording in its place. Saving here re-opens the disclosure review — after your last change, confirm the disclosure review again with confirm_capture_review before generating. Recorded as authorised by the member you name. Generate a fresh version after your last capture change — finalisation checks the version’s frozen capture state, not today’s.
| Name | Required | Description | Default |
|---|---|---|---|
| policies | No | ||
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | ||
| template_id | Yes | ||
| on_behalf_of | Yes | The email address your user signs in to Datavrn with. This records who authorised the change alongside the connection that made it. Ask them for it — do not guess. | |
| removal_count | No | ||
| removal_token | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the annotations (destructiveHint=true) by detailing the complete replacement semantics: 'this replaces all of Note 2, so any title you leave out of this call is removed.' It also discloses approval requests, refusal of unrecognized headings, change-in-policy disclosure requirements, handling of captured flags, and the need to generate a fresh version after changes. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long and contains redundancy, such as instructing to call list_statement_policy_choices first twice. While all content is relevant and the purpose is front-loaded, the text could be tightened to improve conciseness without losing critical 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?
Comprehensive coverage of prerequisites, success/failure behaviors, edge cases (captured flag, change vs. non-change), and post-requisites (confirm_capture_review, fresh version). Despite no output schema, the description thoroughly explains what happens on success and failure, making it complete for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 29%, so the description compensates significantly for the core `policies` parameter by explaining the one-policy-per-title structure and complete-set requirement. It also hints at the approval mechanism for removed policies, though it does not explicitly name `removal_count` or `removal_token`. Some parameter semantics remain implicit but the main data parameter is well clarified.
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's function: 'Save the Significant Accounting Policies text (Note 2) your user has chosen, one policy per title.' It identifies the specific resource (Note 2 policies) and action (save), distinguishing it from other save_* tools that handle different statement sections.
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?
Provides explicit usage directions: 'Call list_statement_policy_choices first and send back every title,' and instructs to confirm the disclosure review with confirm_capture_review after saving. It also outlines approval flow for dropped policies and warns against unrecognized headings, giving clear 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.
save_adjustmentsSave adjustment entryADestructiveInspect
Save one balanced adjustment journal entry (debits = credits) as an atomic whole entry. Creating a new entry proceeds immediately. Replacing an existing entry first returns an approval request; nothing changes then. Review the existing entry in the Schedule III workspace, then resend the unchanged request with the approval details to proceed. Amounts are strings in rupees.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | Yes | ||
| entry_no | Yes | ||
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | ||
| template_id | Yes | ||
| removal_count | No | ||
| removal_token | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true, readOnlyHint=false), the description discloses the atomic nature of the entry, the immediate effect of new entries, and the two-step approval process for replacements, including the fact that nothing changes until the request is resent. It also clarifies that amounts are strings in rupees, adding significant operational detail.
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 three sentences, front-loaded with the primary function, and every sentence adds essential detail about the workflow and constraints. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description explains the high-level workflow and approval process, it omits details about how the replacement mechanism works (e.g., what 'approval details' are, how removal_count/removal_token relate) and provides no output schema. Given the tool's complexity and multiple parameters, this is a notable gap, though the core behavior is adequately covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is only 14% (solely client_id), yet the description does not compensate for the undocumented parameters such as period_id, template_id, entry_no, lines, removal_count, and removal_token. It adds some context (rupee strings, balanced entry) but leaves the meanings and usage of most parameters unclear.
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 saves a balanced adjustment journal entry (debits = credits) as an atomic whole, distinguishing it from sibling save tools. It also distinguishes between creating a new entry (immediate) and replacing an existing one (requires approval), making the purpose highly specific and 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 provides concrete procedural guidance on when to expect immediate execution vs. an approval workflow, and instructs the user to resend the request with approval details. However, it does not explicitly name alternatives or state when not to use this tool compared to sibling save_* tools, 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.
save_asset_movementsSave asset movementsAInspect
Save fixed-asset movements (additions, deletions, depreciation charge, depreciation on deletions) per gross-block line for the PPE schedule.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | The entity (client) id — from list_clients. | |
| movements | Yes | ||
| period_id | Yes | ||
| template_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-destructive write operation (readOnlyHint=false, destructiveHint=false). The description adds the specific categories of movements being saved but does not disclose whether existing movements are overwritten or appended, nor any validation rules 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?
Single sentence with information-dense structure—front-loaded verb/resource, parenthetical enumeration of movement types, and scope qualifier. No redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has moderate complexity (nested array, 4 required params) and no output schema. The description covers the core operation but omits guidance on where template_id/period_id come from (e.g., list_periods) and what the response indicates. Overall adequate but with 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?
Only one of four top-level parameters (client_id) has a schema description; the description compensates partially by enumerating movement fields (additions, deletions, depreciation charge, depreciation on deletions), but does not explain period_id or template_id or the array structure's upsert behavior.
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?
Description uses specific verb 'Save' with clear resource 'fixed-asset movements' and enumerates the movement types (additions, deletions, depreciation charge, depreciation on deletions) plus scope 'per gross-block line for the PPE schedule', which distinguishes it from sibling save_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for the PPE schedule' provides clear context that this tool is for PPE-related fixed-asset movements, but there is no explicit mention of alternatives or exclusions. Among siblings like save_provision_movements and save_reserves_movements, the description implies its specific use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_disclosuresSave disclosuresBInspect
Save the notes/disclosures text sections the user provides for the statement. Some of these sections IDENTIFY PEOPLE BY NAME — shareholders, promoters and related parties — so send only what your user has given you, exactly as they gave it.
| Name | Required | Description | Default |
|---|---|---|---|
| payload | Yes | ||
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | ||
| template_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-destructive write operation. The description adds a valuable behavioral guardrail: disclosure sections may contain personal names, so the agent must pass through only user-provided content verbatim. This goes beyond annotations, though it does not mention the payload's structured numeric sections.
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 sentences with the action front-loaded. Every word contributes: the first sentence states what the tool does, and the second provides a critical safety instruction. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the extremely large and nested payload schema, no output schema, and sparse annotations, this description is insufficiently complete. It focuses only on the text-like nature of disclosures and omits the structured sections (e.g., ageing tables, paise amounts, shareholder details) that dominate the schema. The warning about names is useful but does not fill the contextual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only client_id is described). The description gives no specific parameter-level guidance for the complex payload, merely stating that the tool saves text sections and warning about exact transmission. It does not compensate for the low schema coverage, leaving the many nested payload fields unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: saving notes/disclosures text sections provided by the user, with the statement as the target context. It is specific about the verb and resource, but it does not distinguish itself from sibling save_* tools (e.g., save_adjustments) and the term 'text sections' undersells the structured payload.
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 usage when the user provides disclosure sections, and it gives a strong behavioral rule to only send user-provided content exactly as given. However, it does not explicitly say when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_partner_capitalSave partner or owner capital scheduleADestructiveInspect
Save the partner or owner capital schedule for an LLP or other non-corporate entity — Note 3a (capital account) or Note 3b (current account), one section per call. Send the COMPLETE schedule for the section you name: anyone you leave out is removed, and a renamed partner reads as one removal plus one addition. If your request would remove anyone, would change the figures of a partner who stays — including their profit-sharing ratio — or would repeat a person’s name that is not already repeated on file, this returns an approval request first and changes NOTHING; tell your user exactly what would change and get their go-ahead before resending with the approval. Two rows with the same person name are both kept: Datavrn never merges them, because two partners may genuinely share a name. A repeated name is therefore saved as a separate row each time it appears, and every one of those rows adds to that person’s balance on the note, so check with your user that there really are that many people before you send a schedule that repeats a name. Adding a partner with a new, different name needs no approval. share_pct is the profit-sharing ratio stated in the LLP or partnership agreement at the reporting date. A ratio that changed part-way through the year cannot be represented here, and a partner who joined or left mid-year cannot be dated — record the position at the reporting date and tell your user the note cannot explain a mid-year change. These figures come from the agreement; Datavrn does not verify them. Datavrn warns about ratios that do not total 100% only when at least TWO capital-account rows carry a ratio, so a partly-filled schedule gets no warning at all — check the total yourself with get_partner_capital. This is your user’s data about named people, recorded as authorised by them. After a successful save, read the section back with get_partner_capital and show your user the new closing balances — this replaces the whole section, and a schedule they cannot see afterwards is a schedule they cannot check. Generate a fresh version after your last capture change — finalisation checks the version’s frozen capture state, not today’s.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | Yes | ||
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | ||
| template_id | Yes | ||
| account_kind | Yes | ||
| on_behalf_of | Yes | The email address your user signs in to Datavrn with. This records who authorised the change alongside the connection that made it. Ask them for it — do not guess. | |
| removal_count | No | ||
| removal_token | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description richly discloses behavioral traits: replacing the whole section, treating renamed partners as removal+addition, handling repeated names as separate rows, approval triggers, mid-year change limitations, ratio warning behavior, and the need to read back after saving. This goes far beyond the annotations (destructiveHint=true) and adds substantial context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but dense with necessary warnings and usage constraints. It front-loads the core purpose and then methodically covers behavioral rules, approval flows, and post-save actions. Every sentence contributes value; however, it could be slightly streamlined without losing critical 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?
Given the tool's complexity (8 params, destructive, approval workflow, no output schema), the description is exceptionally complete. It covers purpose, usage, parameter semantics, behavioral warnings, and post-save verification, making it fully actionable for an agent. The absence of an output schema is mitigated by instructions to read back the section.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at only 25%, the description compensates by explaining key parameters: account_kind (Note 3a/3b), share_pct (profit-sharing ratio), person_name (repeated names kept as separate rows), and the concept of a complete schedule. It doesn't explicitly define all numeric fields (e.g., opening, withdrawals), but it gives enough context. The approval-related parameters (removal_count, removal_token) are discussed implicitly.
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 verb ('Save'), the resource ('partner or owner capital schedule'), and the specific context ('for an LLP or other non-corporate entity — Note 3a (capital account) or Note 3b (current account)'). This distinguishes it from siblings like get_partner_capital (read) and save_share_capital (share capital).
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 explicit guidance on how to use the tool: send the complete schedule, one section per call, and approval flow for removals/changes. It also references an alternative (get_partner_capital) for reading back. However, it doesn't explicitly say when not to use this tool versus sibling save tools, though the entity type and note specification imply it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_provision_movementsSave provision movementsADestructiveInspect
Upsert provision movements (additions, amounts utilised) per provision line. Omitted saved lines stay unchanged. To remove selected saved lines, pass remove_leaf_codes; to remove the entire saved set, pass clear_all (never both). An actual removal first returns an approval request; nothing changes then. Review current movements in the Schedule III workspace, then resend the unchanged request with the approval details to proceed.
| Name | Required | Description | Default |
|---|---|---|---|
| clear_all | No | ||
| client_id | Yes | The entity (client) id — from list_clients. | |
| movements | Yes | ||
| period_id | Yes | ||
| template_id | Yes | ||
| removal_count | No | ||
| removal_token | No | ||
| remove_leaf_codes | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotation destructiveHint=true, the description discloses critical behavioral traits: omitted saved lines stay unchanged (upsert semantics), removals first trigger an approval request and nothing changes until the request is resent with approval details, and the two removal modes are mutually exclusive. This provides significant operational context beyond the mere 'destructive' flag.
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 five sentences long and front-loaded with the core action. Each sentence adds valuable detail: upsert behavior, omission semantics, removal modes, approval flow, and required workflow. It is slightly longer than ideal but appropriately so given the tool's complexity and destructive potential.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with destructive capabilities and an approval workflow, the description covers the essential semantics: upsert behavior, removal handling, and the resend-with-approval process. It does not explicitly state the success response for regular saves, but given the output schema is absent and the workflow is clearly outlined, this is a minor gap. Overall, it gives an agent enough context to use the tool 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 low (13%), and the description compensates well by explaining key parameters: remove_leaf_codes, clear_all, and the movements array (additions, utilised). It also hints at approval tokens via 'approval details.' However, it does not explain template_id or period_id, nor the exact format constraints for additions, so the compensation is strong but not complete.
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 'Upsert' and clearly identifies the resource as 'provision movements' per provision line. It also differentiates from sibling save tools (e.g., save_asset_movements) by naming the target. The additional detailing of removal modes and the upsert semantics 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (to save provision movements) and how to handle removals (via remove_leaf_codes or clear_all, never both). It also outlines a workflow: review current movements in the Schedule III workspace, then resend with approval details. While it does not explicitly name alternative tools for other movement types, the context is clear enough for an agent to select this tool appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_py_valuesSave prior-year comparativesAInspect
Override the prior-year comparative for one or more statement lines with an audited figure. The prior-year column fills itself automatically from the previous year's Trial Balance read through the current groupings, so use this only when the audited financial statements differ from that figure (for example appropriations booked outside the ledger), or when there is no previous-year Trial Balance to derive from — ask your user for the audited figures in those cases.
| Name | Required | Description | Default |
|---|---|---|---|
| values | Yes | ||
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | ||
| template_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide false flags for readOnly, openWorld, and destructive hints, so the description carries the burden of explaining behavior. It discloses that the prior-year column auto-fills from the previous year's Trial Balance and that this tool overrides that value with audited figures. This adds valuable context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, moderately long sentence that efficiently conveys purpose, usage, and a workflow hint. It is front-loaded with the main action, followed by context and conditional use. All parts are relevant, though it could be split into two sentences for readability, but it remains concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (write operation, 4 params, no output schema), the description covers the core function, the auto-fill mechanism, and when to use it. It lacks details on return values or side effects beyond 'override,' but the essential context for correct invocation is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only client_id has a description). The description does not explain any parameters; it only vaguely references 'one or more statement lines,' which hints at the 'values' array but does not clarify leaf_code, amount, period_id, or template_id. With low schema coverage, the description fails to compensate.
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's function: 'Override the prior-year comparative for one or more statement lines with an audited figure.' It uses a specific verb ('override') and resource ('prior-year comparative'), and the title 'Save prior-year comparatives' reinforces this. It distinguishes from sibling tools by focusing on prior-year comparatives, unlike save_adjustments or save_disclosures.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides usage conditions: 'use this only when the audited financial statements differ from that figure... or when there is no previous-year Trial Balance to derive from.' It also instructs the agent to 'ask your user for the audited figures in those cases,' giving clear when-to-use and workflow guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_regulatory_affirmationsSave regulatory affirmationsADestructiveInspect
Save the CARO / Other Regulatory Information affirmations your user has confirmed, one per title. SEND THE COMPLETE SET EVERY TIME: this replaces the whole Other Regulatory Information note, so any title you leave out of this call is removed — including one someone answered in the Datavrn app. Call list_statement_policy_choices first and send back every title. If your call would drop a saved affirmation, Datavrn saves nothing and returns an approval request naming how many would be dropped — show your user, and send the approval back only if they mean to drop them. A complete resend drops nothing and saves straight away. Use the exact affirmation headings this statement format carries; a heading Datavrn does not recognise is refused and nothing is saved. Some statement formats — the ICAI formats for LLPs and non-corporate entities — carry no Other Regulatory Information note at all, and this tool refuses for them. Each affirmation is a REGULATORY REPRESENTATION made in the entity’s name — for example whether any proceedings for benami property are pending, or whether the entity has been declared a wilful defaulter. Put each one to your user individually and record their answer. Never affirm one because it is the usual answer, never infer one from a template default, and never confirm a batch of them in one go. If an affirmation differs from last year’s answer, tell your user — call list_statement_policy_choices to see what was answered last year. Saving here re-opens the disclosure review — after your last change, confirm the disclosure review again with confirm_capture_review before generating. Recorded as authorised by the member you name. Generate a fresh version after your last capture change — finalisation checks the version’s frozen capture state, not today’s.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | The entity (client) id — from list_clients. | |
| period_id | Yes | ||
| template_id | Yes | ||
| affirmations | No | ||
| on_behalf_of | Yes | The email address your user signs in to Datavrn with. This records who authorised the change alongside the connection that made it. Ask them for it — do not guess. | |
| removal_count | No | ||
| removal_token | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, it explains the complete replacement behavior, the approval-request flow when dropping saved affirmations, the re-opening of disclosure review, and the requirement to ask each affirmation individually. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but each sentence carries critical safety information; it is front-loaded with purpose and the complete-set imperative. Could be tightened without losing meaning, but for a destructive tool this level of detail is justified.
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 complexity, destructive nature, and no output schema, the description covers data-loss risks, approval flow, integration with list_statement_policy_choices and confirm_capture_review, regulatory representation cautions, and re-generation. It is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 29%, so description must compensate. It explains the affirmations object semantics (one per title, complete set, exact headings) and implicitly covers removal_count/removal_token via the approval request. It lacks explicit syntax for template_id/period_id, but those are common identifiers.
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 it saves 'CARO / Other Regulatory Information affirmations your user has confirmed' and explicitly contrasts with reading via list_statement_policy_choices, distinguishing it from sibling tools like save_disclosures. The verb 'save' + resource + scope is specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs to call list_statement_policy_choices first, to resend the complete set, and to confirm disclosure review with confirm_capture_review. It also specifies when the tool refuses (ICA formats with no note) and how to handle approval requests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_reserves_movementsSave reserves movementsADestructiveInspect
Upsert reserves/equity movements (transfers in/out, dividends, other changes) per reserves line. Omitted saved lines stay unchanged. To remove selected saved lines, pass remove_leaf_codes; to remove the entire saved set, pass clear_all (never both). An actual removal first returns an approval request; nothing changes then. Review current movements in the Schedule III workspace, then resend the unchanged request with the approval details to proceed.
| Name | Required | Description | Default |
|---|---|---|---|
| clear_all | No | ||
| client_id | Yes | The entity (client) id — from list_clients. | |
| movements | Yes | ||
| period_id | Yes | ||
| template_id | Yes | ||
| removal_count | No | ||
| removal_token | No | ||
| remove_leaf_codes | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, but the description adds substantial behavioral detail: 'Omitted saved lines stay unchanged,' 'An actual removal first returns an approval request; nothing changes then,' and the need to resend with approval details. This goes well beyond the binary annotation flags and clarifies the side effects of removal.
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 concise and well-structured, with five sentences each serving a distinct purpose: primary action, update behavior, removal modes, approval flow, and procedural next step. It is front-loaded with the core verb and resource, and 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 main behaviors (upsert, removal modes, approval workflow) and even gives a procedural hint ('Review current movements in the Schedule III workspace, then resend...'). However, with no output schema and low schema parameter explanation, it does not specify what the tool returns or the exact form of the 'approval details' (e.g., removal_token/removal_count), leaving some ambiguity for the agent.
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 13%, so the description carries the burden. It explains the removal parameters (remove_leaf_codes, clear_all) and their exclusivity, and mentions the movement types (transfers in/out, dividends, other changes). However, it does not explain the core required parameters (client_id, template_id, period_id) in any detail, and the structure of 'movements' is left to the schema. It adds some meaning but does not fully compensate for the low coverage.
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 'Upsert reserves/equity movements (transfers in/out, dividends, other changes) per reserves line.' This specifies the action (upsert), the resource (reserves/equity movements), and even the type of movements, distinguishing it from sibling tools like save_asset_movements and save_provision_movements.
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 provides clear context for when to use the tool (for reserves/equity movements) and gives explicit instructions for removal modes: 'pass remove_leaf_codes; to remove the entire saved set, pass clear_all (never both).' It also explains the approval resend workflow. However, it does not explicitly name alternatives 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.
save_statement_settingsSave statement settingsBInspect
Save statement settings (rounding unit, signatory details, company information used on the statement face).
| Name | Required | Description | Default |
|---|---|---|---|
| cin | Yes | ||
| client_id | Yes | The entity (client) id — from list_clients. | |
| font_name | No | Calibri | |
| period_id | Yes | ||
| unit_label | Yes | ||
| include_cfs | No | ||
| template_id | Yes | ||
| entity_class | No | ||
| rounding_off | No | Whole-rupee value rounding. When true (the default), every figure is rounded to the nearest rupee and the net rounding difference is posted as a computed "Rounding off" line under Other expenses so the balance sheet ties to the rupee. false renders exact two-decimal figures. | |
| unit_divisor | Yes | ||
| equity_face_value | Yes | ||
| registered_office | Yes | ||
| suppress_nil_lines | No | ||
| entity_name_override | Yes | ||
| weighted_equity_shares | Yes | ||
| weighted_equity_shares_py | Yes | ||
| weighted_potential_equity_shares | Yes | ||
| weighted_potential_equity_shares_py | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not read-only (readOnlyHint=false) and not destructive (destructiveHint=false), but the description adds no behavioral details such as whether it overwrites existing settings, whether it is idempotent, or what side effects occur. The parenthetical merely lists content categories, not behavioral traits.
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 front-loaded sentence with no filler. It immediately communicates the action and target, and every word contributes meaning. It is appropriately concise for the information it contains.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 18-parameter save tool with no output schema and sparse schema descriptions, this description is incomplete. It fails to mention workflow context (e.g., when in the setup process to call it), return values, or whether it upserts or creates new settings. Significant gaps remain for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11%, so the description must compensate for 18 parameters, many of which are domain-specific (e.g., weighted_equity_shares). The description provides coarse grouping (rounding unit, signatory details, company information) but does not explain individual parameters, their relationships, or format expectations.
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 ('Save') and resource ('statement settings') and expands with concrete categories: rounding unit, signatory details, and company information used on the statement face. This clearly distinguishes it from sibling save_* tools such as save_disclosures or save_share_capital.
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, no prerequisites are mentioned, and no exclusion criteria are given. The description only states what the tool does, not the context in which it should be invoked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_header_rowSet header rowAInspect
Correct the detected header row of a staged upload (1-based). Only needed when get_upload/upload_trial_balance shows the wrong row was detected.
| Name | Required | Description | Default |
|---|---|---|---|
| upload_id | Yes | The upload session id returned by upload_trial_balance. | |
| header_row | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, so the tool is expected to mutate state. The description adds the behavioral detail that indexing is 1-based and that this is a correction step in a staged upload pipeline. It does not disclose side effects like overwriting prior header row settings, but this is a minor gap given the simple nature of the 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 two sentences long, with the main action in the first sentence and the conditional context in the second. It is front-loaded, avoids unnecessary details, and every phrase contributes to understanding the tool's purpose and usage.
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 only two required parameters and no output schema, the description covers the core action, the specific scenario, and key parameter detail (1-based). It does not explain the effect on the upload state or whether it can be called multiple times, but within the surrounding workflow context (staged upload, correction after detection), it is adequate.
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 provides a description for upload_id but not for header_row. The description's mention of '1-based' clarifies the header_row parameter's semantics (positive integer starting from 1, not 0), which is not evident from the schema alone. This meaningfully compensates for the 50% schema description coverage.
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?
Description states the tool 'Correct[s] the detected header row of a staged upload (1-based)', using a specific verb ('correct') and resource ('header row of a staged upload'). It differentiates from siblings by focusing on correcting a detection result, not confirming mappings or uploading data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides a usage condition: 'Only needed when get_upload/upload_trial_balance shows the wrong row was detected.' This tells the agent exactly when to invoke it and references the upstream tools for verification, though it doesn't name alternative tools for other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_trial_balanceUpload trial balanceAInspect
Stage a Trial Balance spreadsheet (xlsx or csv, max 4 MB) for an entity by INLINING its bytes as base64. This path is ONLY for programmatic callers (a script, Claude Code, an automation) that already have the raw file on disk. If a HUMAN has the file — e.g. they attached it to this chat — do NOT use this tool and do NOT base64-encode the file: call create_upload_link instead and give them the link to upload it in their browser. File size does not change this: even a small attached file goes through create_upload_link — inlining a human-supplied file is unreliable and its bytes routinely truncate. Returns the upload session with detected columns and mapping SUGGESTIONS — nothing is ingested yet. Next: review the suggested column mapping with your user, then call confirm_column_mapping.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Leave unset — the assistant handles Trial Balances only; any other format is refused (use the Datavrn web app). | |
| source | No | Set 'tally_file' when the file is a Tally xlsx export; omit otherwise. | |
| client_id | Yes | The entity (client) id — from list_clients. | |
| file_name | Yes | The file's name, e.g. 'tb-2026-03.xlsx'. | |
| file_base64 | Yes | The file bytes, base64-encoded. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the sparse annotations (readOnlyHint: false, destructiveHint: false), the description discloses important behaviors: the 4 MB size cap, the requirement to inline base64 bytes, the reliability risk of human-supplied files ('its bytes routinely truncate'), and that 'nothing is ingested yet' — it only returns suggestions. This gives the agent a clear safety model without relying on annotations, and there is no contradiction with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized for the complexity. It is front-loaded with the core operation, then compactly covers the caller constraint, the human-file trap, the return value, and the follow-up action. Every sentence contributes essential information, and the structure flows logically from what to how, then to caution, then next steps.
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 complexity (a critical human-vs-programmatic distinction) and the absence of an output schema, the description compensates fully: it states the acceptable file formats and size, the return value ('upload session with detected columns and mapping SUGGESTIONS'), the fact that nothing is ingested, and the recommended next tool call. Sibling tools like create_upload_link and confirm_column_mapping are explicitly referenced, making the surrounding workflow clear.
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 parameter-level descriptions, so the baseline is 3. The description adds extra semantics by explaining the context for two optional parameters: 'format' should be 'Leave unset — the assistant handles Trial Balances only' and 'source' should be 'Set \'tally_file\' when the file is a Tally xlsx export.' This goes beyond the schema by telling when to omit or set values, clearly earning an above-baseline score.
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 precise statement of what the tool does: 'Stage a Trial Balance spreadsheet (xlsx or csv, max 4 MB) for an entity by INLINING its bytes as base64.' It uses a specific verb ('Stage'), names the resource ('Trial Balance spreadsheet'), and distinguishes itself from the sibling tool by explicitly saying 'call create_upload_link instead' for human-supplied files. This is a textbook example of purpose clarity.
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 explicit when-to-use and when-not-to-use guidance: 'This path is ONLY for programmatic callers' and 'If a HUMAN has the file — do NOT use this tool... call create_upload_link instead.' It also provides a clear next step: 'review the suggested column mapping with your user, then call confirm_column_mapping.' This is complete usage guidance with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_connectionVerify connectionARead-onlyInspect
Confirm the Datavrn connection is working and report what it can do. Call this first — or whenever the user asks whether Datavrn is connected — to get back the organization, the access profile (what this connection may see and do), and the next step. Running it successfully also marks the connection healthy in the user’s Datavrn settings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Running it successfully also marks the connection healthy in the user’s Datavrn settings', which is a side-effect write. However, annotations declare readOnlyHint=true, meaning no writes. This is a direct contradiction between description and annotation, making it impossible for the agent to trust either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the primary purpose, followed by usage guidance and side-effect disclosure. Every sentence earns its place, with no extraneous 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?
Given no parameters and no output schema, the description comprehensively explains what the tool returns: organization, access profile, and next step. It also mentions the side effect, making it contextually complete for an agent to decide when and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty, so there is nothing to explain. Per baseline for 0 params, a score of 4 is appropriate; the description adds no parameter details but doesn't need to.
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 identifies the tool as a connection verification utility, using specific verbs 'Confirm' and 'report' on the 'Datavrn connection' resource. It distinguishes itself from sibling tools by focusing on connection status and capabilities, not data operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Call this first — or whenever the user asks whether Datavrn is connected'. This provides clear direct guidance and implies it is the appropriate tool for connection checks, with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseAqualityCmaintenanceLocal-first MCP server for Indian income tax computation, enabling users to compute taxes, compare regimes, plan advance tax, and parse Form 26AS without sending data to the cloud.212285MIT
- AlicenseAqualityBmaintenanceAI agents that automate bookkeeping, bank reconciliation, and month-end financial close for SMBs and CA firms.261MIT
- Flicense-qualityAmaintenanceFinancial model factory MCP server: turns a spec into a live-formula Excel workbook. 14 templates (LBO, DCF, M\&A, IPO, restructuring, project finance, NPL, structured credit, 3-statement) with every cell formulated and every number source-traced to its document page.1
- Alicense-qualityCmaintenanceA standalone MCP server for Indian personal income-tax work (ITR-1/2/3/4 + post-filing notices) with 8 deterministic tools, running fully offline with no API keys.MIT