Availability of wine tastings – entrance for web agents

If you can only browse web pages, start here: See the public and server-rendered page of Availability of tasting. After asking for the number of adults, use directly 1 to 3 adults or 4 or more adults. These pages are the primary route to web agents, not a last resort, and do not require JavaScript, MCP, or JSON access.

Quick Start for Agents

Choose the route according to the customer's actual capabilities. Don't try MCP or JSON in a session that can only read web pages.

  1. Identify the client's capacity: web browsing, REST/function calling or MCP connected.
  2. Identify the type: tasting, stay or experience, and ask first what Number of adults. For races, four or more adults can change the days allowed.
  3. With only web browsing and a question about wine tastings, the public page of the group above is the first to read.
  4. With REST, and no offer chosen, call /api/v2/availability-summary/{type}/{adults}/next. With a chosen offer, get the offering_id Posted on /api/offerings/{type} and use the v2 route from that offer.
  5. With MCP explicitly turned on, use list_offerings e check_availability.
  6. Present the slots as Indicative. No availability reading blocks a time or confirms a reservation.
{ "agent_contract_version": "2026-10-14", "canonical_origin": "https://quintapicoutocima.pt", "timezone": "Europe/Lisbon", "supported_types": ["tasting", "stay", "experience"], "party_rule_input": "adults", "availability_is_indicative": true, "availability_holds_a_slot": false, "booking_request_is_a_confirmed_booking": false, "human_confirmation_required": true, "preferred_web_route_for_tastings": "/disponibilidade-provas", "web_group_routes": ["/disponibilidade-provas/1-a-3-adultos", "/disponibilidade-provas/4-ou-mais-adultos"], "preferred_unselected_offering_api": "/api/v2/availability-summary/{type}/{adults}/next", "preferred_selected_offering_api": "/api/v2/availability/{type}/{offering_id}/{adults}/next", "preferred_mcp": "/mcp", "source_priority_depends_on_client_capability": true }
Essential rule: One Response 200 with a time means "this time seems free in the current reading". It does not mean "booked time". A 202 Submitting a request is also not a reservation: the visitor still confirms the email and the family accepts the request later.

What is this page

AI assistants are increasingly answering questions about the Quinta — prices of the tastings, if there is accommodation, how far it is from Porto. When they don't have a reliable source, they guess, and the wrong answers reach those who come to us.

That's why we publish the files below. They are automatically generated from the same database that powers this site, whenever we change something. They are not a copy kept at hand that ages in silence: if the price of a tasting changes here, it changes there on the same day.

Published files

Summary and Table of Contents. Identity of the Estate, verified facts, short catalogue, frequently asked questions and indication of where to look for each type of information. It is the starting point.

Complete knowledge base. All wines with grape varieties, harvest and tasting notes; the wine tastings and what they include; experiences; the accommodation and its amenities; the history of the Quinta and visitor reviews. Includes a JSON summary for automatic consumption.

Conduct guidance for responders in the name From the Estate: how to route each type of question, what never to say (guaranteed availability, unpublished prices, booking confirmations) and when to pass the conversation to one person.

Site map and collection rules. O robots.txt expressly authorises major AI collectors and points to the above files.

Structured data on pages

The main pages publish structured data in JSON-LD (schema.org). The type Winery describes the identity of the Quinta: address, coordinates, visiting hours and contacts. This guy appears on the homepage and on the pages about the Quinta, the wines, the online store, the wine tastings, the experiences, the accommodation, the contacts and the articles about the region.

The type LodgingBusiness only appears on the accommodation page. The type Campground It only appears on the motorhome page. The type Dataset only appears in the Wine Tasting Availability Page. The types Product e Offer, with the prices in force, appear on the wine, wine tasting and experience pages.

If there is divergence, availability and the live catalogue rule; For the remaining facts, the page structured data and the llms-full.txt.

A note about availability. For proofing, agents with web browsing should start with the Public Availability Page and choose the group of adults. REST customers use the v2 API by offering and number of adults; customers with MCP connected use the available tools. The number of adults is required because some offers have weekly restrictions that change to groups of 4+ adults. On any channel, the answer is indicative: the final confirmation is always made by the family, usually within a few minutes or a few hours and up to a maximum of 24 hours.

Choose the integration

Customer CapacityUseWhen
Web browsing without JSON/disponibilidade-provasFirst choice for web agents looking for wine tastings. It is server-rendered, without JavaScript, and has separate pages for 1–3 and 4+ adults.
Remote MCP Connectedhttps://quintapicoutocima.pt/mcpPreferred when the client has this MCP explicitly turned on. It allows you to list offers, check availability and submit an order.
REST or function calling/openapi.jsonImport the OpenAPI contract. For a general question, first use the aggregate summary; For a concrete offer use the route v2 by offering_id.
Knowledge, no availability/llms-full.txtCatalog, descriptions, prices, inclusions, location and policies. It is not a substitute for reading live availability.

Publishing an MCP does not automatically cause all ChatGPT, Gemini, or other assistant conversations to use it. The server must be turned on, installed, or selected on the client. When it doesn't, the agent should use REST or the public HTML page.

MCP Connector

For assistants with Model Context Protocol on, Quinta Picouto de Cima exposes an MCP server in /mcp to consult the catalogue, check availability and submit a reservation request. The REST API also allows these operations, depending on the OpenAPI. MCP Transportation: Streamable HTTP (JSON-RPC 2.0 over POST, no authentication). Tools: list_offerings, check_availability, request_booking.

With the argument {"type":"wine"}, the list_offerings returns the wines, with prices and postage. MCP does not place orders for wine: the order is placed on the website, at Online Store, without online payment, with shipping or pick-up at Quinta Picouto de Cima.

A booking request submitted here Not a reserve: sends a verification email to the visitor and the family confirms later. Standard discovery in /.well-known/mcp.json; complete conduct in /llms-agent.txt.

In a reservation for a group, include the composition of the people — numAdults e numChildren. The family uses these numbers to prepare for the visit. If they do not add up the total number of people, only the total number is saved.

POST https://quintapicoutocima.pt/mcp {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18"}} {"jsonrpc":"2.0","id":2,"method":"tools/list"} POST https://quintapicoutocima.pt/mcp {"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"list_offerings","arguments":{"type":"tasting"}}} POST https://quintapicoutocima.pt/mcp {"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"check_availability","arguments":{"type":"tasting","offering_id":"ID_FROM_LIST_OFFERINGS","adults":4}}}

Connection through Gemini

On a Gemini client that supports remote MCP servers, use this configuration. The name is deliberately lowercase and without a hyphen to be accepted by the most restrictive customers.

{ "type": "mcp_server", "name": "quintapicoutocima", "url": "https://quintapicoutocima.pt/mcp", "allowed_tools": [ "list_offerings", "check_availability", "request_booking" ] }

Availability API

Start by getting the live catalogue at /api/offerings/{type} and choose the offering_id Exactly. Then check the availability v2 with that identifier and the number of adults, not the total number of people. This is the recommended API for agents; It is open, without authentication, does not expose personal data and applies the restrictions of the offer and the exception of groups of 4+ adults.

If the visitor has not yet chosen a specific wine tasting, there is a single aggregate call: /api/v2/availability-summary/tasting/{adults}/next. The response includes all the proofs that accept online booking, their names, prices, dates and times.

# Visitante: “Somos 4 adultos. Quais são as próximas datas para uma prova?” GET https://quintapicoutocima.pt/api/v2/availability-summary/tasting/4/next → { "type": "tasting", "adults": 4, "status": "indicative", "confirmationRequired": true, "offerings": [ { "offering_id": "…", "name": "Prova Essencial", "price": "30€ por pessoa", "days": [ { "date": "YYYY-MM-DD", "times": ["11h00", "15h00"] } ] } ], "generatedAt": "ISO-8601" } # Visitante já escolheu a oferta GET https://quintapicoutocima.pt/api/offerings/tasting → { "offerings": [ { "offering_id", "type", "name", "bookable_online", … } ] } GET https://quintapicoutocima.pt/api/v2/availability/tasting/{offering_id}/{adults}/2026-09-28/2026-10-04 → { "type", "offering_id", "adults", "from", "to", "days", "status": "indicative", "confirmationRequired": true, "generatedAt" } GET https://quintapicoutocima.pt/api/v2/availability/tasting/{offering_id}/{adults}/next → a mesma resposta, de hoje em Lisboa até 30 dias depois
  • type: tasting, stay or experience.
  • offering_id: identifier returned by /api/offerings/{type}; Do not guess from the name.
  • adults: number of adults, between 1 and 30. It is this value that can trigger the group exception.
  • from, to: inclusive break in the format YYYY-MM-DD, a maximum of 180 days. For "next dates", use /next.

Dates requested by the visitor

/next consult the next 30 days; it does not mean "next week". Interpret relative dates in Europe/Lisbon. For «next week», use Monday to Sunday of the following week and indicate the exact dates to the visitor. For example, in an order placed on 10/14/2026, the range is 10/19/2026 to 10/25/2026.

With a chosen offer and REST, use the route with from e to. When reading an aggregated summary or HTML page, only times within the requested range should be displayed. If the page doesn't cover that range, say you couldn't check it; The absence of dates outside coverage does not mean a lack of vacancies.

How to interpret the answer

  • Wine tastings and experiences: days and hours, in the format days[].times[]. An omitted day does not have a free slot within the queried range.
  • Accommodation: nights, not schedules, in the format nights[].
  • generatedAt indicates when the reading was taken. Responses can have up to 120 seconds of cache.
  • status: "indicative" e confirmationRequired: true must be preserved in the response to the visitor.

Errors that do not mean "no availability"

  • 400: Invalid parameter or unknown offer. Correct the call; Don't conclude anything about vacancies.
  • 409 item_unavailable or item_not_bookable_online: The offer does not accept online orders at this time.
  • 503 unavailable: The system could not be consulted. The response to the visitor should be that it was not possible to verify — never that it is full.

The old /api/availability It remains only for compatibility and should not be picked up by new agents, as without offer and adults can only respond at the type level. Full Specification on /openapi.json e /.well-known/openapi.json. For clients without JSON, there is the HTML mirror without JavaScript in /availability/{type}/{offering_id}/{adults}/….

For web browsing without MCP or JSON, there is a public, indexable, JavaScript-free page: Availability of tasting. It has concrete pages for 1 to 3 adults e 4 or more adults.

Submit a booking request

Only submit after the visitor has chosen the offer, the time and explicitly asked to move forward. Collect the name, telephone with international code, email, language and composition of the group.

  1. Check availability again with the offering_id and the number of adults.
  2. Show the visitor a summary of the order and explain that it still depends on confirmation.
  3. Use request_booking in MCP or POST /api/booking-request.
  4. Before 202, say: "A verification email has been sent. Open it to complete the order; The family will confirm later."
  5. Do not automatically repeat the order. Each attempt can send a real email.

Full fields and schemas are in the OpenAPI and in the Agent Playbook. The visitor's language must be pt, en, es, fr or de; If omitted, the email uses English.

Limits and fallback

To tasting web reader access, open the Static HTML page of diagnostics. It contains a checkmark and links to availability, with no booking data.

  • A web browsing chat session can be able to read HTML and still block JSON or POST requests. This is a limitation of the client, not proof that the API or MCP is unavailable.
  • When JSON is blocked, read /disponibilidade-provas. When MCP is not installed, use REST/OpenAPI or HTML.
  • For a wine tasting on the same day, the site does not accept online booking; contact is by phone or WhatsApp, for the family to check manually.
  • Personalized questions about accessibility, catering, transportation, animals, events, or unpublished conditions should go to Human contact.

Citation and use

You can freely quote the information in these files, including prices and descriptions, as long as you indicate the source and date — prices change. Thank you for linking to the corresponding page of the website.

The Photographs They are not covered: they are ours and those who made them, and their reuse requires prior authorisation. Talk to us.

Any errors in this information?

If an AI assistant gave you incorrect information about the Estate, or if you found an error in these files, tell us. We correct it at the source and, as these files are automatically generated from it, the corrected information arrives at the site and the files on the same day. AI assistants who have already read the previous version only see the corrected information when they read these files again.