mcp-india-stack
The mcp-india-stack server is an offline-first, zero-authentication MCP server providing 58+ tools for Indian financial, tax, identity, and government workflows — no API keys or internet connection required for core functionality. Datasets auto-update in the background via CDN.
Identity & Document Validation Validate and decode PAN, Aadhaar (Verhoeff checksum, masked output), GSTIN, TAN, PRAN, Voter ID, Driving License, Passport, CIN, DIN, FSSAI, LLPIN, EPF/ESIC codes, UPI VPA, ISIN, and mobile numbers (with operator/circle detection).
Bulk Validation (Parallel) Batch-validate up to 500 GSTINs, PANs, IFSC codes, or Aadhaar numbers simultaneously.
Lookup Tools Look up IFSC codes, pincodes (district/state/post office), HSN/SAC codes by code or keyword, GST state code metadata, BBPS billers, and RBI bank master data.
Tax Calculators (FY2025-26) Compute Income Tax (old vs new regime, surcharge, 87A rebate, cess), TDS (15+ sections), GST (CGST/SGST/IGST/cess), HRA exemption, Capital Gains (STCG/LTCG for equity, real estate, gold, crypto), Advance Tax quarterly schedules, GST late fees, interest under sections 234A/B/C, Presumptive Tax (44AD/44ADA), Professional Tax (state-wise), and Salary Restructuring for tax optimization.
Savings & Investment Calculators EPF/ESIC contributions, Loan EMI (with amortization), Gratuity, PPF, FD (with TDS/senior citizen rates), RD, SIP, Step-Up SIP, NPS corpus/pension projections, Sukanya Samriddhi (SSY), SCSS, Leave Encashment Tax exemption, and Buy vs Rent comparison.
Banking & Payments Estimate NEFT/RTGS/IMPS/UPI transaction charges by mode and amount.
Account Aggregator (AA) Tools Build ReBIT-compliant AA consent requests, validate consent artifacts, and decode Financial Information (FI) types.
Regulatory Compliance FY2025-26 compliance calendar covering Income Tax, TDS, GST, PF/ESIC, and ROC deadlines.
Built-in Prompt Workflows Pre-built templates for complex multi-step tasks like vendor KYC, salary planning, and invoice auditing.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-india-stackvalidate PAN ABCDE1234F"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🇮🇳 MCP India Stack
A high-performance, offline-first Model Context Protocol (MCP) server equipping AI agents with Indian financial, tax, and government APIs. Zero authentication required.
📑 Table of Contents
Related MCP server: itr-mcp
📌 Problem Statement
Fragmented Access: Indian fintech, identity, and tax APIs are heavily siloed, requiring multiple disjointed integrations.
High Barriers to Entry: Existing solutions are plagued by paid subscriptions, strict rate limits, and complex API key management.
No Native AI Integration: There is no MCP-native standard designed specifically for autonomous AI agents to validate GSTIN, PAN, IFSC, or compute tax data.
Latency & Reliability Issues: Depending on remote third-party APIs for static/slow-moving datasets introduces unnecessary network delays and potential points of failure for AI workflows.
🛠️ Tech Stack
Layer | Technology |
Protocol | MCP (FastMCP) |
Runtime | Python |
Distribution | PyPI / Smithery |
Hosting | Render |
Datasets | Offline-bundled (jsDelivr CDN sync) |
🏗️ Architecture Diagram
MCP Client ↔ MCP Server ↔ 58 offline-first tool modules
🔗 Demo & Links
Demo Video: https://youtu.be/KAy6043Co0w?si=FIFfVRM2y3Zwv8oK
Deployment: https://pypi.org/project/mcp-india-stack/
✨ Key Features
Offline-First Architecture: Bundles compressed datasets for zero-latency lookups (IFSC, Pincodes, HSN/SAC). No API rate limits.
Zero Authentication: No API keys, secrets, or subscriptions required. All logic runs locally.
Background Auto-Updates: Non-blocking CDN fetching ensures your datasets never go stale without impacting request latency.
Comprehensive Coverage: 58 dedicated tools for identity validation (PAN, Aadhaar, GSTIN, TAN, PRAN), tax calculation (Income Tax, TDS, GST), savings calculators (EPF, PPF, SIP), and master data lookups.
Enterprise-Ready: Thread-pool accelerated bulk validation tools for processing large batches of vendor or customer data.
🚀 Quick Start
Installation
pip install mcp-india-stackClaude Desktop Configuration
Add the following to your claude_desktop_config.json file to enable the India Stack in Claude Desktop:
Windows (%APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"mcp-india-stack": {
"command": "python",
"args": ["-m", "mcp_india_stack"]
}
}
}macOS/Linux (~/Library/Application Support/Claude/claude_desktop_config.json or ~/.config/Claude/claude_desktop_config.json):
{
"mcpServers": {
"mcp-india-stack": {
"command": "python3",
"args": ["-m", "mcp_india_stack"]
}
}
}🛠️ Tool Catalog
🔍 Lookup Tools
lookup_ifsc— Bank branch details from IFSC codelookup_pincode— India pincode details and post officeslookup_hsn_code— HSN/SAC code lookup by code or keyworddecode_state_code— GST state code metadatalookup_bbps_biller— BBPS biller directory lookuplookup_bank— Basic bank master lookup by name or code
✅ Validation Tools
validate_gstin— GSTIN structure and checksumvalidate_pan— PAN format and entity type decodevalidate_upi_vpa— UPI VPA structure and provider decodevalidate_aadhaar— Aadhaar number with Verhoeff checksum (masked output)validate_voter_id— Voter ID (EPIC) format with legacy detectionvalidate_driving_license— DL format with state/RTO/year decodevalidate_passport— Indian passport number formatvalidate_cin— Company Identification Number with full field decodevalidate_din— Director Identification Number formatvalidate_fssai— FSSAI license number validation and decodevalidate_epf_code— EPF establishment code validatorvalidate_esic_code— ESIC employer code validatorvalidate_tan— TAN validatorvalidate_pran— PRAN validator for NPSvalidate_llpin— LLPIN validatordecode_isin— ISIN decoder with Luhn validationdecode_digilocker_uri— DigiLocker URI decoder and validator mapperdecode_pan_type— Decode PAN entity type from the 4th character
📱 Identity & Contact
validate_mobile_number— Mobile number with operator/circle detection
⚡ Bulk Operations
bulk_validate_gstin— Parallel GSTIN batch validationbulk_validate_pan— Parallel PAN batch validationbulk_validate_ifsc— Parallel IFSC batch validationbulk_validate_aadhaar— Parallel Aadhaar batch validation
🧮 Tax & Financial Calculators (FY2025-26)
calculate_income_tax— Old vs new regime comparison with surcharge, rebate, cesscalculate_tds— TDS rate lookup and computation for 15+ sectionscalculate_gst— GST breakdown (CGST/SGST/IGST/cess) with HSN lookupcalculate_surcharge— Surcharge and marginal relief calculatorcalculate_hra_exemption— HRA exemption calculator for salary planningcalculate_capital_gains— Capital gains with Section 54/54F exemptioncalculate_advance_tax— Advance tax estimatorcalculate_gst_late_fee— GST late filing penaltycalculate_income_tax_interest— Sections 234A/B/C interestcalculate_presumptive_tax— 44AD/44ADA presumptive taxget_regulatory_deadlines— Tax & regulatory compliance calendar
💰 Savings & Investment Calculators
calculate_epf_esic— EPF/ESIC contribution calculatorcalculate_emi— Loan EMI with amortization schedulecalculate_gratuity— Gratuity under Payment of Gratuity Actcalculate_ppf_maturity— PPF maturity projectionscalculate_fd_maturity— Fixed Deposit maturitycalculate_rd_maturity— Recurring Deposit maturitycalculate_sip_returns— SIP returns with inflation adjustmentcalculate_step_up_sip— Step-up SIP comparisoncalculate_nps_projection— NPS corpus and pensioncalculate_sukanya_samriddhi— SSY and SCSS calculator
🏠 Real Estate
calculate_home_vs_rent— Buy vs rent financial comparisoncalculate_leave_encashment_tax— Section 10(10AA) leave encashment
💼 HR & Payroll
calculate_professional_tax— State-wise professional taxcalculate_salary_restructuring— Tax-optimized salary restructuring
🏦 Banking & Payments
calculate_neft_rtgs_imps_charges— Transaction charges
📈 Stock Market
get_stock_quote— Fetch live/delayed Indian stock quotes and summaries (NSE/BSE) using yfinance.get_stock_history— Fetch historical end-of-day data for Indian stocks using yfinance.
🔐 Account Aggregator (Offline)
build_aa_consent_request— AA consent request buildervalidate_aa_consent_artifact— AA consent validatordecode_aa_fi_type— AA FI type decoder
🔄 Agent Workflows & Resources
Prompt Workflows (Overview)
Built-in prompt templates to guide AI agents through complex multi-step tasks:
vendor_kyc— GSTIN, PAN, and IFSC verification sequence.salary_planner— Income, HRA, and optimized take-home salary planning.invoice_audit— Cross-referencing GSTINs, HSN codes, and applicable GST rates.
Server Resources (Overview)
Dynamic JSON resources provided directly to the LLM context:
india://status— Version, DB connectivity, and runtime flagsindia://changelog— Structured changelog resourceindia://schema/*— JSON schemas for all tool outputs
📡 Data Architecture & Freshness
This package bundles static datasets for offline-first workflows (approx. 10-11MB compressed footprint), covering IFSCs, Pincodes, HSN/SAC masters, and curated UPI handles.
An optional auto-update mechanism fetches the latest versions from the jsDelivr CDN in the background:
Non-blocking: Stale data triggers a background refresh; the current request immediately uses existing cached data to ensure zero latency.
Opt out: Set the
MCP_INDIA_STACK_NO_AUTO_UPDATE=1environment variable to disable all update checks.Manual refresh: Run
mcp-india-stack --refresh-allto synchronously refresh all datasets from the CDN.Cache location: Platform-specific via
platformdirs(e.g.,~/.cache/mcp-india-stackon Linux).
⚠️ Limitations
Stateless Validation: GSTIN, Aadhaar, Voter ID, DL, Passport, CIN, and DIN validators check structural formatting and checksums only. They do not verify active registration status with government issuing authorities.
Algorithmic Constraints: PAN validation is structural; the PAN check character logic is not publicly verifiable.
Tax Estimates: All tax calculations are algorithmic estimates based on FY2025-26 rules. Actual liability may differ. Always consult a Chartered Accountant.
Static Rates: HSN/SAC rates are static references and may vary based on specific conditions or new government notifications.
⚖️ Legal & Attribution
See NOTICES for detailed dataset attribution, licensing details, and third-party acknowledgments.
🚀 Launch Notes
This repository is release-ready for GitHub launch with:
0.4.2package metadata and changelog coverage.A complete MCP server-card under
docs/.well-known/mcp/server-card.json.Local setup and publishing steps in
SETUP.md.Contribution guidance and versioning policy in
CONTRIBUTING.md.
Bug fixes in v0.4.2 (Round 2 — Deep Code Audit)
Capital Gains: Asset-type-specific LTCG thresholds — real estate 24mo, gold/debentures 36mo, crypto always 30% flat.
EPF/ESIC: Employee EPF correctly capped at ₹15K wage ceiling. Added
voluntary_pf_on_actualfor VPF.HRA: Removed Bangalore/Hyderabad/Pune from metro cities. Only Delhi/Mumbai/Chennai/Kolkata get 50%.
Presumptive Tax: Full 7-slab new regime coverage with 87A rebate (was truncated at 3 slabs).
GST Late Fee: GSTR9 cap enforced (0.25% of turnover). Nil return rate corrected to ₹20/day.
Income Tax Interest: Section 234C uses cumulative paid vs required (not single-quarter).
Advance Tax: Installments show incremental
installment_amount(not confusing cumulative).Salary Restructuring: Removed obsolete ₹19,200 conveyance exemption. Standard deduction (₹75K) shown.
Bug fixes in v0.4.1
Security: Masked Aadhaar number leakage in response fields.
Validation: Fixed mobile number over-counting digits issue.
Tax Rules: Corrected Presumptive Tax (44AD/44ADA) thresholds to FY25-26 rules.
Financial: Fixed Step-up SIP compounding return calculation.
Data: Added missing HSN codes (8517, 9401, 2523, 3004, 8708) with correct GST rates.
Professional Tax: Fixed annual total calculations based on correct monthly slabs.
Income Tax: Fixed 80D deduction cap for senior citizens.
ISIN: Fixed Luhn checksum multi-digit expansion logic.
EMI Calculator: Improved error responses to not leak fallback fields on invalid inputs.
Advance Tax: Added support for overriding internal computations with user-provided
tax_liability.
Offline-First Guarantee: All tools in this package work without an internet connection. No API keys required. No data is sent to any external server. All datasets are bundled in the package at install time.
Available Tools
60 toolsbuild_aa_consent_requestARead-onlyIdempotent
Build AA (Account Aggregator) consent request JSON per ReBIT spec.
Use when setting up data sharing consent for open banking workflows.
Args: customer_id: AA customer address (user@provider) fi_types: Financial information types to request date_range_from: Data fetch range start date_range_to: Data fetch range end consent_expiry_days: How many days consent remains valid purpose_code: ReBIT purpose code (default "101") fetch_type: "ONETIME" or "PERIODIC" frequency_unit: "HOUR", "DAY", "MONTH", "YEAR" - for PERIODIC frequency_value: Numeric frequency - for PERIODIC
Returns: Consent request payload and validation notes.
| Name | Required | Description | Default |
|---|---|---|---|
| fi_types | Yes | FI types: DEPOSIT, MUTUAL_FUNDS, INSURANCE, NPS, EQUITIES, GSTIN_DATA, CREDIT_CARD, RECURRING_DEPOSIT | |
| fetch_type | No | ONETIME or PERIODIC | ONETIME |
| customer_id | Yes | AA customer address (e.g., user@onemoney) | |
| purpose_code | No | ReBIT purpose code (101-106) | 101 |
| date_range_to | Yes | End date YYYY-MM-DD | |
| frequency_unit | No | HOUR, DAY, MONTH, YEAR for PERIODIC | |
| date_range_from | Yes | Start date YYYY-MM-DD | |
| frequency_value | No | Frequency value for PERIODIC | |
| consent_expiry_days | No | Days until consent expires |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds return behavior beyond the annotations: 'Returns: Consent request payload and validation notes.' The read-only and idempotent behavior is already covered by annotations, so the description does not need additional side-effect disclosure. No annotation 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 front-loaded with a clear purpose statement and use-case sentence, then a compact Args list and return note. It repeats a few defaults already present in the schema, but the structure is scannable and remains appropriately 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?
For a 9-parameter builder, the description covers purpose, usage context, all parameters, defaults, and the return payload. It does not explicitly spell out that the periodic frequency fields are conditional, but the 'for PERIODIC' labels plus the schema supply adequate 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 coverage is 100%, so the schema already documents all parameters. The description adds some situational context, such as 'for PERIODIC' and the default purpose code, but it does not substantially go beyond the rich 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 states a specific verb and resource: 'Build AA (Account Aggregator) consent request JSON per ReBIT spec.' This clearly distinguishes it from sibling validation/decode tools, which operate on different resources or behaviors.
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's 'Use when setting up data sharing consent for open banking workflows' provides a clear trigger context. It does not explicitly mention when not to use it or point to a validation sibling, but the primary use case is sufficiently scoped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_validate_aadhaarARead-onlyIdempotent
Validate multiple Aadhaar numbers in parallel using ThreadPoolExecutor.
Use when batch-validating Aadhaar numbers for KYC, onboarding, or compliance workflows.
Args: numbers: List of Aadhaar numbers (with or without spaces/hyphens).
Returns: Standard envelope with per-Aadhaar results and valid/invalid counts.
Notes: Max 500 Aadhaars per call. Uses same Verhoeff validation as single tool.
| Name | Required | Description | Default |
|---|---|---|---|
| numbers | Yes | List of Aadhaar numbers to validate (max 500) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description adds genuinely useful behavioral details: parallel execution via ThreadPoolExecutor, a 500-item cap, per-Aadhaar results with counts, and consistency with the single-tool Verhoeff algorithm. 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 well organized with clearly labeled sections: usage, args, returns, and notes. Every sentence earns its place, and the main purpose is front-loaded before implementation 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?
With only one parameter, a rich output schema, and annotations covering safety, the description provides everything needed: when to use it, input normalization, batch limit, parallelism, and return behavior. Nothing important is missing.
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 covers the parameter at 100%, but the description adds meaningful input semantics beyond the schema by stating that numbers may include spaces or hyphens and reinforcing the max-500 list constraint. This helps the agent prepare valid input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: validate multiple Aadhaar numbers. The description adds parallel execution detail, and the word 'multiple' plus batch focus clearly distinguishes it from validate_aadhaar.
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 use when batch-validating for KYC, onboarding, or compliance workflows, which gives clear context. It does not explicitly name validate_aadhaar as the single-item alternative, so it falls just short of full when-not/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_validate_gstinARead-onlyIdempotent
Validate multiple GSTINs in parallel using ThreadPoolExecutor.
Use when batch-validating vendor GSTINs for onboarding or reconciliation. Reduces N serial calls to ~N/10 parallel batches.
Args: gstins: List of 15-character GSTIN strings.
Returns: Standard envelope with per-GSTIN results, valid/invalid counts.
Notes: Max 500 GSTINs per call. Configurable via MCP_INDIA_STACK_BULK_WORKERS. Individual validation errors don't fail the entire batch.
| Name | Required | Description | Default |
|---|---|---|---|
| gstins | Yes | List of GSTINs to validate (max 500) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though readOnlyHint and idempotentHint already indicate this is a safe, repeatable census-style operation, the description adds meaningful behavioral detail: execution uses a ThreadPoolExecutor, batches scale to ~N/10 parallel calls, up to 500 GSTINs are allowed per call, and individual validation errors do not fail the entire batch. This is exactly the kind of context beyond annotations that helps an agent invoke it correctly.
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, well-sectioned with Args/Returns/Notes, and front-loaded with the core action and use case. Every sentence carries useful information: parallel execution, typical use case, limit, configurability, and partial failure behavior. No filler or redundant repetition.
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 single-parameter validation tool with a full output schema, this description is complete. It tells the agent what the operation does, when to use it, the input format, the call limit, parallelization behavior, and what happens on partial errors. Nothing necessary for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the single gstins parameter as a list of GSTINs with a max of 500, and schema coverage is 100%. The description adds an important extra constraint — each string must be 15 characters — and clarifies that results are returned per GSTIN, adding meaningful nuance beyond the schema alone.
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 action — validating multiple GSTINs in parallel — and clearly distinguishes this bulk operation from the single-value sibling tools like validate_gstin. The resource and scope are unambiguous: multiple GSTIN values are batch-validated rather than validated one at a time.
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 says to 'Use when batch-validating vendor GSTINs for onboarding or reconciliation' and explains that it replaces many serial calls with a single parallel batch. This gives clear context, though it does not explicitly name validate_gstin as the alternative for single-item validation or mention when a small batch should use the singular path instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_validate_ifscARead-onlyIdempotent
Validate multiple IFSC codes in parallel. # PermissionTier: READ_ONLY
| Name | Required | Description | Default |
|---|---|---|---|
| ifscs | Yes | List of IFSC codes to validate (max 500) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and idempotentHint=true, so the safety profile is covered. The description adds the parallel execution detail but does not clarify what 'validate' means in terms of depth (e.g., format only vs. bank/branch existence) or how results are reported.
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 extremely brief and front-loaded with the essential purpose. The permission tag is redundant with the annotations but does not create meaningful bloat, so the definition remains high-signal.
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 low-complexity, single-parameter, read-only tool, the description plus the input schema and output schema together give the agent enough to select and invoke the tool correctly. No essential dynamic behavior or destructive consequence is left uncovered.
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 parameter description already defines the array of IFSC codes and the 500-code cap. The description's 'multiple' adds little beyond the schema and does not give format examples or additional usage semantics for the single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (validate), a specific resource (IFSC codes), and clearly focuses on multiple codes being checked in parallel. This differentiates it from singular tools like lookup_ifsc and from other bulk validators by naming the exact resource type.
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 'multiple IFSC codes in parallel' clearly signals this tool is intended for batch validation rather than single-code lookups or validation of other identifiers. It does not explicitly exclude lookup_ifsc for single-code checks, but the bulk context is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_validate_panARead-onlyIdempotent
Validate multiple PANs in parallel. # PermissionTier: READ_ONLY
| Name | Required | Description | Default |
|---|---|---|---|
| pans | Yes | List of PANs to validate (max 500) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and idempotent hints, so the description's main added behavior is the 'in parallel' execution trait, which is meaningful for understanding concurrency/review implications. The '# PermissionTier' tag slightly reinforces the read-only nature but mostly duplicates the 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?
One short active sentence plus a metadata tag, with no filler. The verb and resource are front-loaded, and every token 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?
Given a single simple parameter, rich schema coverage, an output schema, and annotations covering safety and idempotency, the description provides all needed context. Nothing essential is missing.
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 covers 100% of parameter semantics, including 'List of PANs to validate (max 500)'. The tool description adds no further parameter depth, 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?
Description states a specific verb ('Validate'), a concrete resource ('multiple PANs'), and a behavioral nuance ('in parallel'). This unambiguously distinguishes it from single-item siblings like validate_pan.
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?
Implied usage context is clear: use this when validating multiple PANs in parallel, contrasting with single-PAN tools. However, it does not explicitly name the alternative or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_advance_taxARead-onlyIdempotent
Calculate quarterly advance tax installment schedule per Sections 234B and 234C.
Use when planning quarterly tax payments to avoid interest penalties. Provides due dates and amounts for each installment.
Args: estimated_income: Estimated annual income for FY2025-26. regime: Tax regime for calculation. taxpayer_type: Category for slab selection. existing_tds: TDS already likely to be deducted.
Returns: Standard envelope with quarterly breakdown and interest rules.
Notes: Due dates: June 15 (15%), Sept 15 (45%), Dec 15 (75%), Mar 15 (100%). Interest 1% per month for delay under Section 234C.
| Name | Required | Description | Default |
|---|---|---|---|
| regime | No | 'new' or 'old' tax regime | new |
| existing_tds | No | TDS already deducted or to be deducted in rupees | |
| taxpayer_type | No | 'individual', 'senior_citizen', or 'super_senior_citizen' | individual |
| estimated_income | Yes | Estimated total income for FY in rupees |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already establishing readOnly and idempotent behavior, the description augments them by explaining the concrete calculation rules: specific quarterly due dates with cumulative percentages and a 1% per month interest rule. It also states the return envelope contains the schedule and interest rules, going beyond the bare annotation information.
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 well organized with a one-sentence summary, a usage sentence, and a clear Args/Returns/Notes layout. Every line adds information about inputs, output shape, or the underlying calculation rules, and there is no redundant or fragmented 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 that the output schema already carries return details, the description covers the remaining context needed for a computation of tool: the practical scenario, the fiscal year, the expected due dates, and the interest rule. An agent is equipped to use it without ambiguous assumptions.
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 coverage is 100%, but the description enriches a few parameters: it ties estimated_income to FY2025-26, explains taxpayer_type as 'category for slab selection,' and frames existing_tds as 'likely' deductible TDS. These small nuances clarify intent beyond the schema descriptions alone.
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: 'Calculate quarterly advance tax installment schedule per Sections 234B and 234C.' This clearly identifies the tool's output and differentiates it from siblings like calculate_income_tax or calculate_tds, since it focuses on installment scheduling and specific legal 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?
The text provides a clear use case: 'Use when planning quarterly tax payments to avoid interest penalties.' This tells the agent when to invoke the tool, though it does not explicitly name alternative tools or situations to avoid, which keeps it a step below full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_capital_gainsARead-onlyIdempotent
Calculate capital gains tax for various asset types (FY2025-26).
Use when computing tax liability on sale of equity, mutual funds, real estate, gold, or other capital assets.
Args: sale_price: Sale proceeds after expenses. purchase_price: Original purchase price. asset_type: Type of asset sold. holding_period_days: Days held before sale. inflation_index_purchase: Cost Inflation Index for purchase year. inflation_index_sale: Cost Inflation Index for sale year. expenses_on_sale: Expenses incurred during sale. improvements: Cost of improvements (for real estate).
Returns: Standard envelope with STCG/LTCG breakdown, tax rates, and liability.
Notes: Budget 2024 rates: STCG 20% (equity/MF), LTCG 12.5% (equity/MF threshold 100K). Real estate without indexation taxed at 20%.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_type | No | Asset type: equity, mutual_fund, real_estate, gold, debentures, crypto | equity |
| sale_price | Yes | Sale proceeds in rupees | |
| improvements | No | Cost of improvements (for real estate) | |
| purchase_price | Yes | Original purchase price in rupees | |
| expenses_on_sale | No | Brokerage, registration and other expenses on sale | |
| holding_period_days | No | Number of days held before sale | |
| inflation_index_sale | No | CII for sale year (for indexation) | |
| inflation_index_purchase | No | CII for purchase year (for indexation) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds relevant behavioral context beyond annotations, including Budget 2024 rate rules, STCG/LTCG breakdown expectations, the default 365-day holding period, and the specific return envelope containing tax rates and liability.
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 well-structured with a summary sentence, Args, Returns, and Notes sections. It is somewhat longer than minimal, but the length is justified by tax context and asset-type coverage. The key usage condition is front-loaded in the opening sentence.
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 fiscal year, usage window, key tax regime, asset types, and output envelope, which is sufficient for a read-only calculator with an output schema. It does not exhaustively explain complex edge cases like indexation thresholds or asset-specific holding period differences, but those are partially covered by parameters and notes.
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 documents all 8 parameters at 100% coverage, including descriptions like 'sale proceeds in rupees' and 'CII for purchase year'. The description mostly restates the parameters and adds modest clarification such as 'sale proceeds after expenses' and 'expenses incurred during sale', but it does not materially improve on the schema's parameter documentation.
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: 'Calculate capital gains tax for various asset types' and scopes it to FY2025-26. It names the covered asset classes (equity, mutual funds, real estate, gold), which clearly distinguishes this tool from sibling calculators like calculate_income_tax, calculate_tds, and calculate_gst.
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 'Use when computing tax liability on sale of equity, mutual funds, real estate, gold, or other capital assets' condition. It does not explicitly exclude or direct to alternatives like calculate_income_tax, but the stated trigger context is clear enough for an agent to select it among the calculation siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_emiARead-onlyIdempotent
Calculate EMI for a loan with year-by-year amortization schedule.
Use when computing loan EMIs, comparing loan options, or planning prepayment strategies.
Args: principal: Loan amount in INR. annual_interest_rate: Annual rate as percentage. tenure_months: Loan tenure in months (max 360). loan_type: Label for the loan type.
Returns: Standard envelope with EMI, total payment, interest, and amortization.
Notes: Uses standard reducing balance formula. Actual EMI may vary by lender.
| Name | Required | Description | Default |
|---|---|---|---|
| loan_type | No | Loan type: home, personal, car, education, other | other |
| principal | Yes | Loan amount in INR | |
| tenure_months | Yes | Loan tenure in months | |
| annual_interest_rate | Yes | Annual interest rate as percentage (e.g., 8.5) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds valuable context: 'standard reducing balance formula', a lender-variance caveat, and the year-by-year schedule detail. 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 well-organized with clear headings, front-loaded usage guidance, and concise parameter notes. Every sentence is purposeful and there is 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?
Given the read-only annotations and full output schema, the description provides all needed context: use cases, formula, caveats, and parameter constraints. The tool can be invoked correctly without missing information.
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 schema already documents all parameters clearly. The description adds only minor extras like tenure max 360 and the loan_type label, which slightly improves clarity but does not fully warrant more than 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?
States a specific verb and resource: 'Calculate EMI for a loan with year-by-year amortization schedule.' It also distinguishes itself from the many sibling calculators by emphasizing the amortization schedule, which is unique enough.
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 contexts: 'Use when computing loan EMIs, comparing loan options, or planning prepayment strategies.' However, it does not mention when to avoid using it or explicitly point to an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_epf_esicARead-onlyIdempotent
Calculate EPF and ESIC contributions for employer and employee.
Use when computing payroll costs, employee deductions, or comparing CTC structures across different salary levels.
Args: basic_wages: Basic salary + DA per month in INR. gross_wages: Total gross monthly salary in INR. include_employer_share: If True, return employer costs.
Returns: Standard envelope with EPF breakdown, ESIC applicability, and totals.
Notes: EPF ceiling is ₹15,000/month for statutory computation. ESIC applicable when gross wages ≤ ₹21,000/month.
| Name | Required | Description | Default |
|---|---|---|---|
| basic_wages | Yes | Basic salary + DA per month in INR | |
| gross_wages | Yes | Total gross monthly salary in INR | |
| include_employer_share | No | If True, return employer costs |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, setting the behavioral safety baseline. Beyond that, the description adds valuable statutory context: the ₹15,000 EPF ceiling and the ₹21,000 ESIC applicability threshold. It also hints at output through 'EPF breakdown, ESIC applicability, and totals.'
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 well-organized: purpose in the first sentence, clear usage guidance, argument list, return hint, and domain-specific notes. Every sentence earns its place without redundant 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 tool has an output schema, so the return breakdown need not be restated. The description covers purpose, usage scenario, key statutory thresholds, and the employer/employee dimension. It is complete for the intended payroll-cost comparison and deduction contexts.
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 100% of parameter descriptions, so the baseline is 3. The description adds meaningful parameter-level context through the statutory limits, particularly that gross wages determine ESIC applicability and the EPF computation ceiling is ₹15,000. This goes beyond merely restating 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 a specific verb and resource: 'Calculate EPF and ESIC contributions for employer and employee.' It clearly distinguishes itself from the many sibling calculators (e.g., calculate_gratuity, calculate_income_tax) by naming the exact statutory payroll contributions it handles.
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 the tool: 'Use when computing payroll costs, employee deductions, or comparing CTC structures across different salary levels.' This is clear context but does not provide exclusions or explicit alternatives, so it misses the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_fd_maturityARead-onlyIdempotent
Calculate Fixed Deposit maturity amount.
Use when projecting FD returns or comparing deposit options.
Args: principal: Deposit amount in INR annual_interest_rate: Rate as percentage tenure_days: Deposit tenure in days compounding: Compounding frequency is_senior_citizen: Senior citizen flag (0.25% extra rate) tds_applicable: Apply TDS if interest > ₹40,000/yr
Returns: Maturity amount with interest breakdown and TDS if applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| principal | Yes | Deposit amount in INR | |
| compounding | No | monthly, quarterly, half_yearly, yearly, simple | quarterly |
| tenure_days | Yes | Deposit tenure in days | |
| tds_applicable | No | Apply 10% TDS if interest exceeds threshold | |
| is_senior_citizen | No | Senior citizen flag | |
| annual_interest_rate | Yes | Interest rate as percentage (e.g., 6.5) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the basic behavior is covered. The description adds useful detail such as the 0.25% senior citizen extra rate and the ₹40,000/yr TDS threshold, but doesn't disclose rounding rules or day-count conventions 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?
Purpose is front-loaded and the description is structured into an action sentence, a usage line, parameter notes, and a returns explanation. It is mildly redundant because all argument details already appear in the schema, but it stays readable and doesn't waste words.
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 output schema exists and the input schema is fully self-documenting, the description covers the important usage aspects: when to use, what to expect as a return, maturity with interest breakdown, and TDS. It doesn't cover rounding conventions or edge-case inputs, but these are not critical for a maturity calculator 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 coverage is 100%, so the schema already documents all parameters. The description enriches a few semantics: it names the compounding frequency allowed values, and adds the clear '0.25% extra rate' and TDS threshold details that the schema omits. This helps the agent provide more accurate inputs.
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 and resource: 'Calculate Fixed Deposit maturity amount.' It identifies the domain and distinguishes it from sibling financial calculators (RD, PPF, SIP), though it doesn't explicitly call out the nearest sibling for contrast.
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 cues with 'Use when projecting FD returns or comparing deposit options.' This tells an agent when the tool is appropriate, though it doesn't mention alternatives like calculate_rd_maturity or explicitly say when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_gratuityARead-onlyIdempotent
Calculate gratuity under the Payment of Gratuity Act, 1972.
Use when computing terminal benefits, comparing CTC packages, or planning retirement benefits.
Args: last_drawn_salary: Basic + DA per month. years_of_service: Total service duration. is_covered_under_act: True for establishments with 10+ employees.
Returns: Standard envelope with gratuity amount, tax-exempt limit, and breakdown.
Notes: Minimum 5 years service required (except death/disablement). Tax-exempt ceiling is ₹20,00,000.
| Name | Required | Description | Default |
|---|---|---|---|
| years_of_service | Yes | Total years served (e.g., 5.8 = 5 yrs 9 months) | |
| last_drawn_salary | Yes | Last basic salary + DA per month in INR | |
| is_covered_under_act | No | True if establishment has 10+ employees |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already state readOnlyHint=true and idempotentHint=true, so the description's job is lighter. It adds helpful behavior context by noting the standard envelope return format, the minimum service requirement, and the ₹20,00,000 tax-exempt ceiling. This is consistent 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 text is well-structured into Args, Returns, and Notes sections. Every sentence adds information, and it is not bloated. It front-loads the core purpose before diving into arguments.
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 output schema is present and annotations already signal read-only/idempotent, the description covers the important non-obvious constraints (5-year minimum, tax exemption ceiling, coverage threshold). It stops short of describing the exact computation formula, but the tool's own return envelope likely makes that unnecessary.
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 clear descriptions and a decimal/fraction example for years_of_service. The description partially restates the schema, but the Notes add meaning to years_of_service by defining the 5-year minimum and the tax-exempt condition, which is 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 clear verb and resource: 'Calculate gratuity under the Payment of Gratuity Act, 1972.' This is unambiguous and distinct from the sibling tools, which cover taxes, loans, and validation rather than gratuity calculations.
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 names use cases: 'computing terminal benefits, comparing CTC packages, or planning retirement benefits' and adds key constraints such as 'Minimum 5 years service required (except death/disablement).' It does not explicitly point to an alternative sibling tool, but no sibling directly overlaps with gratuity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_gstARead-onlyIdempotent
Calculate GST breakdown with CGST/SGST/IGST split and optional cess.
Use when computing tax for invoices, quotations, or GST compliance.
Args: amount: Base amount or GST-inclusive amount in rupees. gst_rate: Valid GST rate percentage. transaction_type: 'intra_state' or 'inter_state'. amount_includes_gst: Set True to back-calculate base. cess_category: For 28% items, specify applicable cess.
Returns: Standard envelope with base amount, CGST/SGST/IGST breakdown, cess amount, total GST, and total payable amount.
Notes: Rates are for general reference. Actual classification may vary.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Base amount in rupees (or inclusive amount if flagged) | |
| gst_rate | Yes | GST rate as percentage: 0, 0.1, 0.25, 1.5, 3, 5, 12, 18, 28 | |
| cess_category | No | Cess category for 28% items. Default: 'default' (no cess) | default |
| transaction_type | Yes | 'intra_state' (CGST+SGST) or 'inter_state' (IGST) | |
| amount_includes_gst | No | If True, back-calculate base from GST-inclusive amount |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the read-only and idempotent annotations by explaining key behavioral details: amount can be inclusive or exclusive of GST, mutations are not made, and rate classification warnings are given. A minor gap is not being explicit about what happens if invalid GST rates are provided, but overall transparency is strong.
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 well-structured with a clear purpose line, use context, Args, Returns, and Notes sections. It is fairly concise but includes some vertical space and content that overlaps with the schema, which prevents a perfect score.
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 full schema coverage, an output schema, and annotations signaling read-only idempotent behavior, the description provides ample context: it states the business scenario, explains the optional cess behavior, and warns about rate variability. No critical operational detail is missing.
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 100% of parameters with clear descriptions, so the description's parameter section adds marginal value. It restates the same meanings (e.g., 'base amount or GST-inclusive amount', 'back-calculate base') without introducing substantially new 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 uses the specific verb 'Calculate' and identifies the exact resource: GST breakdown with CGST/SGST/IGST split and optional cess. It clearly distinguishes the tool from siblings like calculate_gst_late_fee by naming the core computation and its use cases.
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 states when to use the tool: 'Use when computing tax for invoices, quotations, or GST compliance.' This provides clear context, though it does not explicitly contrast with sibling calculators like calculate_gst_late_fee or check the xlsx calendar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_gst_late_feeARead-onlyIdempotent
Calculate GST late filing penalty.
Use when estimating late filing fees or planning compliance.
Args: return_type: "GSTR1", "GSTR3B", or "GSTR9" days_delayed: Number of days delayed annual_turnover: Annual turnover for cap calculation has_nil_liability: True if nil return
Returns: Late fee breakdown with CGST/SGST split.
| Name | Required | Description | Default |
|---|---|---|---|
| return_type | Yes | GSTR1, GSTR3B, or GSTR9 | |
| days_delayed | Yes | Number of days delayed | |
| annual_turnover | Yes | Annual turnover in INR | |
| has_nil_liability | No | True if nil return |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, covering safety and predictability. The description adds that output is a 'Late fee breakdown with CGST/SGST split,' but does not disclose other behavioral details such as penalty calculation cap behavior or edge cases. With annotation coverage, a 3 is appropriate.
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 well-structured, with a purpose sentence, usage context, arguments, and return value. Every section is needed and squarely supports tool invocation.
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 has an output schema, annotations, and complete parameter schema, the description sufficiently covers behavior, inputs, and output type. It lacks explicit mention of edge cases such as nil liability fee adjustment, but overall it is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds meaning by noting that annual_turnover is used 'for cap calculation' and clarifies has_nil_liability as 'True if nil return.' This goes beyond the plain schema descriptions and helps the agent understand how the parameters affect the calculation.
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 immediately states a specific action ('Calculate GST late filing penalty') with a specific resource. This distinguishes it from sibling tools like calculate_gst or calculate_income_tax, and the object of the calculation is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it: 'Use when estimating late filing fees or planning compliance.' It does not mention alternatives or exclusion criteria, but the context is clear enough for an agent to select it appropriately among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_home_vs_rentARead-onlyIdempotent
Compare buying vs renting financial outcome.
Use when deciding between buying a home or renting.
Args: home_price: Property price in INR down_payment_percent: Down payment as % loan_interest_rate: Home loan interest rate % loan_tenure_years: Loan tenure monthly_rent: Current monthly rent annual_rent_increase: Expected rent increase %/year expected_property_appreciation: Property appreciation %/year investment_return: Return on invested down payment % analysis_years: Years to compare
Returns: Buy/rent comparison with yearly breakdown and break-even analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| home_price | Yes | Property price in INR | |
| monthly_rent | No | Current monthly rent in INR | |
| analysis_years | No | Years to compare | |
| investment_return | No | Return on invested down payment percentage | |
| loan_tenure_years | No | Loan tenure in years | |
| loan_interest_rate | No | Home loan interest rate percentage | |
| annual_rent_increase | No | Expected rent increase percentage/year | |
| down_payment_percent | No | Down payment as percentage | |
| expected_property_appreciation | No | Property appreciation percentage/year |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the agent already knows this is a safe, non-mutating operation. The description adds a brief output summary ('yearly breakdown and break-even analysis') but no additional behavioral caveats or assumptions. 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 opening is effective, and the use-when line is front-loaded. However, the description duplicates the entire input schema with a 9-line Args block, and the Returns line overlaps with the available output schema. It is structured and readable, but not every part 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 the decision context and outlines the output shape, while the schema covers all 9 arguments with defaults and units. It omits edge-rule details like how negative values or extreme assumptions are handled, but the output schema and full parameter documentation make it complete enough for confident 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?
All 9 parameters already have full schema descriptions with defaults, units, and meanings, so the Args list in the description is largely redundant. Where the description is terse, such as 'Loan tenure', the schema provides the needed clarification.
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 clear verb and resource: 'Compare buying vs renting financial outcome.' It immediately separates this from sibling tools like EMI, income tax, and GST calculators. The added 'Use when deciding between buying a home or renting' reinforces the exact decision it supports.
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 trigger condition: 'Use when deciding between buying a home or renting.' It does not mention alternatives or exclusion conditions, but among the sibling tools there is no other buy-vs-rent comparison, so the usage context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_hra_exemptionARead-onlyIdempotent
Calculate House Rent Allowance (HRA) exemption under Section 10(13A).
Use when computing tax-exempt HRA component for salary structuring or income tax filing. Compares three conditions and takes minimum.
Args: basic_salary: Monthly basic salary. hra_received: Annual HRA received from employer. rent_paid: Annual rent paid. city_type: 'metro' (50% of salary) or 'non_metro' (40% of salary). is_government_employee: Use simplified formula for government employees.
Returns: Standard envelope with exemption amount, taxable HRA, and breakdown.
Notes: The actual exemption is the minimum of: 1. HRA received 2. Rent paid minus 10% of salary 3. 50% of salary (metro) or 40% (non_metro)
| Name | Required | Description | Default |
|---|---|---|---|
| city_type | No | 'metro' (Delhi/Mumbai/Chennai/Kolkata) or 'non_metro' | non_metro |
| rent_paid | Yes | Annual rent paid in rupees | |
| basic_salary | Yes | Monthly basic salary in rupees | |
| hra_received | Yes | Annual HRA received from employer in rupees | |
| is_government_employee | No | True for government employees using simplified formula |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint, so the no-side-effect behavior is covered. The description adds useful behavioral detail: the exemption is the minimum of three conditions, government employees use a simplified formula, and the return includes exemption, taxable HRA, and breakdown. This goes beyond the structured fields.
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 well front-loaded with the core purpose, followed by a structured Args, Returns, and Notes section. It is somewhat repetitive with the schema but the formula notes earn their place. The overall length 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?
The description given the tool's moderate complexity covers the calculation rule, the parameter semantics, and the returned envelope. There is also an output schema, so the return shape does not need desktop enumeration. This is sufficient for an agent to select and 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?
Although schema description coverage is 100%, the description adds extra semantic value by explaining metro vs non_metro as 50%/40% of salary and clarifying government employees use a simplified formula. It also restates input units (monthly/rupees), making each parameter's role easier to interpret.
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 and resource — 'calculate House Rent Allowance (HRA) exemption under Section 10(13A)' — so the agent knows exactly what function is being performed. It also narrows scope to tax-exempt HRA for salary structuring and income tax filing, which clearly separates it from the many sibling tax/income calculator 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 gives clear conditions: 'Use when computing tax-exempt HRA component for salary structuring or income tax filing.' This is actionable and context-specific, though it does not name sibling tools to exclude or state when not to use this calculator.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_income_taxARead-onlyIdempotent
Calculate Indian income tax for FY2025-26 under old, new, or both regimes.
Use when computing tax liability, comparing regimes, or planning deductions. Includes slab computation, Section 87A rebate, surcharge with marginal relief, and health & education cess.
Args: gross_income: Annual gross income in rupees. regime: 'new', 'old', or 'both' for side-by-side comparison. taxpayer_type: Category for slab selection. deduction_80c: Old regime only — Section 80C amount. deduction_80d_self: Old regime only — medical insurance self. deduction_80d_parents: Old regime only — medical insurance parents. deduction_80d_senior_parents: Old regime only — senior parent flag. deduction_80ccd_nps: Old regime only — NPS additional. deduction_24b: Old regime only — home loan interest. other_deductions: Old regime only — other amounts.
Returns: Standard envelope with per-regime breakdown, effective rate, monthly tax, take-home, and regime recommendation when both requested.
Notes: FY2025-26 rates. Estimate only — consult a CA for filing.
| Name | Required | Description | Default |
|---|---|---|---|
| regime | No | Tax regime: 'new', 'old', or 'both' for comparison | both |
| gross_income | Yes | Annual gross income in rupees. Example: 1500000 | |
| deduction_24b | No | Home loan interest under Section 24(b), capped at 2L | |
| deduction_80c | No | Section 80C deduction (PF, ELSS, LIC), capped at 1.5L | |
| taxpayer_type | No | 'individual', 'senior_citizen', or 'super_senior_citizen' | individual |
| other_deductions | No | Other deductions (no cap) | |
| deduction_80d_self | No | Section 80D medical insurance self, capped at 25K | |
| deduction_80ccd_nps | No | Additional NPS deduction under 80CCD(1B), capped at 50K | |
| deduction_80d_parents | No | Section 80D medical insurance parents, capped at 25K/50K | |
| deduction_80d_senior_parents | No | If True, parents 80D cap is 50K instead of 25K |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite having readOnlyHint and idempotentHint annotations, the description adds substantial behavioral detail: slabs, rebate, surcharge, marginal relief, cess, and estimated nature of the result. It also describes the return content, including effective rate, monthly tax, take-home, and regime recommendation. The 'estimate only' caveat is useful for expectancy-setting.
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 slightly longer than necessary because it duplicates the schema's parameter details, but the structure is excellent: purpose first, usage next, algorithm scope, then Args/Returns/Notes. The front-loaded first sentence summarises the tool in one line, and the rest is organized so an agent can skim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is a full input schema, output schema, and read-only annotations, this description fills the remaining gaps: FY20-26 rate applicability, what calculations are included, what the return envelope contains, and the estimate/caveat. It covers everything needed to decide when to invoke this tool and what result to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains every param, but the description adds 'old regime only' qualifiers on the deduction no-param title is already clear. The Args block restates some schema text, yet it also clarifies grouping, which helps an agent avoid using these deductions with the new regime.
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 the exact verb and resource: 'Calculate Indian income tax for FY2025-26 under old, new, or both regimes.' It quickly distinguishes this from tax-adjacent siblings like calculate_tds or calculate_surcharge by emphasizing income tax and regime comparison. The added 'slab computation, §87A rebate, surcharge with marginal relief, and health & education cess' makes the scope 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 'Use when computing tax liability, comparing regimes, or planning deductions.' It does not name alternatives or give negative guidance, but the 'Use when' clause gives clear context for callers. The old-regime-only notes on deductions additionally guide when certain parameters should be passed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_income_tax_interestARead-onlyIdempotent
Calculate interest under Sections 234A, 234B, 234C.
Use when computing penalty interest for late tax filing or short advance tax payments.
Args: total_tax_liability: Total tax liability tds_deducted: TDS already deducted advance_tax_paid: Dict with q1,q2,q3,q4 quarterly payments filing_date: YYYY-MM-DD when return filed (None if not filed) due_date: Due date for filing
Returns: Interest breakdown for Sections 234A, 234B, 234C.
| Name | Required | Description | Default |
|---|---|---|---|
| due_date | No | Due date YYYY-MM-DD | 2025-07-31 |
| filing_date | No | Filing date YYYY-MM-DD or None if not filed | |
| tds_deducted | No | TDS already deducted in INR | |
| advance_tax_paid | No | Dict with q1,q2,q3,q4 quarterly payments | |
| total_tax_liability | Yes | Total tax liability in INR |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, which cover the safety profile for this pure calculation tool. The description adds that it calculates penalty interest and returns a breakdown, but it does not go deeper into assumptions, formatting, or edge cases. It remains consistent 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 concise and front-loaded, with the core purpose stated in the first line and a direct usage guideline next. The Args and Returns sections are somewhat redundant with the structured schema, but they remain brief and do not bloat the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a calculation utility with full schema coverage and an output schema. The description provides enough context about when to use it, which sections it covers, and what inputs are relevant. Nothing essential for an agent to select and invoke this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter. The description repeats the parameter names and brief meanings without adding new semantics beyond what the schema provides, such as units or calculation rules. This matches the baseline of 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 with a specific verb and resource: 'Calculate interest under Sections 234A, 234B, 234C.' It names the exact tax provisions and clarifies the purpose as computing penalty interest, distinguishing it from sibling calculation tools like calculate_income_tax and calculate_advance_tax.
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: 'Use when computing penalty interest for late tax filing or short advance tax payments.' It gives clear usage context, though it does not explicitly name alternative tools or exclude scenarios where this tool should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_leave_encashment_taxARead-onlyIdempotent
Calculate tax-exempt portion of leave encashment under Section 10(10AA).
Use when computing leave encashment tax exemption or planning retirement benefits.
Args: leave_encashment_amount: Actual amount received average_monthly_salary: Average of last 10 months basic + DA earned_leave_balance_days: Days of earned leave years_of_service: Total years of service is_government_employee: Government employee flag
Returns: Exemption amount and taxable portion breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
| years_of_service | Yes | Total years of service | |
| average_monthly_salary | Yes | Average of last 10 months basic + DA | |
| is_government_employee | No | Government employee flag | |
| leave_encashment_amount | Yes | Actual amount received in INR | |
| earned_leave_balance_days | Yes | Days of earned leave |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover read-only and idempotent behavior. The description additionally states the statutory basis (Section 10(10AA)) and the expected output shape (exemption amount and taxable breakdown), adding useful behavioral context beyond the annotations. No contradiction exists.
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 front-loaded with purpose and usage context, and the Returns line is useful. The Args duplication is somewhat redundant with the schema, and this prevents a 5, but the overall structure is still compact and 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?
With an output schema present and strong annotations, the description is largely complete: it names the law, the inputs, and the output type. It could benefit from clarifying how the is_government_employee flag impacts the exemption, but the core callable details are sufficiently 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?
Schema description coverage is 100%, and the Args section mostly repeats the schema text without adding new meaning. The description does not explain key calculation nuances such as how years_of_service converts to months or exactly how is_government_employee changes the exemption, so it stays at 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 opening sentence clearly identifies the verb, resource, and legal basis: 'Calculate tax-exempt portion of leave encashment under Section 10(10AA).' This is specific enough to stand out from the many sibling calculators, such as calculate_gratuity and calculate_income_tax.
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 and useful 'Use when' condition: when computing leave encashment tax exemption or planning retirement tax. It doesn't name alternatives or state when-not-to-use it, so it misses a 5, but the context is clear in practice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_neft_rtgs_imps_chargesARead-onlyIdempotent
Calculate NEFT/RTGS/IMPS/UPI transaction charges.
Use when estimating bank transfer costs or comparing payment modes.
Args: transfer_mode: "NEFT", "RTGS", "IMPS", or "UPI" amount: Transfer amount in INR account_type: "savings" or "current" is_online: True if done via online banking
Returns: Charge breakdown with base charge, GST, and total.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Transfer amount in INR | |
| is_online | No | True if done via online banking | |
| account_type | No | 'savings' or 'current' | savings |
| transfer_mode | Yes | NEFT, RTGS, IMPS, or UPI |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and idempotent, so no additional safety disclosure is needed. The description adds useful behavioral context by specifying the return shape: 'Charge breakdown with base charge, GST, and total.' It doesn't 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 is compact and front-loaded with the purpose and usage context, followed by a flat Args/Returns structure. It is a bit redundant with the schema, but every section earns its place and there is 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?
Given the output schema is present and annotations cover the read-only/idempotent profile, the description is largely complete: it names the inputs, the intended use case, and the nature of the result. It could add caveats about charge-schedule assumptions, but nothing critical is missing for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter. The Args section largely mirrors the schema rather than adding new semantics such as amount ranges, exact transfer_mode formats, or handling of defaults.
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: 'Calculate NEFT/RTGS/IMPS/UPI transaction charges.' This unambiguously identifies the tool's function and distinguishes it from the many validation and other calculate_* siblings without needing to inspect parameters.
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 states 'Use when estimating bank transfer costs or comparing payment modes', giving agents a clear trigger for selecting it. It does not enumerate when not to use it or name closer alternatives, but the guidance is clear enough for the intended scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_nps_projectionARead-onlyIdempotent
Calculate NPS corpus and monthly pension at retirement.
Use when planning retirement with NPS or projecting pension.
Args: monthly_contribution: Monthly NPS contribution current_age: Current age retirement_age: Retirement age (default 60) expected_annual_return: Expected annual return % annuity_rate: Annuity rate % annuity_percent: % of corpus to buy annuity (min 40%)
Returns: Projected corpus, lump sum, and monthly pension estimate.
| Name | Required | Description | Default |
|---|---|---|---|
| current_age | Yes | Current age | |
| annuity_rate | No | Annuity rate percentage | |
| retirement_age | No | Retirement age | |
| annuity_percent | No | Corpus for annuity (min 40%) | |
| monthly_contribution | Yes | Monthly NPS contribution in INR | |
| expected_annual_return | No | Expected annual return percentage |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate readOnlyHint and idempotentHint, so the description does not need to restate that this is a safe read-only calculation. The description adds useful behavioral context by naming returned outputs: projected corpus, lump sum, and monthly pension estimate, supplemented by the 'estimate' qualifier. No side effects, mutations, or hidden dependencies are described, which is appropriate given the calculation 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 purpose-first and then includes a usage line, a succinct Args list, and a Returns line. Every sentence is informative and there is no filler, but the Args block largely duplicates the schema and could be trimmed without losing meaning, so it is not 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?
Given the tool's deterministic calculation nature, the readOnly/idempotent annotations, the fully documented schema, and the presence of an output schema, the description is complete enough for reliable usage. It states the input domain, the output nature, and the retirement-planning context. Nothing necessary for correct selection or invocation is missing.
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 essentially repeats the parameter names and short meanings already present in the input schema. For example, 'annuity_rate: Annuity rate %' adds no information beyond the schema's 'Annuity rate percentage.' The only marginal addition is calling out 'corpus to buy annuity (min 40%)', but that constraint already appears in the schema. This lands at the 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 with a clear, specific verb and resource: 'Calculate NPS corpus and monthly pension at retirement.' This leaves no ambiguity about what the tool does and distinguishes it from siblings like calculate_sip_returns or calculate_sukanya_samriddhi, because it is the only NPS retirement projection tool in the list.
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: 'Use when planning retirement with NPS or projecting pension.' This gives clear context, though it does not explicitly say which alternative tools to use for non-NPS projections or list exclusions, so it does not fully earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_ppf_maturityARead-onlyIdempotent
Calculate PPF maturity amount with year-by-year breakdown.
Use when planning long-term savings, comparing investment options, or calculating retirement corpus.
Args: annual_investment: Amount invested per year (max ₹1,50,000). tenure_years: PPF tenure (15, 20, 25, or 30 years). annual_interest_rate: PPF rate (default 7.1% for FY2025-26).
Returns: Standard envelope with maturity amount, total invested, interest earned.
Notes: EEE tax status: exempt at investment, accumulation, and maturity. Rate is government-administered and revised quarterly.
| Name | Required | Description | Default |
|---|---|---|---|
| tenure_years | No | PPF tenure in years (15, 20, 25, or 30) | |
| annual_investment | Yes | Amount invested per year in INR | |
| annual_interest_rate | No | Annual interest rate percentage (default 7.1 for FY2025-26) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds useful behavioral context beyond that: it notes the EEE tax treatment, fact that returns come in a standard envelope, and that the interest rate is government-administered and revised quarterly. No contradiction with annotations exists.
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, highly structured, and every section earns its place: purpose, use cases, arguments, return, and notes. The information is front-loaded with the core action and use case before detailed parameter/return details. There is no fluff or redundant 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 a rich input schema, output schema, and annotations, the description covers all necessary decision-making signals: when to use it, key constraints, what it returns, and important tax/rate context. It is sufficiently complete for the agent to invoke the tool correctly without missing critical 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 schema is good, but the description adds meaningful value by specifying constraints not fully in the schema: annual_investment is capped at ₹1,50,000, tenure_years should be one of 15/20/25/30, and the default interest rate is explicitly tied to FY2025-26. This goes beyond the schema descriptions and provides practical limits.
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: 'Calculate PPF maturity amount with year-by-year breakdown.' This clearly identifies what the tool does and differentiates it by the maturation product and the breakdown style, distinguishing it from sibling calculators like FD or RD maturity.
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 use contexts: 'when planning long-term savings, comparing investment options, or calculating retirement corpus.' It does not explicitly say when NOT to use this tool or mention sibling alternatives, but the stated scenarios are clear enough for an agent to select this tool confidently.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_presumptive_taxARead-onlyIdempotent
Calculate tax under presumptive scheme (Sections 44AD, 44ADA).
Use when computing tax for small businesses or professionals under presumptive taxation.
Args: scheme: "44AD" or "44ADA" gross_receipts: Total gross receipts digital_receipt_percent: % of receipts via digital mode regime: "new" or "old" age: Assessee age deductions_80c: Section 80C deductions (old regime)
Returns: Presumptive income and total tax payable.
| Name | Required | Description | Default |
|---|---|---|---|
| age | No | Assessee age | |
| regime | No | 'new' or 'old' tax regime | new |
| scheme | Yes | '44AD' for business or '44ADA' for professionals | |
| deductions_80c | No | Section 80C deductions (old regime) | |
| gross_receipts | Yes | Total gross receipts in INR | |
| digital_receipt_percent | No | Percentage via digital mode |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description doesn't need to discuss destructive side effects. The description adds a basic return summary ('Presumptive income and total tax payable') but no deeper behavioral context such as calculation assumptions or edge-case handling; a neutral 3 is appropriate.
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 fairly concise and front-loads the core purpose before listing parameters. The Args block duplicates schema information, which is slightly redundant, but it is still readable and focused, earning it a 4 rather than 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?
For a tool with 6 parameters, 100% schema coverage, a rich annotation profile, and an output schema, the description is adequately complete. It conveys the main use case, the two schemes, and the expected return. It could add more nuance about how digital_receipt_percent or regime affects the calculation, but it is not incomplete enough to prevent 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?
The schema description coverage is 100%, so the baseline is 3. The narrative Args block mostly restates the schema's parameter descriptions without adding meaningful new semantics about how the parameters affect the calculation. It provides no extra insight 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 verb 'calculate' and the resource: tax under the presumptive scheme, with explicit sections (44AD, 44ADA). This separates it from sibling tax calculators like calculate_income_tax or calculate_professional_tax.
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 guidance is given: 'Use when computing tax for small businesses or professionals under presumptive taxation.' It does not explicitly name alternatives or when-not-to-use, so it is not a perfect 5, but the usage 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.
calculate_professional_taxARead-onlyIdempotent
Calculate state-wise professional tax.
Use when computing total tax liability including professional tax deductions.
Args: gross_salary_monthly: Monthly gross salary state_code: 2-char state code (e.g., "MH", "KA", "TN")
Returns: Monthly and annual professional tax amount.
| Name | Required | Description | Default |
|---|---|---|---|
| state_code | Yes | 2-char state code (e.g., MH, KA, TN) | |
| gross_salary_monthly | Yes | Monthly gross salary in INR |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds that the tool is state-wise and returns both monthly and annual amounts, which is useful but does not go much beyond the schema. 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 compact, front-loaded with the main purpose, and has a short usage line plus essential args and returns. No unnecessary filler or redundant detail beyond a reasonable reminder of the two key arguments.
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 calculation with two fully documented parameters, output schema present, and annotations covering read-only/idempotent behavior, the description is complete enough for an agent to select and invoke the tool correctly without 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 100% and both parameters are already described with units and examples. The description repeats the parameter names without adding substantive semantic detail beyond what the schema provides, so a baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Calculate state-wise professional tax.' This clearly identifies the tool's unique function among many sibling tax calculators like calculate_income_tax and calculate_tds, and the subject is not confused with any other calculation.
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 states when to use the tool: 'Use when computing total tax liability including professional tax deductions.' This gives a clear trigger context, though it does not mention alternatives or exclusions; still, it is sufficient to guide an agent toward this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_rd_maturityARead-onlyIdempotent
Calculate Recurring Deposit maturity amount.
Use when projecting RD returns or planning recurring deposits.
Args: monthly_installment: Monthly deposit amount annual_interest_rate: Annual rate as percentage tenure_months: Deposit tenure in months
Returns: Maturity amount with total interest earned.
| Name | Required | Description | Default |
|---|---|---|---|
| tenure_months | Yes | Deposit tenure in months | |
| monthly_installment | Yes | Monthly deposit amount in INR | |
| annual_interest_rate | Yes | Annual interest rate as percentage |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only behavior and idempotency. The description adds the return value detail ('Maturity amount with total interest earned'), which is helpful but doesn't disclose calculation assumptions or edge cases. This is adequate but not rich 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 concise and well-structured, with a brief action line, a usage note, a parameter list, and a return note. Each section earn its place, and the flow makes it easy for an agent to quickly extract key usage criteria.
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 essential information for invoking the tool: what it does, when to use it, the required parameters, and what it returns. Since the output schema is noted as present, the return-value explanation may be redundant, but the description remains complete for a straightforward calculation 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%, with each parameter already documented meaningfully in the input schema. The description repeats those parameter descriptions without adding extra context or edge-case information that the schema lacks, so the baseline score of 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 uses a specific verb 'Calculate' with a clear resource ('Recurring Deposit maturity amount'), immediately identifying the tool's function. This clearly distinguishes it from siblings like calculate_fd_maturity or calculate_sip_returns without needing to inspect schema details.
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 includes 'Use when projecting RD returns or planning recurring deposits,' which provides a clear usage context. However, it does not explicitly mention alternative tools for similar calculations (e.g., FD or SIP), so it stops short of giving when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_salary_restructuringARead-onlyIdempotent
Calculate salary restructuring options for tax optimization.
Use when advising employees on tax-efficient salary structures, comparing restructuring options, or planning CTC optimization.
Args: current_gross: Current gross annual salary in INR current_basic_ratio: Current basic salary as ratio of gross structure_type: Structure option (standard, optimized, startup) include_meal_card: Include Sodexo/Food card allowance include_wallet_allowance: Include flexible wallet allowance has_hra: Employee receives HRA rent_in_metro: Rent paid in metro city (higher HRA) family_medical: Include family medical insurance parents_medical: Include parents medical insurance
Returns: Standard envelope with tax-optimized structure, deductions, and estimated tax
| Name | Required | Description | Default |
|---|---|---|---|
| has_hra | No | Employee receives HRA | |
| current_gross | Yes | Current gross annual salary in INR | |
| rent_in_metro | No | Rent paid in metro city (higher HRA) | |
| family_medical | No | Include family medical insurance | |
| structure_type | No | Structure option: standard, optimized, or startup | standard |
| parents_medical | No | Include parents medical insurance (additional) | |
| include_meal_card | No | Include Sodexo/Food card allowance | |
| current_basic_ratio | No | Current basic salary as ratio of gross (0.40-0.60) | |
| include_wallet_allowance | No | Include flexible wallet allowance |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnlyHint=true and idempotentHint=true, so the safe, non-mutating nature is covered. The description adds that it returns a standard envelope with tax-optimized structure and deductions, but it does not disclose much behavior beyond what the annotations and output schema already provide. No contradiction exists.
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 front-loaded with the purpose and usage context, then organized into Args and Returns sections. It is reasonably sized for nine parameters, though the Args list duplicates parameter details already present in 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?
Given the rich input schema, annotations, and output schema, the description supplies the missing context: when to use the tool and what the result conceptually contains. All parameters are present and defaults/constraints are handled by the schema, so the description is complete for its scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents every parameter. The description's Args section largely repeats the schema's text and adds no new constraints, formats, or usage semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: it calculates salary restructuring options for tax optimization. It is readily distinguishable from sibling calculators like calculate_income_tax or calculate_hra_exemption because it targets the overall salary structure and CTC planning, not a single tax computation.
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 use context: 'Use when advising employees on tax-efficient salary structures, comparing restructuring options, or planning CTC optimization.' It does not explicitly list when not to use it or name an alternative sibling tool, but the context is clear enough for an agent to select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_sip_returnsARead-onlyIdempotent
Calculate SIP maturity with inflation-adjusted returns.
Use when projecting mutual fund SIP returns or planning systematic investments.
Args: monthly_investment: Monthly SIP amount expected_annual_return: Expected CAGR % tenure_years: Investment tenure inflation_rate: Expected inflation %
Returns: Corpus with wealth gained and inflation-adjusted value.
| Name | Required | Description | Default |
|---|---|---|---|
| tenure_years | Yes | Investment tenure in years | |
| inflation_rate | No | Expected inflation rate percentage | |
| monthly_investment | Yes | Monthly SIP amount in INR | |
| expected_annual_return | Yes | Expected CAGR as percentage |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover readOnlyHint and isOpenWorldHint, indicating the tool is a safe, deterministic calculation. The description adds that the return is a corpus with wealth gained and inflation-adjusted value, which provides some context, but the description mostly states the mapping rather than exposing new behavioral content like calculation assumptions or response shape. No annotation 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 well-structured: a short clear purpose, a usage signal, a preliminary contract, and a return summary. The Args and Returns blocks are slightly redundant with the schema and output schema, but the overall length is appropriate and easy for an agent to parse.
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 this is a deterministic calculation tool with a readOnlyHint, idempotentHint, a complete input schema, and a known output schema, the description is adequate for an agent to select and invoke it correctly. It identifies the domain, lists the core parameters, and indicates what kind of result the caller should expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input JSON schema fully documents monthly_investment, expected_annual_return, tenure_years, and inflation_rate. The description repeats these parameters but adds little meaningful semantics beyond naming them, and does not clarify edge cases such as sign, currency, or validation beyond the schema's existing 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: calculating SIP maturity with inflation-adjusted returns, with a specific mention of mutual fund SIP and systematic investment planning. However, within a large family of investment calculators, it does not explicitly differentiate itself from siblings like calculate_step_up_sip or calculate_ppf_maturity, though the focus on SIP and inflation-adjustment gives reasonable 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 explicitly says when to use the tool: when projecting mutual fund SIP returns or planning systematic investments. It provides a clear usage context but does not state when it should not be used or which sibling alternatives might be more appropriate for step-up SIP, PPF, FD, or RD calculations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_step_up_sipARead-onlyIdempotent
Calculate SIP with annual step-up increment.
Use when comparing step-up SIP vs flat SIP or planning salary-linked investments.
Args: initial_monthly_investment: Starting SIP amount annual_step_up_percent: % increase each year expected_annual_return: Expected CAGR % tenure_years: Investment tenure
Returns: Corpus comparison between step-up and flat SIP.
| Name | Required | Description | Default |
|---|---|---|---|
| tenure_years | Yes | Investment tenure in years | |
| annual_step_up_percent | Yes | Annual step-up percentage | |
| expected_annual_return | Yes | Expected CAGR as percentage | |
| initial_monthly_investment | Yes | Starting SIP amount in INR |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so no side-effect warning is needed. The description adds some output context ('Corpus comparison between step-up and flat SIP') but does not disclose computation assumptions such as timing of annual increments or whether returns are pre-tax; this is plausible but not 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?
The description is compact and front-loaded with the core purpose followed by a use-case and expected return. The Args list is slightly redundant with the input schema, but it keeps the description self-contained and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, fully annotated, has a complete input schema, and has an output schema signal. The description covers the scenario, arguments, and what is returned, so an agent has enough context 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?
All four parameters have complete schema descriptions, so the baseline is 3. The Args section mostly mirrors the schema descriptions without adding units, constraints, or examples, so the description does not meaningfully increase semantic richness 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 opens with a specific verb and resource: 'Calculate SIP with annual step-up increment.' It also clarifies the comparison use case ('step-up SIP vs flat SIP'), which distinguishes it from plain SIP calculators like calculate_sip_returns.
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: 'Use when comparing step-up SIP vs flat SIP or planning salary-linked investments.' However, it does not explicitly name an alternative or state when not to use it, so it misses the exclusion-level guidance needed for a top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_sukanya_samriddhiARead-onlyIdempotent
Calculate SSY or SCSS maturity amount.
Use when planning long-term savings for girl child (SSY) or retirement (SCSS).
Args: scheme: "ssy" or "scss" annual_investment: Annual deposit amount annual_interest_rate: Interest rate (default 8.2%)
Returns: Maturity amount with interest breakdown and tax status.
| Name | Required | Description | Default |
|---|---|---|---|
| scheme | Yes | 'ssy' for Sukanya Samriddhi or 'scss' for Senior Citizen Savings Scheme | |
| annual_investment | Yes | Annual deposit amount in INR | |
| annual_interest_rate | No | Interest rate as percentage |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is read-only and idempotent. The description adds useful behavioral context by stating the output includes 'interest breakdown and tax status,' which helps the agent understand what the calculation returns. No contradiction with annotations exists.
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, front-loaded with purpose, and organized into clear usage, args, and returns sections. The Args block is somewhat redundant with the schema, but it does not make the description bloated or hard to use.
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 complete parameter documentation, an output schema, and annotations covering read-only and idempotent behavior, the description includes enough contextual guidance for an agent to select and call the tool correctly. Nothing material left missing.
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 parameter baseline is 3. The Args section in the description largely repeats the schema's parameter descriptions, adding no significant new meaning beyond what is already available.
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 and resource: 'Calculate SSY or SCSS maturity amount.' This clearly distinguishes the tool from sibling calculators like calculate_ppf_maturity, calculate_fd_maturity, and calculate_sip_returns by naming the exact schemes it handles.
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 context: 'Use when planning long-term savings for girl child (SSY) or retirement (SCSS).' This is clear guidance on when to invoke the tool, though it does not explicitly name alternatives or list when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_surchargeARead-onlyIdempotent
Calculate surcharge and marginal relief for a given income and base tax.
Use when computing surcharge as a standalone calculation, separate from the full income tax tool. The income tax tool uses this logic internally.
Args: total_income: Total income in rupees. base_tax: Base tax amount before surcharge. regime: 'new' (capped at 25%) or 'old' (up to 37%).
Returns: Standard envelope with surcharge rate, before/after marginal relief, and cess base.
Notes: FY2025-26 rates. New regime surcharge capped at 25%.
| Name | Required | Description | Default |
|---|---|---|---|
| regime | Yes | 'new' or 'old' tax regime | |
| base_tax | Yes | Base tax amount before surcharge | |
| total_income | Yes | Total income in rupees |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already specify readOnlyHint=true and idempotentHint=true, so the description does not need to repeat that this is non-mutating. It goes beyond annotations by adding relevant rate context: FY2025-26 rates, new regime cap of 25%, and the old regime up to 37%. It also describes the return envelope (surcharge rate, before/after marginal relief, cess base), which adds useful behavioral 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 organized into a short lead statement, usage guidance, an Args block, a Returns line, and a Notes line. Every part adds at least one distinct fact, and no words are wasted on filler. The most important purpose and usage guidance are 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?
Assuming an output schema is present, the description already explains when to use the tool, what inputs are, what the surcharge rates and caps are, and what kind of result is returned. There is no obvious missing context needed to correctly call this tool 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?
Input schema descriptions already cover all three parameters, so the baseline is 3. The description repeats the schema for total_income and base_tax but meaningfully extends the regime parameter by adding the new-regime bracket cap (25%) and the old-regime max (37%). This added combination context is useful for selecting the correct parameter 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 opens with a specific verb and resource: 'Calculate surcharge and marginal relief for a given income and base tax.' It then explicitly distinguishes itself from the full income tax tool by stating it is a standalone calculation. This differentiates it from the sibling calculate_income_tax without needing to open that tool's schema.
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 usage instruction: 'Use when computing surcharge as a standalone calculation, separate from the full income tax tool.' It even notes that the income tax tool uses this logic internally, which helps an agent choose this tool versus the full income tax alternative. This is direct context, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_tdsARead-onlyIdempotent
Calculate TDS for a given section and payment amount (FY2025-26).
Use when computing withholding tax on contractor payments, professional fees, interest, rent, commissions, or purchase of goods.
Args: section: TDS section key from supported sections. payment_amount: Gross payment in rupees. pan_available: Whether payee PAN is available (affects rate). is_senior_citizen: For 194A bank interest threshold. aggregate_payments_ytd: Prior payments to same payee in current FY. payee_type: 'individual_huf' or 'other' - affects 194C rate.
Returns: Standard envelope with TDS applicability, rate, amount, net payment.
Notes: FY2025-26 rates. Actual rates may vary by DTAA or Form 15G/15H.
| Name | Required | Description | Default |
|---|---|---|---|
| section | Yes | TDS section key, e.g. '194C_individual', '194J_professional' | |
| payee_type | No | Payee type: 'individual_huf' or 'other' (affects 194C rate) | individual_huf |
| pan_available | Yes | Whether payee has provided PAN | |
| payment_amount | Yes | Gross payment amount in rupees | |
| is_senior_citizen | No | For 194A bank interest — applies higher threshold for seniors | |
| aggregate_payments_ytd | No | Prior payments to same payee under this section in current FY |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds valuable behavioral context: it is scoped to FY2025-26 rates, rates may vary due to DTAA or Form 15G/15H, and the result is a standard envelope with applicability, rate, amount, and net payment. This is not contradicted by 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 appropriately sized for a six-parameter calculation tool, with clearly separated Args, Returns, and Notes sections. It front-loads the core purpose and usage context. There is a stray trailing 'P' in the provided text, which slightly detracts from polish but does not meaningfully harm clarity.
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 six parameters, full schema coverage, read-only annotations, and an output schema, the description covers the key operational details: purpose, when to use it, parameter roles, and return shape. The main gap is that 'section' refers to 'supported sections' without enumerating them, but the schema's examples and the tool's nature make this acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters. The description mostly restates the same parameter meanings, though it adds small nuances like 'affects rate' for PAN and payee type and clarifies that aggregate_payments_ytd is prior payments 'to same payee' under the section. This is incremental but does not significantly compensate 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 opens with a specific verb and resource: 'Calculate TDS for a given section and payment amount,' which makes the tool's core function immediately unambiguous. It also clarifies the fiscal year (FY2025-26) and lists concrete payee/payment contexts, clearly distinguishing it from sibling calculation tools like calculate_income_tax or calculate_advance_tax.
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 the tool: 'Use when computing withholding tax on contractor payments, professional fees, interest, rent, commissions, or purchase of goods.' It provides clear usage context, though it does not explicitly name alternatives or state when not to use it, so it falls short of a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decode_aa_fi_typeARead-onlyIdempotent
Decode AA Financial Information type and get MCP tool pairings.
Use when mapping FI types to validation/calculation tools.
Args: fi_type: FI type code (e.g., "DEPOSIT", "MUTUAL_FUNDS")
Returns: FI type description, typical fields, and MCP tool pairings.
| Name | Required | Description | Default |
|---|---|---|---|
| fi_type | Yes | FI type code (e.g., DEPOSIT, MUTUAL_FUNDS) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and idempotent. The description adds useful behavioral context by stating that it returns an FI type description, typical fields, and MCP tool pairings. 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 compact and organized, with purpose, usage, argument, and return sections front-loaded. Minor redundancy exists between 'get MCP tool pairings' and the Returns line, but overall every sentence adds value.
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 single-parameter, read-only decode tool with an output schema and clear return description, the definition covers the necessary ground: what it does, when to use it, what input is expected, and what output to expect. No significant gaps remain for this simplicity level.
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 the fi_type field already documented as 'FI type code (e.g., DEPOSIT, MUTUAL_FUNDS)'. The description simply repeats this example, adding no new semantic depth beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as decoding an AA Financial Information type, with a concrete outcome: getting MCP tool pairings. This distinguishes it from sibling decode tools like decode_pan_type and decode_state_code.
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 'Use when mapping FI types to validation/calculation tools' gives explicit context for when to call this tool. It does not explicitly mention when not to use it or compare against alternatives, but the usage context is clear enough for a simple decode operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decode_digilocker_uriARead-onlyIdempotent
Decode DigiLocker document URI and map to validator. # PermissionTier: READ_ONLY
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | DigiLocker document URI |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and an open-world hint, so the safety profile is established. The description adds that the tool does not simply decode the URI but also maps it to a validator, clarifying the expected conversion behavior beyond what the annotations alone 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 a single concise sentence that clearly conveys the main purpose and behavior. The appended '# PermissionTier: READ_ONLY' is redundant with the annotations but does not meaningfully bloat the description, and the key information is 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?
Given only one parameter, existing annotations, and an output schema, the description is nearly complete. It does not elaborate on how the 'map to validator' result should be used or how it relates to sibling validate_* tools, but the presence of an output schema reduces the need for the description to enumerate return values.
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?
There is only one parameter, and the schema description covers it completely ('DigiLocker document URI'), so the schema already documents the needed meaning. The description adds no extra information about format, URI structure, examples, or constraints, so 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 states the specific action ('Decode') on a specific resource ('DigiLocker document URI') and adds that it maps the URI to a validator. This clearly identifies the tool's role and distinguishes it from other decode_* siblings, though it could be slightly more explicit about the final output.
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 a usage context: a DigiLocker URI should be decoded and then routed to a validator. However, it does not explicitly say when to prefer this tool over the many validate_* or other decode_* siblings, and it gives no exclusions or comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decode_isinARead-onlyIdempotent
Decode ISIN (International Securities Identification Number) with Luhn check.
Use when validating ISIN for Indian securities.
Args: isin: 12-character ISIN
Returns: Decoded fields with country, NSIN, security type, and Luhn validation.
| Name | Required | Description | Default |
|---|---|---|---|
| isin | Yes | 12-character ISIN (e.g., INE1234567890) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and idempotent, and the description adds meaningful behavioral context: it performs a Luhn check and returns country, NSIN, security type, and Luhn validation. It does not describe behavior on invalid or malformed ISINs, but for a simple read-only decoder this is a minor gap.
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 well-structured with a summary line, a usage line, an args section, and a returns section. There is no filler, and the most important information is 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?
For a single-parameter read-only tool with an output schema, the description provides all necessary selection and invocation information. It names the scope, the key validation behavior, and the returned fields, making it complete enough for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the single 'isin' parameter fully with a 100% schema description coverage and an example. The description only restates '12-character ISIN' without adding new semantics, so the schema carries the explanatory 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 clearly states the operation with a specific verb ('Decode ISIN') and expands the abbreviation to International Securities Identification Number. It adds 'with Luhn check,' making the purpose distinct from other validation and decoding tools for PAN, GSTIN, state codes, and Aadhaar. The tool is easy to tell apart from siblings without opening the schema.
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 says to use it when validating ISINs, specifically for Indian securities. It gives a clear usage context but does not explicitly name alternatives or state when not to use the tool, so a small amount of inference about sibling decoders/validators remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decode_pan_typeARead-onlyIdempotent
Decode PAN entity type from 4th character. # PermissionTier: READ_ONLY
| Name | Required | Description | Default |
|---|---|---|---|
| pan | Yes | 10-character PAN |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and the description's 'README_ONLY' permission tag aligns. The description adds meaningful behavioral detail by revealing that the operation depends on the 4th character of the PAN, which is not visible in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no wasted words. The permission comment is redundant with annotations but does not significantly harm conciseness.
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 one-parameter read-only decoding tool with a complete schema, output schema, and annotations, the description is sufficient. An agent knows what it does, what input to provide, and has the output schema for the result.
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 schema says '10-character PAN'. The description adds semantic value by stating the 4th character is the relevant part, giving an agent insight into how the pan parameter is interpreted.
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 ('decode') and identifies the exact resource and logic: 'PAN entity type from 4th character'. This makes the tool's purpose immediately clear and distinguishes it from sibling tools like validate_pan or decode_state_code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for decoding entity type rather than validation, but it does not explicitly state when to prefer this over sibling tools like validate_pan or bulk_validate_pan. Usage context is inferable from the tool name and sibling list, but no direct guidance or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decode_state_codeARead-onlyIdempotent
Decode Indian GST state code metadata from a code or GSTIN prefix.
Use when you need canonical state name, abbreviation, capital, and GST zone mapping.
Args: value: Two-digit code like 27 or GSTIN like 27AAPFU0939F1ZV.
Returns: Standard envelope containing decoded state metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | 2-digit state code or GSTIN |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so safety is covered. The description adds behavioral details beyond annotations: it can accept either a two-digit code or a full GSTIN with prefix, and it returns a standard envelope containing metadata. This is useful context 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?
The description is compact and front-loaded. The main purpose appears in the first sentence, with a usage hint, argument example, and return note in brief structured sections. Every sentence contributes information without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with an output schema and safe idempotent annotations, the description covers the input formats, what data comes back, and when to use it. The output schema handles the return structure, so describing the envelope as 'standard' is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the parameter with a description of '2-digit state code or GSTIN' and length constraints. The description adds concrete examples ('27' and '27AAPFU0939F1ZV') and clarifies that GSTIN prefixes are accepted, enriching the semantic understanding of the value parameter beyond the raw 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 'Decode' with a precise resource: Indian GST state code metadata, and specifies the two accepted input forms (two-digit code or GSTIN prefix). It clearly distinguishes itself from siblings like validate_gstin and decode_pan_type by stating it returns canonical state name, abbreviation, capital, and GST zone.
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 states when to use the tool: 'Use when you need canonical state name, abbreviation, capital, and GST zone mapping.' However, it does not explicitly mention alternatives or exclusions, such as choosing validate_gstin for validation instead of decoding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_regulatory_deadlinesARead-onlyIdempotent
Get India's tax & regulatory compliance calendar for FY2025-26.
Use when planning tax compliance schedules, setting reminders for deadlines, or building financial compliance dashboards.
Args: category: Filter by category (Income Tax, TDS, GST, PF/ESIC, ROC, etc.) from_date: Start date filter (YYYY-MM-DD) to_date: End date filter (YYYY-MM-DD)
Returns: Standard envelope with deadlines grouped by month for FY2025-26
Notes: Covers ITR filing, TDS deposits, GST returns, PF/ESIC, ROC filings, advance tax, and professional tax deadlines.
| Name | Required | Description | Default |
|---|---|---|---|
| to_date | No | End date filter (YYYY-MM-DD) | |
| category | No | Filter by category (Income Tax, TDS, GST, PF/ESIC, ROC, etc.) | |
| from_date | No | Start date filter (YYYY-MM-DD) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only and idempotent. The description adds useful behavioral context beyond that: results are 'deadlines grouped by month' and the coverage spans ITR, TDS, GST, PF/ESIC, ROC, advance tax, and professional tax. This goes beyond the structured hints 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 compact and scannable, with a front-loaded summary followed by short Args, Returns, and Notes sections. Every line contributes information: scope, use cases, parameters, return format, and covered compliance types.
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 an output schema exists, the description does not need to detail return fields. It clearly communicates the fiscal year, optional filters, return shape ('standard envelope with deadlines grouped by month'), and regulatory coverage. This is sufficient for an agent to select and call 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?
Input schema descriptions cover 100% of parameters, so the description is not required to carry the full burden. The Args section largely repeats the schema, including category examples and YYYY-MM-DD date formats, without adding deeper semantics such as allowed category enumeration or date boundary behavior. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb-resource pair: 'Get India's tax & regulatory compliance calendar for FY2025-26.' It names the exact domain, fiscal year, and deliverable, distinguishing it from the sibling tools, which are mostly validators and calculators rather than calendar/deadline queries.
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 for when to use the tool: 'planning tax compliance schedules, setting reminders for deadlines, or building financial compliance dashboards.' It does not name alternatives or exclusion criteria, but no sibling offers comparable deadline-calendar functionality, so clear context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_historyARead-onlyIdempotent
Fetch historical end-of-day data for a given Indian stock ticker.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Time period to fetch data for. Valid periods: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max | 1mo |
| symbol | Yes | Stock symbol/ticker to fetch. Examples: RELIANCE.NS, INFY.NS |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and open-world behavior, so the description's job is lighter. It adds useful context about data granularity (end-of-day) and market (India), but does not disclose rate limits, result size, or other edge behavior. 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 a single clear, front-loaded sentence with no filler. It communicates the essential scope and resource type efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, read-only, and has a full input schema and output schema. The description adds the only missing contextual detail: that this is historical end-of-day data for Indian tickers. No critical information is absent.
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 both symbol and period already explained. The description adds no parameter-specific semantics beyond what the schema provides, so the 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 clearly states what the tool does: fetch historical end-of-day data for an Indian stock ticker. This is specific enough to distinguish it from the sibling get_stock_quote, which is about current quote 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?
The phrase 'historical end-of-day data' gives clear context for when to use the tool, especially relative to get_stock_quote. 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.
get_stock_quoteARead-onlyIdempotent
Fetch current (delayed) price and summary for a given Indian stock ticker.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock symbol/ticker to fetch. Examples: RELIANCE.NS, INFY.NS, TCS.BO |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that the call is read-only, idempotent, and open-world, so the bar is lower. The description adds a meaningful behavioral detail: the price is delayed rather than real-time. This informs agent expectations beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the action, the object, the delivery latency, and the market scope. There is no filler, and every phrase 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?
Given the simple single-parameter schema with complete explanation, existing output schema, and annotations covering safety/idempotency, this description is fully sufficient for an agent to correctly select and invoke 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?
The input schema already covers 100% of the single parameter with a clear description and examples like RELIANCE.NS, INFY.NS, TCS.BO. The tool description does not add extra parameter-level meaning beyond what the schema already provides, so the 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 uses a specific verb ('Fetch') with a clear resource ('current (delayed) price and summary for a given Indian stock ticker'). It clearly distinguishes itself from sibling get_stock_history by emphasizing current/delayed quote retrieval.
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 'current (delayed)' clearly signals this tool is for current quote lookups, not historical analysis, which is enough context given the sibling get_stock_history. However, it does not explicitly say 'use this for current prices and get_stock_history for historical trends.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_bankARead-onlyIdempotent
Look up bank details from RBI master list. # PermissionTier: READ_ONLY
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_code | Yes | Bank name or IFSC code prefix |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, and bounded-result behaviors, so the description only needs to add context. It adds the data source 'RBI master list' and echoes 'READ_ONLY' via PermissionTier, giving minor useful context 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 one clear sentence plus a permission tag. Every part contributes either to what the tool does or which access tier it belongs to, 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 one-parameter lookup tool, the description plus annotations and schema cover the necessary context: the operation, the data source, safety traits, and the accepted input. The output schema exists, so return-value explanation is unnecessary.
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 parameter description already defines 'Bank name or IFSC code prefix'. The tool description does not need to add parameter-level detail; it only confirms the lookup scope. This meets the baseline but does not go beyond it.
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 'look up' and the resource 'bank details from RBI master list', so an agent knows exactly what entity the tool queries. It does not explicitly call out the closely related sibling lookup_ifsc, but the RBI master-list wording differentiates it from generic IFSC validation enough.
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 context: bank details come from the RBI master list, implying this is the authoritative source for bank identification. It does not explicitly state exclusions or mention lookup_ifsc as an alternative, 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.
lookup_bbps_billerARead-onlyIdempotent
Look up BBPS (Bharat Bill Payment System) biller details.
Use when setting up bill payments for electricity, gas, DTH, water, broadband, FASTag, insurance, or mobile recharges.
Args: category: Category of biller to filter by. state: State to filter by (or 'all' for pan-India). biller_id: Direct biller ID for specific lookup.
Returns: Standard envelope with matching billers and parameter schemas.
Notes: Data is bundled offline. For real-time directory, check NPCI BBPS.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | State name (e.g., 'Maharashtra', 'Delhi') or 'all' | |
| category | No | electricity, gas, dth, water, broadband, fastag, insurance, mobile | |
| biller_id | No | Direct biller ID lookup |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already signal read-only and idempotent behavior. The description adds meaningful context by noting the data is bundled offline, so agents know it is not a real-time directory, and by describing the return as a standard envelope with matching billers and parameter schemas.
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 well-organized with purpose, usage, args, returns, and notes sections, and the most important caveat is placed last in Notes. The Args section somewhat duplicates the schema descriptions, but the overall length is still reasonable and front-loaded with the tool 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 read-only, idempotent lookup tool with 0 required parameters and an output schema, the description provides enough guidance for an agent to invoke it correctly. It covers the use case, filtering options, result shape, and the critical offline-data limitation.
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 documents all three parameters with 100% coverage. The description mostly restates the same semantics, such as filtering by category, using 'all' for state, and direct lookup by biller_id. This provides minimal 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 a specific action and resource: look up BBPS biller details. The list of supported payment categories further clarifies what the tool covers, distinguishing it from sibling validator and calculator 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 explicitly says to use this when setting up bill payments for utilities, DTH, broadband, FASTag, insurance, or mobile recharges. It also warns that the data is bundled offline and directs users to NPCI BBPS for real-time directory lookup, but it does not compare directly with sibling tools like lookups for IFSC, bank, pincode, or HSN.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_hsn_codeARead-onlyIdempotent
Lookup HSN/SAC by exact code or search by keyword in code descriptions.
Use for GST classification workflows where users provide a code or only a product keyword.
Args: code: Optional exact HSN/SAC code (2, 4, 6, or 8 digits). keyword: Optional plain-text search token over description field.
Returns: Standard envelope with exact match data or top 5 keyword matches.
Notes: Returns static master data; GST applicability can vary by conditions.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | HSN/SAC code (2-8 digits) for exact lookup | |
| keyword | No | Keyword for description search, example: coffee |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark the tool read-only and idempotent, and the description adds useful behavioral context: it returns a standard envelope with exact matches or top 5 keyword matches, uses static master data, and notes GST applicability can vary. It leaves the exact envelope shape undefined, but an output schema is present.
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, front-loaded with the main operation, and organized into Args, Returns, and Notes. Every sentence adds useful information, and there is no redundant 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?
For a read-only lookup tool, the description covers the triggering use case, both parameters, return behavior, and an important GST caveat. The only real gap is that both parameters are optional and the description does not state what happens when both or neither are provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description maps the two parameters to exact-code lookup and keyword search, and it adds concrete details such as valid code lengths and the top-5 match behavior. This goes beyond the schema, which only says 'HSN/SAC code (2-8 digits)' and 'keyword for description search'.
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 is a lookup for HSN/SAC codes by exact code or by description keyword. It names the resource and the operation, and the GST classification context distinguishes it from the many validation and calculation siblings.
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?
'Use for GST classification workflows where users provide a code or only a product keyword' gives a clear, actionable condition for when to invoke the tool. It does not explicitly list alternative tools to avoid, but the context is clear enough to route an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_ifscARead-onlyIdempotent
Look up an Indian IFSC code from bundled dataset with live fallback support.
Use this when you need bank branch details from an IFSC code in invoices, onboarding forms, or payment validation workflows.
Args: ifsc_code: IFSC string to validate and lookup. Case-insensitive; whitespace is trimmed.
Returns: Standard envelope containing found flag, branch details, payment rails, and source.
Notes: If not found locally, attempts live lookup at ifsc.razorpay.com with 3s timeout.
| Name | Required | Description | Default |
|---|---|---|---|
| ifsc_code | Yes | IFSC code, expected 11 chars. Example: HDFC0000001 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
This is an annotation contradiction: the description says the tool 'attempts live lookup at ifsc.razorpay.com with 3s timeout,' which is an open-world/external-network behavior, while annotations declare openWorldHint=false. The description helpfully discloses the fallback, but the metadata is internally inconsistent, so the behavioral signal is unreliable.
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 well-organized with a one-line purpose, a usage context, Args, Returns, and Notes. No sentence is wasted, though the Args section partially restates schema information. Overall it is compact and 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?
For a single-parameter lookup tool, the description covers the key agent-relevant details: when to use it, normalized input handling, return envelope, fallback behavior, and timeout. It is only pulled back from a 5 by the contradictory open-world annotation and the lack of explicit routing guidance to bulk or alternative lookup siblings.
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 documents the parameter with example and length constraints, so schema coverage is 100%. The description adds meaningful behavior beyond the schema by stating that input is case-insensitive and that whitespace is trimmed, which is useful for validating user-supplied IFSC codes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: look up an Indian IFSC code, with a clear distinction from validate-only tools by offering bank branch details. It also signals the bundled dataset plus live fallback, so an agent can distinguish it from bulk/validation sibling tools without opening the schema.
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 states when to use the tool: 'when you need bank branch details from an IFSC code in invoices, onboarding forms, or payment validation workflows.' However, it does not explicitly say when not to use alternatives like bulk_validate_ifsc or lookup_bank, so exclusions are incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_pincodeARead-onlyIdempotent
Look up India pincode details and return all post offices for that code.
Use for address normalization, district/state extraction, and GST state crosswalk use-cases.
Args: pincode: 6-digit pincode; spaces/hyphens are accepted and normalized.
Returns: Standard envelope with location hierarchy and post_offices array.
Notes: One pincode may map to multiple post offices and all are returned.
| Name | Required | Description | Default |
|---|---|---|---|
| pincode | Yes | 6-digit pincode |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=true, idempotentHint=true), the description adds meaningful behavioral details: input normalization of spaces/hyphens, the fact that one pincode may map to multiple post offices and all are returned, and the standard envelope with location hierarchy. This gives an agent clear expectations about behavior and edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized with a summary, use-cases, Args, Returns, and Notes sections. Every sentence earns its place 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?
For a single-parameter read-only lookup with an output schema present, the definition covers the essential context: purpose, when to use, input formatting, output envelope shape, and cardinality notes. Nothing an agent needs to call it correctly is missing.
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 parameter with 100% description coverage, providing the baseline of 3. The description adds value by detailing that spaces/hyphens are accepted and normalized and confirming the 6-digit format, which is useful semantic detail beyond the schema's simple '6-digit pincode'.
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: 'Look up India pincode details and return all post offices for that code.' This clearly differentiates it from sibling lookup tools such as lookup_ifsc, lookup_bank, and lookup_hsn_code, which target different identifiers.
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: 'Use for address normalization, district/state extraction, and GST state crosswalk use-cases.' It does not mention exclusions or alternatives, but the use-cases are specific enough to guide selection among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_aa_consent_artifactARead-onlyIdempotent
Validate AA consent artifact structure and flags.
Use when verifying consent artifacts received from AA before processing.
Args: artifact: Consent artifact JSON from AA response
Returns: Validation result with consent details.
| Name | Required | Description | Default |
|---|---|---|---|
| artifact | Yes | AA consent artifact JSON |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and idempotent behavior, and the description does not contradict them. The description adds only limited behavioral context: that validation concerns 'structure and flags' and returns a validation result. It does not describe edge cases, error behavior, or what 'flags' means, but the output schema helps cover return-value 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?
The description is short, front-loaded with the core purpose, and structured into purpose, usage, args, and returns. There is some redundancy between the Args section and the schema, but the overall structure remains clean and easy to parse.
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 single-parameter validation tool with an output schema and read-only/idempotent annotations, the description covers what is needed for selection and invocation. It states the input, the intended usage moment, and gives a return hint. It does not explain full validation criteria, but this is not essential for choosing 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?
The schema already provides 100% coverage of the single artifact parameter. The description repeats 'Consent artifact JSON from AA response', adding only the minor extra context that it comes from an AA response. This is baseline value rather than substantial enhancement.
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 and resource combination: 'Validate AA consent artifact structure and flags.' It clearly distinguishes this from sibling tools like build_aa_consent_request and decode_aa_fi_type. The additional context about verifying artifacts received from AA reinforces what the tool is for.
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 says 'Use when verifying consent artifacts received from AA before processing', giving a clear context for when this tool is appropriate. It does not explicitly mention when not to use it or name direct alternatives, 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.
validate_aadhaarARead-onlyIdempotent
Validate an Indian Aadhaar number with Verhoeff checksum verification.
Use when checking Aadhaar format and checksum in KYC, identity verification, or government benefit workflows.
Args: aadhaar: 12-digit Aadhaar number. Spaces and hyphens are stripped.
Returns: Standard envelope containing validity, checksum result, formatted display, and first-digit check.
Notes: Validates format and Verhoeff checksum only. Not connected to UIDAI.
| Name | Required | Description | Default |
|---|---|---|---|
| aadhaar | Yes | 12-digit Aadhaar number. Spaces and hyphens accepted. Example: 2959 4583 7261 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, and the description does not contradict these. It adds useful behavioral detail: spaces and hyphens are stripped, the validation is limited to format and Verhoeff checksum, and the return envelope includes validity, checksum result, formatted display, and first-digit check. The UIDAI caveat is especially helpful for avoiding expectations beyond the local validation.
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 short, front-loaded with the primary purpose, and organized into Purpose, Use-when, Args, Returns, and Notes. It includes the critical caveat about UIDAI without any filler, and every line contributes actionable information for an agent.
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 single-parameter validation tool with 100% schema coverage, output schema present, and read-only/idempotent annotations, the description is complete. It tells the agent what the tool validates, when to use it, how the input is normalized, what the return envelope contains, and the important limitation that it is not connected to UIDAI. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the parameter. The description's Args section mostly restates that aadhaar is a 12-digit number and that spaces and hyphens are allowed. It adds that spaces and hyphens are 'stripped' prior to validation, which is slight extra operational detail, but not a substantial semantic addition.
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 verb ('Validate') and resource ('an Indian Aadhaar number'), and the phrase 'Verhoeff checksum verification' makes its function specific. It also states that it is format/checksum-only and 'not connected to UIDAI', which distinguishes it from identity-lookup style tools. It does not explicitly contrast it with bulk_validate_aadhaar or other related sibling validators, but the purpose itself is 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 gives an explicit usage context: 'Use when checking Aadhaar format and checksum in KYC, identity verification, or government benefit workflows.' It also provides a meaningful limitation with 'Not connected to UIDAI', which warns agents not to use it for live UIDAI verification. It stops short of naming alternatives such as bulk_validate_aadhaar, so it is not a perfect routing guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_cinARead-onlyIdempotent
Validate and decode an Indian CIN (Company Identification Number).
Use when verifying company registration data, extracting listing status, NIC code, state, year, and company type from a CIN.
Args: cin: 21-character CIN string. Spaces and hyphens stripped automatically.
Returns: Standard envelope containing decoded fields: listing status, NIC code, state, year of incorporation, company type, and serial number.
Notes: Format validation with field decoding. No public checksum.
| Name | Required | Description | Default |
|---|---|---|---|
| cin | Yes | 21-character CIN (spaces/hyphens allowed). Example: L17110MH1973PLC019786 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the read-only and idempotent behavior, so the description adds useful behavioral detail: spaces and hyphens are stripped automatically, the output is a standard envelope, and there is no public checksum. This helps the agent set correct expectations 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?
The description is compact, well-sectioned, and front-loaded with the core purpose. Each section (Use when, Args, Returns, Notes) earns its place and provides practical information without 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?
For a single-parameter, read-only tool with an output schema, this description covers the input contract, normalization behavior, output structure, and a key validation limitation. Nothing essential appears to be missing for a successful 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?
The schema already documents the cin parameter fully, but the description adds the operational note that spaces/hyphens are automatically stripped and reinforces the canonical 21-character format. That goes beyond the schema's 'spaces/hyphens allowed' wording and clarifies input normalization.
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: 'Validate and decode an Indian CIN.' It also lists concrete outputs such as listing status, NIC code, state, year, company type, and serial number, which makes the tool's purpose easy to distinguish from sibling validators like validate_pan or validate_din.
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 trigger conditions: use when verifying company registration data or extracting structured fields from a CIN. It doesn't name alternatives or state when not to use this tool, but the context is clear enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_dinARead-onlyIdempotent
Validate an Indian DIN (Director Identification Number) format.
Use when verifying director identity numbers in MCA compliance workflows.
Args: din: 8-digit numeric DIN string. Shorter inputs zero-padded. Spaces stripped.
Returns: Standard envelope containing validity and normalized DIN.
Notes: Format validation only. Cannot verify director status with MCA.
| Name | Required | Description | Default |
|---|---|---|---|
| din | Yes | 8-digit DIN (spaces allowed). Example: 00012345 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and idempotent. The description adds valuable behavior beyond annotations: shorter inputs are zero-padded, spaces are stripped, and only format validation is performed, not director status verification. 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 compact and front-loaded with the core action and use case. The Args block is somewhat redundant with the schema, but every sentence still carries useful information and the total length is appropriate.
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 simple single-parameter validation tool with an output schema, so no hidden behavior remains. The description fully covers what is validated, input normalization, read-only nature, and the explicitly excluded status verification.
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% coverage for the single parameter, which is the baseline. The description adds extra meaning by specifying that the 8-digit value is numeric, shorter values are zero-padded, and spaces are stripped—details absent from 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?
States a specific verb plus resource: 'Validate an Indian DIN (Director Identification Number) format'. This distinguishes it from sibling tools like validate_cin, validate_pan, or validate_aadhaar, and ties it to MCA compliance.
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 when to use: 'Use when verifying director identity numbers in MCA compliance workflows.' It also clearly states a limitation ('Format validation only. Cannot verify director status with MCA'), but does not name an alternative tool for the more comprehensive verification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_driving_licenseARead-onlyIdempotent
Validate an Indian driving license number format and decode segments.
Use when verifying DL format, extracting state/RTO/year in KYC workflows.
Args: dl_number: Driving license number. Hyphens/spaces stripped automatically.
Returns: Standard envelope containing validity, state code, state name, RTO code, year of issue, and serial number.
Notes: Format validation only. Handles non-standard pre-Sarathi formats gracefully.
| Name | Required | Description | Default |
|---|---|---|---|
| dl_number | Yes | Indian DL number, 15 chars (spaces/hyphens allowed). Ex: MH0220191234567 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given the annotations already declare readOnlyHint and idempotentHint, the description adds meaningful behavioral details: it states the tool is format-validation-only and that non-standard pre-Sarathi formats are handled gracefully. It also discloses auto-stripping of hyphens/spaces. These are not redundant 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 logically organized into Args/Returns/Notes, and is not overly long. The Args section is slightly redundant with the schema, but each other part earns its place. Minor redundancy is not enough to warrant a stronger penalty.
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 a complete output schema and useful annotations, the description still contributes important context: what the tool does not do (format validation only), and graceful handling of old formats. This places it above the threshold for a simple tool description, though it could add edge-case behavior or explicit error handling notes.
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 parameter fully (description, type, min/max). The description's Args section adds little semantic value, only repeating the field. However, it does clarify that hyphens/spaces are stripped automatically, which is a small extension beyond the schema text. Baseline of 3 is appropriate overall.
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 ('Validate') and a clear resource ('Indian driving license number') and explicitly says it decodes segments. The scope is narrowed with examples (state/RTO/year), and it is easily distinguished from sibling validators like validate_aadhaar or decode_state_code. The sentence is specific and usable.
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 'Use when' line provides concrete usage context ('verifying DL format, extracting state/RTO/year in KYC workflows') which is above-average guidance. However, it does not explicitly name sibling tools that should be used instead in related cases (e.g., decode_state_code), so it lacks full alternative exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_epf_codeBRead-onlyIdempotent
Validate EPF establishment code. # PermissionTier: READ_ONLY
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | EPF establishment code (XX/XXXXX/XXXXXX/XXX) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no real behavioral context beyond the 'PermissionTier: READ_ONLY' comment, which simply restates the readOnlyHint annotation. It does not disclose whether validation checks format, existence, registration status, or whether it makes network requests, leaving the agent uninformed about practical 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 main description is a single, front-loaded sentence: 'Validate EPF establishment code.' This is concise and does not waste words. The PermissionTier tag is redundant with annotations, but the overall length is appropriate and the key purpose appears first.
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 one parameter, read-only and idempotent annotations, and an output schema, the essential calling contract is covered. However, the description does not clarify what 'validate' means beyond the format hint in the schema—specifically, whether it checks only format or also verifies the code against an authoritative source—so an agent might make incorrect assumptions about the result.
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 the full description for the only parameter, including the expected format (XX/XXXXX/XXXXXX/XXX). The tool description itself adds no extra parameter semantics, so an agent relies entirely on the schema to understand the argument.
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 'Validate EPF establishment code' uses a specific verb and resource, effectively conveying the tool's single responsibility. The EPF code type is distinct from sibling validators like validate_tan or validate_gstin, though the description does not elaborate on the scope or manner of validation.
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 only implies usage: it is used when one needs to validate an EPF establishment code. It provides no explicit context about when to choose this tool over other validators, no exclusions, and no mention of alternative tools or preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_esic_codeARead-onlyIdempotent
Validate ESIC employer code. # PermissionTier: READ_ONLY
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ESIC employer code (XX-XXXXX-XXXXX) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral detail beyond the annotations: '# PermissionTier: READ_ONLY' just restates the existing readOnlyHint, and the annotations already declare read-only and idempotent behavior. It does not disclose any validation side effects, network calls, or edge-case 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 a single clear sentence that states the operation and resource with no filler. The permission line is minimal and the information is 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?
For a simple, single-parameter, read-only validation tool with an output schema, the description plus schema annotations provide sufficient context to call the tool correctly. No return-value explanation is needed since the output schema exists.
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 one parameter fully, including the required flag and the expected format 'XX-XXXXX-XXXXX'. The description itself adds no additional semantic meaning beyond what the input schema provides, so the 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 uses a specific verb 'Validate' and a specific resource 'ESIC employer code', so an agent immediately knows the operation and subject. It clearly distinguishes itself from sibling tools like validate_gstin and validate_pan by naming the exact code type.
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 is implied rather than explicit: the tool is for validating ESIC employer codes, but the description provides no when-to-use conditions, no exclusions, and no pointers to alternatives. With many sibling validators, more explicit routing guidance would help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_fssaiARead-onlyIdempotent
Validate FSSAI (Food Safety) license number format and decode details.
Use when verifying food business operator licenses in compliance checks.
Args: license_number: 14-digit FSSAI license. Spaces/hyphens stripped.
Returns: Standard envelope with validation, state, license type, year decoded.
Notes: The 14-digit format encodes: state(2) + year(2) + type(1) + sequence(9). Type: 1=Central, 2=State, 3=State (turnover-based).
| Name | Required | Description | Default |
|---|---|---|---|
| license_number | Yes | 14-digit FSSAI license (spaces/hyphens allowed). Ex: 10019000000001 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that spaces/hyphens are stripped, what the 14-digit format encodes, and that the return values include validation, state, license type, and year. This adds meaningful behavioral detail beyond annotations, which already indicate a read-only, idempotent operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and organized with clear sections (Usage, Args, Returns, Notes). Each section contributes useful context, though the Args block is somewhat redundant with the schema. Overall it is appropriately sized 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?
The tool takes a single parameter, the safety profile is captured by annotations, and the decode logic and output fields are described. With an output schema already present, there are no significant gaps left unanswered.
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 parameter at 100% with details about the 14-digit format and spaces/hyphens allowed. The description's Args section largely restates the same information, so it adds no new parameter-level meaning. Baseline 3 is appropriate since the schema does the heavy lifting.
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 clearly states the tool's specific verb 'Validate' and resource 'FSSAI (Food Safety) license number format', and additionally says it 'decodes details.' This differentiates it from sibling validation tools by naming the exact license type and domain.
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?
'Use when verifying food business operator licenses in compliance checks' explicitly identifies the triggering context. It doesn't mention when not to use it or point to alternatives, but for a single-purpose validator that context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_gstinARead-onlyIdempotent
Validate and decode an Indian GSTIN with checksum verification.
Use when checking supplier/customer GSTINs before invoicing, reconciliation, or compliance workflows.
Args: gstin: 15-character GSTIN (e.g., 27AAPFU0939F1ZV). Spaces/hyphens stripped.
Returns: Standard envelope containing validity, state decode, embedded PAN, entity number, category, and checksum information.
Notes: Validates structure and checksum only; does not verify active GSTN registration status.
| Name | Required | Description | Default |
|---|---|---|---|
| gstin | Yes | 15-character GSTIN (spaces/hyphens allowed) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and idempotent behavior. The description adds meaningful behavior beyond those: it performs checksum verification, strips spaces/hyphens from input, and explicitly disclaims live GSTN registration-status checking. This is valuable for an agent deciding whether to use this tool for a compliance workflow.
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 well-organized with clear sections (Args, Returns, Notes) and front-loads the core purpose in the first line. It has a little redundancy with the schema description, but every section contributes something practical and there is 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?
Given the single parameter, full schema coverage, an output schema, and read-only/idempotent annotations, the description covers the essential operational context: what it validates, what it returns, when to use it, and a critical limitation. An agent can invoke this tool correctly without guessing.
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 already 100%, giving a baseline of 3. The description adds a concrete example ('27AAPFU0939F1ZV') and clarifies that spaces/hyphens are stripped despite the schema only saying they are allowed. This extra semantic detail helps the agent understand normalization behavior 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 starts with a specific verb ('Validate and decode') and a specific resource ('Indian GSTIN') followed by a key behavior ('checksum verification'). It does not explicitly contrast with the closest sibling 'bulk_validate_gstin', but the singular framing and tool name make the single-item scope reasonably clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete triggering scenarios: 'checking supplier/customer GSTINs before invoicing, reconciliation, or compliance workflows.' It also provides an exclusion by noting that it does not verify active GSTN registration status, which tells an agent when this tool is insufficient. It does not mention alternatives such as bulk_validate_gstin for batch needs, so it falls short of explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_llpinARead-onlyIdempotent
Validate LLPIN (Limited Liability Partnership Identification Number).
Use when verifying LLP registration numbers.
Args: llpin: LLPIN in format AAA-XXXX
Returns: Validation result with decoded segments.
| Name | Required | Description | Default |
|---|---|---|---|
| llpin | Yes | LLPIN in format AAA-XXXX or AAAXXXX |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, covering the safety profile. The description adds that the tool 'Returns validation result with decoded segments,' which is meaningful behavioral information, but it does not discuss edge cases, error patterns, or any other behavioral nuance beyond that.
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: a short purpose line, a use-case line, and a minimal Args/Returns breakdown. There is no filler or redundant background, though the Args block does overlap with 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 simple single-parameter, read-only validation tool with an output schema present, this description covers the essential points: what it validates, when to use it, and that the result includes decoded segments. It just misses minor edge-case and format-variant detail, but the output schema and annotations fill most remaining 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 description coverage is 100%, so the schema already fully documents the llpin parameter. The description's Args line merely repeats 'LLPIN in format AAA-XXXX' but omits the additional accepted variant 'AAAXXXX' that the schema explicitly permits, which is a narrowing that could mislead an agent rather than adding 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 opens with 'Validate LLPIN (Limited Liability Partnership Identification Number)', a specific verb and resource. The 'Use when verifying LLP registration numbers' line further clarifies the target, distinguishing it from the many sibling validation 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 explicit instruction 'Use when verifying LLP registration numbers' gives a clear when-to-use context. It does not enumerate alternatives or explicit when-not-to-use conditions, but given the sibling context of separate validators for other document types, the intended use is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_mobile_numberARead-onlyIdempotent
Validate Indian mobile number and detect operator/circle.
Use when validating mobile numbers for KYC or contact verification.
Args: mobile: Mobile number with or without +91/0
Returns: Validation result with operator and telecom circle.
| Name | Required | Description | Default |
|---|---|---|---|
| mobile | Yes | 10-digit mobile number with or without +91/0 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, idempotentHint, and openWorldHint, so safety and side-effect expectations are already disclosed. The description adds that the tool detects operator and telecom circle, which is useful context, but it does not discuss edge cases like invalid formats or not-found operators; this is acceptable but slightly limited for a validation 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 compact and front-loaded: it opens with the core purpose, follows with a direct use-case sentence, and finishes with concise Args/Returns lines. There is no filler, repetition of the tool name, or unnecessary explanation.
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 single-parameter, read-only validation tool with 100% schema coverage, annotations, and an output schema present, nothing essential is missing. The description also states the relevant returned concepts (validation result, operator, circle), making it fully actionable 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?
The input schema describes 'mobile' as a 10-digit number with or without +91/0, and the description's Args section only restates that. Since schema coverage is 100%, the description does not add meaningful semantic 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 first sentence states a concrete action ('Validate'), a specific resource ('Indian mobile number'), and an additional result ('detect operator/circle'). This clearly distinguishes the tool from the many validate_*/lookup_* sibling tools and avoids any tautology or vagueness.
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 says to use this tool when validating mobile numbers for KYC or contact verification, which gives the agent a clear trigger condition. It does not enumerate when-not-to-use scenarios or alternatives, but the tool's narrow scope makes confusion with siblings unlikely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_panARead-onlyIdempotent
Validate Indian PAN format and decode entity type from the 4th character.
Use when normalizing tax identity records in KYC, invoicing, or vendor onboarding.
Args: pan: PAN string, example: AAAPL1234C. Spaces and hyphens stripped automatically.
Returns: Standard envelope containing format validity, entity type, and decoded segments.
Notes: PAN check character is not publicly verifiable algorithmically.
| Name | Required | Description | Default |
|---|---|---|---|
| pan | Yes | 10-char PAN (spaces/hyphens allowed) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint, so there is no contradiction. The description adds useful behavioral details beyond annotations: spaces and hyphens are stripped automatically, the PAN check character is not publicly verifiable, and the result comes in a standard envelope.
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 well-structured with Purpose, Usage, Args, Returns, and Notes sections. It is concise, front-loaded with the key operation, and each part provides distinct value without redundant 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?
Given the single parameter, rich annotations, and existing output schema, the description covers everything needed to invoke the tool correctly. The note about the check character limitation is an important extra that prevents customer assumptions.
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 type, length, and allowed spaces/hyphens, so the baseline is 3. The description adds value with a concrete example and the automatic stripping behavior, which clarifies how the input should be supplied.
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 and resource: 'Validate Indian PAN format and decode entity type from the 4th character.' It clearly distinguishes itself from the sibling tool 'decode_pan_type' by combining validation with entity type decoding. There is 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?
It explicitly says to use the tool when normalizing tax identity records in KYC, invoicing, or vendor onboarding. It does not mention alternatives or when not to use it, which is a minor gap, but the context is clearly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_passportARead-onlyIdempotent
Validate an Indian passport number format.
Use when verifying passport format in KYC, travel, or identity workflows.
Args: passport_number: 1 letter + 7 digits. Spaces and hyphens stripped automatically.
Returns: Standard envelope containing validity, series letter, and serial number.
Notes: Format validation only. No public checksum algorithm exists.
| Name | Required | Description | Default |
|---|---|---|---|
| passport_number | Yes | 8-char Indian passport (spaces/hyphens allowed). Ex: A1234567 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Building on the read-only and idempotent annotations, the description explains that spaces and hyphens are automatically stripped, the response is a standard envelope with validity, series letter, and serial number, and there is no checksum so this is syntactic validation only. These are non-obvious behavioral details that materially change how an agent should interpret the result.
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 Use when, Args, Returns, and Notes sections structure the description well, and the most important selection logic is front-loaded. The text is compact and readable. There is slight redundancy in saying 'format validation' both in the opening and in Notes, but that does not harm overall quality.
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 single-parameter tool with a full output schema and read-only/idempotent annotations, the description covers all the essential context: when to use it, input handling, returned fields, and limitations. The only substantive reliability problem is the incorrect digit count mentioned in the Args section. Correcting that would make this description very 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?
Since the schema already covers the parameter fully, the baseline is 3. However, the description claims '1 letter + 8 digits', which contradicts the schema's '8-char' format and the example 'A1234567' (which has 7 digits). This is a factual error that could mislead an AI agent. The useful note about stripping spaces and hyphens cannot compensate for teaching the wrong pattern.
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 begins with 'Validate an Indian passport number format', identifying the specific verb and resource. It clearly distinguishes this tool from sibling validators for PAN, Aadhaar, GSTIN, and similar formats. The KYC, travel, and identity workflow context adds further clarity about the tool's intended 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 phrase 'Use when verifying passport format in KYC, travel, or identity workflows' explicitly states the intended usage context. The notes about format-only validation and the absence of a checksum algorithm clarify limits, but the description does not mention 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.
validate_pranARead-onlyIdempotent
Validate PRAN (Permanent Retirement Account Number) for NPS.
Use when verifying NPS account numbers.
Args: pran: 12-digit PRAN
Returns: Validation result with subscriber category.
| Name | Required | Description | Default |
|---|---|---|---|
| pran | Yes | 12-digit PRAN |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is supplied by the metadata. The description adds only the scope (NPS) and return hint, without extra behavioral details such as error handling or constraints, which is adequate for this low-risk read-only validation.
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 short: an opening definition, a usage directive, and clearly labeled Args/Returns sections. Every sentence earns its place and the key purpose is 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 a single typed parameter, an output schema, and annotations covering read-only/idempotency, the detection covers the essentials: what it does, when to use it, what goes in, and what comes back. It doesn't explore edge cases like value eligibility or invalid formats, but given the low complexity and metadata available, and it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the only parameter 'pran' is fully described as a '12-digit PRAN' in both the schema and the description's Args section. The description adds no further parameter semantics, which is fine since the schema fully documents it.
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 is explicit: it names the resource (PRAN), the action (validate), and the domain (NPS). It also spells out the intended use ('Use when verifying NPS account numbers'), which differentiates it from dozens of sibling validation 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 clearly states when to use: 'Use when verifying NPS account numbers.' It does not name alternatives to exclude, but the NPS-scoped instruction is strong enough for an agent to select this tool over the many generic validate_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_tanARead-onlyIdempotent
Validate TAN (Tax Deduction Account Number) format.
Use when verifying TAN format for TDS compliance.
Args: tan: 10-character TAN
Returns: Validation result with decoded segments.
| Name | Required | Description | Default |
|---|---|---|---|
| tan | Yes | 10-character TAN (e.g., ABCD12345E) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so safety is well-covered. The description adds that the return includes 'decoded segments,' which is useful but still vague about the exact shape of the result. It does not conflict with the annotations, but it also doesn't fully disclose validation behavior for invalid inputs.
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, front-loaded, and formatted with clear sections: purpose, usage context, args, and returns. It lacks filler. The only minor redundancy is repeating the tan parameter description already present in the schema, but this is acceptable and doesn't hurt scannability.
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 single-parameter validation tool with rich annotations and an output schema, this description is adequate. It tells the agent what the TAN is, when to use the tool, and that the result is a validation result with decoded segments. Additional detail about invalid-input behavior would strengthen it but is not essential here.
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 parameter is fully documented in the input schema. The description does repeat that `tan` is a 10-character TAN, but adds only marginal semantic value beyond the schema. A baseline score of 3 fits because the schema carries the documentation weight.
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's purpose: validating TAN format for TDS compliance. The verb 'Validate' plus the explicit resource 'TAN (Tax Deduction Account Number)' leaves no ambiguity about what the tool does, and it naturally distinguishes this from sibling validation tools for PAN, GSTIN, Aadhaar, etc.
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 states exactly when to use the tool: 'Use when verifying TAN format for TDS compliance.' This provides clear, specific context. It does not explicitly list when not to use it or name alternative tools, but given the clearly distinct resource type, this is a minor omission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_upi_vpaARead-onlyIdempotent
Validate UPI VPA structure and decode known provider handles.
Use when checking whether a UPI address is structurally valid before payment routing.
Args: vpa: UPI virtual payment address in username@handle format.
Returns: Standard envelope containing normalized VPA, known_provider flag, and provider metadata.
Notes: Unknown handles are not auto-invalidated because NPCI handle lists evolve over time.
| Name | Required | Description | Default |
|---|---|---|---|
| vpa | Yes | UPI VPA, example: user@okaxis |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare openWorldHint=false, implying a closed, deterministic world context. However, the description states that NPCI handle lists evolve over time and that unknown handles are not auto-invalidated, which suggests the tool's recognition behavior depends on changing external state. This directly contradicts the openWorldHint annotation, so the behavioral transparency score must be minimal.
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 well-structured with clear Args, Returns, and Notes sections, and every sentence serves a purpose. It is compact and front-loaded with the core purpose before diving into 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 single-parameter tool with an output schema, the description covers the use case, argument format, return envelope fields, and a critical behavioral caveat about unknown handles. The only completeness issue is the contradiction with openWorldHint, which prevents the overall definition from being fully reliable.
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 documents the VPA parameter with an example, but the description adds meaningful semantic guidance by specifying the exact username@handle format. The Returns note about a normalized VPA and known_provider flag also clarifies how the input parameter is used, exceeding what the schema alone provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates UPI VPA structure and decodes known provider handles. This is specific and effectively differentiates it from the sibling validation tools, which target different entities such as PAN, GSTIN, or Aadhaar.
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 says to use this tool when checking whether a UPI address is structurally valid before payment routing, which is a clear context. It does not explicitly rule out other tools or name alternatives, but the target domain is already distinctive enough among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_voter_idARead-onlyIdempotent
Validate an Indian Voter ID (EPIC) number format.
Use when verifying voter ID format in KYC, identity, or electoral workflows.
Args: voter_id: EPIC number (3 letters + 7 digits). Spaces/hyphens stripped.
Returns: Standard envelope containing validity, prefix, serial, and format type.
Notes: Format validation only. Detects possible legacy EPIC formats.
| Name | Required | Description | Default |
|---|---|---|---|
| voter_id | Yes | 10-character EPIC number (spaces/hyphens allowed). Example: ABC1234567 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only and idempotent annotations, the description adds useful behavioral context: it performs 'format validation only', strips spaces/hyphens, detects possible legacy EPIC formats, and returns a standard envelope. This gives agents a good mental model of what the tool will and will not do.
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 well-organized into use case, arguments, returns, and notes. It is compact, front-loaded, and every line adds relevant information with 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?
For a single-parameter, read-only validation tool with an output schema, the description is complete: it explains what the tool validates, when to use it, what the input should look like, what the response contains, and that DB-level verification is not performed.
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%, but the description adds meaningful parameter semantics: 'EPIC number (3 letters + 7 digits)' and 'Spaces/hyphens stripped.' This clarifies acceptable input beyond the schema's simple '10-character EPIC number' description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Validate an Indian Voter ID (EPIC) number format.' It clearly distinguishes this tool from sibling validators like validate_aadhaar or validate_pan because the target document type is explicit.
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 use context: 'Use when verifying voter ID format in KYC, identity, or electoral workflows.' It does not explicitly name which sibling tools to use instead, but the context is clear enough to route an agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
60 tool updates
v0.5.0- Changed
build_aa_consent_request12 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / consent_expiry_days / titleAdded value: +"Consent Expiry Days" - added
Input schema / properties / customer_id / titleAdded value: +"Customer Id" - added
Input schema / properties / date_range_from / titleAdded value: +"Date Range From" - added
Input schema / properties / date_range_to / titleAdded value: +"Date Range To" - added
Input schema / properties / fetch_type / titleAdded value: +"Fetch Type" - added
Input schema / properties / fi_types / titleAdded value: +"Fi Types" - added
Input schema / properties / frequency_unit / titleAdded value: +"Frequency Unit" - added
Input schema / properties / frequency_value / titleAdded value: +"Frequency Value" - added
Input schema / properties / purpose_code / titleAdded value: +"Purpose Code" - added
Input schema / titleAdded value: +"build_aa_consent_requestArguments" - added
Output schema / titleAdded value: +"build_aa_consent_requestDictOutput"
- Changed
bulk_validate_aadhaar4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / numbers / titleAdded value: +"Numbers" - added
Input schema / titleAdded value: +"bulk_validate_aadhaarArguments" - added
Output schema / titleAdded value: +"bulk_validate_aadhaarDictOutput"
- Changed
bulk_validate_gstin4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / gstins / titleAdded value: +"Gstins" - added
Input schema / titleAdded value: +"bulk_validate_gstinArguments" - added
Output schema / titleAdded value: +"bulk_validate_gstinDictOutput"
- Changed
bulk_validate_ifsc4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / ifscs / titleAdded value: +"Ifscs" - added
Input schema / titleAdded value: +"bulk_validate_ifscArguments" - added
Output schema / titleAdded value: +"bulk_validate_ifscDictOutput"
- Changed
bulk_validate_pan4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / pans / titleAdded value: +"Pans" - added
Input schema / titleAdded value: +"bulk_validate_panArguments" - added
Output schema / titleAdded value: +"bulk_validate_panDictOutput"
- Changed
calculate_advance_tax7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / estimated_income / titleAdded value: +"Estimated Income" - added
Input schema / properties / existing_tds / titleAdded value: +"Existing Tds" - added
Input schema / properties / regime / titleAdded value: +"Regime" - added
Input schema / properties / taxpayer_type / titleAdded value: +"Taxpayer Type" - added
Input schema / titleAdded value: +"calculate_advance_taxArguments" - added
Output schema / titleAdded value: +"calculate_advance_taxDictOutput"
- Changed
calculate_capital_gains11 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / asset_type / titleAdded value: +"Asset Type" - added
Input schema / properties / expenses_on_sale / titleAdded value: +"Expenses On Sale" - added
Input schema / properties / holding_period_days / titleAdded value: +"Holding Period Days" - added
Input schema / properties / improvements / titleAdded value: +"Improvements" - added
Input schema / properties / inflation_index_purchase / titleAdded value: +"Inflation Index Purchase" - added
Input schema / properties / inflation_index_sale / titleAdded value: +"Inflation Index Sale" - added
Input schema / properties / purchase_price / titleAdded value: +"Purchase Price" - added
Input schema / properties / sale_price / titleAdded value: +"Sale Price" - added
Input schema / titleAdded value: +"calculate_capital_gainsArguments" - added
Output schema / titleAdded value: +"calculate_capital_gainsDictOutput"
- Changed
calculate_emi7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / annual_interest_rate / titleAdded value: +"Annual Interest Rate" - added
Input schema / properties / loan_type / titleAdded value: +"Loan Type" - added
Input schema / properties / principal / titleAdded value: +"Principal" - added
Input schema / properties / tenure_months / titleAdded value: +"Tenure Months" - added
Input schema / titleAdded value: +"calculate_emiArguments" - added
Output schema / titleAdded value: +"calculate_emiDictOutput"
- Changed
calculate_epf_esic6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / basic_wages / titleAdded value: +"Basic Wages" - added
Input schema / properties / gross_wages / titleAdded value: +"Gross Wages" - added
Input schema / properties / include_employer_share / titleAdded value: +"Include Employer Share" - added
Input schema / titleAdded value: +"calculate_epf_esicArguments" - added
Output schema / titleAdded value: +"calculate_epf_esicDictOutput"
- Changed
calculate_fd_maturity9 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / annual_interest_rate / titleAdded value: +"Annual Interest Rate" - added
Input schema / properties / compounding / titleAdded value: +"Compounding" - added
Input schema / properties / is_senior_citizen / titleAdded value: +"Is Senior Citizen" - added
Input schema / properties / principal / titleAdded value: +"Principal" - added
Input schema / properties / tds_applicable / titleAdded value: +"Tds Applicable" - added
Input schema / properties / tenure_days / titleAdded value: +"Tenure Days" - added
Input schema / titleAdded value: +"calculate_fd_maturityArguments" - added
Output schema / titleAdded value: +"calculate_fd_maturityDictOutput"
- Changed
calculate_gratuity6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / is_covered_under_act / titleAdded value: +"Is Covered Under Act" - added
Input schema / properties / last_drawn_salary / titleAdded value: +"Last Drawn Salary" - added
Input schema / properties / years_of_service / titleAdded value: +"Years Of Service" - added
Input schema / titleAdded value: +"calculate_gratuityArguments" - added
Output schema / titleAdded value: +"calculate_gratuityDictOutput"
- Changed
calculate_gst8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / amount / titleAdded value: +"Amount" - added
Input schema / properties / amount_includes_gst / titleAdded value: +"Amount Includes Gst" - added
Input schema / properties / cess_category / titleAdded value: +"Cess Category" - added
Input schema / properties / gst_rate / titleAdded value: +"Gst Rate" - added
Input schema / properties / transaction_type / titleAdded value: +"Transaction Type" - added
Input schema / titleAdded value: +"calculate_gstArguments" - added
Output schema / titleAdded value: +"calculate_gstDictOutput"
- Changed
calculate_gst_late_fee7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / annual_turnover / titleAdded value: +"Annual Turnover" - added
Input schema / properties / days_delayed / titleAdded value: +"Days Delayed" - added
Input schema / properties / has_nil_liability / titleAdded value: +"Has Nil Liability" - added
Input schema / properties / return_type / titleAdded value: +"Return Type" - added
Input schema / titleAdded value: +"calculate_gst_late_feeArguments" - added
Output schema / titleAdded value: +"calculate_gst_late_feeDictOutput"
- Changed
calculate_home_vs_rent12 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / analysis_years / titleAdded value: +"Analysis Years" - added
Input schema / properties / annual_rent_increase / titleAdded value: +"Annual Rent Increase" - added
Input schema / properties / down_payment_percent / titleAdded value: +"Down Payment Percent" - added
Input schema / properties / expected_property_appreciation / titleAdded value: +"Expected Property Appreciation" - added
Input schema / properties / home_price / titleAdded value: +"Home Price" - added
Input schema / properties / investment_return / titleAdded value: +"Investment Return" - added
Input schema / properties / loan_interest_rate / titleAdded value: +"Loan Interest Rate" - added
Input schema / properties / loan_tenure_years / titleAdded value: +"Loan Tenure Years" - added
Input schema / properties / monthly_rent / titleAdded value: +"Monthly Rent" - added
Input schema / titleAdded value: +"calculate_home_vs_rentArguments" - added
Output schema / titleAdded value: +"calculate_home_vs_rentDictOutput"
- Changed
calculate_hra_exemption8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / basic_salary / titleAdded value: +"Basic Salary" - added
Input schema / properties / city_type / titleAdded value: +"City Type" - added
Input schema / properties / hra_received / titleAdded value: +"Hra Received" - added
Input schema / properties / is_government_employee / titleAdded value: +"Is Government Employee" - added
Input schema / properties / rent_paid / titleAdded value: +"Rent Paid" - added
Input schema / titleAdded value: +"calculate_hra_exemptionArguments" - added
Output schema / titleAdded value: +"calculate_hra_exemptionDictOutput"
- Changed
calculate_income_tax13 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / deduction_24b / titleAdded value: +"Deduction 24B" - added
Input schema / properties / deduction_80c / titleAdded value: +"Deduction 80C" - added
Input schema / properties / deduction_80ccd_nps / titleAdded value: +"Deduction 80Ccd Nps" - added
Input schema / properties / deduction_80d_parents / titleAdded value: +"Deduction 80D Parents" - added
Input schema / properties / deduction_80d_self / titleAdded value: +"Deduction 80D Self" - added
Input schema / properties / deduction_80d_senior_parents / titleAdded value: +"Deduction 80D Senior Parents" - added
Input schema / properties / gross_income / titleAdded value: +"Gross Income" - added
Input schema / properties / other_deductions / titleAdded value: +"Other Deductions" - added
Input schema / properties / regime / titleAdded value: +"Regime" - added
Input schema / properties / taxpayer_type / titleAdded value: +"Taxpayer Type" - added
Input schema / titleAdded value: +"calculate_income_taxArguments" - added
Output schema / titleAdded value: +"calculate_income_taxDictOutput"
- Changed
calculate_income_tax_interest8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / advance_tax_paid / titleAdded value: +"Advance Tax Paid" - added
Input schema / properties / due_date / titleAdded value: +"Due Date" - added
Input schema / properties / filing_date / titleAdded value: +"Filing Date" - added
Input schema / properties / tds_deducted / titleAdded value: +"Tds Deducted" - added
Input schema / properties / total_tax_liability / titleAdded value: +"Total Tax Liability" - added
Input schema / titleAdded value: +"calculate_income_tax_interestArguments" - added
Output schema / titleAdded value: +"calculate_income_tax_interestDictOutput"
- Changed
calculate_leave_encashment_tax8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / average_monthly_salary / titleAdded value: +"Average Monthly Salary" - added
Input schema / properties / earned_leave_balance_days / titleAdded value: +"Earned Leave Balance Days" - added
Input schema / properties / is_government_employee / titleAdded value: +"Is Government Employee" - added
Input schema / properties / leave_encashment_amount / titleAdded value: +"Leave Encashment Amount" - added
Input schema / properties / years_of_service / titleAdded value: +"Years Of Service" - added
Input schema / titleAdded value: +"calculate_leave_encashment_taxArguments" - added
Output schema / titleAdded value: +"calculate_leave_encashment_taxDictOutput"
- Changed
calculate_neft_rtgs_imps_charges7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / account_type / titleAdded value: +"Account Type" - added
Input schema / properties / amount / titleAdded value: +"Amount" - added
Input schema / properties / is_online / titleAdded value: +"Is Online" - added
Input schema / properties / transfer_mode / titleAdded value: +"Transfer Mode" - added
Input schema / titleAdded value: +"calculate_neft_rtgs_imps_chargesArguments" - added
Output schema / titleAdded value: +"calculate_neft_rtgs_imps_chargesDictOutput"
- Changed
calculate_nps_projection9 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / annuity_percent / titleAdded value: +"Annuity Percent" - added
Input schema / properties / annuity_rate / titleAdded value: +"Annuity Rate" - added
Input schema / properties / current_age / titleAdded value: +"Current Age" - added
Input schema / properties / expected_annual_return / titleAdded value: +"Expected Annual Return" - added
Input schema / properties / monthly_contribution / titleAdded value: +"Monthly Contribution" - added
Input schema / properties / retirement_age / titleAdded value: +"Retirement Age" - added
Input schema / titleAdded value: +"calculate_nps_projectionArguments" - added
Output schema / titleAdded value: +"calculate_nps_projectionDictOutput"
- Changed
calculate_ppf_maturity6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / annual_interest_rate / titleAdded value: +"Annual Interest Rate" - added
Input schema / properties / annual_investment / titleAdded value: +"Annual Investment" - added
Input schema / properties / tenure_years / titleAdded value: +"Tenure Years" - added
Input schema / titleAdded value: +"calculate_ppf_maturityArguments" - added
Output schema / titleAdded value: +"calculate_ppf_maturityDictOutput"
- Changed
calculate_presumptive_tax9 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / age / titleAdded value: +"Age" - added
Input schema / properties / deductions_80c / titleAdded value: +"Deductions 80C" - added
Input schema / properties / digital_receipt_percent / titleAdded value: +"Digital Receipt Percent" - added
Input schema / properties / gross_receipts / titleAdded value: +"Gross Receipts" - added
Input schema / properties / regime / titleAdded value: +"Regime" - added
Input schema / properties / scheme / titleAdded value: +"Scheme" - added
Input schema / titleAdded value: +"calculate_presumptive_taxArguments" - added
Output schema / titleAdded value: +"calculate_presumptive_taxDictOutput"
- Changed
calculate_professional_tax5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / gross_salary_monthly / titleAdded value: +"Gross Salary Monthly" - added
Input schema / properties / state_code / titleAdded value: +"State Code" - added
Input schema / titleAdded value: +"calculate_professional_taxArguments" - added
Output schema / titleAdded value: +"calculate_professional_taxDictOutput"
- Changed
calculate_rd_maturity6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / annual_interest_rate / titleAdded value: +"Annual Interest Rate" - added
Input schema / properties / monthly_installment / titleAdded value: +"Monthly Installment" - added
Input schema / properties / tenure_months / titleAdded value: +"Tenure Months" - added
Input schema / titleAdded value: +"calculate_rd_maturityArguments" - added
Output schema / titleAdded value: +"calculate_rd_maturityDictOutput"
- Changed
calculate_salary_restructuring12 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / current_basic_ratio / titleAdded value: +"Current Basic Ratio" - added
Input schema / properties / current_gross / titleAdded value: +"Current Gross" - added
Input schema / properties / family_medical / titleAdded value: +"Family Medical" - added
Input schema / properties / has_hra / titleAdded value: +"Has Hra" - added
Input schema / properties / include_meal_card / titleAdded value: +"Include Meal Card" - added
Input schema / properties / include_wallet_allowance / titleAdded value: +"Include Wallet Allowance" - added
Input schema / properties / parents_medical / titleAdded value: +"Parents Medical" - added
Input schema / properties / rent_in_metro / titleAdded value: +"Rent In Metro" - added
Input schema / properties / structure_type / titleAdded value: +"Structure Type" - added
Input schema / titleAdded value: +"calculate_salary_restructuringArguments" - added
Output schema / titleAdded value: +"calculate_salary_restructuringDictOutput"
- Changed
calculate_sip_returns7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / expected_annual_return / titleAdded value: +"Expected Annual Return" - added
Input schema / properties / inflation_rate / titleAdded value: +"Inflation Rate" - added
Input schema / properties / monthly_investment / titleAdded value: +"Monthly Investment" - added
Input schema / properties / tenure_years / titleAdded value: +"Tenure Years" - added
Input schema / titleAdded value: +"calculate_sip_returnsArguments" - added
Output schema / titleAdded value: +"calculate_sip_returnsDictOutput"
- Changed
calculate_step_up_sip7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / annual_step_up_percent / titleAdded value: +"Annual Step Up Percent" - added
Input schema / properties / expected_annual_return / titleAdded value: +"Expected Annual Return" - added
Input schema / properties / initial_monthly_investment / titleAdded value: +"Initial Monthly Investment" - added
Input schema / properties / tenure_years / titleAdded value: +"Tenure Years" - added
Input schema / titleAdded value: +"calculate_step_up_sipArguments" - added
Output schema / titleAdded value: +"calculate_step_up_sipDictOutput"
- Changed
calculate_sukanya_samriddhi6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / annual_interest_rate / titleAdded value: +"Annual Interest Rate" - added
Input schema / properties / annual_investment / titleAdded value: +"Annual Investment" - added
Input schema / properties / scheme / titleAdded value: +"Scheme" - added
Input schema / titleAdded value: +"calculate_sukanya_samriddhiArguments" - added
Output schema / titleAdded value: +"calculate_sukanya_samriddhiDictOutput"
- Changed
calculate_surcharge6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / base_tax / titleAdded value: +"Base Tax" - added
Input schema / properties / regime / titleAdded value: +"Regime" - added
Input schema / properties / total_income / titleAdded value: +"Total Income" - added
Input schema / titleAdded value: +"calculate_surchargeArguments" - added
Output schema / titleAdded value: +"calculate_surchargeDictOutput"
- Changed
calculate_tds9 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / aggregate_payments_ytd / titleAdded value: +"Aggregate Payments Ytd" - added
Input schema / properties / is_senior_citizen / titleAdded value: +"Is Senior Citizen" - added
Input schema / properties / pan_available / titleAdded value: +"Pan Available" - added
Input schema / properties / payee_type / titleAdded value: +"Payee Type" - added
Input schema / properties / payment_amount / titleAdded value: +"Payment Amount" - added
Input schema / properties / section / titleAdded value: +"Section" - added
Input schema / titleAdded value: +"calculate_tdsArguments" - added
Output schema / titleAdded value: +"calculate_tdsDictOutput"
- Changed
decode_aa_fi_type4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / fi_type / titleAdded value: +"Fi Type" - added
Input schema / titleAdded value: +"decode_aa_fi_typeArguments" - added
Output schema / titleAdded value: +"decode_aa_fi_typeDictOutput"
- Changed
decode_digilocker_uri4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / uri / titleAdded value: +"Uri" - added
Input schema / titleAdded value: +"decode_digilocker_uriArguments" - added
Output schema / titleAdded value: +"decode_digilocker_uriDictOutput"
- Changed
decode_isin4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / isin / titleAdded value: +"Isin" - added
Input schema / titleAdded value: +"decode_isinArguments" - added
Output schema / titleAdded value: +"decode_isinDictOutput"
- Changed
decode_pan_type4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / pan / titleAdded value: +"Pan" - added
Input schema / titleAdded value: +"decode_pan_typeArguments" - added
Output schema / titleAdded value: +"decode_pan_typeDictOutput"
- Changed
decode_state_code4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / value / titleAdded value: +"Value" - added
Input schema / titleAdded value: +"decode_state_codeArguments" - added
Output schema / titleAdded value: +"decode_state_codeDictOutput"
- Changed
get_regulatory_deadlines6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / category / titleAdded value: +"Category" - added
Input schema / properties / from_date / titleAdded value: +"From Date" - added
Input schema / properties / to_date / titleAdded value: +"To Date" - added
Input schema / titleAdded value: +"get_regulatory_deadlinesArguments" - added
Output schema / titleAdded value: +"get_regulatory_deadlinesDictOutput"
- Added
get_stock_history - Added
get_stock_quote - Changed
lookup_bank4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / name_or_code / titleAdded value: +"Name Or Code" - added
Input schema / titleAdded value: +"lookup_bankArguments" - added
Output schema / titleAdded value: +"lookup_bankDictOutput"
- Changed
lookup_bbps_biller6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / biller_id / titleAdded value: +"Biller Id" - added
Input schema / properties / category / titleAdded value: +"Category" - added
Input schema / properties / state / titleAdded value: +"State" - added
Input schema / titleAdded value: +"lookup_bbps_billerArguments" - added
Output schema / titleAdded value: +"lookup_bbps_billerDictOutput"
- Changed
lookup_hsn_code5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / keyword / titleAdded value: +"Keyword" - added
Input schema / titleAdded value: +"lookup_hsn_codeArguments" - added
Output schema / titleAdded value: +"lookup_hsn_codeDictOutput"
- Changed
lookup_ifsc4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / ifsc_code / titleAdded value: +"Ifsc Code" - added
Input schema / titleAdded value: +"lookup_ifscArguments" - added
Output schema / titleAdded value: +"lookup_ifscDictOutput"
- Changed
lookup_pincode4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / pincode / titleAdded value: +"Pincode" - added
Input schema / titleAdded value: +"lookup_pincodeArguments" - added
Output schema / titleAdded value: +"lookup_pincodeDictOutput"
- Changed
validate_aa_consent_artifact4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / artifact / titleAdded value: +"Artifact" - added
Input schema / titleAdded value: +"validate_aa_consent_artifactArguments" - added
Output schema / titleAdded value: +"validate_aa_consent_artifactDictOutput"
- Changed
validate_aadhaar4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / aadhaar / titleAdded value: +"Aadhaar" - added
Input schema / titleAdded value: +"validate_aadhaarArguments" - added
Output schema / titleAdded value: +"validate_aadhaarDictOutput"
- Changed
validate_cin4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / cin / titleAdded value: +"Cin" - added
Input schema / titleAdded value: +"validate_cinArguments" - added
Output schema / titleAdded value: +"validate_cinDictOutput"
- Changed
validate_din4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / din / titleAdded value: +"Din" - added
Input schema / titleAdded value: +"validate_dinArguments" - added
Output schema / titleAdded value: +"validate_dinDictOutput"
- Changed
validate_driving_license4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / dl_number / titleAdded value: +"Dl Number" - added
Input schema / titleAdded value: +"validate_driving_licenseArguments" - added
Output schema / titleAdded value: +"validate_driving_licenseDictOutput"
- Changed
validate_epf_code4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / titleAdded value: +"validate_epf_codeArguments" - added
Output schema / titleAdded value: +"validate_epf_codeDictOutput"
- Changed
validate_esic_code4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / titleAdded value: +"validate_esic_codeArguments" - added
Output schema / titleAdded value: +"validate_esic_codeDictOutput"
- Changed
validate_fssai4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / license_number / titleAdded value: +"License Number" - added
Input schema / titleAdded value: +"validate_fssaiArguments" - added
Output schema / titleAdded value: +"validate_fssaiDictOutput"
- Changed
validate_gstin4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / gstin / titleAdded value: +"Gstin" - added
Input schema / titleAdded value: +"validate_gstinArguments" - added
Output schema / titleAdded value: +"validate_gstinDictOutput"
- Changed
validate_llpin4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / llpin / titleAdded value: +"Llpin" - added
Input schema / titleAdded value: +"validate_llpinArguments" - added
Output schema / titleAdded value: +"validate_llpinDictOutput"
- Changed
validate_mobile_number4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / mobile / titleAdded value: +"Mobile" - added
Input schema / titleAdded value: +"validate_mobile_numberArguments" - added
Output schema / titleAdded value: +"validate_mobile_numberDictOutput"
- Changed
validate_pan4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / pan / titleAdded value: +"Pan" - added
Input schema / titleAdded value: +"validate_panArguments" - added
Output schema / titleAdded value: +"validate_panDictOutput"
- Changed
validate_passport4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / passport_number / titleAdded value: +"Passport Number" - added
Input schema / titleAdded value: +"validate_passportArguments" - added
Output schema / titleAdded value: +"validate_passportDictOutput"
- Changed
validate_pran4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / pran / titleAdded value: +"Pran" - added
Input schema / titleAdded value: +"validate_pranArguments" - added
Output schema / titleAdded value: +"validate_pranDictOutput"
- Changed
validate_tan4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / tan / titleAdded value: +"Tan" - added
Input schema / titleAdded value: +"validate_tanArguments" - added
Output schema / titleAdded value: +"validate_tanDictOutput"
- Changed
validate_upi_vpa4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / vpa / titleAdded value: +"Vpa" - added
Input schema / titleAdded value: +"validate_upi_vpaArguments" - added
Output schema / titleAdded value: +"validate_upi_vpaDictOutput"
- Changed
validate_voter_id4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / voter_id / titleAdded value: +"Voter Id" - added
Input schema / titleAdded value: +"validate_voter_idArguments" - added
Output schema / titleAdded value: +"validate_voter_idDictOutput"
29 tool updates
v0.4.2- Added
build_aa_consent_request - Added
bulk_validate_aadhaar - Added
calculate_emi - Added
calculate_epf_esic - Added
calculate_fd_maturity - Added
calculate_gratuity - Added
calculate_gst_late_fee - Added
calculate_home_vs_rent - Added
calculate_income_tax_interest - Added
calculate_leave_encashment_tax - Added
calculate_neft_rtgs_imps_charges - Added
calculate_nps_projection - Added
calculate_ppf_maturity - Added
calculate_presumptive_tax - Added
calculate_professional_tax - Added
calculate_rd_maturity - Added
calculate_salary_restructuring - Added
calculate_sip_returns - Added
calculate_step_up_sip - Added
calculate_sukanya_samriddhi - Changed
calculate_tds2 fields changed- added
Input schema / properties / aggregate_payments_ytdAdded value: +{ + "default": 0, + "description": "Prior payments to same payee under this section in current FY", + "type": "number" +} - added
Input schema / properties / payee_typeAdded value: +{ + "default": "individual_huf", + "description": "Payee type: 'individual_huf' or 'other' (affects 194C rate)", + "type": "string" +}
- Added
decode_aa_fi_type - Added
decode_isin - Added
get_regulatory_deadlines - Added
validate_aa_consent_artifact - Added
validate_llpin - Added
validate_mobile_number - Added
validate_pran - Added
validate_tan
30 tool updates
v0.3.0- First observed
bulk_validate_gstin - First observed
bulk_validate_ifsc - First observed
bulk_validate_pan - First observed
calculate_advance_tax - First observed
calculate_capital_gains - First observed
calculate_gst - First observed
calculate_hra_exemption - First observed
calculate_income_tax - First observed
calculate_surcharge - First observed
calculate_tds - First observed
decode_digilocker_uri - First observed
decode_pan_type - First observed
decode_state_code - First observed
lookup_bank - First observed
lookup_bbps_biller - First observed
lookup_hsn_code - First observed
lookup_ifsc - First observed
lookup_pincode - First observed
validate_aadhaar - First observed
validate_cin - First observed
validate_din - First observed
validate_driving_license - First observed
validate_epf_code - First observed
validate_esic_code - First observed
validate_fssai - First observed
validate_gstin - First observed
validate_pan - First observed
validate_passport - First observed
validate_upi_vpa - First observed
validate_voter_id
TDQS
Most tools have a distinct resource and action, with clear domains like validate_*, lookup_*, calculate_*, and decode_*. However, decode_pan_type heavily overlaps with validate_pan, and the bulk_validate_* variants introduce near-duplicate surface next to single validate tools.
All tool names follow a consistent snake_case verb_noun pattern, using categorized verbs such as validate, lookup, calculate, decode, get, and build. Names are predictable and uniform across the entire server.
60 tools dwarfs the typical 3-15 tool well-scoped range and far exceeds the 50+ extreme mismatch threshold. The server covers many domains, but the sheer number makes it unwieldy for an agent to reliably scan and choose among.
The surface is broad and covers the core financial/India stack workflows: identity validators, tax estimators, lookups, biller references, AA consents, and stock data. Some minor gaps exist (e.g., no direct GST registration activation status, no UAN validator, and missing a unified advisory comparison tool), but no major domain causing dead ends is absent.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Identity resolution MCP server for phone/email lookups across 31+ services. Global + India coverage.
PDF tools + invoice extraction, bank statement parsing, GST reconciliation & GSTIN validation.
MCP server for Quaderno — tax-rate calculation, invoices, contacts, products, receipts & expenses.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides AI agents with Indian fintech utilities including IFSC bank lookups, PAN/GSTIN validation, mutual fund NAVs, UPI VPA identification, pincode lookups, and INR formatting, all with zero authentication and zero cost.7MIT
- 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.12208MIT
- AlicenseAqualityCmaintenanceEnables LLMs to query real-time Indian bank branch details, postal PIN codes, validate GSTIN/PAN structures, check e-commerce serviceability, and compute GST breakdowns using free public APIs and offline verification logic.6171MIT
- FlicenseAqualityCmaintenanceTurns any MCP host into a finance & tax copilot for Indian taxpayers, using live keyless data and deterministic advisory.16-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rehan1020/MCP-India-Stack'
If you have feedback or need assistance with the MCP directory API, please join our Discord server