← QuantoNetto.Com

Developer and agent documentation

Everything QuantoNetto.Com knows is reachable programmatically, without an account, an API key or an OAuth flow. There are three surfaces: a REST API, a remote MCP server, and in-page WebMCP tools for browser agents.

MCP server

The MCP server speaks Streamable HTTP at https://quantonetto.com/api/mcp. It is stateless, so no session identifier is issued and every call is safe to retry. All tools are read-only.

Point an MCP client at that URL with transport type streamable-http. There is no authentication step. The server card at /.well-known/mcp/server-card.json describes the tools before you connect.

  • calculate_net_salary - Turn an Italian gross annual salary (RAL) into net pay for tax year 2026 in a given comune, with every contract, relief, pension, benefit, bonus and family option.
  • search_comuni - Find Italian comuni by name, province, region or Belfiore catastale code, and return the exact catastale code the other tools need.
  • compare_comuni - Compare net pay for one gross salary across several comuni, ranked, so the surtax difference between two places is a single call rather than several.
  • get_rate_curve - Return net pay, effective deduction rate and measured marginal rate across a range of gross incomes, for charting or for finding where a threshold bites.
  • get_relevant_questions - Report which unanswered facts would actually move this result and by how many euro, so an agent asks the user only the questions that matter.
  • get_employer_cost - Return the employer-side contribution reference for a gross salary. A partial reference, neither a minimum nor a complete total cost of employment.
  • get_tax_sources - Return the official source documents, the date the tax data was retrieved, the assumptions in force and any carryover or unpublished-rate caveats for a comune.

Call search_comuni before any tool that takes a comune. The others expect a Belfiore catastale code, and a silently wrong city changes the municipal surtax without any visible error. Call get_relevant_questions before asking a user for more detail: it reports which unanswered facts would actually move this result, and by how many euro.

REST API

Three GET endpoints, all keyless and cacheable. The OpenAPI 3.1 document at /openapi.json is the authoritative description, including response schemas and the error model.

  • GET /api/comuni - Search Italian comuni. Look up Italian comuni by name, prefix, province or Belfiore catastale code. Returns the catastale code the other endpoints require, plus province, region and URL slug.
  • GET /api/rules - Get the tax rule bundle for one comune. Return a self-contained, versioned rule bundle for one comune: national IRPEF brackets and credits, INPS profiles, and the regional and municipal surtax schedules that apply there. The same bundle drives the browser calculator, so a client running the open-source engine reproduces the site numbers exactly.
  • GET /api/exchange-rates - Get dated ECB reference exchange rates. Return dated ECB euro reference rates used for the optional display conversion. Euro remains the authoritative currency for every tax amount; these rates are for comparison only.

Errors are RFC 9457 problem+json. Every problem carries a stable machine-readable code and a hint naming the next request to make, so a client can correct itself without parsing prose.

The API version is a date, echoed on every successful response in the API-Version header. Fields are only added within a version, never removed or retyped. A breaking change ships as a new dated version, and the retiring one is served for at least six months with Sunset and Deprecation headers.

Reproducing the numbers yourself

The rule bundle returned by /api/rules is self-contained: national brackets and credits, INPS profiles, and the regional and municipal schedules for that comune, with the checksums of the source datasets. A client running the same open-source engine against that bundle reproduces the site’s figures exactly rather than approximating them.

Check regional.status and municipal.status on the bundle. A value of carryover means no 2026 rate was published for that jurisdiction and the previous year is being carried forward, so the result is an estimate and should be reported as one.

WebMCP, for browser agents

The calculator page registers its tools through document.modelContext, so an agent running inside the browser can drive the visible calculator instead of scraping the DOM. Read tools return the current calculation; write tools change the form, and the receipt, chart and URL follow along, so the person watching the screen sees what the agent did.

Those tools operate on page state and are the right choice for an in-page assistant. The MCP server above is the right choice for everything else.

Discovery

Limits and etiquette

This application enforces no rate limit. Requests pass through a content delivery network that may throttle abusive traffic. Responses carry real Cache-Control headers and honouring them is the whole of the contract.

The data is employment income for tax year 2026 only, and results are estimates for orientation rather than tax advice. If you surface a figure to a user, carry the warnings the tools return along with it.