Dayplay
OfficialThis server provides read-only, SF Bay Area–only local discovery through three tools: neighborhood lookup, verified event search, and curated place search.
List the exclusive 35 SF Bay Area neighborhood centroids (San Francisco, Oakland, Berkeley) to validate in-market queries and exact neighborhood names.
Query verified real-time events by date, neighborhood, category, source, and limit.
Query curated places by neighborhood, open-now status, rating/distance sort, limit, and newly opened window.
Enforce out-of-market refusal: it declines locations outside SF/Oakland/Berkeley and should not fabricate results.
Note: despite the README's broader nationwide and 40-tool claims, the provided schema exposes only these three SF Bay Area–only tools.
Connects the agent to a user's Google account for sign-in, unlocking the gated tools in the DayPlay catalog: model-backed semantic search, saving neighborhoods-bound outings and itineraries, saving/unsaving listings, RSVPs, upvotes, and reading the signed-in profile.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DayplayWhat's happening in the Mission tonight?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Dayplay MCP — Verified Real-Time Physical Intelligence for Major Metros Nationwide
Dayplay MCP · v2.2.2 · MIT
Dayplay gives AI agents verified real-time physical intelligence — places, events, and walkable itineraries — across major metros nationwide. The SF Bay Area is our flagship live market, with additional major metros rolling out next.
A zero-configuration MCP server that gives any AI agent a locally grounded concierge across major metros nationwide — curated places, verified real-time events, and neighborhood binding that eliminates cross-metro and cross-bay drift. The SF Bay Area is the flagship live market, with additional major metros rolling out next.
🔒 Coverage: nationwide posture, verified per request. Dayplay covers major metros nationwide, with the SF Bay Area as the flagship live market (San Francisco, Oakland, and Berkeley — 35 neighborhood centroids) and additional major metros rolling out next. Live inventory is not uniform across every metro yet, so the rule is simple: call the coverage tools first and trust what they return. If a location comes back as not-yet-live or out of market, the agent must say so plainly — "Dayplay doesn't have live coverage for <location> yet" — and must not fabricate venues, events, dates, hours, or neighborhoods for it. Zero results for a covered query are reported honestly, never filled with invented places. This per-request check is what keeps the nationwide posture truthful.
Remote endpoint: https://api.dayplay.io/mcp (Streamable HTTP / MCP)
Quickstart
Cursor
Option A — direct remote server (recommended, no install). Add to ~/.cursor/mcp.json or this repo's .cursor/mcp.json:
{
"mcpServers": {
"dayplay": {
"url": "https://api.dayplay.io/mcp"
}
}
}Option B — run from source (local stdio bridge for stdio-only clients):
git clone https://github.com/dayplayTeam/dayplay-mcp.git
cd dayplay-mcp
npm install
node bin/dayplay-mcp.jsThen point your client at the local stdio process:
{
"mcpServers": {
"dayplay": {
"command": "node",
"args": ["/path/to/dayplay-mcp/bin/dayplay-mcp.js"]
}
}
}Claude Desktop
Edit claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Option A — direct remote server (recommended):
{
"mcpServers": {
"dayplay": {
"url": "https://api.dayplay.io/mcp"
}
}
}Option B — run from source (stdio-only clients): follow the run-from-source setup under Cursor, then register the local stdio process:
{
"mcpServers": {
"dayplay": {
"command": "node",
"args": ["/path/to/dayplay-mcp/bin/dayplay-mcp.js"]
}
}
}Restart Claude Desktop, then ask: "What's happening in the Mission tonight?"
Grok Bot
Add the Dayplay remote connector:
https://api.dayplay.io/mcpPrefer the direct remote connector above. For a stdio-only setup, run from source and bridge the local process in Grok's MCP config:
{
"mcpServers": {
"dayplay": {
"command": "node",
"args": ["/path/to/dayplay-mcp/bin/dayplay-mcp.js"]
}
}
}Pair it with the vibe-scout skill for prompt-level scope enforcement.
Terminal smoke test
node bin/dayplay-mcp.js --smokeRun it from a run-from-source checkout. Prints the live endpoint and available tool names. Exits non-zero on failure.
Related MCP server: DataSF MCP
Tools
The catalog spans major metros nationwide, with the SF Bay Area as the flagship live market (San Francisco, Oakland, Berkeley — 35 centroids) and additional major metros rolling out next. Coverage is verified per request: a metro that isn't live yet is declined honestly, never fabricated.
Open tools run immediately — no account needed. Gated tools return 401 on first call. Every connection path — the remote URL and the local stdio bridge — serves this same 40-tool catalog, and a host connected through either path opens Google sign-in for gated tools.
Discovery (open)
get_happening_today— events + places happening today, by location and radiusget_live_now— what is happening right nowget_weekend— Saturday/Sunday feed (weekend_day: "sat" | "sun")get_decision_feed— ranked decision feed (senduser_lat/user_lng)browse_places— places inside a radius, sorted by distanceget_listing— full detail for one place or venue byidget_top_restaurants/get_top_venues— ranked lists, optional cityget_local_gems— curated local gemsget_locals_favorites— locals' favoritesget_venue_events— upcoming events at one venue (id)get_subcategories/get_genres/get_event_bridge— taxonomy feeds
Marketing feeds (open, X-API-Key)
get_marketing_events/get_marketing_places/get_marketing_neighborhoods— catalog feeds; forward anX-API-Keyheader.get_marketing_neighborhoodsreturns the live-market neighborhood centroids with coordinates and radii (currently the 35 SF Bay Area hubs; new metros appear here as they go live).
Search 🔒 free account
search_smart,search_query_router,search_embed,search_parse_intent,search_rerank,search_web— model-backed semantic search. Requires the user token via Google connect.
Saves & Outings 🔒 free account
save_outing— save a dated, neighborhood-bound outing plan to the signed-in user's Saved tabget_my_itinerary— retrieve the signed-in user's saved itinerarieslist_saves,save_listing,unsave_listing,list_going,mark_going,unmark_going,get_profile— saved places, event RSVPs, and the signed-in profileupvote_listing,share_local_favorite,share_gem— community signals
Requires the free-account connect. A host connected to the remote URL opens Google sign-in on the first gated call; the stdio bridge opened from a run-from-source checkout opens a browser for the same connect step. Saved plans appear on the Dayplay Saved tab across web and app.
Requires the free-account connect (https://www.dayplay.io/link). Saved plans appear on the Dayplay Saved tab across web and app.
Example prompts: "What's happening in the Mission tonight?" · "Build me a Saturday itinerary that never leaves Bernal Heights." · "Save this outing to my Dayplay account."
Legacy compatibility
The original five names are part of the 40-tool catalog: get_neighborhoods, get_events, and get_places are open. plan_outing and manage_saved_plans need Google connect. plan_outing applies a comma-separated interests value as the catalog category filter.
The Anti-Drift Guarantee
Most local AI answers fail the same way: a "Mission" recommendation lands in Oakland, a "Berkeley" event is actually in San Jose, and a walking itinerary silently requires a bridge crossing.
Scope: major metros nationwide, with the SF Bay Area as the flagship live market and additional major metros rolling out next. Live coverage is verified per request — the guarantee is that Dayplay never answers for a place it hasn't verified, not that every metro is live on day one.
Dayplay receipts:
Spatially verified. Every place and event result is validated against neighborhood centroid coordinates and radii pulled live from
get_neighborhoods(currently 35 SF Bay Area hubs; the same check applies to each metro as it comes online).Neighborhood-bound queries.
neighborhoodis an exact-match binding parameter, not a fuzzy keyword hint — results outside the bound radius are dropped, not ranked down.Zero cross-metro drift. No Oakland result in a San Francisco query. No Brooklyn result in a Manhattan query. No bridge, tunnel, or cross-river hop presented as a walkable leg.
Real-time, not stale.
get_eventsqueries verified occurrences bydate, so "tonight" means tonight — not an SEO page from last season.Out-of-market refusal. A market that isn't live yet is refused before any upstream call, and the surfaced copy states the coverage boundary rather than returning plausible-but-wrong geography. As new metros go live, the same guard extends to them automatically.
Honest emptiness. If a bounded query has no verified matches, it returns nothing rather than padding with invented places.
That is the product: the answer stays where you are.
Configuration
Env var | Default | Purpose |
|
| Override the remote endpoint (staging, self-hosted, local dev) |
No API key is required for the public endpoint. Optional auth tokens, if your deployment needs them, are passed through as standard Authorization headers by the MCP client — never commit them to config files.
How the proxy works
MCP client (stdio) ⇄ bin/dayplay-mcp.js ⇄ https://api.dayplay.io/mcp (Streamable HTTP)The shim lists tools and forwards tools/call verbatim to the remote endpoint, so new Dayplay tools appear automatically without waiting on a local update. It is a transport bridge, not a reimplementation — every schema, filter, and verification rule is served by Dayplay itself.
Prefer direct HTTP if your client supports it; use the shim for stdio-only clients.
Repository layout
dayplay-mcp/
├── .cursor/
│ └── mcp.json # Direct Cursor MCP connection
├── .cursor-plugin/
│ └── plugin.json # Cursor Marketplace catalog plugin manifest
├── skills/
│ └── vibe-scout/
│ └── SKILL.md # Grok Bot & Cursor Agent prompt instructions
├── bin/
│ └── dayplay-mcp.js # Run-from-source stdio proxy
├── assets/
│ └── logo.svg
├── test/
│ └── e2e.mjs
├── smithery.yaml # Smithery.ai registry manifest
├── plugin.json # Agent Plugins standard manifest
├── package.json # Node metadata (v2.2.2, MIT)
├── README.md # This file
└── LICENSE # MIT (Dayplay Team)Development
node bin/dayplay-mcp.js --smoke # verify remote endpoint + tool discovery
node bin/dayplay-mcp.js # run the stdio proxy
node test/e2e.mjs # end-to-end stdio smoke (tools + 3 tool calls)Run from a run-from-source checkout (git clone + npm install).
License
MIT © Dayplay Team — https://www.dayplay.io
Available Tools
3 toolsget_eventsAInspect
Query verified, real-time event occurrences filtered strictly by date, neighborhood, and category. GEOGRAPHIC SCOPE (HARD CONSTRAINT): results are limited to the San Francisco Bay Area - San Francisco, Oakland, and Berkeley only. This tool cannot return events in any other city, region, or country. OUT-OF-MARKET PROTOCOL: if the user's requested location is outside the SF Bay Area (e.g. Austin, New York, Tokyo), DO NOT call this tool. Immediately state 'Dayplay is strictly SF Bay Area only (San Francisco, Oakland, Berkeley); it does not cover .' and never fabricate, infer, or substitute events, dates, hours, or venues for that location. A zero-item result for a valid SF Bay Area query is an honest answer - report it; never fill the gap with invented events.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Target date formatted as YYYY-MM-DD. Narrows results within the SF Bay Area only; never expands geographic scope. | |
| limit | No | Max events to return (default 20) | |
| source | No | Data source filter. Filter only; never expands geographic scope beyond the SF Bay Area. | |
| category | No | Category filter (e.g. music, art, food). Filter only; never expands geographic scope beyond the SF Bay Area. | |
| neighborhood | No | Exact SF Bay Area neighborhood name from get_neighborhoods (e.g. Mission, North Beach, Oakland, Berkeley). Only San Francisco, Oakland, and Berkeley neighborhoods are valid. Do NOT pass a location outside the SF Bay Area (e.g. Brooklyn, Silver Lake, Shoreditch, Shibuya) - that is OUT OF MARKET and must be declined with the Dayplay SF-Bay-Area-only message. Never fabricate a neighborhood name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does it thoroughly: hard geographic cap, refusal protocol, prohibition on fabricating events, and instruction to report honest zero-item results. It also states events are verified and real-time, giving an agent a clear behavioral model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well structured and front-loaded, but there is mild redundancy: the hard geographic scope is stated twice and the no-fabrication rule is repeated near the end. Still, the length is justified by the safety-critical protocol.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for selecting and calling the tool: it provides the SF-only scope, out-of-market refusal, neighborhood-source dependency, and honest-empty-result behavior. It does not describe the return shape, and since no output schema exists, a brief statement of what an event result contains would have made it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The main description reinforces the date, neighborhood, and category filters but adds no per-parameter detail beyond the schema; limit and source are left to the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states the tool queries verified, real-time event occurrences and names the exact filters: date, neighborhood, and category. Combined with the sibling names, the resource is unambiguous: events, not neighborhoods or places.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The OUT-OF-MARKET PROTOCOL gives a hard when-not-to-call rule and the exact refusal message for locations outside the SF Bay Area. It does not explicitly contrast this tool against get_neighborhoods and get_places beyond referencing get_neighborhoods in the schema, leaving a small gap in positive routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_neighborhoodsAInspect
Returns the complete and EXCLUSIVE list of 35 San Francisco Bay Area neighborhood centroids (San Francisco, Oakland, and Berkeley ONLY) with coordinates and radii. This is the whole serviceable market - no other city, region, or country is covered. Use it to (a) map a user query to an exact SF Bay Area neighborhood and (b) verify whether a requested location is in-market at all. If the requested location is not in this list and is not San Francisco, Oakland, or Berkeley, it is OUT OF MARKET: do not call get_events or get_places for it; instead reply 'Dayplay is strictly San Francisco Bay Area only (San Francisco, Oakland, Berkeley); it does not cover .' Never invent a neighborhood outside this list.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it delivers. It discloses the exhaustive/fixed nature of the data ('complete and EXCLUSIVE', 'whole serviceable market'), the three-city geographic limitation, and the guardrail 'Never invent a neighborhood outside this list.' For a zero-parameter read-only catalog, this is complete behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
All five sentences are functional and front-loaded in a logical progression: returns → market scope → use cases → out-of-market handling → guardrail. The exact user-facing rejection message earns its place because it removes agent improvisation. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining return values, and it does: '35... neighborhood centroids... with coordinates and radii.' It also covers usage purposes, market-boundary verification, and the exact failure behavior. Nothing an agent needs to invoke this simple tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so there are no argument semantics to document; the 0-parameter baseline of 4 applies. The description sensibly spends its words on output and routing semantics instead of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Returns the complete and EXCLUSIVE list of 35 San Francisco Bay Area neighborhood centroids... with coordinates and radii.' The scope is precisely delimited ('San Francisco, Oakland, and Berkeley ONLY') and the clause 'no other city, region, or country is covered' distinguishes it from siblings get_events and get_places.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use purposes: '(a) map a user query to an exact SF Bay Area neighborhood and (b) verify whether a requested location is in-market at all.' It also gives explicit when-not-to-use with named alternatives: 'do not call get_events or get_places' for out-of-market locations, plus the exact rejection script to emit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_placesAInspect
Query curated places filtered by neighborhood, open-now status, ratings, or newly opened window. GEOGRAPHIC SCOPE (HARD CONSTRAINT): results are limited to the San Francisco Bay Area - San Francisco, Oakland, and Berkeley only. This tool cannot return places in any other city, region, or country. OUT-OF-MARKET PROTOCOL: if the user's requested location is outside the SF Bay Area (e.g. Austin, New York, Tokyo), DO NOT call this tool. Immediately state 'Dayplay is strictly SF Bay Area only (San Francisco, Oakland, Berkeley); it does not cover .' and never fabricate, infer, or substitute venues, addresses, hours, or ratings for that location. A zero-item result for a valid SF Bay Area query is an honest answer - report it; never fill the gap with invented venues.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| limit | No | Max places to return (default 20) | |
| open_now | No | Filter strictly for SF Bay Area places open right now. Filter only; never expands geographic scope. | |
| neighborhood | No | Exact SF Bay Area neighborhood name from get_neighborhoods (e.g. Mission, North Beach, Oakland, Berkeley). Only San Francisco, Oakland, and Berkeley neighborhoods are valid. Do NOT pass a location outside the SF Bay Area (e.g. Williamsburg, Santa Monica, Camden, Shibuya) - that is OUT OF MARKET and must be declined with the Dayplay SF-Bay-Area-only message. Never fabricate a neighborhood name. | |
| newly_opened_days | No | Filter for places opened in the last N days |
TDQS
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 openly discloses the tool's hard geographic limit, the exact behavior when the location is out of market (refuse and do not call), and the policy when a legitimate query returns zero results. It also notes that the open_now filter is purely a filter and never expands scope. These are behavioral traits beyond what any schema would encode.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than typical but every sentence earns its place. It leads with the primary purpose, then states the hard geographic scope in bold caps, then gives an explicit out-of-market protocol with a quoted message, and finally addresses the zero-result honesty rule. The structure uses clear sections and capitalization for emphasis, ensuring the critical constraints stand out. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query tool with no annotations and no output schema, the description covers all essential context: what it does, its geographic limit, how to handle out-of-market requests, and how to report empty results. It also implicitly signals that the tool is non-destructive (query only). Nothing an agent needs to safely and correctly invoke this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, and the schema itself already gives detailed parameter descriptions (e.g., neighborhood only accepts SF Bay Area names, open_now is a filter). The tool description adds value by grouping the filters and reinforcing the global geographic constraint across all parameters. It clarifies that 'ratings' maps to the sort parameter and that 'newly opened' maps to newly_opened_days. This is a meaningful supplement to the schema, though much of the detail is already in the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Query curated places filtered by neighborhood, open-now status, ratings, or newly opened window' – a specific verb, resource, and filter list. It immediately distinguishes 'places' from the sibling tools 'get_neighborhoods' and 'get_events', and goes on to state the hard geographic scope. No ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contains an explicit OUT-OF-MARKET PROTOCOL: if the requested location is outside the SF Bay Area, the agent must not call the tool, must instead state the exact refusal message, and must never fabricate data. It also tells the agent to report zero results honestly rather than inventing venues. This gives clear when-to/ when-not-to usage rules and even prescribes the fallback script.
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.
3 tool updates
v1.0.0- First observed
get_events - First observed
get_neighborhoods - First observed
get_places
TDQS
Scored across 3 tools
Each tool targets a distinct resource type: neighborhoods, events, and places. Though get_events and get_places share geographic constraints and filtering by neighborhood, their domain nouns are unambiguous and the descriptions clearly separate them.
All three tools follow the same get_<plural-noun> naming convention. This is a consistent, predictable pattern with no mixed styles or vague verbs.
Three tools is well-scoped for a read-only local discovery service, with each tool covering one core data type. No tool is redundant, and additional tools would likely be unnecessary.
The server provides neighborhood lookup plus event and place discovery, which covers the core read-only domain. Minor gaps exist, such as no explicit category enumeration or individual detail-fetch tool, but filtered queries should handle most typical requests.
Maintenance
Related MCP Connectors
Verified local businesses, bookable by AI agents: services, prices, availability and appointments.
- daxoomOAuthcom.daxoom
Owner-verified local business data for AI agents: profiles, hours, prices, with provenance.
Verified, sourced, real-time intelligence layer for AI agents.
Travel & commerce intelligence for AI agents: search, book & price-track hotels, events, retail.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceThe owner-verified local business data + service & menu-price layer for AI agents. Owner-authored business profiles where every response carries provenance — verification level, completeness score, freshness timestamps, and upstream sources. * Search & profiles — find businesses by name, category, city, or geo-radius; full profiles with contacts, hours, media, ratings. * Price layer-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to query and retrieve San Francisco open data from data.sfgov.org via the Socrata SODA API.427 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to retrieve live transit departures, vehicle positions, and service alerts for San Francisco Bay Area transit operators via the regional 511.org open-data API.268 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to browse curated city event feeds, retrieve full details for individual events, and list an organizer's public calendar without authentication. It returns only public event metadata, stripping attendee, guest, host, and manager data before responding.369 npmMIT