Repository navigation
Conversation
…; warn on soft radius and started events; reject null quantity
8a2d46b to
7ba0925
Compare
…not a missing event
…ngs early in a session For the first two to three minutes of a browser session Vivid Seats answers its JSON search and listings requests, the event page's own included, with a generic 404. search_events now reads the site's server-rendered search page for a text search when that happens (a performer match redirects to the performer page, which takes the date range) and names any filter the page did not apply. get_ticket_offers repeats its read for up to 40 seconds before reporting the 404 and says to call again.
…ew is for any quantity In sessions where Vivid Seats never serves listings, a 40 second wait per call cost agents minutes. The read now waits 20 seconds, and the error says the event page's preview rows and 'from' price are not filtered by quantity.
|
Pushed c03b671 and 2c7201c. For the first two to three minutes of a browser session, Vivid Seats answers its JSON search and listings requests with a generic 404. The event page's own requests get the same 404 and its listings panel shows "Sorry, there was an error". Some sessions never get listings.
Bench (5 pairs). Correct counts are shape-only. The real cheapest all-in price for 2 tickets at that time was $184:
|
…dy instead of an error Luna gave up after two 20 second calls, about a minute into the session, while listings usually load after two to three minutes. The read now waits up to 45 seconds per call, under the 60 second invocation limit, and returns status not_ready with the time waited, so the caller sees a state to retry rather than a failure. A wait canceled by the caller now reports canceled, which the output schema allows.
|
Pushed d83e223: Bench (5 pairs). The real cheapest all-in price for 2 tickets was $186 during this run:
|
… return unfiltered fallback results get_ticket_offers checks the event page on the listings proxy's generic 404: an unknown production_id redirects to /404 and is not_found at once instead of waiting 45 seconds and reporting not_ready. prepare_ticket_selection reports that 404 as listings not served yet, pointing at get_ticket_offers, rather than a missing listing. search_events returns site_error instead of search-page results that drop a requested date, category, performer, venue or price filter. prepare_ticket_selection goes back to draft; the registry notes describe each tool instead of a shared changelog.
…on fallback, and report a canceled listings read as canceled
…nd stop a canceled listings wait at once
Summary
Adds five public page tools for the Vivid Seats marketplace:
search_events: bounded event search by text, place, date, venue, performer, category and index-price ceiling.get_ticket_offers: quantity-eligible ticket listings, cheapest all-in USD prices first, price filters and zone/section grouping.get_event: exact public event details, stated local date/time, lineup, seat restrictions and venue address.get_venue: exact venue address, coordinates, time zone and catalog capacity.prepare_ticket_selection: re-read an exact event/listing/quantity, reject changed prices or session price groups, and return a quote and ordinary event-page handoff. Never select on the site, open checkout, reserve inventory or pay.All are self-contained
kind: pagetools, restricted towww.vividseats.com, using only same-origin public GET reads. No navigation, account access, cart/checkout request, automatic write or fake confirmation framework. Preparation rejects extra inputs such asconfirmed=true. Included fee components and VAT are event-specific; estimated total is not a final checkout amount. Seat numbers are not available in the listing feed.Early-session behavior
For the first few minutes of a browser session, Vivid Seats' API proxy answers every search and listings request with a generic 404, the same answer it gives for an unknown event.
get_ticket_offerschecks the server-rendered event page once: an unknownproduction_idredirects to/404and isnot_foundat once. A real event's listings are read again for up to 45 seconds, thennot_ready.prepare_ticket_selectionreports that 404 as listings not served yet, pointing atget_ticket_offers, not as a missing listing.search_eventsfalls back to the site's own search or performer page for a first-page, date-sorted text search without a place. It returnssite_errorinstead of results when that page cannot apply a requested date, category, performer, venue or price filter; only the default parking exclusion is reported as a warning. When that page holds fewer events thanpage_size(a performer page holds 25), its count becomes the response'spage_size, and the warning names the page 2 call that continues it: the same text search after the search page, orperformer_idwithout the text after a performer page, since a performer page lists that performer's events rather than the text search's.Safety / limitations
Checkout transitions may hold inventory. The runtime does not enforce a trusted exact-action approval path, so hold, checkout, purchase, transfer and seller execution tools are deliberately absent. Restrictions and other site text are treated as data, never instructions. The search index can lag inventory; the radius is approximate and the result window is capped at 1000.
Status and evidence
get_event,get_venue:verified. Independent QA and live success from Explore in Kernel and the extension on 2026-09-30; source unchanged since.search_events,get_ticket_offers,prepare_ticket_selection:draft. They passed the same independent live QA on 2026-09-30, but their source changed afterwards for the early-session 404, so they need fresh independent QA.get_ticket_offersreturnednot_foundfor an unknown id in under a second andnot_readyafter 45 seconds for a real event early in the session. Early in a session,search_eventsfor 'Hamilton' atpage_size50 returned the performer page's 25 events withpage_size25 and 32 pages (before the fix it claimedpage_size50 and 16 pages). A canceledget_ticket_offersread is nowcanceled, notsite_error, and stops waiting at once.get_ticket_offersfilters and sorts the listings itself; the event page does the same, filtering the listings response it already holds in the browser (itsfilterListings) and sorting by price by default.node --test "tests/*.test.mjs"pass.Only domain files, the two site-specific test files and this namespace's sorted registry entries are changed. Do not auto-merge.