---
title: "Vignette ID A2A agent"
description: "Answers questions about motorway vignettes and section tolls in Austria, Switzerland, Czechia, Slovakia, Hungary, Slovenia, Romania, Bulgaria and Moldova: which roads are tolled, each country's rules and fines, and today's prices, from Vignette ID's own catalogue. Read-only and free to call; it cannot buy a vignette — ordering needs the partner API on vignette.id."
canonical: "https://e-vignettes.eu/developers"
---

# Vignette ID A2A agent

> Answers questions about motorway vignettes and section tolls in Austria, Switzerland, Czechia, Slovakia, Hungary, Slovenia, Romania, Bulgaria and Moldova: which roads are tolled, each country's rules and fines, and today's prices, from Vignette ID's own catalogue. Read-only and free to call; it cannot buy a vignette — ordering needs the partner API on vignette.id.

Canonical HTML page: https://e-vignettes.eu/developers

- **Endpoint:** https://e-vignettes.eu/a2a
- **Agent card:** https://e-vignettes.eu/.well-known/agent-card.json
- **Binding:** JSONRPC: JSON-RPC 2.0 over POST, one JSON response per request, protocol version 1.0
- **Authentication:** None. The agent is read-only and public.
- **Rate limit:** 120 requests per 60 seconds per client, reported in RateLimit headers

## What this agent does

It answers the questions the Vignette ID catalogue can answer — which of the nine covered countries need a vignette, each country's toll rules and fines, and today's prices — as A2A tasks. Every SendMessage runs to completion inside its own response and comes back as a completed task with one artifact: the answer as text and, for the structured skills, as JSON.

It has no model of its own. A message is matched to a skill by the country it names and a few intent words, or, reliably, by a data part that names the skill. Anything it cannot place gets a clarification message listing the skills; it never guesses.

It cannot buy anything. Issuing a vignette needs a partner API key and the partner MCP server described below. To send a person to buy a vignette themselves, link https://vignette.id/products.

## Skills

- list-countries: The nine European countries Vignette ID sells motorway vignettes and section tolls for (Austria, Switzerland, Czech Republic, Slovakia, Hungary, Slovenia, Romania, Bulgaria, Moldova), each with its official toll operator, a summary of how its toll system works and the date the facts were last verified.
- country-toll-rules: Everything the Vignette ID guide states about one country's motorway tolls: which roads are tolled, vehicle categories and validity periods, how activation and licence-plate registration work, fines and enforcement, tolls a vignette does not cover, and the official operator pages every fact was checked against. Prices are a separate skill.
- vignette-prices: Today's price of every vignette and Alpine section toll Vignette ID sells, per country, vehicle type and validity period, with the operator's own price and the Vignette ID service fee stated separately. Ask for one country or for all nine; ask for tunnels to get the section tolls a vignette does not cover.
- read-page: Any page of e-vignettes.eu as Markdown, for the editorial content the other skills do not cover: the developer portal, the partner programme, the terms, the blog. Give the site path.

## Calling it

Fetch the agent card, then POST JSON-RPC to the endpoint. The 1.0 method names (SendMessage, GetTask, ListTasks, CancelTask) are canonical; the 0.3 names (message/send, tasks/get) are accepted as aliases and answered in 1.0 shape.

```bash
curl -X POST https://e-vignettes.eu/a2a \
  -H 'Content-Type: application/json' -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc":"2.0","id":1,"method":"SendMessage","params":{"message":{"messageId":"m1","role":"ROLE_USER","parts":[{"text":"How much is a 10-day Austrian vignette?"}]}}}'
```

```bash
curl -X POST https://e-vignettes.eu/a2a \
  -H 'Content-Type: application/json' -H 'A2A-Version: 1.0' \
  -d '{"jsonrpc":"2.0","id":2,"method":"SendMessage","params":{"message":{"messageId":"m2","role":"ROLE_USER","parts":[{"data":{"skill":"country-toll-rules","country":"si"}}]}}}'
```

- The agent is stateless: GetTask and CancelTask answer TaskNotFoundError (-32001), ListTasks lists nothing, and SendStreamingMessage answers UnsupportedOperationError (-32004). Ask again with SendMessage to get the full result.
- Pass configuration.acceptedOutputModes to get only text/plain or only application/json parts; historyLength 0 drops the echoed request from the task.
- A skill argument outside its range (a country not covered, an unknown product type) is a JSON-RPC error -32602 whose data names the parameter and the allowed values. A skill that ran and could not answer — the live catalogue unreachable, a page that does not exist — is a task in TASK_STATE_FAILED with the reason in status.message.
- Country facts carry a last_reviewed date: state it when quoting rules or fines. Prices state total_price and government_price separately: say which one you are quoting.

## Ordering vignettes

Placing an order is a different server: the authenticated partner MCP server at https://api.vignette.id/mcp (sandbox https://sandbox-api.vignette.id/mcp), which takes a partner API key as a Bearer token. Keys come from the partner programme, described on the developer portal.

- [Partner MCP server guide](https://docs.vgnt.app/wiki/mcp-server)
- [Developer portal: how to become a partner and get a key](https://e-vignettes.eu/developers)

## Related

- [Agent card](https://e-vignettes.eu/.well-known/agent-card.json)
- [MCP server: the same catalogue as tools](https://e-vignettes.eu/mcp)
- [REST API reference](https://e-vignettes.eu/docs)
- [OpenAPI 3.1 specification](https://e-vignettes.eu/openapi.json)
- [When to use Vignette ID (agent instructions)](https://e-vignettes.eu/agents.md)
- [Site summary for LLMs (llms.txt)](https://e-vignettes.eu/llms.txt)
