com.datavrn/schedule-iii
REMOTE · APP.DATAVRN.COM · SCANNED SEP 28
Deterministic Schedule III statements for Indian companies: trial balance in, Excel workbook out.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security94
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability60
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 20322 tokens (~303/item across 67 items; 67 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management98
- Stability check failed: schema churn in the 30 days we've observed: 0 tool removals, 2 breaking changes, 0 auth/transport breaks, 0 additions. See how to fix → Fail
Tool Coverage89
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 67% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 67 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the com.datavrn/schedule-iii MCP server?
com.datavrn/schedule-iii is a hosted endpoint at https://app.datavrn.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · app.datavrn.com
claude mcp add --transport http com-datavrn-schedule-iii 'https://app.datavrn.com/api/mcp'
{
"mcpServers": {
"com-datavrn-schedule-iii": {
"url": "https://app.datavrn.com/api/mcp"
}
}
} {
"servers": {
"com-datavrn-schedule-iii": {
"type": "http",
"url": "https://app.datavrn.com/api/mcp"
}
}
} [mcp_servers.com-datavrn-schedule-iii] url = "https://app.datavrn.com/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-datavrn-schedule-iii": {
"type": "remote",
"url": "https://app.datavrn.com/api/mcp",
"enabled": true
}
}
} openclaw mcp add com-datavrn-schedule-iii --url 'https://app.datavrn.com/api/mcp' --transport streamable-http
mcp_servers:
com-datavrn-schedule-iii:
url: "https://app.datavrn.com/api/mcp" {
"McpServers": {
"com-datavrn-schedule-iii": {
"Transport": "http",
"Url": "https://app.datavrn.com/api/mcp"
}
}
} assistant mcp add com-datavrn-schedule-iii -t streamable-http -u 'https://app.datavrn.com/api/mcp'
{
"mcpServers": {
"com-datavrn-schedule-iii": {
"type": "http",
"url": "https://app.datavrn.com/api/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 21 Sept 26 0
- “save_statement_settings” reworded the description of “rounding_off” cosmetic
- “save_statement_settings” reworded the description of “weighted_potential_equity_shares” cosmetic
- “save_statement_settings” reworded the description of “weighted_potential_equity_shares_py” cosmetic
3 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.
- 14 Sept 26 0
- Tool “confirm_centre_mappings” rewrote its description, which is the text the model reads security
- Tool “list_account_mappings” rewrote its description, which is the text the model reads security
- Tool “list_cost_centres” rewrote its description, which is the text the model reads security
- “list_account_mappings” added an optional parameter “profit_unmapped_only” cosmetic
- “list_account_mappings” reworded the description of “unmapped_only” cosmetic
- 6 Sept 26 −1
- Stability: pass → fail ▼ security
- A breaking change shipped without a version bump: still 0.1.0 ▼ security
- Tool “get_allocation_account_figures” rewrote its description, which is the text the model reads security
- Tool “get_allocation_target_figures” rewrote its description, which is the text the model reads security
- Tool “list_allocation_runs” rewrote its description, which is the text the model reads security
- Tool “list_cost_centres” rewrote its description, which is the text the model reads security
- “get_allocation_account_figures” added a required parameter “allocation_dimension”, so existing callers break ▼ functional
- “get_allocation_target_figures” added a required parameter “allocation_dimension”, so existing callers break ▼ functional
- 5 Sept 26 +1
- Stability: 0.97 → pass security
- 3 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 28 Sept 2026 · Probed https://app.datavrn.com/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=app.datavrn.com | CN=YR2,O=Let's Encrypt,C=US | 23 Aug 2026 | 21 Nov 2026 | RSA 2048 | SHA256-RSA | 538df02cc553d7a4940ee489c613f5020d3 |
| SANs: app.datavrn.com | ||||||
| CN=YR2,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | 4ebd24947e24d394802d84a52fd5b319 |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of app.datavrn.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| datavrn.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://app.datavrn.com/.well-known/oauth-protected-resource/api/mcp"
Bearer resource_metadata="https://app.datavrn.com/.well-known/oauth-protected-resource/api/mcp" | Header | Value |
|---|---|
| strict-transport-security | max-age=15552000; includeSubDomains; preload |
| content-security-policy | default-src 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; form-action 'self' https://api.razorpay.com; img-src 'self' data: blob: https://jmkgxtzscatvuqefbiyq.supabase.co https://*.razorpay.com; font-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' https://*.razorpay.com; connect-src 'self' https://jmkgxtzscatvuqefbiyq.supabase.co wss://jmkgxtzscatvuqefbiyq.supabase.co https://o4511541413740544.ingest.de.sentry.io https://*.razorpay.com; frame-src 'self' https://api.razorpay.com https://checkout.razorpay.com; worker-src 'self' blob:; manifest-src 'self' |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=(), payment=(), usb=(), browsing-topics=() |
Protected resource metadata
| Document | https://app.datavrn.com/.well-known/oauth-protected-resource/api/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://app.datavrn.com/api/mcp |
| Authorisation server | https://jmkgxtzscatvuqefbiyq.supabase.co/auth/v1 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://app.datavrn.com/api/mcp | Verified | 200 | |
| http (plaintext) | http://app.datavrn.com/api/mcp | HTTPS enforced | 308 | https://app.datavrn.com/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
preview_replacement_restore Preview undoing an automatic sync ~379
Show EXACTLY what undoing one automatic sync would do, counted at this moment, and get the approval restore_replacement needs. destroy_count is how many records undoing it would DESTROY — everything currently held for that period, whoever or whatever put it there, including data a colleague uploaded since. restore_count is how many records would be put back. READ BOTH NUMBERS TO YOUR USER IN THEIR OWN TERMS AND GET THEIR EXPLICIT GO-AHEAD BEFORE CALLING restore_replacement. Undoing a sync is itself a destructive act. If blocked_reason comes back non-null, the period is locked by a finalised statement or a sealed run: read that reason out, do not call restore_replacement, and no approval is issued. The approval is single-use, expires in 15 minutes, and is tied to this entity, this sync, this connection, the member you name AND the exact destroy_count returned here. Send that same number back as expected_destroy_count — never a number you adjusted. If the period’s data changes in between, the approval is spent and you start again from here.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | string | yes | The entity (client) id — from list_clients. |
| connection_id | string | yes | The connected data source’s id — from list_replacements or get_pending_work. |
| event_id | string | yes | The replacement’s id — the `id` field of a list_replacements row. |
| on_behalf_of | string | – | The 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 gu… |
No output schema declared.
No examples provided.
restore_replacement Undo an automatic sync ~473
Undo one automatic sync: destroy what is currently held for that period and put back the records the sync replaced, recorded as authorised by the member you name. THIS DESTROYS DATA. Everything currently held in that period goes — including anything uploaded or synced since — and is replaced by what was there before. Datavrn keeps a record of what this destroys, but it is NOT offered back on this surface; recovering from an undo is a support operation. Call preview_replacement_restore first, read both of its numbers to your user, get their explicit go-ahead, and send back the confirm_token it gave you with the EXACT destroy_count it returned as expected_destroy_count. Datavrn refuses and changes nothing if: the period’s data moved after you were shown those numbers, the period is locked by a finalised statement or a sealed run, someone already undid this sync, the 30-day window has closed, or the replacement was one a person previewed and confirmed themselves. On success it reports how many records were destroyed, how many were put back, and — under soft_reference_relink — how many links to the restored documents could not be re-established; tell your user that residual number rather than presenting the undo as complete.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | string | yes | The entity (client) id — from list_clients. |
| confirm_token | string | yes | The approval from preview_replacement_restore. Call it first and present both of its numbers to your user. |
| connection_id | string | yes | The connected data source’s id — the same one you previewed with. |
| event_id | string | yes | The replacement’s id — the same one you previewed. |
| expected_destroy_count | integer | yes | The destroy_count preview_replacement_restore returned and you showed your user. Send it back unchanged — a different number is refused, because the approval covers the act your user actually saw. |
| on_behalf_of | string | – | The 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 gu… |
No output schema declared.
No examples provided.
revoke_capture_declaration Withdraw a recorded capture answer ~329
Withdraw a recorded capture answer or review confirmation. What happens next depends on what answers the section: withdrawing a “nothing to record”/“does not apply” answer or a review confirmation makes Statement readiness show the section as UNANSWERED again; withdrawing a leftover earlier note from a section that is answered by its saved rows removes the record and the section STAYS answered. 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 | Type | Req | Description |
|---|---|---|---|
| capture_kind | string | yes | – |
| client_id | string | yes | The entity (client) id — from list_clients. |
| on_behalf_of | string | – | The 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 gu… |
| period_id | string | yes | – |
| template_id | string | yes | – |
No output schema declared.
No examples provided.
save_accounting_policies Save significant accounting policies ~505
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 | Type | Req | Description |
|---|---|---|---|
| client_id | string | yes | The entity (client) id — from list_clients. |
| on_behalf_of | string | – | The 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 gu… |
| period_id | string | yes | – |
| policies | object | – | – |
| removal_count | integer | – | – |
| removal_token | string | – | – |
| template_id | string | yes | – |
No output schema declared.
No examples provided.
save_adjustments Save adjustment entry ~144
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 | Type | Req | Description |
|---|---|---|---|
| client_id | string | yes | The entity (client) id — from list_clients. |
| entry_no | integer | yes | – |
| lines | array | yes | – |
| period_id | string | yes | – |
| removal_count | integer | – | – |
| removal_token | string | – | – |
| template_id | string | yes | – |
No output schema declared.
No examples provided.
save_asset_movements Save asset movements ~80
Save fixed-asset movements (additions, deletions, depreciation charge, depreciation on deletions) per gross-block line for the PPE schedule.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | string | yes | The entity (client) id — from list_clients. |
| movements | array | yes | – |
| period_id | string | yes | – |
| template_id | string | yes | – |
No output schema declared.
No examples provided.
save_disclosures Save disclosures ~1,418
Save the notes/disclosures 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. SECTIONS YOU DO NOT SEND ARE LEFT ALONE. Send only the sections you are changing; every other section keeps exactly what is saved. Within a section you DO send, the rows you send REPLACE every row saved for that section — there is no row-level merge, so always send that section complete. To CLEAR a section, send it explicitly with its own empty value: [] for corporateInfo, contingent, shareholders5pct, promoters, relatedParties and msmeAmounts; {} for ratioReasons; null for auditorPayments, csr, proposedDividend and the DSCR amounts. The three ageing sections take [] or null. Clearing removes saved content, so Datavrn saves nothing and returns an approval request naming the sections and how many rows each holds. Show your user exactly what would be cleared; only if they mean to, resend the identical call adding removal_token and removal_count from that response. The approval is single-use and lapses after five minutes — if it lapses, call again for a fresh one. Saving here re-opens the disclosure review — after your last change, confirm the disclosure review again with confirm_capture_review before generating. ratioReasons is keyed by the ratio IDENTIFIER, never its display label: current_ratio | debt_equity | dscr | roe | inv_turnover | tr_turnover | tp_turnover | ncap_turnover | net_profit | roce | roi. msmeAmounts is a POSITIONAL list of exactly five items, in this statutory order: 1. Principal amount and interest due thereon remaining unpaid at the year end (shown separately) | 2. Interest paid under section 16 of the MSMED Act, with the payment made beyond the appointed day | 3. Interest due and payable for delay in payment (paid beyond the appointed day), excluding MSMED-specified interest | 4. Interest accrued and remaining un…
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | string | yes | The entity (client) id — from list_clients. |
| payload | object | yes | – |
| period_id | string | yes | – |
| removal_count | integer | – | – |
| removal_token | string | – | – |
| template_id | string | yes | – |
No output schema declared.
No examples provided.
save_partner_capital Save partner or owner capital schedule ~599
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 a…
| Name | Type | Req | Description |
|---|---|---|---|
| account_kind | string | yes | – |
| client_id | string | yes | The entity (client) id — from list_clients. |
| on_behalf_of | string | – | The 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 gu… |
| period_id | string | yes | – |
| removal_count | integer | – | – |
| removal_token | string | – | – |
| rows | array | yes | – |
| template_id | string | yes | – |
No output schema declared.
No examples provided.
save_provision_movements Save provision movements ~166
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 | Type | Req | Description |
|---|---|---|---|
| clear_all | boolean | – | – |
| client_id | string | yes | The entity (client) id — from list_clients. |
| movements | array | yes | – |
| period_id | string | yes | – |
| removal_count | integer | – | – |
| removal_token | string | – | – |
| remove_leaf_codes | array | – | – |
| template_id | string | yes | – |
No output schema declared.
No examples provided.
save_py_values Save prior-year comparatives ~133
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 | Type | Req | Description |
|---|---|---|---|
| client_id | string | yes | The entity (client) id — from list_clients. |
| period_id | string | yes | – |
| template_id | string | yes | – |
| values | array | yes | – |
No output schema declared.
No examples provided.
save_regulatory_affirmations Save regulatory affirmations ~505
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 | Type | Req | Description |
|---|---|---|---|
| affirmations | object | – | – |
| client_id | string | yes | The entity (client) id — from list_clients. |
| on_behalf_of | string | – | The 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 gu… |
| period_id | string | yes | – |
| removal_count | integer | – | – |
| removal_token | string | – | – |
| template_id | string | yes | – |
No output schema declared.
No examples provided.
save_reserves_movements Save reserves movements ~173
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 | Type | Req | Description |
|---|---|---|---|
| clear_all | boolean | – | – |
| client_id | string | yes | The entity (client) id — from list_clients. |
| movements | array | yes | – |
| period_id | string | yes | – |
| removal_count | integer | – | – |
| removal_token | string | – | – |
| remove_leaf_codes | array | – | – |
| template_id | string | yes | – |
No output schema declared.
No examples provided.
save_share_capital Save share capital ~118
Save the share-capital reconciliation for the period: the opening share count, the shares issued and bought back during the year, and the amount issued and the amount bought back.
| Name | Type | Req | Description |
|---|---|---|---|
| amount_bought_back | – | yes | – |
| amount_issued | string | yes | – |
| client_id | string | yes | The entity (client) id — from list_clients. |
| opening_shares | – | yes | – |
| period_id | string | yes | – |
| shares_bought_back | – | yes | – |
| shares_issued | – | yes | – |
| template_id | string | yes | – |
No output schema declared.
No examples provided.
save_statement_settings Save statement settings ~363
Save statement settings (rounding unit, signatory details, company information used on the statement face).
| Name | Type | Req | Description |
|---|---|---|---|
| cin | – | yes | – |
| client_id | string | yes | The entity (client) id — from list_clients. |
| entity_class | – | – | – |
| entity_name_override | – | yes | – |
| equity_face_value | – | yes | – |
| font_name | string | – | – |
| include_cfs | boolean|null | – | – |
| period_id | string | yes | – |
| registered_office | – | yes | – |
| rounding_off | boolean | – | Whole-unit value rounding. When true (the default), every figure is rounded to the presentation unit and each CA-read total (profit, total assets, equity and liabilities) equals the rounded exact fig… |
| suppress_nil_lines | boolean | – | – |
| template_id | string | yes | – |
| unit_divisor | number | yes | – |
| unit_label | string | yes | – |
| weighted_equity_shares | – | yes | – |
| weighted_equity_shares_py | – | yes | – |
| weighted_potential_equity_shares | – | yes | Weighted average potential equity shares (dilutive — options, convertibles). ADDITIONAL shares from options/convertibles only — not the total diluted share count. Enter 0 if the company has none. Do… |
| weighted_potential_equity_shares_py | – | yes | Weighted average potential equity shares — previous year (dilutive). ADDITIONAL shares from options/convertibles only — not the total diluted share count. Enter 0 if the company has none. Do not repe… |
No output schema declared.
No examples provided.
set_header_row Set header row ~62
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 | Type | Req | Description |
|---|---|---|---|
| header_row | integer | yes | – |
| upload_id | string | yes | The upload session id returned by upload_trial_balance. |
No output schema declared.
No examples provided.
upload_trial_balance Upload trial balance ~457
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. Even for a file you hold on disk, prefer create_upload_link once the file is larger than about 10 KB: base64 through a model context mutates a token often enough that the damage lands as a PLAUSIBLE trial balance, not as an obvious error. VERIFY THE HASH BEFORE YOU CONFIRM ANYTHING: this tool returns received_file_hash, the sha256 of the bytes the server actually received. Compute the sha256 of the file on your disk and compare the two. If they differ, the bytes changed in transit — do NOT call confirm_column_mapping on this session; re-send the file with create_upload_link instead. A mismatched file can still parse cleanly and still show sensible columns, so the hash is the only reliable check. Returns the upload session with detected columns and mapping SUGGESTIONS — nothing is ingested yet. Next: verify received_file_hash, then review the suggested column mapping with your user, then call confirm_column_mapping.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | string | yes | The entity (client) id — from list_clients. |
| file_base64 | string | yes | The file bytes, base64-encoded. |
| file_name | string | yes | The file's name, e.g. 'tb-2026-03.xlsx'. |
| format | string | – | Leave unset — the assistant handles Trial Balances only; any other format is refused (use the Datavrn web app). |
| source | string | – | Set 'tally_file' when the file is a Tally xlsx export; omit otherwise. |
No output schema declared.
No examples provided.
verify_connection Verify connection ~79
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
What is the com.datavrn/schedule-iii MCP server?
com.datavrn/schedule-iii is an MCP server listed in the public MCP registry as com.datavrn/schedule-iii. Deterministic Schedule III statements for Indian companies: trial balance in, Excel workbook out. This page covers its hosted endpoint (https://app.datavrn.com/api/mcp).
Is the com.datavrn/schedule-iii MCP server safe to use?
com.datavrn/schedule-iii scores 89 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the com.datavrn/schedule-iii MCP server expose?
com.datavrn/schedule-iii exposes 67 tools: list_clients, create_client, upload_trial_balance, get_upload, set_header_row, and 62 more. Their descriptions and schemas cost roughly 20,322 tokens of context every time the server is loaded.
Does the com.datavrn/schedule-iii MCP server require authentication?
Yes. com.datavrn/schedule-iii asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the com.datavrn/schedule-iii MCP server still maintained?
com.datavrn/schedule-iii is still listed as active in the MCP registry. We last reached this channel on 28 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.