Skip to main content
Glama

LuckPanda Document Tools

Server Details

Create invoices, quotes, receipts and credit notes with GST or VAT, as prefilled links or PDFs.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation4/5

The calculate_* tools are cleanly separated by domain (EMI vs GST vs VAT), and check_gstin/find_hsn_code/get_document_rules occupy distinct roles. The only mild overlap is create_document_link vs create_document_pdf, since both accept a document and return an editor_url, but the descriptions clearly distinguish the editor-link output from the base64 PDF output.

Naming Consistency5/5

All names use lowercase snake_case with a consistent verb_noun shape (calculate_emi, create_document_pdf, find_hsn_code, get_document_rules, list_tools, check_gstin). No mixing of conventions or vague verbs.

Tool Count5/5

Nine tools is well within the ideal 3-15 range and each serves an evident purpose: three calculators, two document outputs, validation, rules lookup, code search, and page discovery. No redundant or filler tools.

Completeness4/5

The surface covers document creation (link and PDF), the pre-flight rules, tax-code lookup, tax-ID validation, and standalone calculators, which is coherent lifecycle coverage for a document tool. Minor gaps: no way to retrieve or manage previously created documents beyond the link id, and no listing of stored links, but these appear intentional.

Available Tools

9 tools
calculate_emiCalculate a loan EMIB
Read-onlyIdempotent
Inspect

Monthly EMI on a reducing-balance loan, total interest, total payment and the year-by-year schedule. Read-only arithmetic.

NameRequiredDescriptionDefault
yearsNoLoan term in years (up to 50). Used when months is not given.
monthsNoLoan term in months (1 to 600). Give months or years.
currencyNoISO 4217 code; default INR.
principalYesLoan amount.
annual_rateYesYearly interest in percent, e.g. 9.5.

Output Schema

NameRequiredDescription
emiYes
localeNo
monthsYes
currencyYes
formattedYesThe amounts formatted for the currency's country.
principalYes
total_paymentYes
total_interestYes
schedule_by_yearYes
annual_rate_percentYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so 'Read-only arithmetic' mostly restates structured data. The genuinely added behavioral context is the reducing-balance methodology, which tells the agent which amortization convention the numbers follow.

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?

A single output-enumerating sentence plus a short qualifier — front-loaded and free of padding. Slightly fragmentary phrasing, but nothing is wasted.

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?

An output schema exists and annotations fully cover the safety profile, so the description only needs to frame the computation. It does that adequately for a low-complexity arithmetic tool; the main omission is any usage/routing guidance.

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 every parameter (including the years-vs-months precedence and the ISO 4217 default) is already documented in the schema. The description adds no additional parameter semantics, so the baseline 3 is appropriate.

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

Purpose4/5

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

The description names a specific resource (reducing-balance loan) and enumerates the concrete outputs: monthly EMI, total interest, total payment, and a year-by-year schedule. It is clearly distinct from the GST/VAT/GSTIN siblings by domain, though it never uses an explicit verb like 'calculate' and leans on the noun-phrase form to convey the action.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of prerequisites, and no routing to or away from the sibling calculators (calculate_gst, calculate_vat). 'Read-only arithmetic' hints at the nature of the call but does not tell an agent when this tool is the right choice.

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

calculate_gstCalculate India GSTA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
modeNoadd: the amount is before GST (default). remove: the amount includes GST.
rateNoGST rate in percent; default 18.
amountYesAmount in rupees, e.g. 10000.
supplyNointra: within one state, CGST + SGST (default). inter: another state or an export, IGST.

Output Schema

NameRequiredDescription
gstYes
modeYes
noteNo
localeNo
supplyYes
currencyYes
formattedYesThe amounts formatted for the currency's country.
componentsYes
rate_percentYes
amount_before_gstYes
amount_including_gstYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the description's 'Read-only arithmetic' adds no new safety information. It does add domain behavior context (the intra-state vs. inter-state tax split), which is modestly useful but not beyond what a caller already knows from the enums.

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?

One dense, front-loaded sentence with zero filler; the core operation comes first and the tax-split detail follows. Every clause carries meaning.

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?

An output schema exists, so return values need not be described. For a 4-parameter arithmetic tool with full schema coverage and complete annotations, the description supplies everything needed to invoke it correctly.

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% and both enums are documented in-schema, so the parameters are already self-explanatory. The description echoes the add/remove and intra/inter semantics but adds no format or edge-case detail (e.g. treating rate as a string, default values) beyond 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?

States a specific verb (calculate) and resource (GST on an amount), and names the two distinct calculations it performs (add GST vs. remove GST) plus the CGST+SGST/IGST split. This clearly separates it from siblings like calculate_vat and calculate_emi.

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 explains when each mode applies (amount before tax vs. amount including tax) and when to expect CGST+SGST versus IGST, which is genuine usage guidance. It doesn't, however, explicitly route the agent away from calculate_vat/calculate_emi for non-India or non-GST cases.

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

calculate_vatCalculate VATA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
modeNoadd: the amount is net (default). remove: the amount includes VAT.
rateNoVAT rate in percent; default the country's standard rate.
amountYesAmount in the country's currency, e.g. 1000.
countryNoGB (default), DE, FR, NL, IE, ES, IT, BE, AT, PT, FI or AE.

Output Schema

NameRequiredDescription
netYes
vatYes
modeYes
grossYes
localeNo
countryYes
currencyYes
formattedYesThe amounts formatted for the currency's country.
rate_percentYes
standard_rate_percentNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false), so "Read-only arithmetic" adds nothing and risks being redundant. The description does add the default-resolution behavior (UK and standard rate when unspecified), which is genuinely useful, but no further behavioral context such as rounding or currency handling is disclosed.

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?

Two tight sentences with no waste, and the primary operation is front-loaded before the geographic defaults. Every clause 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?

An output schema exists, so return values need not be explained, and the description covers modes, country default and rate default well. Fully sufficient for correct invocation, with only minor room for rounding or currency-precision notes.

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 mode, rate, amount and country in detail. The description restates the mode and default behavior rather than adding syntax or format detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (calculate VAT) plus the resource and both directions of the operation (net→gross and gross→net). The geographic scope (UK default, EU/UAE by country) implicitly separates it from sibling calculate_gst, but no sibling is named explicitly, so it falls just short of a 5.

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

Usage Guidelines3/5

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

Usage is implied by the geographic defaults: an agent can infer it should call this for UK/EU/UAE VAT rather than Indian GST. However, there is no explicit when-to-use/when-not-to-use statement and no pointer to calculate_gst as the alternative, leaving the choice to inference.

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

check_gstinCheck a GSTIN's formatA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
gstinYesThe 15-character GSTIN, e.g. 27AAPFU0939F1ZV.

Output Schema

NameRequiredDescription
panNo
noteNo
gstinYes
problemNo
state_codeNo
state_nameNo
valid_formatYes
pan_holder_typeNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover readOnlyHint, idempotentHint, destructiveHint, and openWorldHint=false. The description reinforces 'Read-only' and adds the crucial non-obvious constraint that no external lookup occurs, which is important for an agent to know this is purely structural validation. However, it doesn't mention error behavior (e.g., what happens if the GSTIN fails the check character) or rate limits.

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?

Three concise sentences: purpose/scope front-loaded, then the critical negative constraint, then a one-word read-only tag. Every sentence earns its place with zero waste.

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?

With an output schema present, return values need not be described. The description covers purpose, structural scope, negative boundaries, and read-only nature. It could be improved by mentioning the error/validation result behavior more explicitly, but it is largely complete for a simple single-parameter validation tool.

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 coverage is 100%, so the schema fully documents the single gstin parameter including an example. The description adds no parameter-level detail beyond what the schema provides. Baseline 3 is appropriate.

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 ('Checks that an Indian GSTIN is well formed') and immediately scopes what is checked (15 characters, state code, PAN, check character), plus what it decodes. Clearly distinguishable from siblings like calculate_gst and find_hsn_code.

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 delineates what the tool does NOT do: 'makes no lookup and does not confirm that the registration exists or is active.' This is strong negative guidance that routes the agent correctly. However, it does not name an alternative tool for actual GSTIN lookup or validation of registration status.

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

create_document_pdfCreate a document PDFAInspect

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.

NameRequiredDescriptionDefault
docYesA document to prefill. Parts that fail validation are left out and listed in `ignored`; nothing is ever rendered as HTML.
pageNoThe page to open: a slug ("credit-note", "gst-invoice-format") or its URL. Default: the generator for the document type and country.

Output Schema

NameRequiredDescription
pagesYes
totalsYesTotals with tax worked out.
ignoredYesParts of the input that were left out because they were invalid, as dotted paths.
missingYesRequired fields still empty, as dotted paths (e.g. buyer.name, lines.0.description).
variantNo"branded": the PDF carries the LuckPanda footer and verification QR code.
docs_urlNoPublic page describing this server and its tools.
file_nameYes
editor_urlNoShort link that opens the same document in the LuckPanda editor (7 days). Omitted when the link limit is reached.
pdf_base64YesThe PDF file, base64-encoded.
size_bytesYes
verify_urlYesPage that confirms the PDF was made by LuckPanda and shows what was printed on it.
fingerprintNo
verify_codeYes
content_typeYes

TDQS

A3.7/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=false — they establish that this writes and is non-idempotent but say nothing about what it writes. The description supplies exactly that: what gets persisted (verification record with issuer name, type, date, currency, total, explicitly no client details), the 7-day editor copy, the base64 return channel, the LuckPanda footer/QR branding, and a concrete rate limit of ~40 PDFs/hour per network.

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?

A single dense paragraph, front-loaded with the output (what is returned) before side effects and limits. Every clause carries information, though the run-on return-format sentence is slightly harder to scan than a short list would be.

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 write tool with nested input and an existing output schema, this covers the gaps that matter: return shape, branding, persisted side effects, retention, and throughput limits. An agent has everything needed to call it and to anticipate its consequences.

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 `doc` and `page` including enums, defaults and validation-failure behavior. The description adds no field-level syntax or default detail beyond what the schema provides, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Generates a PDF of a document') and enumerates the supported document kinds, so an agent knows exactly what it produces. It does not, however, name or contrast itself with the sibling create_document_link, which is the obvious alternative for the same document object.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance and no mention of create_document_link as the alternative for callers who want a link rather than an embedded PDF. The context is inferable from the purpose, but nothing steers the agent between the two sibling creation tools.

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

find_hsn_codeFind an HSN or SAC code (India GST)A
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
typeNoGoods (hsn), services (sac) or both (default).
limitNoAt most 25; default 10.
queryYesWords (e.g. "laptop", "legal services") or 2 to 8 digits of a code.

Output Schema

NameRequiredDescription
typeNo
as_ofNo
queryYes
scopeYesWhat the dataset covers and does not.
totalYesMatches found; results holds the best ones up to the limit.
resultsYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), yet the description adds real behavioral context: which fields come back, the meaning of a null rate_percent, and that dataset scope accompanies every answer. That is genuinely additive rather than a restatement of the structured hints.

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

Conciseness4/5

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

Front-loaded with the core action and scope, then a dense but purposeful second sentence covering outputs, the null-rate caveat, and dataset scope. Slightly packed with clause stacking, but every sentence carries information.

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?

With an output schema present, return values need not be explained, yet the description usefully flags the null rate case and dataset scope. Between annotations, full schema coverage, and output schema, an agent has enough to call this correctly; only comparative routing to sibling tools 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 type, limit (max 25, default 10) and the query format including the 2-to-8-digit rule. The description mirrors the query semantics ('words or code digits') but adds no syntax or constraint beyond the schema, so the baseline 3 applies.

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 (searches) and resource (HSN codes for goods, SAC codes for services), plus the retrieval keys (product/service words or code digits). This is clearly distinguishable from siblings like calculate_gst and check_gstin, which compute or validate rather than look up codes.

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

Usage Guidelines3/5

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

Scope is stated ('India only') and one important conditional is explained (rate_percent null means the rate was not checked against the notification, so check it). However, there is no explicit guidance on when to choose this over siblings such as calculate_gst for rate computation, leaving usage only implied.

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

get_document_rulesGet fields and tax rules for a documentA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
countryYesISO alpha-2 of the seller, e.g. IN, US, GB, DE.
document_typeYesThe kind of document.

Output Schema

NameRequiredDescription
gstNoIndia only: the CGST/SGST versus IGST split, place of supply and state codes.
taxYes
rulesYes
fieldsYes
localeNo
countryYes
formatsNo
reasonsNoCredit notes only.
currencyYes
disclaimerYes
country_nameNo
document_typeYes
what_to_includeNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld=false, so the trailing 'Read-only' is largely repetition. The description does add useful scope about the breadth of returned rule content, but since an output schema exists, that content detail is mostly redundant and adds little behavioral context beyond what structured fields supply.

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?

A single front-loaded sentence opens with the core purpose before listing return contents, so the key information leads. It is dense with enumerated clauses, though each clause is substantive rather than 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 two-parameter, read-only lookup with a full output schema and complete annotation coverage, the description is nearly sufficient: it conveys purpose, scope of returned rules and safety profile. The remaining gap is routing guidance relative to the calculation and check_gstin siblings, which is not addressed.

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% and both parameters are fully documented (country as ISO alpha-2 with examples, document_type as a five-value enum). The description only restates 'a given type and country' without adding format or constraint detail, so the baseline 3 applies.

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: it 'returns what to collect before creating a document of a given type and country', enumerating the concrete outputs (required/recommended/optional fields, tax ID and names, country invoicing rules, CGST/SGST vs IGST split, credit-note reasons). This clearly separates it from calculation siblings like calculate_gst and calculate_vat, which compute amounts rather than surface schema/rules metadata.

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 phrase 'what to collect before creating a document' implies the usage context: call this prior to document creation to discover the required inputs. However, it never names an explicit alternative or a when-not-to-use condition, despite siblings such as create_document_pdf, calculate_gst and check_gstin that an agent could confuse it with.

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

list_toolsList document pages and calculatorsA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
queryNoWords to look for in a page's name or summary, e.g. "freelance" or "GST".
countryNoISO alpha-2: pages for this country plus the ones for any country.
document_typeNoThe kind of document.

Output Schema

NameRequiredDescription
docs_urlNoPublic page describing this server and its tools.
documentsYes
calculatorsYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the trailing 'Read-only' is largely redundant. The description does add genuine context about the scope of the corpus (document generators plus country/trade templates and calculator pages), but says nothing about result volume, ordering, or pagination behavior.

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?

One dense opening sentence establishes the corpus, then a compact filter line. Front-loaded and free of filler, though the parenthetical inventory of generator types is somewhat long for the value it adds.

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?

An output schema exists, so return format need not be explained, and the description covers the domain scope. For a zero-required-parameter listing tool this is nearly complete; only result-size/ordering behavior is unaddressed.

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 baseline is 3. The description merely restates the three filter names, adding no syntax, defaults, or combination semantics beyond what the schema already documents (including the enum and the ISO alpha-2 note).

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 ('Lists') plus the exact resource: document pages on luckpanda.app (enumerating the generator categories) and its calculator pages. This clearly separates it from the sibling calculate_*/create_* tools, which compute values or produce artifacts rather than enumerate pages.

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

Usage Guidelines3/5

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

The description implies this is a discovery/browse tool and notes that all filters are optional, but it never says when to reach for it over siblings like calculate_gst or find_hsn_code, nor any exclusions. Usage must be inferred from the enumerated content.

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. 9 tool updates
    • Changedcalculate_emi6 fields changed
      • changedInput schema / properties / annual_rate / description
        Previous value: -"Yearly interest in percent."New value: +"Yearly interest in percent, e.g. 9.5."
      • changedInput schema / properties / currency / description
        Previous value: -"Default INR."New value: +"ISO 4217 code; default INR."
      • addedInput schema / properties / months / description
        Added value: +"Loan term in months (1 to 600). Give months or years."
      • addedInput schema / properties / principal / description
        Added value: +"Loan amount."
      • addedInput schema / properties / years / description
        Added value: +"Loan term in years (up to 50). Used when months is not given."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "annual_rate_percent": {
        +      "type": "number"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "emi": {
        +      "type": "number"
        +    },
        +    "formatted": {
        +      "description": "The amounts formatted for the currency's country.",
        +      "properties": {
        +        "emi": {
        +          "type": "string"
        +        },
        +        "total_interest": {
        +          "type": "string"
        +        },
        +        "total_payment": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "emi",
        +        "total_interest",
        +        "total_payment"
        +      ],
        +      "type": "object"
        +    },
        +    "locale": {
        +      "type": "string"
        +    },
        +    "months": {
        +      "type": "integer"
        +    },
        +    "principal": {
        +      "type": "number"
        +    },
        +    "schedule_by_year": {
        +      "items": {
        +        "properties": {
        +          "balance": {
        +            "type": "number"
        +          },
        +          "interest": {
        +            "type": "number"
        +          },
        +          "principal": {
        +            "type": "number"
        +          },
        +          "year": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "year",
        +          "principal",
        +          "interest",
        +          "balance"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "total_interest": {
        +      "type": "number"
        +    },
        +    "total_payment": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "currency",
        +    "principal",
        +    "annual_rate_percent",
        +    "months",
        +    "emi",
        +    "total_interest",
        +    "total_payment",
        +    "formatted",
        +    "schedule_by_year"
        +  ],
        +  "type": "object"
        +}
    • Changedcalculate_gst4 fields changed
      • addedInput schema / properties / amount / description
        Added value: +"Amount in rupees, e.g. 10000."
      • addedInput schema / properties / mode / description
        Added value: +"add: the amount is before GST (default). remove: the amount includes GST."
      • addedInput schema / properties / supply / description
        Added value: +"intra: within one state, CGST + SGST (default). inter: another state or an export, IGST."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "amount_before_gst": {
        +      "type": "number"
        +    },
        +    "amount_including_gst": {
        +      "type": "number"
        +    },
        +    "components": {
        +      "items": {
        +        "properties": {
        +          "amount": {
        +            "type": "number"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "note": {
        +            "type": "string"
        +          },
        +          "rate_percent": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "rate_percent",
        +          "amount"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "formatted": {
        +      "description": "The amounts formatted for the currency's country.",
        +      "properties": {
        +        "amount_before_gst": {
        +          "type": "string"
        +        },
        +        "amount_including_gst": {
        +          "type": "string"
        +        },
        +        "gst": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount_before_gst",
        +        "gst",
        +        "amount_including_gst"
        +      ],
        +      "type": "object"
        +    },
        +    "gst": {
        +      "type": "number"
        +    },
        +    "locale": {
        +      "type": "string"
        +    },
        +    "mode": {
        +      "type": "string"
        +    },
        +    "note": {
        +      "type": "string"
        +    },
        +    "rate_percent": {
        +      "type": "number"
        +    },
        +    "supply": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "currency",
        +    "mode",
        +    "supply",
        +    "rate_percent",
        +    "amount_before_gst",
        +    "gst",
        +    "amount_including_gst",
        +    "components",
        +    "formatted"
        +  ],
        +  "type": "object"
        +}
    • Changedcalculate_vat4 fields changed
      • addedInput schema / properties / amount / description
        Added value: +"Amount in the country's currency, e.g. 1000."
      • addedInput schema / properties / mode / description
        Added value: +"add: the amount is net (default). remove: the amount includes VAT."
      • changedInput schema / properties / rate / description
        Previous value: -"VAT rate in percent."New value: +"VAT rate in percent; default the country's standard rate."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "country": {
        +      "type": "string"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "formatted": {
        +      "description": "The amounts formatted for the currency's country.",
        +      "properties": {
        +        "gross": {
        +          "type": "string"
        +        },
        +        "net": {
        +          "type": "string"
        +        },
        +        "vat": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "net",
        +        "vat",
        +        "gross"
        +      ],
        +      "type": "object"
        +    },
        +    "gross": {
        +      "type": "number"
        +    },
        +    "locale": {
        +      "type": "string"
        +    },
        +    "mode": {
        +      "type": "string"
        +    },
        +    "net": {
        +      "type": "number"
        +    },
        +    "rate_percent": {
        +      "type": "number"
        +    },
        +    "standard_rate_percent": {
        +      "type": "number"
        +    },
        +    "vat": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "country",
        +    "currency",
        +    "mode",
        +    "rate_percent",
        +    "net",
        +    "vat",
        +    "gross",
        +    "formatted"
        +  ],
        +  "type": "object"
        +}
    • Changedcheck_gstin2 fields changed
      • addedInput schema / properties / gstin / description
        Added value: +"The 15-character GSTIN, e.g. 27AAPFU0939F1ZV."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "gstin": {
        +      "type": "string"
        +    },
        +    "note": {
        +      "type": "string"
        +    },
        +    "pan": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "pan_holder_type": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "problem": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "state_code": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "state_name": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "valid_format": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "gstin",
        +    "valid_format"
        +  ],
        +  "type": "object"
        +}
    • Changedcreate_document_link6 fields changed
      • addedInput schema / properties / doc / properties / currency / description
        Added value: +"ISO 4217 code. If missing: the seller country's currency."
      • addedInput schema / properties / doc / properties / issue_date / description
        Added value: +"YYYY-MM-DD. Default: today."
      • addedInput schema / properties / doc / properties / lines / description
        Added value: +"The items or services, 1 to 100 lines."
      • addedInput schema / properties / doc / properties / notes / description
        Added value: +"Shown on the document, for example a thank-you or a delivery note."
      • addedInput schema / properties / doc / properties / terms / description
        Added value: +"Payment terms and bank details; for a quote, validity and delivery terms."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "country": {
        +      "type": "string"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "docs_url": {
        +      "description": "Public page describing this server and its tools.",
        +      "type": "string"
        +    },
        +    "document_type": {
        +      "type": "string"
        +    },
        +    "editor_url": {
        +      "description": "Short link that opens the document prefilled in the LuckPanda editor. Valid until expires_at (7 days).",
        +      "type": "string"
        +    },
        +    "expires_at": {
        +      "description": "ISO 8601 time the link stops opening.",
        +      "type": "string"
        +    },
        +    "ignored": {
        +      "description": "Parts of the input that were left out because they were invalid, as dotted paths.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "missing": {
        +      "description": "Required fields still empty, as dotted paths (e.g. buyer.name, lines.0.description).",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "page_url": {
        +      "description": "The editor page the link opens, without the document.",
        +      "type": "string"
        +    },
        +    "prefill_url": {
        +      "description": "A self-contained link with the document in the URL; present only when it is short enough.",
        +      "type": "string"
        +    },
        +    "totals": {
        +      "description": "Totals with tax worked out.",
        +      "properties": {
        +        "currency": {
        +          "description": "ISO 4217 code.",
        +          "type": "string"
        +        },
        +        "discount_minor": {
        +          "type": "integer"
        +        },
        +        "formatted": {
        +          "description": "The amounts formatted for the document's country.",
        +          "properties": {
        +            "subtotal": {
        +              "type": "string"
        +            },
        +            "tax": {
        +              "type": "string"
        +            },
        +            "total": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "subtotal",
        +            "tax",
        +            "total"
        +          ],
        +          "type": "object"
        +        },
        +        "subtotal_minor": {
        +          "description": "Before tax and discount, in minor units (cents, paise).",
        +          "type": "integer"
        +        },
        +        "supply": {
        +          "description": "India: the kind of supply, when it is known.",
        +          "type": "string"
        +        },
        +        "tax_lines": {
        +          "items": {
        +            "properties": {
        +              "amount": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "rate_percent": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "rate_percent",
        +              "amount"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "tax_minor": {
        +          "type": "integer"
        +        },
        +        "total_minor": {
        +          "description": "Amount payable, in minor units.",
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "currency",
        +        "total_minor",
        +        "formatted",
        +        "tax_lines"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "editor_url",
        +    "expires_at",
        +    "page_url",
        +    "document_type",
        +    "country",
        +    "currency",
        +    "totals",
        +    "missing",
        +    "ignored"
        +  ],
        +  "type": "object"
        +}
    • Changedcreate_document_pdf6 fields changed
      • addedInput schema / properties / doc / properties / currency / description
        Added value: +"ISO 4217 code. If missing: the seller country's currency."
      • addedInput schema / properties / doc / properties / issue_date / description
        Added value: +"YYYY-MM-DD. Default: today."
      • addedInput schema / properties / doc / properties / lines / description
        Added value: +"The items or services, 1 to 100 lines."
      • addedInput schema / properties / doc / properties / notes / description
        Added value: +"Shown on the document, for example a thank-you or a delivery note."
      • addedInput schema / properties / doc / properties / terms / description
        Added value: +"Payment terms and bank details; for a quote, validity and delivery terms."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "content_type": {
        +      "type": "string"
        +    },
        +    "docs_url": {
        +      "description": "Public page describing this server and its tools.",
        +      "type": "string"
        +    },
        +    "editor_url": {
        +      "description": "Short link that opens the same document in the LuckPanda editor (7 days). Omitted when the link limit is reached.",
        +      "type": "string"
        +    },
        +    "file_name": {
        +      "type": "string"
        +    },
        +    "fingerprint": {
        +      "type": "string"
        +    },
        +    "ignored": {
        +      "description": "Parts of the input that were left out because they were invalid, as dotted paths.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "missing": {
        +      "description": "Required fields still empty, as dotted paths (e.g. buyer.name, lines.0.description).",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "pages": {
        +      "type": "integer"
        +    },
        +    "pdf_base64": {
        +      "description": "The PDF file, base64-encoded.",
        +      "type": "string"
        +    },
        +    "size_bytes": {
        +      "type": "integer"
        +    },
        +    "totals": {
        +      "description": "Totals with tax worked out.",
        +      "properties": {
        +        "currency": {
        +          "description": "ISO 4217 code.",
        +          "type": "string"
        +        },
        +        "discount_minor": {
        +          "type": "integer"
        +        },
        +        "formatted": {
        +          "description": "The amounts formatted for the document's country.",
        +          "properties": {
        +            "subtotal": {
        +              "type": "string"
        +            },
        +            "tax": {
        +              "type": "string"
        +            },
        +            "total": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "subtotal",
        +            "tax",
        +            "total"
        +          ],
        +          "type": "object"
        +        },
        +        "subtotal_minor": {
        +          "description": "Before tax and discount, in minor units (cents, paise).",
        +          "type": "integer"
        +        },
        +        "supply": {
        +          "description": "India: the kind of supply, when it is known.",
        +          "type": "string"
        +        },
        +        "tax_lines": {
        +          "items": {
        +            "properties": {
        +              "amount": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "rate_percent": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "rate_percent",
        +              "amount"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "tax_minor": {
        +          "type": "integer"
        +        },
        +        "total_minor": {
        +          "description": "Amount payable, in minor units.",
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "currency",
        +        "total_minor",
        +        "formatted",
        +        "tax_lines"
        +      ],
        +      "type": "object"
        +    },
        +    "variant": {
        +      "description": "\"branded\": the PDF carries the LuckPanda footer and verification QR code.",
        +      "type": "string"
        +    },
        +    "verify_code": {
        +      "type": "string"
        +    },
        +    "verify_url": {
        +      "description": "Page that confirms the PDF was made by LuckPanda and shows what was printed on it.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "file_name",
        +    "content_type",
        +    "size_bytes",
        +    "pages",
        +    "verify_code",
        +    "verify_url",
        +    "totals",
        +    "missing",
        +    "ignored",
        +    "pdf_base64"
        +  ],
        +  "type": "object"
        +}
    • Changedfind_hsn_code1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "as_of": {
        +      "type": "string"
        +    },
        +    "query": {
        +      "type": "string"
        +    },
        +    "results": {
        +      "items": {
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "description": {
        +            "type": "string"
        +          },
        +          "kind": {
        +            "enum": [
        +              "HSN",
        +              "SAC"
        +            ],
        +            "type": "string"
        +          },
        +          "level": {
        +            "type": "string"
        +          },
        +          "path": {
        +            "items": {
        +              "properties": {
        +                "code": {
        +                  "type": "string"
        +                },
        +                "description": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "code",
        +                "description"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "rate_note": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "rate_percent": {
        +            "description": "GST rate in percent where it was checked against the rate notification, otherwise null.",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "sources": {
        +            "items": {
        +              "properties": {
        +                "href": {
        +                  "type": "string"
        +                },
        +                "label": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "label",
        +                "href"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "kind",
        +          "description",
        +          "rate_percent"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "scope": {
        +      "description": "What the dataset covers and does not.",
        +      "type": "string"
        +    },
        +    "total": {
        +      "description": "Matches found; results holds the best ones up to the limit.",
        +      "type": "integer"
        +    },
        +    "type": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "query",
        +    "total",
        +    "results",
        +    "scope"
        +  ],
        +  "type": "object"
        +}
    • Changedget_document_rules2 fields changed
      • addedInput schema / properties / document_type / description
        Added value: +"The kind of document."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "country": {
        +      "type": "string"
        +    },
        +    "country_name": {
        +      "type": "string"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "type": "string"
        +    },
        +    "document_type": {
        +      "type": "string"
        +    },
        +    "fields": {
        +      "items": {
        +        "properties": {
        +          "field": {
        +            "type": "string"
        +          },
        +          "need": {
        +            "enum": [
        +              "required",
        +              "recommended",
        +              "optional"
        +            ],
        +            "type": "string"
        +          },
        +          "note": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "field",
        +          "need"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "formats": {
        +      "properties": {
        +        "date": {
        +          "type": "string"
        +        },
        +        "money": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "money",
        +        "date"
        +      ],
        +      "type": "object"
        +    },
        +    "gst": {
        +      "description": "India only: the CGST/SGST versus IGST split, place of supply and state codes.",
        +      "properties": {},
        +      "required": [],
        +      "type": "object"
        +    },
        +    "locale": {
        +      "type": "string"
        +    },
        +    "reasons": {
        +      "description": "Credit notes only.",
        +      "items": {
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "rules": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "tax": {
        +      "properties": {
        +        "name": {
        +          "type": "string"
        +        },
        +        "seller_tax_id": {
        +          "type": "string"
        +        },
        +        "seller_tax_id_example": {
        +          "type": "string"
        +        },
        +        "vat_country": {
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "name",
        +        "seller_tax_id"
        +      ],
        +      "type": "object"
        +    },
        +    "what_to_include": {
        +      "items": {
        +        "properties": {
        +          "field": {
        +            "type": "string"
        +          },
        +          "what": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "field",
        +          "what"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "document_type",
        +    "country",
        +    "currency",
        +    "tax",
        +    "fields",
        +    "rules",
        +    "disclaimer"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_tools3 fields changed
      • addedInput schema / properties / document_type / description
        Added value: +"The kind of document."
      • addedInput schema / properties / query / description
        Added value: +"Words to look for in a page's name or summary, e.g. \"freelance\" or \"GST\"."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "calculators": {
        +      "items": {
        +        "properties": {
        +          "api_url": {
        +            "type": "string"
        +          },
        +          "mcp_tool": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "page_url": {
        +            "type": "string"
        +          },
        +          "slug": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "slug",
        +          "page_url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "docs_url": {
        +      "description": "Public page describing this server and its tools.",
        +      "type": "string"
        +    },
        +    "documents": {
        +      "items": {
        +        "properties": {
        +          "country": {
        +            "description": "ISO alpha-2, or null for a page that fits any country.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "document_type": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "page_url": {
        +            "description": "The page, which also opens prefilled with ?doc=.",
        +            "type": "string"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "summary": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "slug",
        +          "document_type",
        +          "country",
        +          "summary",
        +          "page_url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "documents",
        +    "calculators"
        +  ],
        +  "type": "object"
        +}
  2. 9 tool updates
    • First observedcalculate_emi
    • First observedcalculate_gst
    • First observedcalculate_vat
    • First observedcheck_gstin
    • First observedcreate_document_link
    • First observedcreate_document_pdf
    • First observedfind_hsn_code
    • First observedget_document_rules
    • First observedlist_tools

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables the generation of professional PDF invoices and their distribution via email using customizable templates. It allows users to create, manage, and send invoices with standard business fields like tax rates and line items through natural language.
    3
    19 npm
    2
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Create free, no-signup invoices from your AI assistant — the create_invoice tool returns a link that opens blankinvoicemaker.com pre-filled, ready to download as a watermark-free PDF.
    2
    40 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables drafting quotations and invoices from AI assistants like ChatGPT, Claude, and Gemini, with 133 templates, tax rules for 195 countries, and a link to the finished document.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources