{
  "serverInfo": {
    "name": "luckpanda-tools",
    "title": "LuckPanda Document Tools",
    "version": "1.1.0",
    "description": "Create invoices, quotes, receipts and credit notes with GST or VAT, as prefilled links or PDFs.",
    "websiteUrl": "https://luckpanda.app/agents",
    "icons": [
      {
        "src": "https://luckpanda.app/icon-512.png",
        "mimeType": "image/png",
        "sizes": [
          "512x512"
        ]
      },
      {
        "src": "https://luckpanda.app/icon-192.png",
        "mimeType": "image/png",
        "sizes": [
          "192x192"
        ]
      },
      {
        "src": "https://luckpanda.app/logo.svg",
        "mimeType": "image/svg+xml",
        "sizes": [
          "any"
        ]
      }
    ]
  },
  "description": "Create invoices, quotes, receipts and credit notes with GST or VAT, as prefilled links or PDFs.",
  "transport": {
    "type": "streamable-http",
    "endpoint": "/mcp/public"
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    }
  },
  "authentication": {
    "required": false,
    "schemes": []
  },
  "instructions": "Tools for creating business documents and for GST, VAT and loan arithmetic. No account is needed to call them. create_document_link and create_document_pdf take a document (invoice, quote, proforma invoice, receipt or credit note; any supported currency; India GST, UK and EU VAT, US sales tax) and return editor_url, a link that opens the document prefilled in the LuckPanda editor for 7 days, or a PDF. PDFs from this server include a LuckPanda footer and a verification QR code. get_document_rules returns the fields and tax rules for a document type and country. calculate_gst, calculate_vat, calculate_emi, check_gstin (format only) and find_hsn_code (India, a labelled subset) are read-only. Ask the person for every detail; do not invent business names, tax IDs, prices or dates. The tools do not issue, number or send documents and do not take payment: the person reviews the result in the editor.",
  "tools": [
    {
      "name": "list_tools",
      "title": "List document pages and calculators",
      "description": "Lists the document pages on luckpanda.app (generators for invoices, quotes, proforma invoices, receipts and credit notes, plus country and trade templates) and its calculator pages, each with its URL. Optional filters: document_type, country, query. Read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Words to look for in a page's name or summary, e.g. \"freelance\" or \"GST\"."
          },
          "document_type": {
            "type": "string",
            "enum": [
              "invoice",
              "quote",
              "proforma",
              "credit_note",
              "receipt"
            ],
            "description": "The kind of document."
          },
          "country": {
            "type": "string",
            "description": "ISO alpha-2: pages for this country plus the ones for any country."
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "documents": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "slug": {
                  "type": "string"
                },
                "document_type": {
                  "type": "string"
                },
                "country": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "ISO alpha-2, or null for a page that fits any country."
                },
                "summary": {
                  "type": "string"
                },
                "page_url": {
                  "type": "string",
                  "description": "The page, which also opens prefilled with ?doc=."
                }
              },
              "required": [
                "name",
                "slug",
                "document_type",
                "country",
                "summary",
                "page_url"
              ]
            }
          },
          "calculators": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "slug": {
                  "type": "string"
                },
                "page_url": {
                  "type": "string"
                },
                "api_url": {
                  "type": "string"
                },
                "mcp_tool": {
                  "type": "string"
                }
              },
              "required": [
                "name",
                "slug",
                "page_url"
              ]
            }
          },
          "docs_url": {
            "type": "string",
            "description": "Public page describing this server and its tools."
          }
        },
        "required": [
          "documents",
          "calculators"
        ]
      },
      "annotations": {
        "title": "List document pages and calculators",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_document_rules",
      "title": "Get fields and tax rules for a document",
      "description": "Returns what to collect before creating a document of a given type and country: required, recommended and optional fields, the tax ID and tax names, the country's invoicing rules (for example India GST rule 46, UK VAT invoice contents), the CGST/SGST versus IGST split and state codes for India, and credit-note reasons. Read-only.",
      "inputSchema": {
        "type": "object",
        "required": [
          "document_type",
          "country"
        ],
        "properties": {
          "document_type": {
            "type": "string",
            "enum": [
              "invoice",
              "quote",
              "proforma",
              "credit_note",
              "receipt"
            ],
            "description": "The kind of document."
          },
          "country": {
            "type": "string",
            "description": "ISO alpha-2 of the seller, e.g. IN, US, GB, DE."
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "document_type": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "country_name": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "locale": {
            "type": "string"
          },
          "formats": {
            "type": "object",
            "properties": {
              "money": {
                "type": "string"
              },
              "date": {
                "type": "string"
              }
            },
            "required": [
              "money",
              "date"
            ]
          },
          "tax": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "seller_tax_id": {
                "type": "string"
              },
              "seller_tax_id_example": {
                "type": "string"
              },
              "vat_country": {
                "type": "boolean"
              }
            },
            "required": [
              "name",
              "seller_tax_id"
            ]
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "field": {
                  "type": "string"
                },
                "need": {
                  "type": "string",
                  "enum": [
                    "required",
                    "recommended",
                    "optional"
                  ]
                },
                "note": {
                  "type": "string"
                }
              },
              "required": [
                "field",
                "need"
              ]
            }
          },
          "what_to_include": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "field": {
                  "type": "string"
                },
                "what": {
                  "type": "string"
                }
              },
              "required": [
                "field",
                "what"
              ]
            }
          },
          "rules": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "gst": {
            "type": "object",
            "properties": {},
            "required": [],
            "description": "India only: the CGST/SGST versus IGST split, place of supply and state codes."
          },
          "reasons": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "code": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                }
              },
              "required": [
                "code",
                "label"
              ]
            },
            "description": "Credit notes only."
          },
          "disclaimer": {
            "type": "string"
          }
        },
        "required": [
          "document_type",
          "country",
          "currency",
          "tax",
          "fields",
          "rules",
          "disclaimer"
        ]
      },
      "annotations": {
        "title": "Get fields and tax rules for a document",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "create_document_link",
      "title": "Create a prefilled document link",
      "description": "Validates a document (invoice, quote, proforma invoice, receipt or credit note) and returns editor_url, a short link that opens it prefilled in the LuckPanda editor, where the person can review, edit and download the PDF. Also returns the totals with tax worked out, the required fields still missing and any parts left out as invalid. Side effect: the document is stored on LuckPanda's servers for 7 days under a random link id (not listed or indexed), and every call creates a new link. Nothing is issued, numbered or sent. Use details the person gave; do not invent them.",
      "inputSchema": {
        "type": "object",
        "required": [
          "doc"
        ],
        "properties": {
          "page": {
            "type": "string",
            "description": "The page to open: a slug (\"credit-note\", \"gst-invoice-format\") or its URL. Default: the generator for the document type and country."
          },
          "doc": {
            "type": "object",
            "description": "A document to prefill. Parts that fail validation are left out and listed in `ignored`; nothing is ever rendered as HTML.",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "invoice",
                  "quote",
                  "proforma",
                  "credit_note",
                  "receipt"
                ],
                "description": "Document type."
              },
              "country_code": {
                "type": "string",
                "enum": [
                  "US",
                  "GB",
                  "DE",
                  "FR",
                  "NL",
                  "IE",
                  "AE",
                  "SG",
                  "AU",
                  "CA",
                  "IN",
                  "ES",
                  "IT",
                  "BE",
                  "AT",
                  "PT",
                  "FI",
                  "MX",
                  "BR"
                ],
                "description": "The seller's country: decides currency, formats and tax rules. If missing: the currency's country (INR -> IN, GBP -> GB …; EUR -> DE unless the caller is in a euro country), else the caller's country."
              },
              "currency": {
                "type": "string",
                "enum": [
                  "USD",
                  "EUR",
                  "GBP",
                  "INR",
                  "AED",
                  "SGD",
                  "AUD",
                  "CAD",
                  "MXN",
                  "BRL"
                ],
                "description": "ISO 4217 code. If missing: the seller country's currency."
              },
              "seller": {
                "type": "object",
                "description": "Your business (who issues the document; for a receipt, who received the money).",
                "properties": {
                  "name": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "address": {
                    "type": "string",
                    "maxLength": 600,
                    "description": "New lines as \\n."
                  },
                  "email": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "tax_id": {
                    "type": "string",
                    "maxLength": 60,
                    "description": "GSTIN (India), VAT number (UK/EU), EIN (US), ABN, TRN..."
                  },
                  "country_code": {
                    "type": "string",
                    "pattern": "^[A-Za-z]{2}$",
                    "description": "Buyer only; the seller's country is the document's country_code."
                  },
                  "state_code": {
                    "type": "string",
                    "description": "India: two-digit GST state code or the state name."
                  }
                }
              },
              "buyer": {
                "type": "object",
                "description": "The client (for a receipt, who paid).",
                "properties": {
                  "name": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "address": {
                    "type": "string",
                    "maxLength": 600,
                    "description": "New lines as \\n."
                  },
                  "email": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "tax_id": {
                    "type": "string",
                    "maxLength": 60,
                    "description": "GSTIN (India), VAT number (UK/EU), EIN (US), ABN, TRN..."
                  },
                  "country_code": {
                    "type": "string",
                    "pattern": "^[A-Za-z]{2}$",
                    "description": "Buyer only; the seller's country is the document's country_code."
                  },
                  "state_code": {
                    "type": "string",
                    "description": "India: two-digit GST state code or the state name."
                  }
                }
              },
              "issue_date": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                "description": "YYYY-MM-DD. Default: today."
              },
              "due_date": {
                "type": [
                  "string",
                  "null"
                ],
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                "description": "Due date; for a quote, valid until."
              },
              "lines": {
                "type": "array",
                "maxItems": 100,
                "items": {
                  "type": "object",
                  "properties": {
                    "description": {
                      "type": "string",
                      "maxLength": 500
                    },
                    "quantity": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Decimal, up to 6 decimals (\"1\", \"2.5\")."
                    },
                    "unit_price_minor": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Price per unit in minor units (cents, paise)."
                    },
                    "unit_price": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Alternative: price per unit in major units (\"1250.50\")."
                    },
                    "tax_rate_bp": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 10000,
                      "description": "Tax rate in basis points: 18% = 1800."
                    },
                    "tax_percent": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Alternative: tax rate in percent (18)."
                    },
                    "unit_code": {
                      "type": "string",
                      "description": "unit | hour | day | month | item"
                    },
                    "discount_minor": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "hsn_sac": {
                      "type": "string",
                      "description": "India: HSN (goods, 4/6/8 digits) or SAC (services, 6 digits starting 99)."
                    }
                  }
                },
                "description": "The items or services, 1 to 100 lines."
              },
              "notes": {
                "type": "string",
                "maxLength": 2000,
                "description": "Shown on the document, for example a thank-you or a delivery note."
              },
              "terms": {
                "type": "string",
                "maxLength": 2000,
                "description": "Payment terms and bank details; for a quote, validity and delivery terms."
              },
              "place_of_supply": {
                "type": "string",
                "description": "India: GST state code, or 96 for another country."
              },
              "export_type": {
                "type": "string",
                "enum": [
                  "none",
                  "lut",
                  "with_payment"
                ],
                "description": "India, buyer abroad."
              },
              "original_invoice_number": {
                "type": "string",
                "maxLength": 40,
                "description": "Credit notes: the invoice it corrects."
              },
              "original_invoice_date": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
              },
              "reason": {
                "type": "string",
                "description": "Credit notes: refund, product_return, discount, price_correction, defect, cancellation, tax_correction, other, or the reason in your own words."
              },
              "reason_note": {
                "type": "string",
                "maxLength": 500
              }
            }
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "editor_url": {
            "type": "string",
            "description": "Short link that opens the document prefilled in the LuckPanda editor. Valid until expires_at (7 days)."
          },
          "expires_at": {
            "type": "string",
            "description": "ISO 8601 time the link stops opening."
          },
          "page_url": {
            "type": "string",
            "description": "The editor page the link opens, without the document."
          },
          "prefill_url": {
            "type": "string",
            "description": "A self-contained link with the document in the URL; present only when it is short enough."
          },
          "document_type": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "totals": {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "description": "ISO 4217 code."
              },
              "subtotal_minor": {
                "type": "integer",
                "description": "Before tax and discount, in minor units (cents, paise)."
              },
              "discount_minor": {
                "type": "integer"
              },
              "tax_minor": {
                "type": "integer"
              },
              "total_minor": {
                "type": "integer",
                "description": "Amount payable, in minor units."
              },
              "formatted": {
                "type": "object",
                "properties": {
                  "subtotal": {
                    "type": "string"
                  },
                  "tax": {
                    "type": "string"
                  },
                  "total": {
                    "type": "string"
                  }
                },
                "required": [
                  "subtotal",
                  "tax",
                  "total"
                ],
                "description": "The amounts formatted for the document's country."
              },
              "tax_lines": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "rate_percent": {
                      "type": "number"
                    },
                    "amount": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "name",
                    "rate_percent",
                    "amount"
                  ]
                }
              },
              "supply": {
                "type": "string",
                "description": "India: the kind of supply, when it is known."
              }
            },
            "required": [
              "currency",
              "total_minor",
              "formatted",
              "tax_lines"
            ],
            "description": "Totals with tax worked out."
          },
          "missing": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Required fields still empty, as dotted paths (e.g. buyer.name, lines.0.description)."
          },
          "ignored": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Parts of the input that were left out because they were invalid, as dotted paths."
          },
          "docs_url": {
            "type": "string",
            "description": "Public page describing this server and its tools."
          }
        },
        "required": [
          "editor_url",
          "expires_at",
          "page_url",
          "document_type",
          "country",
          "currency",
          "totals",
          "missing",
          "ignored"
        ]
      },
      "annotations": {
        "title": "Create a prefilled document link",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "create_document_pdf",
      "title": "Create a document PDF",
      "description": "Generates a PDF of a document (invoice, quote, proforma invoice, receipt or credit note) and returns it base64-encoded in structuredContent.pdf_base64, with its verification URL and an editor_url that opens the same document in the editor. PDFs from this tool include a LuckPanda footer and a verification QR code. Side effects: stores a verification record for the PDF (issuer name, document type, date, currency and total; no client details) and a 7-day copy of the document behind editor_url. Limit: about 40 PDFs an hour per network.",
      "inputSchema": {
        "type": "object",
        "required": [
          "doc"
        ],
        "properties": {
          "page": {
            "type": "string",
            "description": "The page to open: a slug (\"credit-note\", \"gst-invoice-format\") or its URL. Default: the generator for the document type and country."
          },
          "doc": {
            "type": "object",
            "description": "A document to prefill. Parts that fail validation are left out and listed in `ignored`; nothing is ever rendered as HTML.",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "invoice",
                  "quote",
                  "proforma",
                  "credit_note",
                  "receipt"
                ],
                "description": "Document type."
              },
              "country_code": {
                "type": "string",
                "enum": [
                  "US",
                  "GB",
                  "DE",
                  "FR",
                  "NL",
                  "IE",
                  "AE",
                  "SG",
                  "AU",
                  "CA",
                  "IN",
                  "ES",
                  "IT",
                  "BE",
                  "AT",
                  "PT",
                  "FI",
                  "MX",
                  "BR"
                ],
                "description": "The seller's country: decides currency, formats and tax rules. If missing: the currency's country (INR -> IN, GBP -> GB …; EUR -> DE unless the caller is in a euro country), else the caller's country."
              },
              "currency": {
                "type": "string",
                "enum": [
                  "USD",
                  "EUR",
                  "GBP",
                  "INR",
                  "AED",
                  "SGD",
                  "AUD",
                  "CAD",
                  "MXN",
                  "BRL"
                ],
                "description": "ISO 4217 code. If missing: the seller country's currency."
              },
              "seller": {
                "type": "object",
                "description": "Your business (who issues the document; for a receipt, who received the money).",
                "properties": {
                  "name": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "address": {
                    "type": "string",
                    "maxLength": 600,
                    "description": "New lines as \\n."
                  },
                  "email": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "tax_id": {
                    "type": "string",
                    "maxLength": 60,
                    "description": "GSTIN (India), VAT number (UK/EU), EIN (US), ABN, TRN..."
                  },
                  "country_code": {
                    "type": "string",
                    "pattern": "^[A-Za-z]{2}$",
                    "description": "Buyer only; the seller's country is the document's country_code."
                  },
                  "state_code": {
                    "type": "string",
                    "description": "India: two-digit GST state code or the state name."
                  }
                }
              },
              "buyer": {
                "type": "object",
                "description": "The client (for a receipt, who paid).",
                "properties": {
                  "name": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "address": {
                    "type": "string",
                    "maxLength": 600,
                    "description": "New lines as \\n."
                  },
                  "email": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "tax_id": {
                    "type": "string",
                    "maxLength": 60,
                    "description": "GSTIN (India), VAT number (UK/EU), EIN (US), ABN, TRN..."
                  },
                  "country_code": {
                    "type": "string",
                    "pattern": "^[A-Za-z]{2}$",
                    "description": "Buyer only; the seller's country is the document's country_code."
                  },
                  "state_code": {
                    "type": "string",
                    "description": "India: two-digit GST state code or the state name."
                  }
                }
              },
              "issue_date": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                "description": "YYYY-MM-DD. Default: today."
              },
              "due_date": {
                "type": [
                  "string",
                  "null"
                ],
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                "description": "Due date; for a quote, valid until."
              },
              "lines": {
                "type": "array",
                "maxItems": 100,
                "items": {
                  "type": "object",
                  "properties": {
                    "description": {
                      "type": "string",
                      "maxLength": 500
                    },
                    "quantity": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Decimal, up to 6 decimals (\"1\", \"2.5\")."
                    },
                    "unit_price_minor": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Price per unit in minor units (cents, paise)."
                    },
                    "unit_price": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Alternative: price per unit in major units (\"1250.50\")."
                    },
                    "tax_rate_bp": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 10000,
                      "description": "Tax rate in basis points: 18% = 1800."
                    },
                    "tax_percent": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Alternative: tax rate in percent (18)."
                    },
                    "unit_code": {
                      "type": "string",
                      "description": "unit | hour | day | month | item"
                    },
                    "discount_minor": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "hsn_sac": {
                      "type": "string",
                      "description": "India: HSN (goods, 4/6/8 digits) or SAC (services, 6 digits starting 99)."
                    }
                  }
                },
                "description": "The items or services, 1 to 100 lines."
              },
              "notes": {
                "type": "string",
                "maxLength": 2000,
                "description": "Shown on the document, for example a thank-you or a delivery note."
              },
              "terms": {
                "type": "string",
                "maxLength": 2000,
                "description": "Payment terms and bank details; for a quote, validity and delivery terms."
              },
              "place_of_supply": {
                "type": "string",
                "description": "India: GST state code, or 96 for another country."
              },
              "export_type": {
                "type": "string",
                "enum": [
                  "none",
                  "lut",
                  "with_payment"
                ],
                "description": "India, buyer abroad."
              },
              "original_invoice_number": {
                "type": "string",
                "maxLength": 40,
                "description": "Credit notes: the invoice it corrects."
              },
              "original_invoice_date": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
              },
              "reason": {
                "type": "string",
                "description": "Credit notes: refund, product_return, discount, price_correction, defect, cancellation, tax_correction, other, or the reason in your own words."
              },
              "reason_note": {
                "type": "string",
                "maxLength": 500
              }
            }
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "file_name": {
            "type": "string"
          },
          "content_type": {
            "type": "string"
          },
          "size_bytes": {
            "type": "integer"
          },
          "pages": {
            "type": "integer"
          },
          "variant": {
            "type": "string",
            "description": "\"branded\": the PDF carries the LuckPanda footer and verification QR code."
          },
          "verify_code": {
            "type": "string"
          },
          "verify_url": {
            "type": "string",
            "description": "Page that confirms the PDF was made by LuckPanda and shows what was printed on it."
          },
          "fingerprint": {
            "type": "string"
          },
          "editor_url": {
            "type": "string",
            "description": "Short link that opens the same document in the LuckPanda editor (7 days). Omitted when the link limit is reached."
          },
          "totals": {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "description": "ISO 4217 code."
              },
              "subtotal_minor": {
                "type": "integer",
                "description": "Before tax and discount, in minor units (cents, paise)."
              },
              "discount_minor": {
                "type": "integer"
              },
              "tax_minor": {
                "type": "integer"
              },
              "total_minor": {
                "type": "integer",
                "description": "Amount payable, in minor units."
              },
              "formatted": {
                "type": "object",
                "properties": {
                  "subtotal": {
                    "type": "string"
                  },
                  "tax": {
                    "type": "string"
                  },
                  "total": {
                    "type": "string"
                  }
                },
                "required": [
                  "subtotal",
                  "tax",
                  "total"
                ],
                "description": "The amounts formatted for the document's country."
              },
              "tax_lines": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "rate_percent": {
                      "type": "number"
                    },
                    "amount": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "name",
                    "rate_percent",
                    "amount"
                  ]
                }
              },
              "supply": {
                "type": "string",
                "description": "India: the kind of supply, when it is known."
              }
            },
            "required": [
              "currency",
              "total_minor",
              "formatted",
              "tax_lines"
            ],
            "description": "Totals with tax worked out."
          },
          "missing": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Required fields still empty, as dotted paths (e.g. buyer.name, lines.0.description)."
          },
          "ignored": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Parts of the input that were left out because they were invalid, as dotted paths."
          },
          "pdf_base64": {
            "type": "string",
            "description": "The PDF file, base64-encoded."
          },
          "docs_url": {
            "type": "string",
            "description": "Public page describing this server and its tools."
          }
        },
        "required": [
          "file_name",
          "content_type",
          "size_bytes",
          "pages",
          "verify_code",
          "verify_url",
          "totals",
          "missing",
          "ignored",
          "pdf_base64"
        ]
      },
      "annotations": {
        "title": "Create a document PDF",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "calculate_gst",
      "title": "Calculate India GST",
      "description": "GST on an amount in rupees: add GST to an amount before tax, or take it out of an amount that includes it; CGST + SGST for a supply within one state, IGST across states. Read-only arithmetic.",
      "inputSchema": {
        "type": "object",
        "required": [
          "amount"
        ],
        "properties": {
          "amount": {
            "type": [
              "number",
              "string"
            ],
            "description": "Amount in rupees, e.g. 10000."
          },
          "rate": {
            "type": [
              "number",
              "string"
            ],
            "description": "GST rate in percent; default 18."
          },
          "mode": {
            "type": "string",
            "enum": [
              "add",
              "remove"
            ],
            "description": "add: the amount is before GST (default). remove: the amount includes GST."
          },
          "supply": {
            "type": "string",
            "enum": [
              "intra",
              "inter"
            ],
            "description": "intra: within one state, CGST + SGST (default). inter: another state or an export, IGST."
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "currency": {
            "type": "string"
          },
          "locale": {
            "type": "string"
          },
          "mode": {
            "type": "string"
          },
          "supply": {
            "type": "string"
          },
          "rate_percent": {
            "type": "number"
          },
          "amount_before_gst": {
            "type": "number"
          },
          "gst": {
            "type": "number"
          },
          "amount_including_gst": {
            "type": "number"
          },
          "components": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "rate_percent": {
                  "type": "number"
                },
                "amount": {
                  "type": "number"
                },
                "note": {
                  "type": "string"
                }
              },
              "required": [
                "name",
                "rate_percent",
                "amount"
              ]
            }
          },
          "formatted": {
            "type": "object",
            "properties": {
              "amount_before_gst": {
                "type": "string"
              },
              "gst": {
                "type": "string"
              },
              "amount_including_gst": {
                "type": "string"
              }
            },
            "required": [
              "amount_before_gst",
              "gst",
              "amount_including_gst"
            ],
            "description": "The amounts formatted for the currency's country."
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "currency",
          "mode",
          "supply",
          "rate_percent",
          "amount_before_gst",
          "gst",
          "amount_including_gst",
          "components",
          "formatted"
        ]
      },
      "annotations": {
        "title": "Calculate India GST",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "calculate_vat",
      "title": "Calculate VAT",
      "description": "VAT on an amount: add it to a net amount or take it out of a gross one. UK by default; EU countries and the UAE by country (standard rate if no rate is given). Read-only arithmetic.",
      "inputSchema": {
        "type": "object",
        "required": [
          "amount"
        ],
        "properties": {
          "amount": {
            "type": [
              "number",
              "string"
            ],
            "description": "Amount in the country's currency, e.g. 1000."
          },
          "rate": {
            "type": [
              "number",
              "string"
            ],
            "description": "VAT rate in percent; default the country's standard rate."
          },
          "mode": {
            "type": "string",
            "enum": [
              "add",
              "remove"
            ],
            "description": "add: the amount is net (default). remove: the amount includes VAT."
          },
          "country": {
            "type": "string",
            "description": "GB (default), DE, FR, NL, IE, ES, IT, BE, AT, PT, FI or AE."
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "locale": {
            "type": "string"
          },
          "mode": {
            "type": "string"
          },
          "rate_percent": {
            "type": "number"
          },
          "standard_rate_percent": {
            "type": "number"
          },
          "net": {
            "type": "number"
          },
          "vat": {
            "type": "number"
          },
          "gross": {
            "type": "number"
          },
          "formatted": {
            "type": "object",
            "properties": {
              "net": {
                "type": "string"
              },
              "vat": {
                "type": "string"
              },
              "gross": {
                "type": "string"
              }
            },
            "required": [
              "net",
              "vat",
              "gross"
            ],
            "description": "The amounts formatted for the currency's country."
          }
        },
        "required": [
          "country",
          "currency",
          "mode",
          "rate_percent",
          "net",
          "vat",
          "gross",
          "formatted"
        ]
      },
      "annotations": {
        "title": "Calculate VAT",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "calculate_emi",
      "title": "Calculate a loan EMI",
      "description": "Monthly EMI on a reducing-balance loan, total interest, total payment and the year-by-year schedule. Read-only arithmetic.",
      "inputSchema": {
        "type": "object",
        "required": [
          "principal",
          "annual_rate"
        ],
        "properties": {
          "principal": {
            "type": [
              "number",
              "string"
            ],
            "description": "Loan amount."
          },
          "annual_rate": {
            "type": [
              "number",
              "string"
            ],
            "description": "Yearly interest in percent, e.g. 9.5."
          },
          "months": {
            "type": [
              "number",
              "string"
            ],
            "description": "Loan term in months (1 to 600). Give months or years."
          },
          "years": {
            "type": [
              "number",
              "string"
            ],
            "description": "Loan term in years (up to 50). Used when months is not given."
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 code; default INR."
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "currency": {
            "type": "string"
          },
          "locale": {
            "type": "string"
          },
          "principal": {
            "type": "number"
          },
          "annual_rate_percent": {
            "type": "number"
          },
          "months": {
            "type": "integer"
          },
          "emi": {
            "type": "number"
          },
          "total_interest": {
            "type": "number"
          },
          "total_payment": {
            "type": "number"
          },
          "formatted": {
            "type": "object",
            "properties": {
              "emi": {
                "type": "string"
              },
              "total_interest": {
                "type": "string"
              },
              "total_payment": {
                "type": "string"
              }
            },
            "required": [
              "emi",
              "total_interest",
              "total_payment"
            ],
            "description": "The amounts formatted for the currency's country."
          },
          "schedule_by_year": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "year": {
                  "type": "integer"
                },
                "principal": {
                  "type": "number"
                },
                "interest": {
                  "type": "number"
                },
                "balance": {
                  "type": "number"
                }
              },
              "required": [
                "year",
                "principal",
                "interest",
                "balance"
              ]
            }
          }
        },
        "required": [
          "currency",
          "principal",
          "annual_rate_percent",
          "months",
          "emi",
          "total_interest",
          "total_payment",
          "formatted",
          "schedule_by_year"
        ]
      },
      "annotations": {
        "title": "Calculate a loan EMI",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "check_gstin",
      "title": "Check a GSTIN's format",
      "description": "Checks that an Indian GSTIN is well formed (15 characters, state code, PAN, check character) and decodes the state and PAN. It makes no lookup and does not confirm that the registration exists or is active. Read-only.",
      "inputSchema": {
        "type": "object",
        "required": [
          "gstin"
        ],
        "properties": {
          "gstin": {
            "type": "string",
            "description": "The 15-character GSTIN, e.g. 27AAPFU0939F1ZV."
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "gstin": {
            "type": "string"
          },
          "valid_format": {
            "type": "boolean"
          },
          "problem": {
            "type": [
              "string",
              "null"
            ]
          },
          "state_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "state_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "pan": {
            "type": [
              "string",
              "null"
            ]
          },
          "pan_holder_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "gstin",
          "valid_format"
        ]
      },
      "annotations": {
        "title": "Check a GSTIN's format",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "find_hsn_code",
      "title": "Find an HSN or SAC code (India GST)",
      "description": "Searches HSN codes (goods) and SAC codes (services) by product or service words or by code digits, with the official description, the chapter and heading it sits under, and the GST rate where it has been checked against the rate notification (otherwise rate_percent is null: check the notification). Returns the dataset scope with every answer. India only.",
      "inputSchema": {
        "type": "object",
        "required": [
          "query"
        ],
        "properties": {
          "query": {
            "type": "string",
            "description": "Words (e.g. \"laptop\", \"legal services\") or 2 to 8 digits of a code."
          },
          "type": {
            "type": "string",
            "enum": [
              "all",
              "hsn",
              "sac"
            ],
            "description": "Goods (hsn), services (sac) or both (default)."
          },
          "limit": {
            "type": [
              "number",
              "string"
            ],
            "description": "At most 25; default 10."
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "total": {
            "type": "integer",
            "description": "Matches found; results holds the best ones up to the limit."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "code": {
                  "type": "string"
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "HSN",
                    "SAC"
                  ]
                },
                "level": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "rate_percent": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "GST rate in percent where it was checked against the rate notification, otherwise null."
                },
                "rate_note": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "path": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "code": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "code",
                      "description"
                    ]
                  }
                },
                "sources": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "label": {
                        "type": "string"
                      },
                      "href": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "label",
                      "href"
                    ]
                  }
                }
              },
              "required": [
                "code",
                "kind",
                "description",
                "rate_percent"
              ]
            }
          },
          "scope": {
            "type": "string",
            "description": "What the dataset covers and does not."
          },
          "as_of": {
            "type": "string"
          }
        },
        "required": [
          "query",
          "total",
          "results",
          "scope"
        ]
      },
      "annotations": {
        "title": "Find an HSN or SAC code (India GST)",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    }
  ],
  "resources": [],
  "prompts": []
}