Skip to main content
Glama

Answer a tax question (call first)

start
Read-onlyIdempotent

Call this first for any tax, VAT/GST, payroll or filing question about a country or US state, such as "how much tax will I pay in Spain", "do I need to register for VAT", "when is my tax return due", "is this deductible", "how is a freelancer or a company taxed in Germany", "sales tax in Texas" or "what changes if I move to Portugal". Pass the user's question as intent and the country or US state as jurisdiction ('DE', 'US-TX', 'Florida'). If no place is named, start infers one when the question makes it clear and says so in jurisdiction_source. Returns the Guides to read next (skills_to_load, open each with get_skill), or what is still needed, usually the country. Covers 190+ jurisdictions; where no Guide exists yet it returns a research_brief naming the official sources.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
intentYesRequired. The user's question or goal in their own words, e.g. 'how much tax will I pay as a freelancer', 'VAT return', 'set up a company'.
reasonNoOne sentence, in the user's own words, on what they actually asked for here — captured only to improve routing. E.g. 'user sold ETH and wants to know what to report'. Optional but helpful.
acting_asNoOptional. Who the user is: 'self' = a taxpayer handling their own taxes; 'client' = a professional working on a client's behalf. Infer it from the conversation; omit it if unclear.
jurisdictionNoCountry or US state: ISO 2-letter code, US state code or name (e.g. 'MT', 'GB', 'US-CA', 'Florida'). Omit if the user named none; start infers it when the question makes it clear.
taxpayer_typeNoThe taxpayer's occupation, when known. Some return-prep workflows fork by it (an employee's Form 1040 is a different guide from a freelancer's). Pass it if the conversation already makes it clear; otherwise omit — start() only asks for it (status:'needs_clarification', needs:['taxpayer_type']) when the guides for this jurisdiction/intent genuinely split by occupation. 'employee' = W-2 wages only; 'self-employed' = freelance / 1099 / sole-proprietor; 'both' = employed AND self-employed; 'company' = a corporate entity. Don't guess — ask the user one short question if unsure.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
needsNo
intentNo
statusNo
guardrailsNo
next_actionNo
expectationsNo
jurisdictionNo
skills_to_loadNo
available_intentsNo
available_jurisdictionsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / acting_as / description
      Previous value: -"REQUIRED. Who the user is: 'self' = a taxpayer handling their OWN taxes; 'client' = a professional (accountant/advisor) working on behalf of a CLIENT. Establish this before calling — if it isn't clear from the conversation, ask the user one short question ('Are these your own taxes, or are you helping a client?'). Never guess."New value: +"Optional. Who the user is: 'self' = a taxpayer handling their own taxes; 'client' = a professional working on a client's behalf. Infer it from the conversation; omit it if unclear."
    • changedInput schema / properties / intent / description
      Previous value: -"User intent — REQUIRED. Free text, e.g. 'taxes', 'VAT return', 'set up a company'."New value: +"Required. The user's question or goal in their own words, e.g. 'how much tax will I pay as a freelancer', 'VAT return', 'set up a company'."
    • changedInput schema / properties / jurisdiction / description
      Previous value: -"ISO 2-letter code or US state code (e.g. 'MT', 'GB', 'US-CA')."New value: +"Country or US state: ISO 2-letter code, US state code or name (e.g. 'MT', 'GB', 'US-CA', 'Florida'). Omit if the user named none; start infers it when the question makes it clear."
  2. Changed1 schema field changed
    • changedInput schema / required
      Previous value: -[
      -  "intent",
      -  "acting_as"
      -]New value: +[
      +  "intent"
      +]
  3. Changed1 schema field changed
    • addedInput schema / properties / taxpayer_type
      Added value: +{
      +  "description": "The taxpayer's occupation, when known. Some return-prep workflows fork by it (an employee's Form 1040 is a different guide from a freelancer's). Pass it if the conversation already makes it clear; otherwise omit — start() only asks for it (status:'needs_clarification', needs:['taxpayer_type']) when the guides for this jurisdiction/intent genuinely split by occupation. 'employee' = W-2 wages only; 'self-employed' = freelance / 1099 / sole-proprietor; 'both' = employed AND self-employed; 'company' = a corporate entity. Don't guess — ask the user one short question if unsure.",
      +  "enum": [
      +    "employee",
      +    "self-employed",
      +    "both",
      +    "company",
      +    "other"
      +  ],
      +  "type": "string"
      +}
  4. Changed1 schema field changed
    • addedInput schema / properties / reason
      Added value: +{
      +  "description": "One sentence, in the user's own words, on what they actually asked for here — captured only to improve routing. E.g. 'user sold ETH and wants to know what to report'. Optional but helpful.",
      +  "type": "string"
      +}
  5. Changed2 schema fields changed
    • addedInput schema / properties / acting_as
      Added value: +{
      +  "description": "REQUIRED. Who the user is: 'self' = a taxpayer handling their OWN taxes; 'client' = a professional (accountant/advisor) working on behalf of a CLIENT. Establish this before calling — if it isn't clear from the conversation, ask the user one short question ('Are these your own taxes, or are you helping a client?'). Never guess.",
      +  "enum": [
      +    "self",
      +    "client"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "intent"
      -]New value: +[
      +  "intent",
      +  "acting_as"
      +]
  6. Changed1 schema field changed
    • changedOutput schema / properties / status / enum
      Previous value: -[
      -  "ready",
      -  "needs_input",
      -  "needs_clarification"
      -]New value: +[
      +  "ready",
      +  "needs_input",
      +  "needs_clarification",
      +  "uncovered"
      +]
  7. Changed2 schema fields changed
    • changedInput schema / properties / intent / description
      Previous value: -"User intent. Free text, e.g. 'taxes', 'VAT return', 'set up a company'."New value: +"User intent — REQUIRED. Free text, e.g. 'taxes', 'VAT return', 'set up a company'."
    • addedInput schema / required
      Added value: +[
      +  "intent"
      +]
  8. Added

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.