Skip to main content
Glama
vishnu27597

Sandbox GSTR-1 MCP Server

by vishnu27597

Sandbox GSTR-1 MCP Server

License: MIT Python 3.11+ MCP Protocol

A powerful Model Context Protocol (MCP) server for automating GSTR-1 (Goods and Services Tax Return - 1) filing through the Sandbox.co APIs. Seamlessly integrate with Claude Desktop or Claude API to automate your GST return filing process.

๐Ÿš€ Quick Start

For Claude Desktop Users

  1. Clone the repository:

    git clone https://github.com/yourusername/sandbox-gstr1-mcp.git
    cd sandbox-gstr1-mcp
  2. Install dependencies:

    pip install -r requirements.txt
  3. Add to Claude Desktop:

    • Open your Claude Desktop configuration file:

      • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

      • Windows: %APPDATA%\Claude\claude_desktop_config.json

      • Linux: ~/.config/Claude/claude_desktop_config.json

    • Add this configuration:

      {
        "mcpServers": {
          "sandbox-gstr1": {
            "command": "python",
            "args": ["/path/to/sandbox-gstr1-mcp/server.py"],
            "env": {
              "SANDBOX_API_KEY": "key_test_ed6b10d21cf546d7b4b600021f91c341",
              "SANDBOX_API_SECRET": "secret_test_798d3274325741fab93dd24bbb786a3a"
            }
          }
        }
      }
  4. Restart Claude Desktop and start using the GSTR-1 filing tools!

For Developers

# Clone and setup
git clone https://github.com/yourusername/sandbox-gstr1-mcp.git
cd sandbox-gstr1-mcp

# Install dependencies
pip install -r requirements.txt

# Run the server
export SANDBOX_API_KEY="key_test_ed6b10d21cf546d7b4b600021f91c341"
python server.py

Related MCP server: FreshBooks MCP Server

๐Ÿ“‹ Features

Complete GSTR-1 Filing Workflow

  • โœ… Taxpayer Authentication: Generate and manage 6-hour sessions

  • โœ… Data Submission: Save B2B, B2CL, B2CS, HSN, and document data

  • โœ… Status Monitoring: Real-time filing status tracking

  • โœ… Filing Initialization: Prepare returns for submission

  • โœ… Summary Retrieval: Get section-wise summaries and checksums

  • โœ… OTP Generation: Electronic Verification Code generation

  • โœ… Return Filing: Submit final GSTR-1 with OTP verification

  • โœ… Excel Conversion: Transform Excel output to API format

Supported GSTR-1 Sections

Section

Type

Description

B2B

Business-to-Business

Regular invoices to registered businesses

B2CL

B2C Large

Large value B2C invoices (>โ‚น1,00,000 from Aug 2024)

B2CS

B2C Small

Aggregated B2C transactions

HSN

Summary

Harmonized System of Nomenclature aggregation

Credit Notes

Amendments

For refunds and adjustments

Exports

International

Export transactions

Amendments

Revisions

Amendments to previously filed returns

๐Ÿ› ๏ธ Available Tools

The MCP server exposes 8 powerful tools for GSTR-1 filing:

1. Generate Taxpayer Session

generate_taxpayer_session(gstin, username)

Creates a 6-hour valid taxpayer session token.

2. Save GSTR-1 Data

save_gstr1_data(access_token, gstin, ret_period, gstr1_data)

Uploads GSTR-1 data for validation.

3. Check Return Status

check_return_status(access_token, gstin, ret_period, reference_id)

Monitors filing operation status.

4. Proceed to File

proceed_to_file(access_token, gstin, ret_period, is_nil)

Initializes the filing process.

5. Get GSTR-1 Summary

get_gstr1_summary(access_token, gstin, ret_period, summary_type)

Retrieves section summaries and checksums.

6. Generate EVC OTP

generate_evc_otp(access_token, pan)

Generates Electronic Verification Code OTP.

7. File GSTR-1

file_gstr1(access_token, gstin, ret_period, pan, otp, sec_sum, chksum)

Submits the final GSTR-1 return.

8. Convert Excel to Sandbox Payload

convert_excel_to_sandbox_payload(excel_path)

Transforms Excel output to API format.

๐Ÿ“– Documentation

๐Ÿ”ง Configuration

Environment Variables

# Required
export SANDBOX_API_KEY="key_test_ed6b10d21cf546d7b4b600021f91c341"
export SANDBOX_API_SECRET="secret_test_798d3274325741fab93dd24bbb786a3a"

# Optional
export SANDBOX_API_URL="https://api.sandbox.co.in"
export SANDBOX_API_VERSION="1.0.0"
export LOG_LEVEL="INFO"

Test Credentials

The server comes pre-configured with test credentials that don't consume quota:

  • API Key: key_test_ed6b10d21cf546d7b4b600021f91c341

  • API Secret: secret_test_798d3274325741fab93dd24bbb786a3a

  • Environment: Test (safe for development)

๐Ÿ“Š GSTR-1 Filing Workflow

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  1. Generate Taxpayer Session (6-hour validity)             โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  2. Save GSTR-1 Data (B2B, B2CL, B2CS, HSN, etc.)          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  3. Check Return Status (Poll until complete)               โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  4. Proceed to File (Initialize filing)                     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  5. Get GSTR-1 Summary (Get checksums)                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  6. Generate EVC OTP (For verification)                     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  7. File GSTR-1 (Submit with OTP)                           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚
                     โ–ผ
            โœ… Filing Complete

๐Ÿงช Testing

Run the comprehensive test suite:

python test_server.py

Expected output:

============================================================
Test Summary
============================================================
โœ“ PASSED: Imports
โœ“ PASSED: API Endpoints
โœ“ PASSED: Payload Structure
โœ“ PASSED: Credentials
โœ“ PASSED: Workflow

Total: 5/5 tests passed
============================================================

๐Ÿ’ฌ Using with Claude

Claude Desktop

Once configured, use natural language:

"File a GSTR-1 return for GSTIN 29AAACQ3770E000 for March 2026"

"Generate a taxpayer session and save GSTR-1 data with B2B invoices"

"Check the status of my GSTR-1 filing with reference ID xyz123"

"Convert my GSTR-1 Excel file to the Sandbox API format"

Claude API

import anthropic

client = anthropic.Anthropic(api_key="your-api-key")

response = client.messages.create(
    model="claude-3-5-sonnet-20241022",
    max_tokens=1024,
    tools=[...],  # MCP tools
    messages=[
        {
            "role": "user",
            "content": "File a GSTR-1 return for GSTIN 29AAACQ3770E000"
        }
    ]
)

๐Ÿ“ฆ Installation Methods

git clone https://github.com/yourusername/sandbox-gstr1-mcp.git
cd sandbox-gstr1-mcp
pip install -r requirements.txt

Method 2: Using Virtual Environment

git clone https://github.com/yourusername/sandbox-gstr1-mcp.git
cd sandbox-gstr1-mcp
python3.11 -m venv venv
source venv/bin/activate  # macOS/Linux
# or
venv\Scripts\activate  # Windows
pip install -r requirements.txt

Method 3: Docker

docker build -t sandbox-gstr1-mcp:1.0.0 .
docker run -e SANDBOX_API_KEY="your-key" sandbox-gstr1-mcp:1.0.0

๐Ÿ” Security

  • โœ… Test credentials provided for safe development

  • โœ… Environment variables for sensitive data

  • โœ… No credentials in code or version control

  • โœ… HTTPS for all API calls

  • โœ… Comprehensive error handling and logging

๐Ÿ› Troubleshooting

MCP Server Not Appearing in Claude Desktop

  1. Verify configuration file path is correct

  2. Check Python path is accessible

  3. Ensure all dependencies are installed

  4. Restart Claude Desktop completely

  5. Check Claude logs for errors

API Connection Errors

  1. Verify API key is correct

  2. Check internet connectivity

  3. Confirm API URL is correct

  4. Review server logs for details

Session Expired

Generate a new taxpayer session (valid for 6 hours).

For more troubleshooting, see CLAUDE_INTEGRATION.md.

๐Ÿ“š Examples

File a Nil Return

from server import generate_taxpayer_session, save_gstr1_data

session = generate_taxpayer_session(
    gstin="29AAACQ3770E000",
    username="taxpayer_username"
)

save_gstr1_data(
    access_token=session["access_token"],
    gstin="29AAACQ3770E000",
    ret_period="032026",
    gstr1_data={
        "fp": "032026",
        "gstin": "29AAACQ3770E000",
        "gt": 0,
        "cur_gt": 0,
        "b2b": [],
        "b2cl": [],
        "b2cs": [],
        "hsn": {"data": []},
        "docs": {"doc_det": []}
    }
)

File B2B Invoices

See EXAMPLES.md for complete examples including:

  • B2B invoices

  • B2CL large value invoices

  • B2CS small value transactions

  • HSN summaries

  • Credit notes

  • Error handling

  • Complete end-to-end workflow

๐Ÿค Contributing

Contributions are welcome! Please:

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Write tests

  5. Submit a pull request

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ”— Resources

๐Ÿ“ž Support

For issues or questions:

  1. Check the troubleshooting guide

  2. Review the documentation

  3. Check examples

  4. Open an issue on GitHub

๐ŸŽฏ Roadmap

  • Support for GSTR-3B filing

  • Support for GSTR-9 filing

  • Batch filing for multiple returns

  • Webhook support for filing notifications

  • Dashboard for filing history

  • Multi-language support

  • Advanced error recovery

๐Ÿ“Š Status

Component

Status

Core Server

โœ… Production Ready

API Integration

โœ… Complete

Claude Desktop

โœ… Tested

Claude API

โœ… Supported

Documentation

โœ… Comprehensive

Tests

โœ… Passing

๐Ÿ™ Acknowledgments

  • Built on top of Sandbox.co APIs

  • Integrates with Claude via MCP Protocol

  • Inspired by the unified GSTR-1 skill

๐Ÿ“ Changelog

v1.0.0 (April 1, 2026)

  • Initial release

  • Complete GSTR-1 filing workflow

  • All 7 core tools implemented

  • Excel to JSON conversion

  • Comprehensive documentation

  • Full test suite

  • Claude Desktop integration

  • Claude API support


Made with โค๏ธ for GST compliance automation

Version: 1.0.0
Last Updated: April 1, 2026
Python: 3.11+
License: MIT

Available Tools

8 tools
check_return_statusA

Poll the status of a save or proceed operation (Step 3).

Call this repeatedly (every 5 seconds) until status == "COMPLETED".

Args: access_token: Taxpayer session token gstin: 15-digit GST Identification Number ret_period: Return period in MMYYYY format reference_id: The reference_id returned by save_gstr1_data() or proceed_to_file()

Returns: Dict with status field ("PENDING", "PROCESSING", "COMPLETED", "ERROR").

ParametersJSON Schema
NameRequiredDescriptionDefault
gstinYes
ret_periodYes
access_tokenYes
reference_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it reveals that this is a polling operation, specifies polling cadence, enumerates possible status values, and states the return shape. It could additionally note that polling has no side effects or what to do on ERROR, 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.

Conciseness5/5

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

The description is compact and well-structured: purpose first, then polling instruction, then concise args list, then return values. Every sentence adds necessary information with no filler.

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

Completeness5/5

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

For a straightforward polling tool, the description covers the invocation pattern, all required parameters, the completion condition, and the status vocabulary. The presence of an output schema reduces the need to describe the return structure further, so nothing critical is missing.

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

Parameters5/5

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

Schema description coverage is 0%, but the description compensates by explaining every parameter: access_token is the taxpayer session token, gstin is a 15-digit identifier, ret_period uses MMYYYY format, and reference_id is the one returned by the upstream save/proceed calls. This adds real meaning beyond the raw parameter names.

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

Purpose5/5

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

The description clearly states the tool's job: poll the status of a save or proceed operation, explicitly tagged as Step 3. This is a specific verb+resource pairing that distinguishes it from siblings like save_gstr1_data and proceed_to_file.

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

Usage Guidelines5/5

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

The description gives direct operational guidance: call repeatedly every 5 seconds until status equals COMPLETED. It also tells the agent where reference_id comes from (save_gstr1_data or proceed_to_file), effectively specifying when and after what this tool should be invoked.

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

convert_excel_to_sandbox_payloadA

Convert a GSTR-1 Excel file (output of the unified-gstr1 skill) into the JSON payload format required by the Sandbox.co save_gstr1_data() API.

Reads the b2b, b2cl, b2cs, and hsn sheets from the Excel file and maps each row to the corresponding Sandbox.co API structure.

Args: excel_path: Absolute path to the GSTR-1 Excel file

Returns: Dict with the formatted payload ready to pass to save_gstr1_data(), or an error dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
excel_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses the read operation on specific sheets, the mapping behavior, and the return type including an error-dict case. It does not mention edge conditions like missing sheets, but the core side-effect-free conversion behavior 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.

Conciseness5/5

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

The description is front-loaded with the core purpose, then gives the concrete sheets and a compact Args/Returns structure. Every sentence contributes useful information with no filler.

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

Completeness4/5

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

For a single-parameter conversion tool, the description is nearly complete: it states the input, the transformation scope, and the return format, and an output schema exists. It could be slightly stronger by noting that the tool does not call the API itself, but the phrase 'ready to pass' already implies that.

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

Parameters4/5

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

Schema coverage is 0%, but the description compensates by explaining that excel_path must be an absolute path to the GSTR-1 Excel file. This adds real meaning beyond the schema's bare 'Excel Path' label, though it could add slight detail such as expected file extension.

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

Purpose5/5

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

The description states a specific verb ('Convert'), a precise input (GSTR-1 Excel file from unified-gstr1 skill), and a precise output (JSON payload for Sandbox.co save_gstr1_data). It also names the sheets read, making the scope unambiguous and differentiating it from sibling tools that actually submit or check returns.

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

Usage Guidelines4/5

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

It clearly positions the tool in the workflow: input is the output of unified-gstr1, and output is ready for save_gstr1_data(). This tells an agent when to call it even though it does not explicitly list exclusions or alternatives.

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

file_gstr1A

Submit the final GSTR-1 return with EVC OTP verification (Step 7 โ€” final step).

Args: access_token: Taxpayer session token gstin: 15-digit GST Identification Number ret_period: Return period in MMYYYY format pan: Permanent Account Number otp: EVC OTP received after calling generate_evc_otp() sec_sum: Section summaries array from get_gstr1_summary() chksum: Checksum string from get_gstr1_summary()

Returns: Dict with filing acknowledgement number (ARN) and status, or an error dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
otpYes
panYes
gstinYes
chksumYes
sec_sumYes
ret_periodYes
access_tokenYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that this is a submission action requiring OTP verification, and that it returns an ARN and status or an error dict. However, it doesn't disclose side effects (e.g., whether this permanently files the return, whether it can be called multiple times, or what happens on failure). The description adds some behavioral context but not deep transparency.

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

Conciseness4/5

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

The description is compact and front-loaded with the core purpose. The Args list is terse and useful, and the Returns line is brief. It could be slightly more structured (e.g., grouping related params), but every sentence earns its place.

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

Completeness4/5

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 and 7 required parameters, the description covers the workflow context (final step, OTP verification, source of derived parameters) and return value. It doesn't mention error handling details or idempotency, but for a final-step submission tool with an output schema, it is reasonably complete.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It does: it explains the source of otp, sec_sum, and chksum by naming the producing tools, and clarifies formats for gstin and ret_period. However, it doesn't explain access_token or pan beyond their names, and the schema itself provides no descriptions. The description adds meaningful meaning for 5 of 7 parameters.

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

Purpose5/5

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

The description states a specific verb ('Submit'), a specific resource ('final GSTR-1 return'), and the exact step context ('Step 7 โ€” final step'). It clearly distinguishes this from sibling tools like save_gstr1_data, get_gstr1_summary, and generate_evc_otp by framing it as the final submission step.

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

Usage Guidelines4/5

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

The description clearly indicates this is the final step in a multi-step workflow and references sibling tools by name in the parameter descriptions (e.g., 'OTP received after calling generate_evc_otp()', 'Section summaries array from get_gstr1_summary()'). It implies the tool should be used after those steps, though it doesn't explicitly state when not to use it or name alternatives for exclusion.

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

generate_evc_otpA

Generate an Electronic Verification Code (EVC) OTP for filing (Step 6).

The OTP is sent to the mobile number and email registered with the GST portal. Pass the received OTP to file_gstr1().

Args: access_token: Taxpayer session token pan: Permanent Account Number associated with the GSTIN (e.g. "ABCCQ3123E")

Returns: Dict with OTP generation status, or an error dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
panYes
access_tokenYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses that the OTP is sent to the registered mobile number and email, and that the return is a status or error dict. However, it does not mention side effects like whether previous OTPs are invalidated, rate limits, expiry, or failure modes beyond a generic error dict.

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

Conciseness4/5

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

The description is compact and front-loaded with the core purpose, followed by workflow, arguments, and return values in labeled sections. It is not bloated, though the Args section partially duplicates schema property names and the OTP term is repeated a few times.

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

Completeness4/5

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

For a two-parameter tool with an output schema present, the description covers the essential context: what it does, where it fits (Step 6), what the inputs mean, where the OTP is delivered, and the next action. Minor omissions such as expiry and rate-limit behavior keep it from being fully complete.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains access_token as a 'Taxpayer session token' and pan as a 'Permanent Account Number associated with the GSTIN' with an example format. This adds real meaning beyond the bare parameter names, though it could be richer about access_token sourcing or validation.

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

Purpose5/5

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

The description begins with a specific verb and resource: 'Generate an Electronic Verification Code (EVC) OTP for filing (Step 6).' It clarifies the tool's place in a workflow and distinguishes it from siblings like file_gstr1 and save_gstr1_data by naming the OTP generation action and the expected downstream consumer.

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

Usage Guidelines4/5

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

The description gives clear context: this is 'Step 6' in the filing process, and it instructs to 'Pass the received OTP to file_gstr1().' This helps an agent sequence the calls, though it does not explicitly state when not to use this tool or name alternative tools for other steps.

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

generate_taxpayer_sessionA

Generate a taxpayer session (access token) valid for 6 hours.

This is Step 1 of the GSTR-1 filing workflow. The returned access_token must be passed to all subsequent tool calls.

Args: gstin: 15-digit GST Identification Number (e.g. "29AAACQ3770E000") username: GST portal username of the taxpayer

Returns: Dict with access_token and session metadata, or an error dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
gstinYes
usernameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It discloses the token's 6-hour validity and the need to propagate it, and mentions an error return. However, it does not explain side effects, authentication prerequisites beyond the two params, or any security/rate-limit considerations.

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

Conciseness5/5

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

The description is concise and well-structured: a one-line purpose with token validity, workflow placement, propagation instruction, then clear Args and Returns sections. Every sentence earns its place with no filler or redundancy.

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

Completeness4/5

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

For a 2-parameter tool with an output schema, the description covers purpose, workflow position, required downstream usage, parameter meanings, and return contents. It could be improved with explicit prerequisites or error/retry context, but overall it is sufficient for correct invocation within the workflow.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate. It does: gstin is explained as a 15-digit GSTIN with an example, and username is identified as the GST portal username. This adds meaningful format and domain context absent from the input schema.

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

Purpose5/5

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

The description states a specific action and resource: generate a taxpayer session/access token, valid for 6 hours. It is clearly distinguishable from sibling workflow tools like generate_evc_otp and file_gstr1, and identifies itself as the first authentication step in the GSTR-1 workflow.

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

Usage Guidelines4/5

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

The description clearly positions the tool as Step 1 of the GSTR-1 filing workflow and instructs that the returned access_token must be passed to all subsequent tool calls. This communicates when to use it, though it does not explicitly call out alternatives or 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.

get_gstr1_summaryA

Retrieve the GSTR-1 summary including sec_sum and chksum needed for filing (Step 5).

The sec_sum and chksum values returned here must be passed directly to file_gstr1().

Args: access_token: Taxpayer session token gstin: 15-digit GST Identification Number ret_period: Return period in MMYYYY format summary_type: "long" for full section detail (default), "short" for totals only

Returns: Dict with sec_sum array and chksum string, or an error dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
gstinYes
ret_periodYes
access_tokenYes
summary_typeNolong

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. 'Retrieve' and 'needed for filing' clearly indicate a read-only preparation step rather than a filing action. The return contract (sec_sum array, chksum string, or error dict) is disclosed, which is sufficient for an agent to understand what will happen.

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

Conciseness5/5

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

The description is compact, well-organized with Args/Returns sections, and front-loads the purpose. Every sentence contributes necessary information, and there is no redundancy with the schema.

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

Completeness5/5

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

All four parameters are semantically defined, the return values are described, the downstream usage is stated, and an output schema is available. For a retrieval tool with no annotations, the description covers everything an agent needs to invoke it correctly.

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

Parameters5/5

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

Despite 0% schema description coverage, the description fully explains every parameter: access_token as the taxpayer session token, gstin as a 15-digit GSTIN, ret_period in MMYYYY format, and summary_type with 'long'/'short' semantics and a default. This adds meaning far beyond the bare property names in the schema.

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

Purpose5/5

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

The description clearly states the specific action: retrieving the GSTR-1 summary with sec_sum and chksum for filing Step 5. It names exact data elements and the downstream consumer, making the tool's role in the workflow unambiguous. It is easily distinguished from siblings like file_gstr1 and check_return_status.

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

Usage Guidelines4/5

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

The description explicitly tells the agent that the returned sec_sum and chksum must be passed directly to file_gstr1(), which is strong contextual usage guidance. It does not explicitly contrast this with alternatives like check_return_status, but the workflow positioning is clear 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.

proceed_to_fileA

Initialise the filing process after data validation is complete (Step 4).

Poll check_return_status() with the returned reference_id until COMPLETED before calling get_gstr1_summary().

Args: access_token: Taxpayer session token gstin: 15-digit GST Identification Number ret_period: Return period in MMYYYY format is_nil: "Y" for a nil return, "N" for a regular return (default "N")

Returns: Dict with reference_id for status polling, or an error dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
gstinYes
is_nilNoN
ret_periodYes
access_tokenYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool returns a reference_id for polling or an error dict, and implies an asynchronous workflow. However, it does not describe side effects of initializing the filing, idempotency, or what happens if the tool is called prematurely or repeatedly.

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

Conciseness5/5

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

The description is compact and well-structured: a one-line purpose, a direct sequencing instruction, a neatly formatted Args block, and a Returns line. No redundant prose or filler; every sentence contributes to successful invocation.

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

Completeness4/5

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

The description covers the trigger condition, downstream dependency, parameter meanings, and return contract, and an output schema exists to detail return fields. It lacks explicit notes on idempotency or error scenarios, but the provided information is sufficient for an agent to call the tool and handle the next step correctly.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully compensates by documenting every parameter: access_token as a taxpayer session token, gstin as a 15-digit GSTIN, ret_period in MMYYYY format, and is_nil with its allowed values and default. This is exactly the semantic value the schema lacks.

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

Purpose5/5

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

The description states a specific action ('Initialise the filing process') and anchors it to a defined step ('after data validation is complete (Step 4)'). It also positions itself relative to sibling tools by referencing the polling and summary steps that follow, making its role distinct from file_gstr1 or save_gstr1_data.

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

Usage Guidelines4/5

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

The description clearly says when to use the tool: after data validation is complete (Step 4). It also gives explicit sequencing guidance: poll check_return_status with the returned reference_id until COMPLETED before calling get_gstr1_summary. It does not explicitly name alternatives or exclusions, but the workflow context is strong.

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

save_gstr1_dataA

Upload GSTR-1 data to the GST portal for validation (Step 2).

After calling this tool, use check_return_status() with the returned reference_id to poll until the status is COMPLETED before proceeding.

Args: access_token: Taxpayer session token from generate_taxpayer_session() gstin: 15-digit GST Identification Number ret_period: Return period in MMYYYY format (e.g. "032026" for March 2026) gstr1_data: Complete GSTR-1 payload dict containing b2b, b2cl, b2cs, hsn, docs sections etc.

Returns: Dict with reference_id for status polling, or an error dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
gstinYes
gstr1_dataYes
ret_periodYes
access_tokenYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It reveals the asynchronous polling pattern, the need to wait for COMPLETED status, and the return shape with reference_id. It could add more about failure modes or retry behavior, but it is substantially transparent.

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

Conciseness5/5

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

Purpose is front-loaded, followed by the critical polling instruction, then concise parameter definitions and return summary. Each sentence contributes necessary information without filler or repetition.

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

Completeness4/5

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

The description covers workflow order, parameter semantics, and the asynchronous return contract, which is sufficient for correct invocation. Minor gaps remain around detailed error scenarios and explicit prerequisites beyond the token, but the provided output schema and sibling context reduce that burden.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it does. Every parameter is explained: access_token source, gstin format, ret_period format with example, and gstr1_data payload structure including key sections like b2b, b2cl, b2cs, hsn, and docs.

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

Purpose5/5

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

States a specific verb ('Upload'), resource ('GSTR-1 data'), destination ('GST portal'), and purpose ('for validation'), plus workflow position ('Step 2'). This clearly distinguishes it from sibling tools like file_gstr1 and get_gstr1_summary.

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

Usage Guidelines4/5

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

Provides explicit next-step guidance: call check_return_status with the returned reference_id and poll until COMPLETED before proceeding. It does not explicitly name negative alternatives or when not to use this tool, but the workflow step and sequencing make usage clear.

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.

  1. 8 tool updatesv1.0.0
    • First observedcheck_return_status
    • First observedconvert_excel_to_sandbox_payload
    • First observedfile_gstr1
    • First observedgenerate_evc_otp
    • First observedgenerate_taxpayer_session
    • First observedget_gstr1_summary
    • First observedproceed_to_file
    • First observedsave_gstr1_data

TDQS

A4.5/5.0

Scored across 8 tools

Disambiguation5/5

Each tool maps to a distinct step in the GSTR-1 filing workflow. Even the two filing-related tools are clearly separated by validation, polling, and EVC OTP phases, and the only polling tool is explicitly scoped to operation status.

Naming Consistency5/5

All tool names use a consistent snake_case verb_led pattern: generate_, save_, check_, proceed_to_, get_, file_, convert_. The naming reliably communicates what each tool does without mixing conventions.

Tool Count5/5

Eight tools is well-scoped for this server: seven correspond directly to the filing workflow steps, plus one Excel-to-payload converter. There is no redundant or filler tool.

Completeness5/5

The surface covers the full end-to-end filing lifecycle: session generation, data upload, status polling, filing initiation, summary retrieval, EVC OTP generation, and final submission. No workflow step is missing, and every flow ends in a usable result or explicit error.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Connects Claude Desktop to GoHighLevel CRM, providing 269+ tools across 19 categories for complete contact management, messaging, sales, marketing, e-commerce, and business operations through AI automation.
    17 npm
    197
    ISC
  • F
    license
    Not graded
    quality
    D
    maintenance
    Automates FreshBooks invoicing and time tracking through Claude, allowing users to send invoices, list invoices, log billable hours, and get financial insights via natural language commands.
    2
    -
  • F
    license
    A
    quality
    D
    maintenance
    Enables natural language interaction with TallyPrime accounting software via Claude AI, allowing querying reports, creating vouchers, and managing ledgers without manual navigation.
    17
    -