Skip to main content
Glama

Create Annexure B JSON

generate_annexure_b
Destructive

Creates the Annexure B JSON (statement of inward-supply invoices) for a GST refund of accumulated ITC (RFD-01), the file the GST portal otherwise requires from its Excel offline utility, from records that pass validate_annexure_b. Returns openUrl, a link the user opens in a browser to sign in by email, pay once per GSTIN and refund period, and download; the checked records are stored behind the link for 24 hours. With a connected account that has paid, it returns the file. The tool takes no GST portal password or OTP. ITC eligibility, reversal amounts and GSTR-2B periods come from the taxpayer's reviewed records; the tool does not infer them.

Input Schema

NameRequiredDescriptionDefault
dataYesThe document's fields, as its requirements tool lists them, or a JSON file from the official utility unchanged.
linkNoThe openUrl from the other generate tool's result, so that one link holds both files.
directNotrue to have the file returned to this client. It needs the user's Fast GST Refund account to be connected; if it is not, the client is asked to sign in. Leave out unless the user asked for the file here.

Output Schema

NameRequiredDescriptionDefault
fileNo
claimNo
validYes
errorsNo
statusYes
messageNo
openUrlNo
summaryNo
documentYes
linkNoteNo
nextStepNo
warningsNo
documentsNo
expiresAtNo
linkStatusNo
inputFormatNo
jsonVersionNo
utilityVersionNo
generatorVersionNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • removedInput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • changedInput schema / properties / data / additionalProperties
      Previous value: -{}New value: +true
    • removedInput schema / properties / data / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / additionalProperties
      Previous value: -{}New value: +true
    • addedOutput schema / properties
      Added value: +{
      +  "claim": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "fromFp": {
      +        "type": "string"
      +      },
      +      "gstin": {
      +        "type": "string"
      +      },
      +      "paid": {
      +        "type": "boolean"
      +      },
      +      "toFp": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "document": {
      +    "type": "string"
      +  },
      +  "documents": {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "errors": {
      +    "items": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "code": {
      +          "type": "string"
      +        },
      +        "message": {
      +          "type": "string"
      +        },
      +        "path": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "path",
      +        "code",
      +        "message"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  "expiresAt": {
      +    "type": "string"
      +  },
      +  "file": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "bytes": {
      +        "type": "number"
      +      },
      +      "content": {
      +        "type": "string"
      +      },
      +      "downloadUrl": {
      +        "type": "string"
      +      },
      +      "expiresAt": {
      +        "type": "string"
      +      },
      +      "filename": {
      +        "type": "string"
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "mcpUri": {
      +        "type": "string"
      +      },
      +      "mimeType": {
      +        "type": "string"
      +      },
      +      "sha256": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "filename",
      +      "sha256",
      +      "downloadUrl"
      +    ],
      +    "type": "object"
      +  },
      +  "generatorVersion": {
      +    "type": "string"
      +  },
      +  "inputFormat": {
      +    "type": "string"
      +  },
      +  "jsonVersion": {
      +    "type": "string"
      +  },
      +  "linkNote": {
      +    "type": "string"
      +  },
      +  "linkStatus": {
      +    "type": "string"
      +  },
      +  "message": {
      +    "type": "string"
      +  },
      +  "nextStep": {
      +    "type": "string"
      +  },
      +  "openUrl": {
      +    "type": "string"
      +  },
      +  "status": {
      +    "enum": [
      +      "open_link",
      +      "payment_required",
      +      "file_ready"
      +    ],
      +    "type": "string"
      +  },
      +  "summary": {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  "utilityVersion": {
      +    "type": "string"
      +  },
      +  "valid": {
      +    "type": "boolean"
      +  },
      +  "warnings": {
      +    "items": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "code": {
      +          "type": "string"
      +        },
      +        "message": {
      +          "type": "string"
      +        },
      +        "path": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "path",
      +        "code",
      +        "message"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  }
      +}
    • removedOutput schema / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / required
      Added value: +[
      +  "document",
      +  "valid",
      +  "status"
      +]
  2. Changed5 schema fields changed
    • removedInput schema / properties / action
      Removed value: -{
      -  "default": "requirements",
      -  "description": "requirements: fields and sources. validate: check data. generate: create the file.",
      -  "enum": [
      -    "requirements",
      -    "validate",
      -    "generate"
      -  ],
      -  "type": "string"
      -}
    • changedInput schema / properties / data / description
      Previous value: -"The document fields from action=requirements, or a JSON file from the official utility unchanged. Omit for requirements."New value: +"The document's fields, as its requirements tool lists them, or a JSON file from the official utility unchanged."
    • changedInput schema / properties / direct / description
      Previous value: -"With generate: true to have the file returned to this client. It needs the user's Fast GST Refund account to be connected; if it is not, the client is asked to sign in. Omit unless the user asked for the file here."New value: +"true to have the file returned to this client. It needs the user's Fast GST Refund account to be connected; if it is not, the client is asked to sign in. Leave out unless the user asked for the file here."
    • changedInput schema / properties / link / description
      Previous value: -"With generate: the openUrl from the other generator's result, so that one link holds both files."New value: +"The openUrl from the other generate tool's result, so that one link holds both files."
    • addedInput schema / required
      Added value: +[
      +  "data"
      +]
  3. Changed8 schema fields changed
    • addedInput schema / properties / action / description
      Added value: +"requirements: fields and sources. validate: check data. generate: create the file."
    • changedInput schema / properties / data / additionalProperties
      Previous value: -falseNew value: +{}
    • addedInput schema / properties / data / description
      Added value: +"The document fields from action=requirements, or a JSON file from the official utility unchanged. Omit for requirements."
    • removedInput schema / properties / data / properties
      Removed value: -{
      -  "filename": {
      -    "description": "Unique upload filename without .json. Use a different filename for each part of a split upload.",
      -    "pattern": "^[A-Za-z0-9_-]{1,64}$",
      -    "type": "string"
      -  },
      -  "fromFp": {
      -    "description": "Refund return period mmyyyy.",
      -    "pattern": "^(0[1-9]|1[0-2])\\d{4}$",
      -    "type": "string"
      -  },
      -  "gstin": {
      -    "pattern": "^\\d{2}[A-Z]{5}\\d{4}[A-Z][1-9A-Z][Z1-9A-J][0-9A-Z]$",
      -    "type": "string"
      -  },
      -  "invoices": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "camt": {
      -          "description": "Non-negative INR decimal string, max 15 integer digits and 2 decimals; e.g. 1180.50. No commas or currency symbol.",
      -          "pattern": "^(?:0|[1-9]\\d{0,14})(?:\\.\\d{1,2})?$",
      -          "type": "string"
      -        },
      -        "catOfInv": {
      -          "enum": [
      -            "Inputs",
      -            "Input Services",
      -            "Capital Goods"
      -          ],
      -          "type": "string"
      -        },
      -        "cessamt": {
      -          "description": "Non-negative INR decimal string, max 15 integer digits and 2 decimals; e.g. 1180.50. No commas or currency symbol.",
      -          "pattern": "^(?:0|[1-9]\\d{0,14})(?:\\.\\d{1,2})?$",
      -          "type": "string"
      -        },
      -        "elgItc": {
      -          "enum": [
      -            "Yes",
      -            "No",
      -            "Partially"
      -          ],
      -          "type": "string"
      -        },
      -        "elgItcAmt": {
      -          "description": "Non-negative INR decimal string, max 15 integer digits and 2 decimals; e.g. 1180.50. No commas or currency symbol.",
      -          "pattern": "^(?:0|[1-9]\\d{0,14})(?:\\.\\d{1,2})?$",
      -          "type": "string"
      -        },
      -        "hsnSac": {
      -          "pattern": "^(?:\\d{4}|\\d{6}|\\d{8})$",
      -          "type": "string"
      -        },
      -        "iamt": {
      -          "description": "Non-negative INR decimal string, max 15 integer digits and 2 decimals; e.g. 1180.50. No commas or currency symbol.",
      -          "pattern": "^(?:0|[1-9]\\d{0,14})(?:\\.\\d{1,2})?$",
      -          "type": "string"
      -        },
      -        "idt": {
      -          "description": "Calendar date dd-mm-yyyy, not a future date.",
      -          "pattern": "^\\d{2}-\\d{2}-\\d{4}$",
      -          "type": "string"
      -        },
      -        "inelgItcAmt": {
      -          "description": "Non-negative INR decimal string, max 15 integer digits and 2 decimals; e.g. 1180.50. No commas or currency symbol.",
      -          "pattern": "^(?:0|[1-9]\\d{0,14})(?:\\.\\d{1,2})?$",
      -          "type": "string"
      -        },
      -        "inum": {
      -          "pattern": "^[A-Za-z0-9/-]{1,16}$",
      -          "type": "string"
      -        },
      -        "isItcBlocked": {
      -          "enum": [
      -            "Yes",
      -            "No",
      -            "Partially"
      -          ],
      -          "type": "string"
      -        },
      -        "istype": {
      -          "enum": [
      -            "Invoice/Bill of Entry",
      -            "Credit Note",
      -            "Debit Note"
      -          ],
      -          "type": "string"
      -        },
      -        "portCode": {
      -          "anyOf": [
      -            {
      -              "pattern": "^[A-Za-z0-9]{6}$",
      -              "type": "string"
      -            },
      -            {
      -              "const": "",
      -              "type": "string"
      -            }
      -          ]
      -        },
      -        "returnPeriod2B": {
      -          "description": "Actual GSTR-2B period mm-yyyy; empty for imported services (including SEZ) and unregistered RCM.",
      -          "pattern": "^(?:(?:0[1-9]|1[0-2])-\\d{4})?$",
      -          "type": "string"
      -        },
      -        "samt": {
      -          "description": "Non-negative INR decimal string, max 15 integer digits and 2 decimals; e.g. 1180.50. No commas or currency symbol.",
      -          "pattern": "^(?:0|[1-9]\\d{0,14})(?:\\.\\d{1,2})?$",
      -          "type": "string"
      -        },
      -        "snm": {
      -          "maxLength": 100,
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "stin": {
      -          "anyOf": [
      -            {
      -              "pattern": "^\\d{2}[A-Z]{5}\\d{4}[A-Z][1-9A-Z][Z1-9A-J][0-9A-Z]$",
      -              "type": "string"
      -            },
      -            {
      -              "const": "",
      -              "type": "string"
      -            }
      -          ]
      -        },
      -        "typeOfInwardSupply": {
      -          "enum": [
      -            "Import of Goods",
      -            "Import of Services",
      -            "Import of Goods(Supplies from SEZ to DTA)",
      -            "Import of Services(Supplies from SEZ to DTA)",
      -            "Inward Supplies from Registered Persons",
      -            "Inward Supplies liable to Reverse Charge (Registered Persons)",
      -            "Inward Supplies liable to Reverse Charge (Unregistered Persons)",
      -            "Inward Supplies from ISD"
      -          ],
      -          "type": "string"
      -        },
      -        "val": {
      -          "description": "Allocated document value including tax for this category/HSN row. ISD must use 0.",
      -          "pattern": "^(?:0|[1-9]\\d{0,14})(?:\\.\\d{1,2})?$",
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "typeOfInwardSupply",
      -        "istype",
      -        "stin",
      -        "snm",
      -        "inum",
      -        "idt",
      -        "portCode",
      -        "val",
      -        "catOfInv",
      -        "hsnSac",
      -        "camt",
      -        "samt",
      -        "iamt",
      -        "cessamt",
      -        "isItcBlocked",
      -        "elgItc",
      -        "elgItcAmt",
      -        "inelgItcAmt",
      -        "returnPeriod2B"
      -      ],
      -      "type": "object"
      -    },
      -    "maxItems": 10000,
      -    "minItems": 1,
      -    "type": "array"
      -  },
      -  "reversals": {
      -    "additionalProperties": false,
      -    "description": "Explicit GSTR-3B reversal amounts. Confirm all zero values. For multiple files put reversals only in the final file.",
      -    "properties": {
      -      "revCGST": {
      -        "description": "Non-negative INR decimal string, max 15 integer digits and 2 decimals; e.g. 1180.50. No commas or currency symbol.",
      -        "pattern": "^(?:0|[1-9]\\d{0,14})(?:\\.\\d{1,2})?$",
      -        "type": "string"
      -      },
      -      "revCess": {
      -        "description": "Non-negative INR decimal string, max 15 integer digits and 2 decimals; e.g. 1180.50. No commas or currency symbol.",
      -        "pattern": "^(?:0|[1-9]\\d{0,14})(?:\\.\\d{1,2})?$",
      -        "type": "string"
      -      },
      -      "revIGST": {
      -        "description": "Non-negative INR decimal string, max 15 integer digits and 2 decimals; e.g. 1180.50. No commas or currency symbol.",
      -        "pattern": "^(?:0|[1-9]\\d{0,14})(?:\\.\\d{1,2})?$",
      -        "type": "string"
      -      },
      -      "revOthCGST": {
      -        "description": "Non-negative INR decimal string, max 15 integer digits and 2 decimals; e.g. 1180.50. No commas or currency symbol.",
      -        "pattern": "^(?:0|[1-9]\\d{0,14})(?:\\.\\d{1,2})?$",
      -        "type": "string"
      -      },
      -      "revOthCess": {
      -        "description": "Non-negative INR decimal string, max 15 integer digits and 2 decimals; e.g. 1180.50. No commas or currency symbol.",
      -        "pattern": "^(?:0|[1-9]\\d{0,14})(?:\\.\\d{1,2})?$",
      -        "type": "string"
      -      },
      -      "revOthIGST": {
      -        "description": "Non-negative INR decimal string, max 15 integer digits and 2 decimals; e.g. 1180.50. No commas or currency symbol.",
      -        "pattern": "^(?:0|[1-9]\\d{0,14})(?:\\.\\d{1,2})?$",
      -        "type": "string"
      -      },
      -      "revOthSGST": {
      -        "description": "Non-negative INR decimal string, max 15 integer digits and 2 decimals; e.g. 1180.50. No commas or currency symbol.",
      -        "pattern": "^(?:0|[1-9]\\d{0,14})(?:\\.\\d{1,2})?$",
      -        "type": "string"
      -      },
      -      "revSGST": {
      -        "description": "Non-negative INR decimal string, max 15 integer digits and 2 decimals; e.g. 1180.50. No commas or currency symbol.",
      -        "pattern": "^(?:0|[1-9]\\d{0,14})(?:\\.\\d{1,2})?$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "revCGST",
      -      "revSGST",
      -      "revIGST",
      -      "revCess",
      -      "revOthCGST",
      -      "revOthSGST",
      -      "revOthIGST",
      -      "revOthCess"
      -    ],
      -    "type": "object"
      -  },
      -  "toFp": {
      -    "description": "Refund return period mmyyyy.",
      -    "pattern": "^(0[1-9]|1[0-2])\\d{4}$",
      -    "type": "string"
      -  }
      -}
    • addedInput schema / properties / data / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • removedInput schema / properties / data / required
      Removed value: -[
      -  "gstin",
      -  "fromFp",
      -  "toFp",
      -  "filename",
      -  "reversals",
      -  "invoices"
      -]
    • addedInput schema / properties / direct
      Added value: +{
      +  "description": "With generate: true to have the file returned to this client. It needs the user's Fast GST Refund account to be connected; if it is not, the client is asked to sign in. Omit unless the user asked for the file here.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / link
      Added value: +{
      +  "description": "With generate: the openUrl from the other generator's result, so that one link holds both files.",
      +  "maxLength": 300,
      +  "type": "string"
      +}
  4. Added

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the full interaction model: the returned openUrl, browser email sign-in, payment once per GSTIN and refund period, 24-hour storage of checked records, direct-return behavior for connected paid accounts, and the absence of any GST portal password/OTP. It also states the tool does not infer ITC eligibility, reversal amounts, or GSTR-2B periods.

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?

Front-loads the core purpose in the first clause and keeps to three information-dense sentences, but the middle sentence packs several distinct behaviors (sign-in, payment, expiration, download) into one long construction at some cost to scannability.

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?

With an output schema present, return values need not be explained, yet the description still clarifies what the link yields and how long it lives. For a multi-step, payment-gated generation tool, nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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 data, link, and direct. The description adds only marginal parameter-level meaning (the connected-account behavior behind direct), which does not exceed the schema baseline.

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 and resource — creating the Annexure B JSON (inward-supply invoice statement) for an RFD-01 GST refund — with the domain context that distinguishes it from siblings. It also names validate_annexure_b as the gate for input records, so an agent can separate generation from validation without reading either schema.

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?

Implies the prerequisite that records must pass validate_annexure_b, and gives explicit guidance on the direct flag ('Leave out unless the user asked for the file here'). It does not, however, state when generation is not appropriate or point to alternatives like get_annexure_b_requirements for field discovery.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.