# Dolby Cinema Tracker Observed AMC premium showtimes, prices, theatres and double features. Public facts are free. Unknown data remains unknown; check coverage/freshness and confirm on AMC. - Guide: https://dolbycinematracker.xyz/agents - Public MCP: https://dolbycinematracker.xyz/mcp - Claude/ChatGPT OAuth connector URL: https://dolbycinematracker.xyz/mcp?auth=1 - Protected resource metadata: https://dolbycinematracker.xyz/.well-known/oauth-protected-resource - Authorization metadata: https://dolbycinematracker.xyz/.well-known/oauth-authorization-server - REST/OpenAPI: https://dolbycinematracker.xyz/openapi.json ## Connect Claude: Customize → Connectors → Add custom connector; paste the OAuth connector URL, choose Sign in now and Register automatically, Connect, then approve scopes in your browser. ChatGPT: Settings → Apps → Advanced settings → Developer mode, Create app; paste the same URL, choose OAuth, leave client credentials blank for dynamic registration, Connect and approve. Labels and availability depend on your plan/workspace. The auth=1 URL challenges initialization so clients start OAuth immediately. /mcp keeps initialize, tools/list and public tools anonymous and challenges only private calls. The resource/audience is always https://dolbycinematracker.xyz/mcp (without query). OAuth uses S256 PKCE, exact registered redirects, resource binding, access tokens lasting at most one hour (never beyond the refresh-family deadline), rotating hashed refresh tokens (90-day absolute family lifetime), and revocation at /oauth/revoke or /agents. Restore the human owner key in Following or /plan in this browser before consent. Scopes: read, alerts:write, billing, planner:write. Consent may downgrade scopes. Manual tokens at /agents expire after 365 days; send Authorization: Bearer dct_... privately, never in a URL. Never share owner keys. At most 10 connections per owner, 120 requests/minute and 30 writes/minute per connection; OAuth access tokens share their stable family's quotas across refresh rotations. Only alerts:write requires entitlement. Planner, read and billing work after lapse. ## Safety and onboarding start_subscription (POST /api/v1/onboarding) returns checkoutUrl, agentToken, pending_payment. Only the human opens Stripe and confirms; poll get_subscription_status. No tool charges, buys tickets or completes payments. Email needs consent and confirmation; push needs browser permission. start_planner (POST /api/v1/start_planner) opens shortly with a 7-day free trial and returns not yet available until then. The planner opens to everyone shortly: $4.99/mo, everything included, 7-day free trial. Existing owners reuse their token. list_releases supplies upcoming releases, tiers and suggestions; set_home_theatres selects 1–10 active theatre IDs. Top/Want/Maybe map to follows only for entitled owners. Booking requests and cancellation are executor-only; otherwise use the showing purchaseUrl on AMC. ## Set someone up Set me up with a Release Planner on Dolby Cinema Tracker. The planner opens to everyone shortly: $4.99/mo, everything included, 7-day free trial. Until then start_planner returns not yet available. Use https://dolbycinematracker.xyz/mcp (Streamable HTTP), or the REST tools documented at https://dolbycinematracker.xyz/openapi.json. Ask for my ZIP and preferred AMC theatres, format order (default Dolby > IMAX > PRIME > Laser > Standard, 3D off), and the next releases I care about. You may infer preferences only from Letterboxd or history I choose to share; ask before importing my public Letterboxd username. Use my existing connected token, or call start_planner once and keep agentToken private. Give me claimUrl to open in my own browser within 24 hours; it works once and saves my planner key. Use find_theatres and list_releases, then set_home_theatres, set_format_preference and set_tier (Top, Want, Maybe, Skip) to reflect my choices. Suggestions are advice, not booking intent. Summarize my plan. Planning never creates alerts. Only if I want alerts, use create_checkout_link and let me open Stripe and confirm payment myself; never pay or buy tickets for me. Email requires separate opt-in and confirmation, push requires browser permission. Never share or log my tokens or owner key. Booking is handled by me on AMC using get_best_showings purchaseUrl. Never infer booking consent or change protected tickets. Reminders use a configured Following deliverySubscriptionId and honor quiet hours, even on-sale. Movie dates are explicitly supplied, never predicted. Ticket reminders use real booked planner tickets. Planner tiers/preferences never create booking requests. Only an explicit request_booking with selected showing or complete flexibility and stable clientKey queues intent for your booking assistant (private executor accounts only). Protected tickets cannot be modified by these tools. ## Tools search_showtimes and list_drops preserve identifiers and include movieTitle, theatreName, theatreCity, theatreState and formatLabel. Unknown facts stay null; on-sale aggregate displays describe their firstBookableEvidence rather than implying every theatre/format is the same. update_notification_settings accepts a partial JSON object. Supply only the fields to change; omitted settings retain their stored values, including channel toggles, timezone, quiet hours and digest schedule. - start_planner: public; Opens shortly with a 7-day free trial; returns 'not yet available' until then. - list_releases: read; Upcoming catalog releases with your saved tier and suggest-v1 suggestion. Suggestions are advice, never intent. Use the returned filmId with set_tier. - set_home_theatres: planner:write; Choose 1–10 active AMC theatre IDs. Rankings use only these theatres. Never creates booking intent or notification consent. - list_reminders: alerts:write; List only your reminders and their configured delivery source. Requires alerts:write. - set_reminder: alerts:write; Remind before an already booked planner ticket, or at an explicit human-selected on-sale/first-showing date and time for a known movie. Movie dates are supplied facts, never predictions. Uses an existing owned Following alert's confirmed email/registered push, and respects quiet hours even for on-sale. Does not book or create notification consent. - delete_reminder: alerts:write; Delete only your reminder and expire any still-pending delivery. Does not alter tickets or follows. - get_plan: read; Read your private plan, protected booked tickets, requests and as-planned capacity. Never creates booking intent. - get_capacity: read; Read planner capacity, not live AMC eligibility. Available to every planner owner. - get_best_showings: read; Rank existing showings at the owner's home theatres with the same planner eligibility, protected ticket conflicts and format preferences. Returns the whole ranking (at most 600, flagged truncated), never paged. Does not queue or book. - set_tier: planner:write; Set top, want, maybe, skip, seen or declined using existing rules. Top protects booked tickets; lowering a tier never removes protection. Does not create a booking request. - set_format_preference: planner:write; Set default format order and explicit 3D permission. Never books or modifies protected tickets. - request_booking: planner:write; Private executor accounts only. Only call when the human explicitly asks to queue a booking. Supply a selected showing OR complete flexibility and a stable clientKey for retries. Creates intent only, never a booking, charge or AMC call. Your booking assistant alone executes it and enforces zero-only. - cancel_booking_request: planner:write; Private executor accounts only. Cancel only a still-queued request at its current revision. Cannot cancel a claimed request, a booked ticket or any protected ticket. - search_showtimes: public; Find collected showtimes by movie, theatre, ZIP and radius (miles), format or date range. Each row preserves IDs and includes movieTitle, theatreName, theatreCity, theatreState and the observed formatLabel; unknown display facts are null. Prices and coverage are observations, not guarantees; confirm with AMC. - list_drops: public; Find newly observed premium showings or new on-sale evidence since an absolute ISO time, with IDs, movieTitle, theatreName, theatreCity, theatreState and formatLabel. On-sale movie aggregates retain their nested evidence; top-level theatre/format displays identify firstBookableEvidence, or are null when unknown. This is collected evidence, not a complete real-time feed. - get_movie: public; Get the collected movie record by movie ID or slug. Use search_showtimes for its showings. - find_theatres: public; Find active collected AMC theatres by name/city, ZIP and radius in miles. Theatre capabilities do not establish an individual showing's format. - find_double_features: public; Find same-theatre movie pairs for one theatre and date using the site's pairing engine. Travel, runtime and trailer estimates are not guarantees; this never books tickets. - get_pricing: public; Read the current configured alerts price. Public facts are free. Payment always requires a human to open and confirm a Stripe-hosted Checkout URL. - get_subscription_status: read; Check whether the connected owner's alerts subscription is active, including before payment or after expiry. Does not charge or modify billing. - create_checkout_link: billing; Help the connected owner subscribe or renew. Return the Stripe-hosted URL to the human and ask them to open it and confirm payment. Never claim payment is complete. - create_billing_portal_link: billing; Return the connected owner's Stripe-hosted portal URL. The human opens it to view invoices, change payment details or cancel. This tool never cancels or charges. - list_alerts: read; List only the connected owner's saved follows and their current status. Requires read scope. - create_alert: alerts:write; Create a movie follow with theatre IDs, formats, triggers and cadence using the website's validation and limits. Requires alerts:write and a paid plan. Email needs explicit human consent and confirmation; payment is not delivery consent. - update_alert: alerts:write; Update a saved follow's theatres, formats, triggers or cadence without changing omitted preferences. Only the connected owner's alert can be edited. Requires an entitled owner and alerts:write. - pause_alert: alerts:write; Pause only the connected owner's alert. Requires alerts:write and a paid plan. - resume_alert: alerts:write; Resume only the connected owner's paused alert. Requires alerts:write and a paid plan; no paused-period backlog is sent. - delete_alert: alerts:write; Permanently delete only the connected owner's alert. This does not cancel the subscription. Requires alerts:write and a paid plan. - get_notification_settings: read; Read the connected owner's email/push preferences, timezone, quiet hours and digest schedule. Requires read scope. - update_notification_settings: alerts:write; Partially update the connected owner's channel toggles, quiet hours or digest schedule. Only supplied fields change; omitted fields retain their current stored values. Requires alerts:write and an entitled owner. Enabling email does not bypass email opt-in/confirmation or browser permission. - list_agent_tokens: read; List connection IDs, names and scopes for this owner, never token secrets. Requires read scope. Only the human's owner key can create or revoke other connections. - revoke_this_token: read; Immediately and permanently revoke the current agent token. Future calls with it fail; only a human can issue a replacement. Does not cancel billing. - start_subscription: public; For a person without an account: create a pending agent connection and a Stripe-hosted Checkout link. Show the URL to the human; only they can confirm payment on Stripe. Keep the returned token private. Do not call repeatedly or for an existing subscriber. REST mirrors each tool at /api/v1/: GET query for reads, POST JSON for writes. Private responses are no-store. Audit keeps operation/outcome metadata for 90 days, no request bodies or secrets. Registry publishing, automatic payment and ticket purchasing are not supported.