Skip to main content
Glama

Expat Living Italy

List the Italian tax regimes this site encodes

list_tax_regimes
Read-onlyIdempotent

Each regime's status (verified or draft), whether it depends on place (geographic) or on the person, its legislation, population ceiling and how many comuni meet its verified criteria. Places, not people: not tax advice.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
regimesYes
disclaimerYes
attributionYes
placesNotPeopleYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "attribution": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "citeAs": {
      +          "description": "A ready-made citation line.",
      +          "type": "string"
      +        },
      +        "page": {
      +          "description": "The expatliving.it page these figures come from — link it when you quote them.",
      +          "type": "string"
      +        },
      +        "publisher": {
      +          "type": "string"
      +        },
      +        "request": {
      +          "type": "string"
      +        },
      +        "url": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "publisher",
      +        "url",
      +        "citeAs",
      +        "request"
      +      ],
      +      "type": "object"
      +    },
      +    "disclaimer": {
      +      "type": "string"
      +    },
      +    "placesNotPeople": {
      +      "const": true,
      +      "type": "boolean"
      +    },
      +    "regimes": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "criteria": {
      +            "description": "geographic: some comuni qualify and others don't. person: turns on who you are, not where you live; no per-comune answer exists.",
      +            "enum": [
      +              "geographic",
      +              "person"
      +            ],
      +            "type": "string"
      +          },
      +          "knownIncompleteness": {
      +            "description": "Ways the encoded rule is narrower than the law. A comune missing from the set is not proof it doesn't qualify while this is non-empty.",
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "label": {
      +            "type": "string"
      +          },
      +          "maxPopulation": {
      +            "description": "The population ceiling, for a geographic regime that has one.",
      +            "type": "number"
      +          },
      +          "page": {
      +            "description": "The regime's page on expatliving.it.",
      +            "type": "string"
      +          },
      +          "qualifyingComuni": {
      +            "description": "How many comuni meet the verified geographic criteria. Only for a verified geographic regime.",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "shortLabel": {
      +            "type": "string"
      +          },
      +          "slug": {
      +            "description": "The regime's id, e.g. \"regime-7-percent-pensioners\".",
      +            "type": "string"
      +          },
      +          "sourceLegislation": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "cite": {
      +                  "type": "string"
      +                },
      +                "title": {
      +                  "type": "string"
      +                },
      +                "url": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "cite",
      +                "title",
      +                "url"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "status": {
      +            "description": "draft: encoded but not yet checked against the legislation. A draft regime's eligibility is never served.",
      +            "enum": [
      +              "verified",
      +              "draft"
      +            ],
      +            "type": "string"
      +          },
      +          "summary": {
      +            "type": "string"
      +          },
      +          "validFrom": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "slug",
      +          "label",
      +          "shortLabel",
      +          "status",
      +          "criteria",
      +          "page",
      +          "summary",
      +          "validFrom",
      +          "sourceLegislation",
      +          "knownIncompleteness"
      +        ],
      +        "type": "object"
      +      },
      +      "maxItems": 50,
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "regimes",
      +    "placesNotPeople",
      +    "disclaimer",
      +    "attribution"
      +  ],
      +  "type": "object"
      +}
  2. Added

TDQS

A3.6/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 openWorldHint=false, so the safety profile is covered. The description adds a scope disclaimer ('Places, not people: not tax advice'), which is useful context, but says nothing about return size, ordering, or filtering behavior. Modest added value over the annotations.

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?

Two sentences, no filler, with the field enumeration up front and the scope disclaimer last. The first sentence is a dense list but each item earns its place by previewing what the agent will receive.

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, the description need not explain return values, and annotations cover the safety profile; a zero-parameter list tool has little else to disclose. The only gap is the absence of explicit routing guidance versus check_tax_eligibility, which would make it fully complete.

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

Parameters4/5

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

The tool takes zero parameters, so per the rubric the baseline is 4. The field enumeration in the description is about output content rather than parameters and largely duplicates the output schema, but nothing is missing on the input side.

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 enumerates what each regime carries (status, place- vs person-dependence, legislation, population ceiling, comuni count), which makes clear it returns a list of Italian tax regimes. It never states the verb 'list' or 'returns' explicitly, relying on the name/title to carry that, but the resource is unambiguous. The closing 'Places, not people' implicitly distinguishes it from check_tax_eligibility.

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?

There is no explicit when-to-use or when-not guidance. 'Places, not people: not tax advice' is a soft scope cue that hints the agent should reach for check_tax_eligibility when the query is about a person, but it is left implicit rather than naming the alternative or a condition. Adequate but thin.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources