Yorck Berlin · MCP · CLI · Claude skill

i taught my agent how to book movie tickets.

A public connector for showtimes and seat maps, plus a local private MCP that can book Yorck Unlimited tickets after confirmation.

Claude Code should install it for you.

Paste the bootstrap prompt. It sends Claude Code to the GitHub repo, loads the skill, adds the Yorck MCP server, and smoke-tests the CLI.

Open GitHub
agent output preview
M
find something low-stress tonight after 7. show me seats if you can.
Y
You are free tonight. I found an OV showing at delphi LUX with two good seats. Want me to open checkout or book with your Unlimited card?
Devil Wears Prada 2delphi LUX · 21:30 · OV · tonight
checkout
ready
SCREEN
availableselectedtaken
install surfaces

one project, four ways in.

The connector gives tools. The skill teaches the model how to use them: when to search, when to return a checkout link, when to render SVG, and when to fall back to inline HTML.

Claude Web

add the public connector

No account required. Search showtimes, return seat maps, create calendar files, and hand off to Yorck checkout.

Claude Code

paste a bootstrap prompt

Claude Code reads the repo, installs the skill, adds the MCP server, and tests a search command.

Local MCP

keep credentials on your machine

Use your own Yorck email, password, and Unlimited card. Booking remains confirmation-gated.

CLI

use it without an agent

Plan a movie, render a seat map as HTML, and open the result locally.

Claude Code prompt

curl it, paste it, let the agent set itself up.

This is the install story for developers: do not manually copy six snippets. Give Claude Code the setup prompt and let it wire the repo, skill, MCP server, and smoke test.

curl -fsSL https://yorck-mcp.isiklimahir.workers.dev/claude-code-prompt.md
claude-code-prompt.md
# Install the Yorck Movie Agent in Claude Code

You are helping me install the Yorck Movie Agent from the public repo and npm package.

Public repo:

https://github.com/Mahir-Isikli/yorck-mcp

Install page:

https://yorck-mcp.isiklimahir.workers.dev

NPM package:

```bash
npx -y yorck-mcp@latest
```

Please do the following:

1. Read the public repo README or install page so you understand the package.
2. Install the Claude Code skill locally:

   ```bash
   npx -y yorck-mcp@latest install-skill --target claude
   ```

3. Add the public read-only MCP server to Claude Code:

   ```bash
   claude mcp add --transport http yorck https://yorck-mcp.isiklimahir.workers.dev/public/mcp
   ```

4. Smoke-test the CLI:

   ```bash
   npx -y yorck-mcp@latest whats-on --when tonight --after 18:00 --limit 3
   ```

5. If I ask for a seat map and SVG/image output does not render in this environment, use the HTML fallback:

   ```bash
   npx -y yorck-mcp@latest seat-map-html <session-id> --out seat-map.html
   open seat-map.html
   ```

6. If I want private automated booking, do not collect secrets into chat. Instead explain that I should configure the local MCP with environment variables:

   ```bash
   claude mcp add --transport stdio \
     --env YORCK_EMAIL=you@example.com \
     --env YORCK_PASSWORD=your-password \
     --env YORCK_UNLIMITED_CARD=your-card-number \
     yorck-private -- npx -y yorck-mcp@latest mcp-stdio
   ```

7. Never claim a ticket was booked or a calendar event was created unless a tool actually succeeded. Booking must require explicit confirmation.

After installing, tell me exactly what you changed and how to test it with one prompt like: "find original-language Yorck movies tonight after 7 and show me the best seat map".
copyable setup

for people who want the exact snippets.

Everything stays copyable. Public mode is read-only. Private mode runs locally with environment variables.

Claude Web connector URL
https://yorck-mcp.isiklimahir.workers.dev/public/mcp
Upload Claude skill ZIP
https://yorck-mcp.isiklimahir.workers.dev/skill.zip
Claude Code public MCP
claude mcp add --transport http yorck https://yorck-mcp.isiklimahir.workers.dev/public/mcp
Install the skill locally
npx -y yorck-mcp install-skill --target claude
Private local booking MCP
claude mcp add --transport stdio \
  --env YORCK_EMAIL=you@example.com \
  --env YORCK_PASSWORD=your-password \
  --env YORCK_UNLIMITED_CARD=your-card-number \
  yorck-private -- npx -y yorck-mcp mcp-stdio
CLI quick start
npx -y yorck-mcp plan --q "devil wears prada" --when tonight --after 18:00
npx -y yorck-mcp seat-map-html <session-id> --out seat-map.html
open seat-map.html
rendering strategy

SVG when it works. HTML when it does not.

Different agent surfaces handle rich output differently. The skill tells the model which output to choose so a seat map is still useful in Claude Web, Claude Code, and plain terminals.

seat_map

Use this when the client can display SVG or image content. It returns structured rows and an SVG seat map.

seat_map_html

Use this in Claude Code or text-first clients when SVG does not render. Save the HTML and open it locally.

checkout link

When booking is not configured, return Yorck's checkout URL so the user can finish manually as guest or with their account.

the skill file

the behavior lives in one markdown file.

Install this alongside the MCP server. It teaches the agent the tool order, public vs private behavior, and the fallback path for seat maps.

SKILL.md
---
name: yorck-movie-agent
description: >-
  Plan movie nights with Yorck Berlin cinema. Use when the user asks for movie showtimes, seat maps, checkout links, calendar files, or booking through the yorck-mcp connector/CLI. Handles Claude Web remote MCP, Claude Code local MCP, inline HTML fallbacks, and confirmation-gated booking.
---

# Yorck Movie Agent

Use this skill when a user asks for Berlin Yorck movie planning, seat maps, direct checkout links, calendar files, or booking via the Yorck MCP/CLI.

## Available install modes

### Claude Web / Claude connectors

Remote read-only MCP endpoint:

```txt
https://yorck-mcp.isiklimahir.workers.dev/public/mcp
```

Use this when Claude Web, Claude Desktop connectors, Cowork, or mobile can add a custom connector. It is public and read-only: showtimes, films, cinemas, seat maps, calendar files, and checkout links. It does not book.

### Claude Code / local agents

Public/local MCP:

```bash
claude mcp add --transport stdio yorck -- npx -y yorck-mcp mcp-stdio
```

Private local MCP with booking credentials:

```bash
claude mcp add --transport stdio \
  --env YORCK_EMAIL=you@example.com \
  --env YORCK_PASSWORD=your-password \
  --env YORCK_UNLIMITED_CARD=your-card-number \
  yorck -- npx -y yorck-mcp mcp-stdio
```

### Terminal CLI

```bash
npx -y yorck-mcp whats-on --when tonight --after 18:00
npx -y yorck-mcp plan --q "devil wears prada" --when tonight --after 18:00
npx -y yorck-mcp seat-map <session-id> --out seat-map.svg
npx -y yorck-mcp calendar <session-id> <film-slug> --out movie.ics
```

## Tool use policy

Prefer tools in this order:

1. `pick_showtime`, when the user wants one good movie plan or a direct checkout link.
2. `whats_on`, when the user wants multiple options.
3. `find_film` then `showtimes`, when the user has a specific film title.
4. `seat_map`, when the environment can render or display SVG/image content.
5. `seat_map_html`, when SVG/image content will not display, such as some Claude Code text-only surfaces.
6. `add_to_calendar`, only when the user wants an ICS/calendar file.
7. `book_session`, only in private/local mode after explicit confirmation.

## Seat map output by environment

### If images/SVG render correctly

Use `seat_map`. It returns structured rows plus an SVG image.

### If SVG does not render

Use `seat_map_html` and show or save the inline HTML. If the client cannot open inline HTML directly, write the HTML to a local file and tell the user to open it.

In Claude Code, prefer:

```bash
npx -y yorck-mcp seat-map-html <session-id> --out seat-map.html
open seat-map.html
```

### If neither SVG nor HTML is possible

Use the structured rows from `seat_map` or `pick_showtime` and summarize:

- film
- cinema
- time
- format
- available row labels and available seat IDs
- direct checkout URL

Do not pretend API seat IDs are exactly the same as the visible Yorck website labels. If the user books manually, have them choose seats on Yorck's page.

## Public vs private behavior

Public mode needs no account. It can:

- search showtimes
- list cinemas
- render seat maps
- create ICS calendar files
- return direct checkout links

Private/local mode can book with credentials. It currently supports Yorck Unlimited booking. Paid checkout should be completed on Yorck's own page using the direct checkout link.

## Safety rules

- Never claim a booking was made unless `book_session` returned success.
- Never claim a calendar event was added unless a calendar tool actually succeeded.
- Ask for explicit confirmation before booking.
- Treat `dryRun: true` as the default for booking tests.
- If no Unlimited card is configured, use `pick_showtime` and provide the checkout link.

## Example prompts this skill should handle

- "what original-language movies are playing tonight after 7?"
- "show me a seat map for this Yorck session"
- "give me an inline HTML seat map because SVG is not rendering"
- "plan a low-stress movie night for me"
- "book the best option if my Unlimited card makes it free"
copied