Skip to main content

Public conference interface

Conference Guide for MCP clients

Connect without an account or token. The Guide gives compatible clients a narrow, versioned view of validated attendee logistics and the current Published conference programme.

Public Streamable HTTP endpoint

Do not add headers or credentials. Any supplied Authorization header is rejected.

Anonymous · read-only
https://wts.sh/api/mcp/public

Connect a verified client

The configurations below are smoke-tested for this endpoint. They intentionally contain no token or authorization header.

OpenCode

Add this remote server to opencode.json, then restart OpenCode.

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "wts-conference-guide": {
      "type": "remote",
      "url": "https://wts.sh/api/mcp/public",
      "enabled": true
    }
  }
}
MCP Inspector

Search first to obtain current public slugs, then pass those slugs to the planner. Use resources/list, tools/list, and prompts/list for discovery.

npx -y @modelcontextprotocol/inspector --cli \
  https://wts.sh/api/mcp/public \
  --transport http \
  --method tools/call \
  --tool-name search_sessions \
  --tool-arg query=systems

Replace the placeholder slugs with search results. Add the Agenda's current programme_version as prior_programme_version when checking for changes.

npx -y @modelcontextprotocol/inspector --cli \
  https://wts.sh/api/mcp/public \
  --transport http \
  --method tools/call \
  --tool-name plan_proposed_schedule \
  --tool-arg 'ranked_session_slugs=["session-slug-a","session-slug-b"]' \
  --tool-arg 'must_attend_slugs=["session-slug-a"]'

Retrieve the comparison workflow as an MCP prompt. The compatible client performs the reasoning and tool calls.

npx -y @modelcontextprotocol/inspector --cli \
  https://wts.sh/api/mcp/public \
  --transport http \
  --method prompts/get \
  --prompt-name compare_sessions \
  --prompt-args session_slugs=session-slug-a,session-slug-b

What the Guide exposes

Guide index
Validated logistics, explicit unknowns, programme status, public slugs, and links to the detailed resources.
Published Agenda
Published Conference Days and Agenda Slots with stable Day and Track keys and local times in Europe/Skopje.
Session / Speaker
One Published Session or Speaker selected by the same public slug used on the website.
Published Partners
Published Partner names, classifications, tiers, and validated public website links. Partner Notes are never included.
search_sessions
Deterministic text search with a 1-160 character query and at most 20 results across Published Session titles and abstracts, public Speaker names and affiliations, formats, Tracks, and locations. Optional date, format, Track, Speaker, and location filters are exact and case-insensitive.
plan_proposed_schedule
Plans only from current Published Sessions with Published Agenda Slots. Accepts ranked, must-attend, and excluded public slugs, Europe/Skopje availability windows (including windows that cross midnight), and an optional prior programme version. Results contain non-overlapping selected Sessions, fixed all-attendee Slots, unresolved hard constraints, conflict reasons, and alternatives.
Public prompts
plan_conference_day and compare_sessions guide compatible clients through resources, search, and planning. They return workflow instructions; they do not invoke a WTS-hosted LLM.

Human-readable sources: Agenda, Sessions, Speakers, and Partners.

Public boundary and limitations

Included

  • Deploy-validated conference facts and explicit not_announced states.
  • Current Published Agenda, Sessions, Speakers, and Partners.
  • Bounded Session search with matched fields, plain-text snippets, canonical Session and Speaker links, and transparent ranking signals.
  • Ephemeral Proposed Schedules based only on caller priorities and schedule fit, with fixed all-attendee context and explicit trade-offs.
  • Client-side planning and comparison prompt workflows.
  • Plain text, canonical website links, stable public keys, and content/programme versions.

Excluded or deferred

  • Drafts, PocketBase IDs, publication flags, raw storage timestamps, or Speaker origin.
  • CFP provenance, submissions, reviews, Partner Notes, Admin Actions, or administrative tools.
  • Saved schedules, User schedule collections, reservations, capacity, waitlists, calendar export, and attendance guarantees.
  • Attendee authentication, behavioral recommendations, and ranking from sponsorship, Speaker origin, CFP/review data, internal scores, prestige, popularity, publication order, or editorial boosts.

Accuracy and outage states

not_announced means organizers have not published that logistics fact. It is not permission to infer or guess a value.

programme_unavailable means the live Published programme could not be loaded. Static logistics remain readable, while programme resources fail clearly rather than extending expired cached data.

Every successful resource, Session search, and Proposed Schedule reports the deploy-content version, live programme version, generation time, canonical URL, and Europe/Skopje. A supplied older programme version is reported as changed; the planner uses only current Published facts.

Missing or unpublished, unscheduled, excluded, unavailable, malformed, overlong, duplicate, and mutually conflicting inputs produce bounded explicit outcomes rather than inferred replacements. Invalid calls distinguish malformed_arguments, overlong_arguments, and duplicate_arguments. Equal must-attend conflicts use stable Published Agenda order, disclose the tie-break, and return the rejected choice as an equal alternative.

Endpoint privacy

Public MCP request bodies, resource choices, Session query text, filters, planner priorities, exclusions, availability windows, and results are processed in memory and are not retained as User state, request logs, or behavioral analytics. The endpoint does not set a visitor identity, fingerprint clients, or create public API keys.

Operations may contribute to aggregate service metrics. Abuse protection uses only short-lived in-memory counters, including a salted per-IP burst counter when the deployment supplies a trusted client address, plus process-wide rate and concurrency limits. Multi-replica deployments require equivalent aggregate limits at a shared proxy layer.

Capacity responses use HTTP 429 with Retry-After. The counters expire automatically and are not added to attendee profiles or Admin Actions.

Example questions

  • “What has WhatTheStack announced about the main venue and accessibility?”
  • “What is on the current Published Agenda in local Skopje time?”
  • “Search Published Sessions for systems reliability on the Systems Track, explain which public fields matched, and link me to each Session and Speaker.”
  • “Plan my conference day: rank these Sessions, treat this one as must-attend, exclude that one, and explain every schedule conflict and alternative.”
  • “Compare these two Sessions using their public content and my availability, then disclose whether the programme changed.”
  • “Which conference Partners are currently Published?”