Skip to main content
Glama
dayplayTeam

Dayplay

Official
by dayplayTeam

Dayplay — Local Concierge & Vibe Scout MCP

@dayplayai/mcp-server · v1.2.1 · MIT

A zero-configuration MCP server that gives any AI agent a locally grounded concierge for the San Francisco Bay Area only — curated places, verified real-time events, and neighborhood binding that eliminates cross-bay drift.

🔒 Scope: SF Bay Area only. This server serves strictly San Francisco, Oakland, and Berkeley — 35 neighborhood centroids. It does not serve New York, Los Angeles, Chicago, Austin, Seattle, Miami, London, Tokyo, or any other city, region, or country. Out-of-market locations are not served. If a user asks about any location outside the SF Bay Area, the agent must state "Dayplay is strictly San Francisco Bay Area only (San Francisco, Oakland, Berkeley); it does not cover <location>" and must not call a tool or fabricate venues, events, dates, hours, or neighborhoods for that location. Zero results for a valid SF Bay Area query are reported honestly, never filled with invented places.

Remote endpoint: https://www.dayplay.io/api/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://www.dayplay.io/api/mcp"
    }
  }
}

Option B — zero-config stdio proxy (works with any client):

{
  "mcpServers": {
    "dayplay": {
      "command": "npx",
      "args": ["-y", "@dayplayai/mcp-server"]
    }
  }
}

Claude Desktop

Edit claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "dayplay": {
      "command": "npx",
      "args": ["-y", "@dayplayai/mcp-server"]
    }
  }
}

Restart Claude Desktop, then ask: "What's happening in the Mission tonight?"

Grok Bot

Add the Dayplay remote connector:

https://www.dayplay.io/api/mcp

Or bridge it over stdio in Grok's MCP config:

{
  "mcpServers": {
    "dayplay": {
      "command": "npx",
      "args": ["-y", "@dayplayai/mcp-server"]
    }
  }
}

Pair it with the vibe-scout skill for prompt-level scope enforcement.

Terminal smoke test

npx -y @dayplayai/mcp-server --smoke

Prints the live endpoint and available tool names. Exits non-zero on failure.


Related MCP server: localecheck

Tools

Every tool is bound to the SF Bay Area (San Francisco, Oakland, Berkeley — 35 centroids). Out-of-market locations are declined, never fabricated.

get_places

Query curated places filtered by neighborhood, open-now status, ratings, or newly opened window.

SCOPE: San Francisco Bay Area only (San Francisco, Oakland, Berkeley). Out-of-market locations (e.g. Austin, New York, Tokyo) are declined — never fabricate venues. Spatially verified to eliminate cross-bay and geographic drift.

Parameter

Type

Description

neighborhood

string

SF Bay Area neighborhood name (SF, Oakland, Berkeley only)

open_now

boolean

Filter strictly for places open right now

sort

"rating" | "distance"

Sort order

newly_opened_days

integer

Filter for places opened in the last N days

limit

integer

Max places to return (default 20)

Example prompt: "Find a place open right now in North Beach with a 4.5+ rating."

get_events

Query verified, real-time event occurrences strictly filtered by date, neighborhood, and category.

SCOPE: San Francisco Bay Area only (San Francisco, Oakland, Berkeley). Out-of-market locations are declined — never fabricate events. Spatially verified to eliminate cross-bay and geographic drift.

Parameter

Type

Description

date

string (YYYY-MM-DD)

Target date

neighborhood

string

SF Bay Area neighborhood name (e.g. Mission, North Beach, Oakland, Berkeley)

category

string

Category filter (e.g. music, art, food)

source

string

Data source filter

limit

integer

Max events to return (default 20)

Example prompt: "Which Berkeley music events are on this Saturday?"

get_neighborhoods

Returns the complete and exclusive list of 35 San Francisco Bay Area neighborhood centroids with coordinates and radii (San Francisco, Oakland, Berkeley only). No other market is covered. Use to strictly bind itineraries to a specific neighborhood and to detect out-of-market queries.

Example prompt: "Give me the neighborhood list, then build a Saturday itinerary that never leaves Bernal Heights."


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: SF Bay Area only (San Francisco, Oakland, Berkeley). No national or global coverage.

Dayplay receipts:

  • Spatially verified. Every place and event result is validated against neighborhood centroid coordinates and radii pulled live from get_neighborhoods (35 Bay Area neighborhoods).

  • Neighborhood-bound queries. neighborhood is an exact-match binding parameter, not a fuzzy keyword hint — results outside the bound radius are dropped, not ranked down.

  • Zero cross-bay drift. No Oakland result in a San Francisco query. No Marin result in an East Bay query. No bridge-crossing itinerary that claims to be walkable.

  • Real-time, not stale. get_events queries verified occurrences by date, so "tonight" means tonight — not an SEO page from last season.

  • Out-of-market refusal. Non-Bay-Area market names are refused before any upstream call, and the surfaced copy states the SF-Bay-Area-only boundary rather than returning plausible-but-wrong geography.

  • 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

DAYPLAY_MCP_URL

https://www.dayplay.io/api/mcp

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://www.dayplay.io/api/mcp (Streamable HTTP)

The shim lists tools and forwards tools/call verbatim to the remote endpoint, so new Dayplay tools appear automatically without an npm 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        # Executable proxy for `npx -y @dayplayai/mcp-server`
├── assets/
│   └── logo.svg
├── test/
│   └── e2e.mjs
├── smithery.yaml             # Smithery.ai registry manifest
├── plugin.json               # Agent Plugins standard manifest
├── package.json              # npm metadata (@dayplayai/mcp-server v1.2.1, 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)

Releasing (maintainers)

Publishing is fully automated via npm Trusted Publishing (OIDC) — no NPM_TOKEN, no 2FA prompts. The .github/workflows/publish.yml workflow is bound in the package's npm settings to this exact repo + workflow.

npm version patch        # or minor / major — bumps package.json, creates the vX.Y.Z tag
git push --follow-tags

CI then: verifies package.json version matches the tag → npm ci → smoke test → npm publish --provenance (sigstore-signed, OIDC-attested).

Gotcha: --follow-tags doesn't always push the tag. If no workflow run appears under Actions within a minute, finish with:

git push origin v1.X.Y

Notes:

  • The registry shows "package is being processed" for ~3 minutes after publish before the new version resolves — don't panic-verify too early.

  • npm's OIDC flow requires npm ≥ 11.5.1 in CI; the workflow installs npm@latest for this reason.

  • If the workflow ever gains an environment: block, the npm Trusted Publisher binding must be updated to the same environment name, or publishes will be rejected.


License

MIT © Dayplay Team — https://www.dayplay.io

Available Tools

3 tools
get_eventsA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoTarget date formatted as YYYY-MM-DD. Narrows results within the SF Bay Area only; never expands geographic scope.
limitNoMax events to return (default 20)
sourceNoData source filter. Filter only; never expands geographic scope beyond the SF Bay Area.
categoryNoCategory filter (e.g. music, art, food). Filter only; never expands geographic scope beyond the SF Bay Area.
neighborhoodNoExact 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

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_neighborhoodsA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/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, 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_placesA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
limitNoMax places to return (default 20)
open_nowNoFilter strictly for SF Bay Area places open right now. Filter only; never expands geographic scope.
neighborhoodNoExact 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_daysNoFilter for places opened in the last N days

TDQS

A4.9/5.0
Behavior5/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 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 3 tool updatesv1.0.0
    • First observedget_events
    • First observedget_neighborhoods
    • First observedget_places

TDQS

A4.6/5.0

Scored across 3 tools

Disambiguation5/5

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.

Naming Consistency5/5

All three tools follow the same get_<plural-noun> naming convention. This is a consistent, predictable pattern with no mixed styles or vague verbs.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides AI agents with instant access to jurisdiction-specific landlord-tenant law data and verified state statutes across five US states and major cities. It enables users to query legal rules for security deposits, eviction timelines, and habitability standards with sub-10ms local response times.
    -
  • A
    license
    A
    quality
    D
    maintenance
    Verified locale data for AI agents: dates, phone numbers, currency formatting, VAT/sales-tax by date, public holidays, and addresses (UK & US). Returns checked answers and flags impossible inputs instead of guessing.
    7
    Apache 2.0
  • F
    license
    Not graded
    quality
    F
    maintenance
    The 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
    -