Structured tools
Deterministic compliance calculations, each backed by evidence links.
Some questions should never be "inferred" — a GST due date, a late fee, interest, an HSN/SAC rate. A structured module sits on top of a knowledge pack and returns a computed answer, with the exact source rows that produced it linked as evidence.
Why structured, not prose
Asking a model to read a notification and do the arithmetic invites errors. A structured tool runs the rule deterministically and shows its work:
const due = await session.calculateGstDueDate({
formKey: 'gstr1',
periodEnd: '2024-11-30',
});
// due.result -> { dueDate: '2024-12-11', ... }
// due.ruleRowsUsed -> the rule rows applied
// due.evidenceLinks -> the exact notifications that set this ruleThe GST module
Auto-exposed when the in.business_compliance.authority pack is enabled on the session:
| Tool | Returns |
|---|---|
GST_GET_COMPLIANCE_RULE | Structured rules by family / type / form / class. |
GST_CALCULATE_DUE_DATE | Return due date for a form + period. |
GST_CALCULATE_LATE_FEE | Late fee from due date and filing date. |
GST_CALCULATE_INTEREST | Interest on a delayed payment. |
GST_LOOKUP_HSN_SAC_RATE | Current GST rate for an HSN/SAC code. |
GST_CHECK_RCM | Reverse-charge applicability for a supply. |
GST_GET_NOTICE_RULE / GST_GET_APPEAL_STAGE_RULE | Notice and appeal-stage rules. |
Effective-dated
Every rule has an effective window. Pass asOfDate to compute against the rules in force on that
date — the same way statutory rules are themselves versioned.
await session.getGstDueDateRule({ formKey: 'gstr1', asOfDate: '2024-06-30' });Each result carries evidenceLinks with a legalConfidence of verified, partial, or
evidence_pending — so you always know how firmly a calculation is grounded. Prefer a structured
tool over prose whenever the task is a calculation.