Skip to main content
Glama

schedule-iii

Record that the previous year genuinely had no activity

assert_previous_year_no_activity

Record your user’s assertion that the previous year genuinely had no activity, so this statement’s all-nil previous-year Profit and Loss is a fact rather than a closing-entry artefact. This clears Datavrn’s refusal to finalise it. THIS IS A PROFESSIONAL ASSERTION ABOUT A CLIENT’S ACCOUNTS, RECORDED IN THE NAMED MEMBER’S NAME AND KEPT WITH THE STATEMENT. Only send it when your user has told you, in their own words, that the previous year had no activity — a dormant entity is the case it is for. NEVER write the reason yourself and never paraphrase it into something firmer: send what they said. If they are unsure, or if the previous year DID trade and the trial balance was simply taken after closing, do not call this — the other two remedies in get_comparative_source_state are the correct ones. Call get_comparative_source_state first, read out the finding, get their explicit go-ahead, and send the confirm_token it returned. Datavrn refuses if the previous-year figures changed after you read the state, and nothing is recorded. It can be withdrawn in Datavrn if it was recorded in error; withdrawing restores the refusal.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
reasonYesYour user’s own words: why the previous year had no activity. Recorded with the statement and shown to whoever reviews it.
client_idYesThe entity (client) id — from list_clients.
period_idYesThe reporting period id — from list_periods.
template_idYesThe statement template id (e.g. 'schedule3_v1' Division I; see list_snapshots/workspace).
on_behalf_ofNoThe email address your user signs in to Datavrn with. This records who authorised the change alongside the connection that made it. REQUIRED on an API-key connection — ask your user for it, do not guess. On an OAuth connection leave it out: the change is recorded as authorised by the member who connected; if you do supply it, it must be that member.
confirm_tokenYesThe approval from get_comparative_source_state. Call it first and present its finding to your user.

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint=false annotation (which already marks it as a write), the description discloses significant behavioural traits: it 'clears Datavrn’s refusal to finalise', that Datavrn refuses if previous-year figures changed after reading state, and that the record can be withdrawn (restoring the refusal). It also stresses that the assertion is recorded in the named member's name and kept with the statement. This is rich, non-obvious context.

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

Conciseness4/5

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

The description is lengthy but appropriately so given the professional and irreversible nature of the action. It is front-loaded with the core purpose and conditions, then details the workflow and caveats. A few sentences could be tightened, but every sentence serves a purpose, so it is well-structured and not padded.

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

Completeness5/5

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

For a write tool with no output schema, the description covers all necessary context: prerequisites (get_comparative_source_state), the exact user interaction (read out finding, get go-ahead), failure modes (changed figures), and withdrawal (restores refusal). An agent has everything needed to call it correctly and safely.

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

Parameters5/5

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

Schema coverage is 100% and each parameter already has a description, but the tool description adds essential semantic guidance: reason must be 'your user’s own words' and never paraphrased, confirm_token comes from get_comparative_source_state, and on_behalf_of has API-key vs OAuth rules. This is exactly the kind of extra meaning that helps an agent use parameters correctly beyond the schema.

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

Purpose5/5

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

The description states a specific verb ('record') and a precise resource ('your user's assertion that the previous year genuinely had no activity'), along with the broader intent (making the all-nil previous-year P&L a fact, not a closing-entry artefact). It distinguishes this from the 'other two remedies' in get_comparative_source_state, so an agent can separate it from sibling tools.

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

Usage Guidelines5/5

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

Usage is explicitly conditioned: 'Only send it when your user has told you, in their own words, that the previous year had no activity' and 'If they are unsure... do not call this'. It also spells out the required workflow: call get_comparative_source_state first, read out the finding, get explicit go-ahead, and send the confirm_token. This leaves no ambiguity about when to use it.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.1/5.0
Disambiguation5/5

Each tool targets a distinct resource or action — get_* reads, save_* writes, confirm_* approves, preview_* shows consequences before approval. Even the management-data trio (budgets, allocations, variance) is cleanly separated by surface. Two-step flows like preview_chart_rebaseline → confirm_complete_chart are clearly sequenced, so an agent won't confuse the stages.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern: get_* for reads, list_* for discovery, save_* for section writes, confirm_* for approvals, create_* for new entities/centres, preview_* for pre-approval checks. The few one-offs (ingest_upload, upload_trial_balance, set_header_row) still fit the verb-first convention. No camelCase or style mixing.

Tool Count2/5

At 67 tools this is well past the 'too many' threshold. While the Schedule III domain genuinely is broad — statutorily mandated sections, two-phase approval flows, readiness checks, and a separate management-data area — the surface is heavy; an agent will spend real effort just surveying the tool list. Some consolidation of the save_reserves/provisions/assets movements or merging preview+confirm pairs is possible.

Completeness4/5

The surface covers the full lifecycle: upload → mapping/costing → grouping → capture (all statutory sections) → declarations → readiness → generate → finalise → download, plus entity setup and consolidated statements. Minor gaps: no tool directly exposes historical version diffing beyond list_snapshots, and the management-data section (budgets, allocations, variance) feels bolted on rather than integral to the core flow.

Resources