# Nihao Snack Bar — agent connection instructions > Nihao is a Chinese snack bar in Cuneo, Italy. Its agent service currently accepts > invited agents for private PRACTICE reservations only. No real table is booked > and no customer notification is sent, even when a practice request is confirmed. ## Discovery and access - Website: https://nihaocuneo.it/ - Browser reservation form: https://agents.nihaocuneo.it/ - Public A2A agent card: https://nihaocuneo.it/.well-known/agent-card.json - Authenticated agent card: https://agents.nihaocuneo.it/.well-known/agent-card.json - A2A endpoint: https://agents.nihaocuneo.it/a2a - Protocol: A2A 1.0, synchronous JSON-RPC, method `SendMessage`. Obtain an individual invitation key from the restaurant's trial administrator. There is no public sign-up or shared access code. Store the key in your client's secret storage, for example as `NIHAO_A2A_TOKEN`. Do not put it in a model prompt, URL, log, or reservation notes. Choose a connection method your client supports. ## Browser agents and Instinct If your client can fill browser forms but cannot send authenticated HTTP/A2A requests, open https://agents.nihaocuneo.it/ in its browser. Use secure autofill to enter the invitation key into the password field labeled "Invite key", then select "Sign in". Only fill the key on this exact HTTPS host. Fill the "New practice reservation" form using fictional guest details and submit it once. The "Your requests" section shows the request reference and status. Use "Refresh status" to check for a staff decision. Check this list before submitting again after an interruption; do not create a new request to check status. Browser requests and A2A requests share the same invitation identity. Browser sign-in lasts up to eight hours and ends when the invite expires or is revoked. If the sign-in form returns, securely autofill the key again. An invalid or expired invite requires help from the trial administrator. Instinct uses this browser flow; storing a secret alone does not add native A2A support. ## HTTP/A2A clients Configure a client that supports authenticated HTTP to inject the key as a header. For requests to agents.nihaocuneo.it, send `Authorization: Bearer `. For POST /a2a also send `A2A-Version: 1.0` and `Content-Type: application/json`. Do not send the key to the public website. Keys expire and can be revoked; HTTP 401 means access must be checked with the trial administrator. ## Submit a practice request Use fictional guest details during this trial. Replace the date placeholder below with an open date in the next 90 days. Times use Europe/Rome, with at least 30 minutes' notice. Tuesday is closed. Valid kitchen windows are 12:00–14:45 and 18:30–21:45; partySize must be an integer from 1 to 12. POST https://agents.nihaocuneo.it/a2a with this JSON body: ```json { "jsonrpc": "2.0", "id": "request-1", "method": "SendMessage", "params": { "message": { "messageId": "unique-practice-request-1", "role": "ROLE_USER", "parts": [{"data": { "action": "reservation.create", "reservation": { "name": "Practice guest", "contact": "practice@example.invalid", "date": "", "time": "19:30", "partySize": 2, "notes": "Fictional practice request only" } }}] } } } ``` Use a fresh messageId for each new request. Reuse the same messageId and unchanged reservation details when retrying one submission after a timeout. The messageId is the default idempotency key; an optional reservation.idempotencyKey overrides it and must also remain unchanged on retry. Do not treat HTTP 200 alone as success: check for a JSON-RPC error or read result.message.parts[0].data.reservation. ## Retrieve the decision Send another `SendMessage` with a fresh messageId and this single part: ```json {"data": {"action": "reservation.list"}} ``` Read result.message.parts[0].data.reservations. The agent sees only requests belonging to its invitation identity. A new request is pending until authorized staff review it; it may become confirmed or declined. These are practice statuses, not real booking confirmations. Do not promise availability or a real reservation. ## Supported scope Only structured reservation.create and reservation.list are supported. There is no general chat, FAQ endpoint, task lifecycle, streaming, push notification, automatic approval, or payment support. Each call is independent: omit taskId, contextId, configuration and continuation fields. The agent card declares the available interface and authentication requirements; it contains no credentials.