Skip to main content
Glama

Expat Living Italy

Read one article

get_article
Read-onlyIdempotent

One article's full text as Markdown, with its places, datasets and a ready-made citation. Quote figures from the dataset pages it cites, which carry their vintage. Content is free to use provided you credit Expat Living Italy and link to the article.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
slugYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYes
bodyYesThe article as Markdown, blocks flattened.
deckYes
slugYes
titleYes
authorYes
placesYes
statusYes
topicsYes
updatedYes
datasetsYes
publishedYes
attributionYes
markdownUrlYesThe whole article as Markdown, with its citation at both ends.
supersededByNoSlug of the newer article that replaces this one.

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, with the article's canonical URL.",
      +          "type": "string"
      +        },
      +        "creditText": {
      +          "type": "string"
      +        },
      +        "license": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "name": {
      +              "type": "string"
      +            },
      +            "url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "url"
      +          ],
      +          "type": "object"
      +        },
      +        "required": {
      +          "const": true,
      +          "description": "Credit with a link is the condition of free use (CC BY 4.0).",
      +          "type": "boolean"
      +        },
      +        "requirement": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "required",
      +        "license",
      +        "creditText",
      +        "citeAs",
      +        "requirement"
      +      ],
      +      "type": "object"
      +    },
      +    "author": {
      +      "type": "string"
      +    },
      +    "body": {
      +      "description": "The article as Markdown, blocks flattened.",
      +      "type": "string"
      +    },
      +    "datasets": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "coverage": {
      +            "description": "How much of the place set the data covers, as the article states it.",
      +            "type": "string"
      +          },
      +          "slug": {
      +            "description": "The dataset's slug in GET /datasets, when the page is one of them.",
      +            "type": "string"
      +          },
      +          "title": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          },
      +          "vintage": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "title",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "deck": {
      +      "type": "string"
      +    },
      +    "markdownUrl": {
      +      "description": "The whole article as Markdown, with its citation at both ends.",
      +      "type": "string"
      +    },
      +    "places": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "code": {
      +            "description": "ISTAT code for a comune, sigla for a province, slug for a region.",
      +            "type": "string"
      +          },
      +          "grain": {
      +            "enum": [
      +              "comune",
      +              "province",
      +              "region"
      +            ],
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "grain",
      +          "code",
      +          "name",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "published": {
      +      "type": "string"
      +    },
      +    "slug": {
      +      "type": "string"
      +    },
      +    "status": {
      +      "enum": [
      +        "published",
      +        "archived"
      +      ],
      +      "type": "string"
      +    },
      +    "supersededBy": {
      +      "description": "Slug of the newer article that replaces this one.",
      +      "type": "string"
      +    },
      +    "title": {
      +      "type": "string"
      +    },
      +    "topics": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "updated": {
      +      "type": "string"
      +    },
      +    "url": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "slug",
      +    "title",
      +    "deck",
      +    "author",
      +    "published",
      +    "updated",
      +    "status",
      +    "topics",
      +    "url",
      +    "markdownUrl",
      +    "places",
      +    "datasets",
      +    "body",
      +    "attribution"
      +  ],
      +  "type": "object"
      +}
  2. Added

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/closed-world, and the description adds real behavioral context beyond them: the return is Markdown, it bundles places, datasets and a citation, figures should be sourced from the cited dataset pages with their vintage, and reuse is permitted only with credit plus a link. That licensing constraint is genuinely useful and not captured by any annotation.

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?

Three sentences, front-loaded with what is returned, then sourcing advice, then licensing. Dense and mostly waste-free, though the licensing sentence is arguably peripheral to tool selection.

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 structure need not be restated, and annotations carry the safety profile. The definition is nearly complete for a one-parameter read tool; the only real omission is how an agent obtains a valid slug and what happens on an unknown one.

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

Parameters2/5

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

Schema description coverage is 0% and the description never mentions the sole parameter 'slug' — not its format, not where to obtain it (presumably from list_articles or search). With a required parameter carrying no semantics anywhere, the description does not compensate for the gap.

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 the specific resource and the exact payload: one article's full text as Markdown, plus its places, datasets and a citation. 'One article's...' implicitly separates it from the listing sibling, but it never names list_articles or another sibling explicitly, so differentiation is left to inference.

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?

It gives usage guidance for the content ('quote figures from the dataset pages it cites') and the attribution obligation ('credit Expat Living Italy and link to the article'), but says nothing about when to call this tool versus list_articles, or how to obtain a valid slug. Usage is implied rather than stated.

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