Skip to main content
Glama
ho-ju
by ho-ju

AMC MCP Server 🎬

Сервер Model Context Protocol (MCP), который обеспечивает комплексный опыт бронирования билетов в кино для AMC Theatres. Этот сервер позволяет разговорным ИИ-ассистентам помогать пользователям находить фильмы, узнавать расписание сеансов, бронировать места и обрабатывать платежи через простой API-интерфейс.

Возможности ✨

  • Поиск фильмов: Просмотр текущих фильмов в прокате и получение персональных рекомендаций

  • Поиск сеансов: Поиск доступных сеансов по местоположению, дате и фильму

  • Выбор мест: Просмотр интерактивных карт зала и проверка доступности

  • Управление бронированием: Бронирование мест с проверкой доступности в реальном времени

  • Обработка платежей: Обработка имитированных платёжных транзакций с подтверждающими квитанциями

  • Поддержка нескольких локаций: Поиск по нескольким кинотеатрам AMC

Related MCP server: AMC MCP Server

Быстрый старт 🚀

Предварительные требования

  • Python 3.8+

  • Docker (опционально, для развёртывания в контейнере)

Установка

Вариант 1: Локальная установка

  1. Клонируйте репозиторий:

git clone <repository-url>
cd amc-mcp
  1. Установите зависимости:

pip install -r requirements.txt
  1. Установите пакет:

pip install -e .
  1. Запустите сервер:

python -m amc_mcp.fastmcp_server

Вариант 2: Развёртывание через Docker

  1. Соберите и запустите с помощью Docker Compose:

docker-compose up --build
  1. Или соберите и запустите вручную:

docker build -t amc-mcp .
docker run -it amc-mcp

Справочник MCP-инструментов 🛠️

1. get_now_showing

Возвращает список фильмов, которые сейчас идут в указанном месте.

Входные данные:

{
  "location": "Boston, MA"
}

Выходные данные:

{
  "location": "Boston, MA",
  "movies": [
    {
      "movie_id": "mv001",
      "title": "Dune: Part Two",
      "rating": "PG-13",
      "duration": 166,
      "genre": "Sci-Fi/Action",
      "description": "Paul Atreides unites with Chani..."
    }
  ]
}

2. get_recommendations

Предлагает фильмы на основе настроения, жанра или предпочтений.

Входные данные:

{
  "genre": "action",
  "mood": "exciting"
}

Выходные данные:

{
  "criteria": {"genre": "action", "mood": "exciting"},
  "recommendations": [...]
}

3. get_showtimes

Получает доступные сеансы для конкретного фильма и местоположения.

Входные данные:

{
  "movie_id": "mv001",
  "date": "2025-10-28",
  "location": "Boston, MA"
}

Выходные данные:

{
  "movie": {"id": "mv001", "title": "Dune: Part Two"},
  "date": "2025-10-28",
  "location": "Boston, MA",
  "showtimes": [
    {
      "showtime_id": "st001",
      "theater_name": "AMC Boston Common 19",
      "theater_address": "175 Tremont Street",
      "time": "14:00",
      "format": "IMAX",
      "price": 18.50
    }
  ]
}

4. get_seat_map

Отображает доступные и забронированные места для конкретного сеанса.

Входные данные:

{
  "showtime_id": "st001"
}

Выходные данные:

{
  "showtime_id": "st001",
  "movie": "Dune: Part Two",
  "theater": "AMC Boston Common 19",
  "date": "2025-10-28",
  "time": "14:00",
  "seat_map": [
    {
      "seat_number": "A5",
      "row": "A",
      "column": 5,
      "is_available": true,
      "price_tier": "Standard",
      "price": 18.50
    }
  ]
}

5. book_seats

Бронирует выбранные места для пользователя.

Входные данные:

{
  "showtime_id": "st001",
  "seats": ["A5", "A6"],
  "user_id": "user123"
}

Выходные данные:

{
  "booking_id": "booking-uuid",
  "status": "pending",
  "movie": "Dune: Part Two",
  "theater": "AMC Boston Common 19",
  "date": "2025-10-28",
  "time": "14:00",
  "seats": ["A5", "A6"],
  "total_price": 37.00
}

6. process_payment

Обрабатывает имитированную платёжную транзакцию.

Входные данные:

{
  "booking_id": "booking-uuid",
  "payment_method": "card",
  "amount": 37.00
}

Выходные данные:

{
  "payment_id": "payment-uuid",
  "payment_status": "success",
  "booking_id": "booking-uuid",
  "receipt_url": "https://amc.com/receipts/payment-uuid",
  "confirmation": {
    "movie": "Dune: Part Two",
    "theater": "AMC Boston Common 19",
    "date": "2025-10-28",
    "time": "14:00",
    "seats": ["A5", "A6"],
    "total_paid": 37.00
  }
}

Пример сценария разговора 💬

Вот как выглядит типичный разговор о бронировании билетов в кино:

  1. Пользователь: «Найди боевик рядом со мной на сегодня вечером».

    • Сервер вызывает: get_now_showing + get_recommendations

    • Возвращает: Список боевиков с сеансами

  2. Пользователь: «Забронируй два места на "Дюну: Часть вторую" на 20:00».

    • Сервер вызывает: get_showtimes → get_seat_map → book_seats

    • Возвращает: Выбор мест и подтверждение бронирования

  3. Пользователь: «Оплати моей картой».

    • Сервер вызывает: process_payment

    • Возвращает: Подтверждение оплаты с электронной квитанцией

Архитектура 🏗️

amc-mcp/
├── src/
│   └── amc_mcp/
│       ├── __init__.py
│       └── server.py          # Main MCP server implementation
├── data/
│   ├── movies.json           # Movie catalog
│   ├── theaters.json         # Theater locations
│   ├── showtimes.json        # Showtime schedules
│   └── seats.json           # Seat maps by showtime
├── config/
│   └── nginx.conf           # Web server configuration
├── Dockerfile               # Container configuration
├── docker-compose.yml       # Multi-service orchestration
├── requirements.txt         # Python dependencies
├── pyproject.toml          # Package configuration
└── README.md               # This file

Модели данных 📊

Фильм

{
  "movie_id": str,
  "title": str,
  "rating": str,         # PG, PG-13, R, etc.
  "duration": int,       # Minutes
  "genre": str,
  "description": str,
  "poster_url": str
}

Кинотеатр

{
  "theater_id": str,
  "name": str,
  "address": str,
  "city": str,
  "state": str,
  "zip_code": str
}

Сеанс

{
  "showtime_id": str,
  "movie_id": str,
  "theater_id": str,
  "date": str,           # YYYY-MM-DD
  "time": str,           # HH:MM
  "format": str,         # Standard, IMAX, 3D, Dolby
  "price": float
}

Разработка 👨💻

Добавление новых фильмов

Отредактируйте data/movies.json, чтобы добавить новые фильмы:

{
  "movie_id": "mv011",
  "title": "New Movie Title",
  "rating": "PG-13",
  "duration": 120,
  "genre": "Action",
  "description": "Description of the movie...",
  "poster_url": "https://example.com/poster.jpg"
}

Добавление новых кинотеатров

Отредактируйте data/theaters.json:

{
  "theater_id": "th011",
  "name": "AMC New Location 15",
  "address": "123 Main Street",
  "city": "New City",
  "state": "NY",
  "zip_code": "12345"
}

Добавление сеансов

Отредактируйте data/showtimes.json и data/seats.json, чтобы добавить новые сеансы и соответствующие карты мест.

Тестирование

Ручное тестирование

Вы можете протестировать отдельные инструменты с помощью MCP-инспектора или подключившись к любому MCP-совместимому клиенту.

Тестирование с Claude Desktop

  1. Настройте Claude Desktop для подключения к вашему MCP-серверу

  2. Используйте естественный язык для проверки процесса бронирования

  3. Пример: «Найди научно-фантастический фильм, который идёт сегодня вечером в Бостоне»

Конфигурация ⚙️

Переменные окружения

  • PYTHONPATH: Установите значение /app/src для корректного разрешения модулей

  • PYTHONUNBUFFERED: Установите значение 1 для логирования в реальном времени

  • MCP_LOG_LEVEL: Устанавливает уровень логирования (DEBUG, INFO, WARNING, ERROR)

Конфигурация Docker

Сервер работает в лёгком контейнере Python 3.11 со следующими характеристиками:

  • Не-root пользователь для безопасности

  • Проверки работоспособности для мониторинга

  • Монтирование томов для сохранения данных

  • Изоляция сети

Вопросы безопасности 🔒

Это имитированная реализация для демонстрационных целей. В производственной среде:

  1. Обработка платежей: Интеграция с реальными платёжными шлюзами (Stripe, PayPal)

  2. Аутентификация: Добавление аутентификации и авторизации пользователей

  3. Проверка данных: Внедрение комплексной проверки входных данных

  4. Ограничение запросов: Добавление ограничения частоты API-запросов

  5. Шифрование: Использование HTTPS и шифрование конфиденциальных данных

  6. База данных: Замена JSON-файлов на настоящую базу данных

  7. Логирование: Внедрение структурированного логирования и мониторинга

Будущие улучшения 🔮

  • Интеграция с реальным AMC API: Подключение к настоящему API AMC Theatres

  • Учётные записи пользователей: Постоянные профили пользователей и история бронирований

  • Групповые бронирования: Поддержка совместного бронирования несколькими пользователями

  • Программы лояльности: Интеграция с AMC Stubs

  • Мобильные билеты: Генерация QR-кодов для входа по мобильному устройству

  • Рекомендации по местам: ИИ-подсказки оптимальных мест

  • Оповещения о ценах: Уведомление пользователей о скидках и акциях

  • Социальные функции: Возможность делиться планами похода в кино с друзьями

  • Доступность: Выбор мест с учётом требований ADA

  • Многоязычность: Поддержка международных языков

Участие в разработке 🤝

  1. Сделайте форк репозитория

  2. Создайте ветку для функции: git checkout -b feature/new-feature

  3. Внесите изменения и добавьте тесты

  4. Зафиксируйте изменения: git commit -am 'Add new feature'

  5. Отправьте изменения в ветку: git push origin feature/new-feature

  6. Отправьте pull request

Лицензия 📄

Этот проект распространяется под лицензией MIT — подробности см. в файле LICENSE.

Поддержка 💬

По вопросам, проблемам или запросам новых функций:

  • Создайте issue в репозитории GitHub

  • Ознакомьтесь с документацией для поиска типовых решений

  • Изучите примеры сценариев разговора


Приятного просмотра! 🍿🎬

Available Tools

6 tools
book_seatsC

Reserves selected seats for the user.

NameRequiredDescriptionDefault
seatsYesList of seat numbers (e.g., ["A5", "A6"])
user_idYesUser identifier
showtime_idYesShowtime ID (e.g., "st001")

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose side effects, but it only says 'Reserves' without detailing behaviors like availability checks, error handling, idempotency, or any impact on payment. This is a significant transparency gap for a mutating action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words, front-loaded with the core action. It is appropriately short, though it could be slightly more informative without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a booking action with three required parameters and an output schema), the description lacks essential context about workflow integration (e.g., payment linkage), success/failure semantics, and expected usage flow. It does not sufficiently support an agent's decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter has a clear description, so the baseline is 3. The tool description adds no additional meaning beyond what the schema already provides, neither enhancing nor detracting from parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action (reserves) and the resource (selected seats), which is specific enough. However, it does not mention the showtime context or differentiate from sibling tools like process_payment, so it lacks explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool, prerequisites, or how it fits into a larger workflow. There is no mention of alternatives or exclusions, so an agent has no contextual cues for timing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_now_showingA

Returns a list of movies currently showing in a given city or ZIP code.

NameRequiredDescriptionDefault
locationYesCity, state or ZIP code (e.g., "Boston, MA")

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states what it does but does not disclose any limitations (e.g., data freshness, geographic coverage), error conditions, or performance characteristics. For a simple read-only lookup, this may be acceptable, but it adds nothing beyond the obvious.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence with no filler. Every word contributes to the meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema, the description does not need to detail return values. The parameter is fully documented, and the tool's purpose is clear. It lacks only subtle context like timezone handling or data update frequency, but it's adequate for this simple listing operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter 'location' already has a clear description with an example. The tool description does not add additional semantics beyond what the schema provides. Baseline 3 applies because the schema covers everything.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns a list of currently showing movies for a given city or ZIP. The verb 'returns' and resource 'movies currently showing' are specific, and the scope differentiates it from siblings like get_showtimes (which focuses on showtimes) and get_recommendations (recommendations).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly indicates this is for listing movies in a location, contrasting with siblings like get_showtimes or get_seat_map. However, it lacks explicit 'when to use' vs 'when not to use' guidance. The context is clear enough for an agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recommendationsA

Suggests movies based on mood, genre, or time preferences.

NameRequiredDescriptionDefault
moodNoMood description (optional, e.g., "exciting", "romantic")
genreNoMovie genre (optional, e.g., "action", "comedy")
time_preferenceNoTime of day preference (optional, e.g., "evening")

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It states that the tool 'suggests movies,' implying a read-only operation, but it does not elaborate on behavior such as handling of no parameters, output format, or any limitations. The description is minimal and does not add rich context beyond what the schema already implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, complete sentence that is front-loaded and directly conveys the core function. There is no redundant or filler content, earning every word. It is appropriately concise for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has three optional parameters and an output schema, so the description does not need to specify return values. The description adequately covers the tool's primary purpose and inputs, and the output schema likely details the response structure. However, it leaves some behavioral nuances (e.g., what happens if all params are null) implied, though this is minor given the simplicity of the tool and presence of output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage with descriptions and examples for each parameter (mood, genre, time_preference). The tool description merely echoes these parameter names without adding new meaning. Since schema coverage is high, the baseline of 3 is appropriate; the description does not enhance the understanding beyond the schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Suggests movies based on mood, genre, or time preferences.' It uses a specific verb ('suggests') and resource ('movies'), and the mention of mood, genre, and time preferences distinguishes it from sibling tools like get_now_showing and get_showtimes which focus on current listings or specific showtimes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: when the user has mood, genre, or time preferences for movie recommendations. It does not explicitly mention alternatives or exclusions, but the sibling tool names (get_showtimes, get_seat_map, book_seats, process_payment, get_now_showing) imply distinct use cases, and the description's focus on recommendations is sufficient to guide basic usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_seat_mapA

Displays available and reserved seats for a specific showtime.

NameRequiredDescriptionDefault
showtime_idYesShowtime ID (e.g., "st001")

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and 'Displays' suggests a read-only operation, which is helpful. However, it does not explicitly state safety guarantees, authentication needs, or failure behavior, leaving some behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly written sentence with a clear verb and object. It avoids filler and places the key scope ('specific showtime') up front.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with an output schema, the description is mostly complete: it states the input, resource, and displayed data. It loses a point because it does not guide usage relative to sibling tools, though the output schema covers return details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents showtime_id with an example ('st001'), and the description adds no meaning beyond referencing 'a specific showtime.' Since schema coverage is 100%, the baseline score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses a specific verb ('Displays') and resource ('available and reserved seats for a specific showtime'), making the tool's function unmistakable. It also distinguishes itself from siblings like get_showtimes (which lists showtimes) and book_seats (which modifies seat availability).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for viewing seat availability for a chosen showtime, but it does not explicitly state when to use it versus alternatives or when not to use it. It provides enough context for basic selection but lacks explicit usage boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_showtimesB

Fetches available showtimes for a specific movie and location.

NameRequiredDescriptionDefault
dateYesDate in YYYY-MM-DD format (e.g., "2025-10-28")
locationYesCity, state or ZIP code
movie_idYesMovie ID (e.g., "mv001")

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden of behavioral disclosure. It indicates a read-only fetch, but it does not disclose data scope, matching behavior, failure modes, or output conventions. This is minimal behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler, front-loading the verb and object. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity, complete parameter schema, and presence of an output schema, the description covers the essential operation sufficiently. It could be improved with sibling differentiation, but it is not incomplete for this simple lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with descriptions for all three parameters (movie_id, date, location), so the schema already does the heavy lifting. The description adds no additional parameter-level meaning beyond what is already structured.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Fetches') and identifies the resource ('available showtimes') and scope ('for a specific movie and location'). It distinguishes the tool from siblings like get_seat_map and book_seats, though it omits the date dimension that is a required parameter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives such as get_now_showing or get_recommendations. Usage context is only implied by the verb and resource, with no exclusions or alternative conditions stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

process_paymentC

Handles simulated payment transaction.

NameRequiredDescriptionDefault
amountYesPayment amount in USD
booking_idYesBooking ID from book_seats
payment_methodYesPayment method (e.g., "card", "cash")

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It says 'simulated' which hints at non-real payment, but it does not disclose what happens on success/failure, whether it mutates state (e.g., marks booking as paid), or any side effects. This is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and front-loaded. It is not verbose, but it is under-specified rather than concise in a helpful way. Still, it earns a 4 for brevity and structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema and three required parameters, the description is too thin. It does not explain the payment flow, what the output represents, or any error conditions. The 'simulated' aspect is mentioned but not elaborated. The description is not complete enough for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters. The description adds no extra meaning beyond 'simulated payment transaction,' which does not clarify parameter relationships or constraints. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool 'Handles simulated payment transaction,' which identifies the action (process payment) and resource (transaction), but it is vague about the specific scope (e.g., what happens after payment, whether it confirms booking). It does not distinguish from siblings, though siblings are mostly read-oriented, so the purpose is somewhat clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not mention that it should be used after book_seats, nor any prerequisites or sequencing. The description implies usage for payment but lacks explicit context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.0
    • First observedbook_seats
    • First observedget_now_showing
    • First observedget_recommendations
    • First observedget_seat_map
    • First observedget_showtimes
    • First observedprocess_payment

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation4/5

Each tool targets a distinct step in the movie-booking flow: recommendations, showtimes, seat maps, booking, payment, and now-showing lists. The only slight overlap is between get_recommendations and get_now_showing, but their purposes (personalized suggestions vs. current listings) are clear enough.

Naming Consistency4/5

All tools use a consistent verb_noun pattern (get_, book_, process_), which is predictable. Minor deviation: 'process_payment' uses a generic verb compared to the more specific 'get_' and 'book_' verbs, but it still fits the pattern.

Tool Count5/5

Six tools is well-scoped for a movie booking domain, covering the essential user journey from discovery to payment without unnecessary bloat. Each tool serves a clear purpose in the workflow.

Completeness4/5

The surface covers the core booking lifecycle: discover movies, check showtimes, view seats, book, and pay. A minor gap is the lack of a cancellation or refund tool, but the simulated payment and booking flow is otherwise complete.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers