---
name: duplex-77-availability
description: "Check live availability of Duplex 77, a holiday apartment in the centre of Céret, via its public API, MCP server or concierge agent; read-only, no booking."
compatibility: Needs HTTPS access to api.duplex77.fr, mcp.duplex77.fr or agent.duplex77.fr. No authentication.
metadata:
  publisher: duplex77.fr
  homepage: https://duplex77.fr
  version: "1.0.0"
---

# Duplex 77 availability

Duplex 77 is a holiday apartment in the centre of Céret (Pyrénées-Orientales, France), let as one unit.
Use this skill to answer "is it free on these dates?" and "when is it free?".
Everything here is public, read-only and unauthenticated. **You cannot book**:
to book, send people to https://duplex77.fr.

## Unit

| id | name | what | sleeps | bedrooms |
|---|---|---|---|---|
| `duplex` | Duplex 77 | the whole duplex apartment in the centre of Céret, with terrace | 6 | 3 |

For bathrooms, amenities and photos, see the listing at https://duplex77.fr.

## Dates

- `YYYY-MM-DD`, Europe/Paris.
- Ranges are half-open `[checkin, checkout)`: the checkout day is not a night,
  so a guest can arrive on another guest's departure day.
- Blocked ranges are `{start, end}`: `start` is the first occupied night, `end` the departure day.
- A query window is at most 731 days (default: today to +365 days).

## Option 1: REST API (base https://api.duplex77.fr)

The API is shared with another property: always pass `property=duplex` (or `unit=duplex`).

- `GET /v1/units?property=duplex` — the unit.
- `GET /v1/availability?property=duplex&from=YYYY-MM-DD&to=YYYY-MM-DD` — blocked ranges.
- `GET /v1/availability/check?unit=duplex&checkin=YYYY-MM-DD&checkout=YYYY-MM-DD` — `available`, `nights`, `conflicts`.
- `GET /v1/calendar/duplex.ics` — iCalendar feed of blocked nights.
- OpenAPI 3.1: https://api.duplex77.fr/openapi.json

```sh
curl -s 'https://api.duplex77.fr/v1/availability/check?unit=duplex&checkin=2026-12-20&checkout=2026-12-27'
# {"unit":"duplex","checkin":"2026-12-20","checkout":"2026-12-27","nights":7,"available":true,"conflicts":[]}

curl -s 'https://api.duplex77.fr/v1/availability?property=duplex&from=2027-06-01&to=2027-09-01'
```

## Option 2: MCP server

`https://mcp.duplex77.fr/mcp` (Streamable HTTP, no auth; same server at https://duplex77.fr/mcp). Tools, all scoped to Duplex 77:

- `list_units` — the one unit: id, name, sleeps, bedrooms.
- `check_availability` { unit: "duplex", checkin, checkout } — free or not, with conflicts.
- `get_availability` { from?, to? } — blocked ranges.
- `find_free_stays` { unit: "duplex", nights, from?, to? } — first 20 free stays of exactly that length.

```sh
claude mcp add --transport http duplex-77 https://mcp.duplex77.fr/mcp
```

Server card: https://duplex77.fr/.well-known/mcp/server-card.json

## Option 3: concierge agent

A plain-language agent that uses the same tools and answers in the user's language.

- `POST https://agent.duplex77.fr/chat` with `{"messages":[{"role":"user","content":"Is the duplex free 7-14 November?"}]}` returns `{"reply","toolCalls"}`.
- A2A (JSON-RPC 2.0, 1.0 and 0.3): `POST https://agent.duplex77.fr/a2a`.
- Agent card: https://duplex77.fr/.well-known/agent.json

## Rules

- Availability only: the data never says who booked, on which platform, or any price. Do not guess them.
- Answers are cached for up to 5 minutes, so a change made in the last few minutes may not show yet.
- If the dates are taken, offer the nearest free stays of the same length (`find_free_stays`).
- To book, send people to https://duplex77.fr.
