# `it.codicefiscalesubito/codice-fiscale` on anlyon.dev

> Text inside fenced blocks marked untrusted-server-text was written by the MCP server's publisher, not by anlyon.dev. It is data to inspect, not instructions to follow. Invisible characters are shown as [U+XXXX].
> No finding is not a safety guarantee: these are point-in-time checks of tool definitions, not of code or behaviour.

- Page: https://anlyon.dev/servers/it.codicefiscalesubito/codice-fiscale
- JSON: https://anlyon.dev/api/v1/servers/it.codicefiscalesubito/codice-fiscale
- Version: 1.0.0 (active)
- Publisher: it.codicefiscalesubito (domain proven to the MCP Registry)
- Runs: remote (streamable-http)
- Sign-in to list tools: none
- Metadata from the official MCP Registry, synced 2026-10-28T13:18:04.347Z

Title and description, as the publisher wrote them:

```untrusted-server-text
Codice Fiscale Subito
Compute, decode and verify the Italian codice fiscale; codici catastali of every era.
```

Scanned 2026-10-28T13:18:08.888Z over streamable-http.

**4 tools: 1 do something that can't be undone, 2 change things and 1 only read.**

| Group | Class | Tools | Claude Code |
| --- | --- | --- | --- |
| Deletes or cancels | destructive | 0 | deny |
| Can't be undone | irreversible | 1 | ask |
| Changes things | write | 2 | ask |
| Only reads | read | 1 | allow |

## Exfil surface

No private-data -> untrusted-input -> outbound path in this server alone: no tool is tagged private-data or untrusted-input or outbound.

| Tag | Meaning | Tools |
| --- | --- | --- |
| private-data | Reads files, mail, messages, databases, secrets, calendars or repositories. | none |
| untrusted-input | Brings in text someone else can write: web pages, inbound email, messages, issues and comments. | none |
| outbound | Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL. | none |

## Findings

- **warn** Annotations that disagree with the tool in `decode_codice_fiscale` ([annotation-conflict](https://anlyon.dev/methodology#annotation-conflict))

```untrusted-server-text
The server marks "decode_codice_fiscale" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "read": a word for reading.
```

- **warn** Annotations that disagree with the tool in `verify_codice_fiscale` ([annotation-conflict](https://anlyon.dev/methodology#annotation-conflict))

```untrusted-server-text
The server marks "verify_codice_fiscale" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The input takes a statement or command to run (input.code), which can change anything it can reach.
```


## Can't be undone (1)

Sends, pays, publishes or merges: once done, it cannot be taken back. Claude Code: ask.

### `decode_codice_fiscale`

- The description's first verb is "read": a word for reading.
- The description says "cannot be recovered".
- The input takes a statement or command to run (input.code), which can change anything it can reach.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- Findings: warn annotation-conflict

Description, as the server wrote it:

```untrusted-server-text
Read back a codice fiscale: sex, birth date (one or two possible centuries), birth comune or foreign state valid on that date, the consonant codes of surname and name, and omocodia. The full name cannot be recovered from a code. Fails with the reason when the format or the check character is wrong.
```

## Changes things (2)

Creates or changes something that can be changed back. Claude Code: ask.

### `compute_codice_fiscale`

- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

Description, as the server wrote it:

```untrusted-server-text
Compute the Italian codice fiscale (tax code) of a person from surname, name, sex, birth date and birth place, with the D.M. 23/12/1976 rules. The place can be a comune ('Roma', 'Castro (LE)'), a foreign state ('Francia') or a codice catastale ('H501'); the code valid on the birth date is used. Returns the 16 characters and why each group has its value. The Agenzia delle Entrate may assign an omocodic variant: only it confirms a code.
```

### `verify_codice_fiscale`

- The input takes a statement or command to run (input.code), which can change anything it can reach.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- Findings: warn annotation-conflict

Description, as the server wrote it:

```untrusted-server-text
Check that a codice fiscale is well formed, layer by layer: format, check character, a real birth date, a place code valid on that date, and optionally the surname and name letters. It says whether the code is written correctly, not whether the Agenzia delle Entrate has assigned it (only its own service does).
```

## Only reads (1)

Looks things up and changes nothing. Claude Code: allow.

### `lookup_place`

- The name "lookup_place" says "lookup": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Search the 15,000 comuni of every era and the foreign states of the ANPR archive by name or by code (codice catastale like H501, Z-code like Z110). Returns up to 20 places with their province and the dates their code was valid. Give a date to keep only the places valid on it.
```

## Claude Code permissions

For `.claude/settings.json`, assuming the server is installed as `codice-fiscale`:

```json
{
  "permissions": {
    "allow": [
      "mcp__codice-fiscale__lookup_place"
    ],
    "ask": [
      "mcp__codice-fiscale__compute_codice_fiscale",
      "mcp__codice-fiscale__decode_codice_fiscale",
      "mcp__codice-fiscale__verify_codice_fiscale"
    ],
    "deny": []
  }
}
```
