gst-india-mcp
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., "@gst-india-mcpVerify GSTIN 27AABCU9603R1ZM and tell me the business name."
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.
GST India MCP
A Model Context Protocol (MCP) server for India GST, built on the Sandbox (Quicko) tax API. It lets any MCP client (VS Code, Claude, Codex, Cursor…) verify GSTINs, look up businesses by PAN, track return filings, and — with an OTP-based taxpayer session — read your GSTR-2B/3B and cash/ITC ledgers.
🧩 Also available as a VS Code extension for one-click install with secure credential storage.
Features
Tool | Session? | Description |
| Public | Verify a GSTIN → legal/trade name, status, type, address, e-invoice status. |
| Public | Find all GSTINs registered against a PAN. |
| Public | Return filing history/status for a GSTIN (optional FY filter). |
| — | Send an OTP to a taxpayer's registered mobile/email. |
| — | Verify the OTP → start a ~6h taxpayer session. |
| — | Whether a taxpayer session is active. |
| Taxpayer | GSTR-3B (summary return) for a period. |
| Taxpayer | GSTR-2B (auto-drafted ITC/purchases) for a period. |
| Taxpayer | Filed/pending returns for a period. |
| Taxpayer | Annual Aggregate Turnover (AATO). |
| Taxpayer | Cash + ITC balance as on a period. |
| Taxpayer | Electronic cash ledger for a date range. |
| Taxpayer | Electronic ITC ledger for a date range. |
Public tools need only your Sandbox API key/secret. Taxpayer tools additionally require an OTP session (see Authentication).
Related MCP server: mcp-india-stack
Requirements
Node.js >= 18
A Sandbox account with an API Key + API Secret (test or live).
For taxpayer tools: Manage API Access enabled on gst.gov.in for your GSTIN.
Install
npx gst-india-mcpOr globally:
npm install -g gst-india-mcp
gst-india-mcpConfiguration
Set via .env (local dev) or the MCP host's env block:
Variable | Description |
| Sandbox API key ( |
| Sandbox API secret |
| API base (default |
| API version (default |
| GST portal username (for taxpayer tools) |
| Your GSTIN (for taxpayer tools) |
| Optional pre-obtained 6h taxpayer token (skips OTP) |
Never commit .env — it is git-ignored.
Use with VS Code
Ships a .vscode/mcp.json. Open the folder in VS Code and start the server from the MCP view, or install the VS Code extension.
Use with Claude, Codex, Cursor
Standard MCP server — configure npx -y gst-india-mcp in the host's config with the GST_* env vars. Example (Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"gst-india": {
"command": "npx",
"args": ["-y", "gst-india-mcp"],
"env": { "GST_API_KEY": "...", "GST_API_SECRET": "...", "GST_USERNAME": "...", "GST_GSTIN": "..." }
}
}
}Documentation
Security
Credentials come from environment variables only; nothing is logged to stdout (reserved for MCP).
The taxpayer session token is held in memory for the server's lifetime and is never written to disk by the server.
This project uses the Sandbox sandbox/test environment by default — switch to live keys only when ready.
License
MIT © Bhavy Khatri
Available Tools
13 toolsget_annual_turnoverGet annual aggregate turnover (AATO)A
Fetch the authenticated taxpayer's Annual Aggregate Turnover values. Requires an active taxpayer session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the disclosure burden. It states that this is a fetch operation and requires an active taxpayer session, which is useful. However, it does not describe the return structure, which turnover periods are included, or the exact data shape returned, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The core action and resource are front-loaded, and the authentication requirement is stated plainly in the second 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?
For a parameterless getter, the description covers the essential information: what is fetched, whose data it is, and the session requirement. It does not detail the return format, but given the simplicity of the call and absence of an output schema, the remaining gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, which warrants the baseline of 4. The description reinforces that no parameters are needed because the data belongs to the authenticated taxpayer.
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 specifies an exact verb ('Fetch'), resource ('Annual Aggregate Turnover values'), and scope ('authenticated taxpayer'). It is clearly distinct from the sibling tools, none of which target turnover values.
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 prerequisite—an active taxpayer session—which helps the agent know when the tool is callable. However, it does not explicitly discuss when to prefer this tool over alternatives or when not to use it; usage is mostly implied by the tool's purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cash_ledgerGet cash ledgerA
Fetch the electronic cash ledger transactions for a date range. Requires an active taxpayer session.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | To date, DD/MM/YYYY | |
| from | Yes | From date, DD/MM/YYYY |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses a behavioral prerequisite (active taxpayer session) and 'Fetch' implies a read operation, but it does not describe return format, pagination, limits, or error behavior. This is partially transparent but not fully.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no redundancy. The action and scope are front-loaded, and the session requirement is placed second, making it easy to scan and understand.
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 two-parameter fetch, the description covers purpose and environment, and the schema fully documents parameters. However, there is no output schema and no mention of what the tool returns or any practical constraints, leaving some gaps in completeness.
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%; both 'from' and 'to' parameters already include format and meaning. The description adds no extra parameter-level 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 states a specific action ('Fetch'), a precise resource ('electronic cash ledger transactions'), and a scope ('for a date range'). This clearly identifies what the tool does and differentiates it from siblings like get_itc_ledger and get_ledger_balance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when cash ledger transactions for a date range are needed. It adds an important prerequisite ('Requires an active taxpayer session') but does not mention alternatives or scenarios where another ledger tool would be more appropriate, so guidance remains implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gstr2bGet GSTR-2BA
Fetch GSTR-2B (auto-drafted ITC statement of purchases) for a return period. Requires an active taxpayer session.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | 4-digit year, e.g. 2026 | |
| month | Yes | 2-digit month, e.g. 09 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It notes the session requirement, which is a behavioral precondition, but does not mention whether the operation is read-only, potential side effects, or error behavior. Partial transparency at best.
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 exceptionally concise, consisting of two short sentences that convey the essential information without any redundant language or 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 simple fetch operation with no output schema and no annotations, the description is complete. It states the purpose, the required parameters via the schema, and the session prerequisite, covering all necessary context for an agent to use 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 descriptions and examples for both parameters (year and month), achieving 100% coverage. The description does not add additional meaning beyond what the schema states, 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 clearly states the verb 'Fetch' and the resource 'GSTR-2B', along with the scope 'for a return period'. It accurately conveys the tool's function without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a prerequisite ('Requires an active taxpayer session') but does not provide explicit guidance on when to use this tool versus sibling tools like get_gstr3b or track_returns_current. The usage context is implied rather than clearly differentiated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gstr3bGet GSTR-3BA
Fetch GSTR-3B (monthly summary return) details for a return period. Requires an active taxpayer session.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | 4-digit year, e.g. 2026 | |
| month | Yes | 2-digit month, e.g. 09 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the burden of behavioral disclosure. It adds one meaningful behavioral precondition (active taxpayer session) but does not disclose side-effect-free/read-only status, failure modes, or what happens if the session is missing. This is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and object, then the prerequisite. No wasted 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?
For a simple two-parameter fetch with no output schema, the description gives the core request shape and a prerequisite but leaves the returned detail fields and error/edge behavior unspecified. It is usable but not fully 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%: year and month already have descriptive examples and value constraints. The description adds no parameter-specific meaning beyond 'return period', which is redundant with the schema. 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 names the specific artifact (GSTR-3B monthly summary return) and the action (Fetch details for a return period), clearly distinguishing it from the sibling get_gstr2b by return type. The 'monthly summary' qualifier removes ambiguity about which compliance filing the tool targets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides the prerequisite context 'Requires an active taxpayer session,' which tells the agent this call depends on a prior session step. However, it does not explicitly say when to prefer this over get_gstr2b, track_gst_returns, or other return-listing siblings, so the routing logic is mostly implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_itc_ledgerGet ITC ledgerA
Fetch the electronic Input Tax Credit (ITC) ledger transactions for a date range. Requires an active taxpayer session.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | To date, DD/MM/YYYY | |
| from | Yes | From date, DD/MM/YYYY |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the authentication requirement ('active taxpayer session') and implies a read-only fetch, but does not address response format, pagination, date handling, or failure modes. Gives partial transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the primary purpose first and the prerequisite second. No filler or 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 simple two-parameter, read-only tool, the purpose and prerequisite are present, but without an output schema or annotations, the description leaves response shape and error behavior unstated. Adequate for basic invocation, incomplete for robust agent decision-making.
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 covers 100% of parameters with format descriptions, so the baseline is 3. The description adds only 'for a date range' without clarifying inclusivity, timezone, or ordering, so it provides no additional semantic 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?
States a specific action ('Fetch') on a specific resource ('electronic Input Tax Credit (ITC) ledger transactions') with a date range. The resource type inherently differentiates it from sibling tools like get_cash_ledger and get_ledger_balance.
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?
Only provides a prerequisite ('Requires an active taxpayer session') but no guidance on when to use this tool versus alternatives such as get_cash_ledger or get_ledger_balance. There are no explicit usage conditions or exclusions, so an agent must infer which ledger tool fits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ledger_balanceGet cash + ITC balanceB
Fetch the taxpayer's Cash and ITC ledger balances as on a return period (year/month). Requires an active taxpayer session.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | 4-digit year, e.g. 2026 | |
| month | Yes | 2-digit month, e.g. 09 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses one meaningful behavioral prerequisite ('Requires an active taxpayer session') and the verb 'Fetch' implies a read operation, but it does not describe the return format, failure modes, or consequences of an expired session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences front-load the core operation and follow with the session prerequisite. There is no filler or redundant repetition of the title.
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 two-parameter lookup, the description covers the purpose, the required period, and the key precondition. It leaves the sibling distinction and exact return shape implicit, but nothing essential to attempting the call 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 input schema already provides 100% coverage with format rules and examples for both year and month. The description only echoes 'return period (year/month)' and adds no 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 description uses a specific verb ('Fetch') and identifies a clear resource ('Cash and ITC ledger balances') with a temporal scope ('as on a return period'). It does not explicitly contrast with sibling tools like get_cash_ledger or get_itc_ledger, but the combined balance view is reasonably distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided for when to use this tool versus alternatives such as get_cash_ledger or get_itc_ledger. The active-session note addresses a prerequisite but does not help an agent choose between this and sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_gstin_by_panSearch GSTINs by PANA
Find all GSTINs registered against a PAN across states. Useful to discover a business's registrations. No taxpayer session required.
| Name | Required | Description | Default |
|---|---|---|---|
| pan | Yes | 10-character PAN, e.g. AAACJ2440E |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the transparency burden. It usefully discloses that no taxpayer session is required, which is a meaningful behavioral trait. However, it does not state whether the operation is read-only, describe rate limits, or clarify the exact response structure, leaving some transparency gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, direct sentences carry all necessary information. The first sentence states the core operation, the second adds a use case and an auth prerequisite. There is no filler, repetition, or extraneous 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 lookup tool with no output schema, the description covers the main context: scope, purpose, and the absence of a session requirement. It could explicitly note that the result is a list of GSTINs or describe the output format, but 'Find all GSTINs' makes the general shape inferable.
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 pan parameter already includes a format description and example. The description's phrase 'against a PAN' confirms the parameter's role but does not add new semantic detail beyond the schema. Baseline 3 applies because the schema handles 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?
The description clearly states the operation: finding all GSTINs registered against a PAN across states. 'Across states' and 'No taxpayer session required' help distinguish this from sibling tools like verify_gstin and session-related tools. The verb 'Find' plus the specific resource (GSTINs by PAN) makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a concrete use case ('discover a business's registrations') and an important condition ('No taxpayer session required'). It does not explicitly name alternatives or state when not to use the tool, but the context cues are strong enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxpayer_generate_otpGenerate taxpayer OTPA
Step 1 of a taxpayer session. Sends an OTP to the taxpayer's GST-registered mobile/email. Uses GST_USERNAME/GST_GSTIN from config unless overridden. Requires API access enabled on gst.gov.in.
| Name | Required | Description | Default |
|---|---|---|---|
| gstin | No | GSTIN (defaults to GST_GSTIN) | |
| username | No | GST portal username (defaults to GST_USERNAME) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the disclosure burden. It reveals the side effect (sending an OTP), the destination (registered mobile/email), configuration fallback behavior (GST_USERNAME/GST_GSTIN), and an external prerequisite (API access enabled). It stops short of mentioning expiry, rate limits, or return shape, but the core behavior is 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 three sentences are tight, front-loaded with the step context, and every sentence contributes: role, action, parameters, and prerequisite. No filler or repetition of the tool name.
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 tool with two optional params and no output schema, the description covers the essentials: what happens, where the OTP goes, how defaults are resolved, and a prerequisite. It does not state the response format or explicitly recommend proceeding to taxpayer_verify_otp, but those are not blockers 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?
Both parameters are already documented in the schema (100% coverage), so the baseline is 3. The description adds value by stating that defaults come from config and can be overridden, which explains where the fallback values originate and when to supply explicit gstin/username values.
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 concrete action ('Sends an OTP') and a precise target ('taxpayer's GST-registered mobile/email'), and frames it as 'Step 1 of a taxpayer session.' This clearly separates it from the sibling taxpayer_verify_otp tool, which is the follow-up verification step.
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 clear usage context: this is the opening step of a taxpayer session, so it should precede verify_otp and other taxpayer tools. It does not explicitly list alternatives or when-not-to-use conditions, but the step ordering provides sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxpayer_session_statusTaxpayer session statusA
Reports whether an active taxpayer session exists in this server process.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does add useful behavioral context by specifying the session check is in 'this server process,' and 'reports' suggests a read-only operation. However, it does not disclose potential edge cases like session expiration behavior, whether the check has side effects, or what happens if no session 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?
A single, front-loaded sentence with no filler. Every word contributes meaning: 'Reports,' 'active,' 'taxpayer session,' and 'in this server process' all carry necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description is nearly sufficient. It tells the agent what is being checked and the scope, and 'reports whether' naturally implies a boolean result. A minor gap is not explicitly stating the return format or any prerequisites, but the tool's simplicity keeps this from being a major omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is trivially complete. The baseline for zero-parameter tools is 4, and the description adds no irrelevant parameter information. No parameter semantics are missing.
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 ('Reports') and a clear resource ('whether an active taxpayer session exists') scoped to 'this server process.' It is distinct from sibling tools like taxpayer_generate_otp and verify_gstin, which handle session creation or GSTIN lookups rather than session status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: an agent would call this to determine if an authenticated session exists in the current server process before proceeding with session-dependent operations. However, it does not explicitly state when to use it, when not to use it, or mention any alternatives, so the guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxpayer_verify_otpVerify taxpayer OTPA
Step 2 of a taxpayer session. Verifies the OTP and starts a ~6-hour taxpayer session held in memory for subsequent taxpayer_* / get_gstr* / ledger tools.
| Name | Required | Description | Default |
|---|---|---|---|
| otp | Yes | The OTP received on the registered mobile/email | |
| gstin | No | GSTIN (defaults to GST_GSTIN) | |
| username | No | GST portal username (defaults to GST_USERNAME) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses the key side effect: starting a ~6-hour session held in memory. It also implies statefulness and session dependency for later calls, which is valuable behavioral context. It stops short of describing failure behavior or OTP expiration, but the main side effect is clearly communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, information-dense sentence that front-loads the step context and specifies the session duration and scope. Every phrase adds value, with no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter tool with full schema coverage, the description is nearly complete: it explains the tool's sequence position, its side effect, and its relationship to downstream calls. It does not describe the response shape or what happens on failed verification, but those are minor gaps given no output schema and the tool's straightforward nature.
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% parameter coverage, including descriptions for otp, gstin, and username. The description adds no parameter-specific meaning, but none is needed given the schema is self-explanatory. 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 specific action (verifies the OTP) and its role as 'Step 2 of a taxpayer session,' clearly distinguishing it from OTP generation and other taxpayer tools. It also names the downstream session effect, which ties it to the tool's unique purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly places the tool in a sequence: Step 2 after OTP generation, and it explains that subsequent taxpayer_*, get_gstr*, and ledger tools rely on the session it starts. It does not explicitly name alternatives or state when not to use it, but the step-based context is sufficient for an agent to select it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_gst_returnsTrack GST returns (public)A
Check the GST return filing status/history for a GSTIN (GSTR-1, GSTR-3B, etc.). Optionally filter by financial year (e.g. 2025-26). No taxpayer session required.
| Name | Required | Description | Default |
|---|---|---|---|
| gstin | Yes | 15-character GSTIN | |
| financial_year | No | Financial year like 2025-26 (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It usefully discloses the session-free/public nature and the fact that it returns filing status/history with optional financial-year filtering. It does not mention output shape, data freshness, or error behavior, but for a read-only tracking tool the key access constraint is stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler. The main purpose is front-loaded, and the access constraint is stated succinctly in the second 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?
Adequate for a simple two-parameter public lookup whose schema already covers the parameters. The main gap is not describing the returned status/history format or explicitly distinguishing this from track_returns_current, but the low complexity and clear scope make it mostly 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 description coverage is 100%, so the schema already documents both parameters. The description repeats the optional financial-year filter and example format but adds no meaning beyond the schema, matching 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?
States a specific verb ('check'), a specific resource ('GST return filing status/history for a GSTIN'), and the scope (GSTR-1, GSTR-3B, etc.). The 'public' title and 'No taxpayer session required' note help distinguish it from session-based taxpayer 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?
Clearly indicates this is a public lookup that does not require a taxpayer session, which routes the agent away from OTP/session siblings. However, it does not explicitly name alternatives like get_gstr3b/get_gstr2b for detailed return data or track_returns_current, so exclusion guidance relies on inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_returns_currentTrack returns (taxpayer)A
List the authenticated taxpayer's filed/pending returns for a return period. Requires an active taxpayer session.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | 4-digit year, e.g. 2026 | |
| month | Yes | 2-digit month, e.g. 09 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that this is a read/list operation scoped to the authenticated taxpayer and requires an active session. It does not mention behavior when the session is missing or expired, output format, pagination, or error conditions, leaving some behavioral traits implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two short sentences with the action and object front-loaded and the session requirement stated compactly. There is no filler, no repetition of the tool name, and every clause adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter list operation with complete schema coverage, the description provides enough to call the tool correctly: purpose, scope, authentication prerequisite, and parameter formats. It stops short of a 5 because it lacks output-shape information, error-handling details, and explicit distinction from track_gst_returns.
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 both parameters with examples, so schema coverage is 100% and the description does not need to add much. The phrase 'return period' loosely aligns with year/month, but the description adds no syntax or format details 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 a list operation over the authenticated taxpayer's filed/pending returns for a return period, which distinguishes it from search tools like verify_gstin and search_gstin_by_pan. However, it does not explicitly differentiate itself from the similarly named sibling track_gst_returns, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear prerequisite—'Requires an active taxpayer session'—and implies the tool is for the currently authenticated taxpayer. It offers no explicit guidance on when to choose this over track_gst_returns or get_gstr3b, and no when-not-to-use scenarios, so usage context is implied rather than fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_gstinVerify GSTINA
Verify a GST-registered business by its 15-character GSTIN. Returns legal/trade name, status, taxpayer type, constitution, e-invoice enablement, and registered address. No taxpayer session required.
| Name | Required | Description | Default |
|---|---|---|---|
| gstin | Yes | 15-character GSTIN, e.g. 29AFSPB9500E1ZY |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that no taxpayer session is required and enumerates the returned data fields. It does not discuss invalid-GSTIN behavior or data freshness, but for a read-only public lookup this is reasonably 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?
Two tight sentences front-load the purpose and return values, then add the key access constraint. Every sentence earns its place with 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?
For a one-parameter, read-only verification tool with no output schema, the description covers the input format, the purpose, the key return fields, and the access requirement. Nothing essential for an agent 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 coverage is 100% and the schema already documents the gstin parameter as a '15-character GSTIN, e.g. 29AFSPB9500E1ZY'. The description only repeats the 15-character constraint and adds no new semantic detail, 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 states a specific verb ('Verify') and resource ('a GST-registered business by its 15-character GSTIN'), and lists the returned fields. This clearly distinguishes it from sibling tools like search_gstin_by_pan and the taxpayer-session tools, even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: this is for verifying a GSTIN and does not require a taxpayer session, which signals when it is appropriate. However, it does not explicitly name alternatives or state when-not-to-use it, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
13 tool updates
v1.0.0- First observed
get_annual_turnover - First observed
get_cash_ledger - First observed
get_gstr2b - First observed
get_gstr3b - First observed
get_itc_ledger - First observed
get_ledger_balance - First observed
search_gstin_by_pan - First observed
taxpayer_generate_otp - First observed
taxpayer_session_status - First observed
taxpayer_verify_otp - First observed
track_gst_returns - First observed
track_returns_current - First observed
verify_gstin
TDQS
Most tools have distinct purposes: public GSTIN/PAN lookup, taxpayer session OTP flow, return-specific fetches, and ledger queries are clearly separated. Minor overlap exists between track_gst_returns and track_returns_current, and between get_ledger_balance versus get_cash_ledger/get_itc_ledger, but the descriptions sufficiently clarify the difference.
The naming is mostly predictable with verb-first patterns like verify_, search_, track_, and get_. The taxpayer_ prefixed OTP methods are consistent, though taxpayer_session_status breaks the verb pattern and there is minor inconsistency between track_/get_ prefixes for return-related tools.
Thirteen tools is a reasonable, well-scoped set for the GST India domain. Each tool covers a distinct public lookup, taxpayer session step, return retrieval, or ledger access function, and none feel redundant or excessive.
The surface covers the core GST workflows: GSTIN verification, PAN-based registration discovery, return status tracking, taxpayer session management, GSTR-2B/3B fetching, turnover, and ledger access. Minor gaps exist such as no GSTR-1 fetch, no explicit session logout, and limited return-period detail for some tools, but these do not cripple the main use cases.
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
India GST e-invoicing for AI agents - generate, query, cancel IRNs at the IRP via a GSP. Stateless.
PDF tools + invoice extraction, bank statement parsing, GST reconciliation & GSTIN validation.
Validate Indian GSTINs locally (Verhoeff), extract PAN, identify issuing state.
Access Avalara AvaTax API for tax calculation, transactions, nexus management, and compliance
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides tools to retrieve and validate Goods and Services Tax (GST) details using GST numbers, PAN cards, or company names. It enables users to check registration status, filing history, and business addresses directly through the GST Insights API.8MIT
- AlicenseAqualityBmaintenanceAn offline-first MCP server for Indian financial, tax, and government APIs, providing tools for identity validation (PAN, Aadhaar, GSTIN), tax calculations (Income Tax, TDS, GST), and master data lookups (IFSC, Pincode, HSN/SAC) with zero authentication required.6039MIT
- AlicenseNot gradedqualityDmaintenanceValidates Indian GSTIN numbers with structural checks, embedded PAN extraction, state-code lookup, and mod-36 check character validation, all via local compute.MIT
- 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.6101MIT
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/bhavykhatri/gst-india-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server