Skip to main content
Glama
alcylu

Nightlife Search

by alcylu

nightlife-mcp

MCP server for nightlife event discovery backed by Supabase.

Quick Start

Production endpoint: https://api.nightlife.dev/mcp

  1. Get a free API key at nightlife.dev

  2. Add to Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "nightlife": {
      "url": "https://api.nightlife.dev/mcp",
      "headers": {
        "x-api-key": "YOUR_API_KEY"
      }
    }
  }
}

For curl, TypeScript SDK, and other clients, see CLIENT_SETUP.md.

Related MCP server: touch-grass-mcp

Implemented (v0.3)

  • search_events

  • get_tonight

  • get_event_details

  • search_venues

  • get_venue_info

  • search_performers

  • get_performer_info

  • log_unmet_request

  • create_vip_booking_request

  • get_vip_booking_status

  • get_vip_table_availability

  • get_vip_table_chart

  • get_recommendations (v0.2, behind MCP_ENABLE_RECOMMENDATIONS=true)

  • Streamable HTTP endpoint with API-key middleware

  • Structured tool output schemas (outputSchema)

  • Deterministic tool error payloads with stable error codes

  • Runtime request/tool metrics exposed at /health

Prerequisites

  • Node.js 18+

  • Supabase project URL + service role key

Setup

cp .env.example .env
npm install

Set env vars in .env:

  • SUPABASE_URL

  • SUPABASE_SERVICE_ROLE_KEY

Optional:

  • DEFAULT_CITY (default: tokyo)

  • MCP_TOP_LEVEL_CITIES (default example: tokyo,san-francisco; controls available_cities in unsupported-city responses)

  • DEFAULT_COUNTRY_CODE (default: JP)

  • NIGHTLIFE_BASE_URL (default: https://nightlifetokyo.com)

  • MCP_HTTP_REQUIRE_API_KEY (default: true)

  • MCP_HTTP_USE_DB_KEYS (default: true)

  • MCP_HTTP_ALLOW_ENV_KEY_FALLBACK (default: true)

  • MCP_HTTP_API_KEYS (comma-separated legacy fallback keys)

  • MCP_ENABLE_RECOMMENDATIONS (default: false; enables get_recommendations)

HTTP authentication can use persistent API keys from Supabase plus quota tracking.

  1. Run SQL migration in your Supabase SQL editor:

-- copy file contents from:
-- supabase/migrations/20260219094000_mcp_api_keys.sql
  1. Ensure DB auth flags are enabled in .env:

MCP_HTTP_REQUIRE_API_KEY=true
MCP_HTTP_USE_DB_KEYS=true
MCP_HTTP_ALLOW_ENV_KEY_FALLBACK=true
  1. Create an API key record:

npm run key:create -- --name claude-desktop --tier starter --daily-quota 1000 --minute-quota 60

This prints the raw api_key once. Save it securely and use it in MCP HTTP calls.

If the DB RPC is unavailable, fallback to MCP_HTTP_API_KEYS works only when MCP_HTTP_ALLOW_ENV_KEY_FALLBACK=true.

Concierge Unmet Request Backlog

Public concierge flows can log unsupported user intents to Supabase.

Run migration:

-- copy file contents from:
-- supabase/migrations/20260226_concierge_unmet_requests.sql

Then call MCP tool log_unmet_request when no good answer exists from available nightlife data.

VIP Booking Phase 1

VIP table booking submission and status tracking are backed by Supabase.

Run migration:

-- copy file contents from:
-- supabase/migrations/20260227143000_vip_phase1_requests_and_queue.sql
-- supabase/migrations/20260228124500_add_vip_booking_enabled_to_venues.sql
-- and if already deployed before 2026-02-28:
-- supabase/migrations/20260228111000_vip_outward_language_defaults.sql
-- supabase/migrations/20260301010000_vip_table_availability_chart.sql
-- supabase/migrations/20260301114000_vip_table_chart_storage_bucket.sql
-- supabase/migrations/20260303093000_vip_dashboard_admin_edits.sql

Then call MCP tools:

  • create_vip_booking_request

  • get_vip_booking_status

  • get_vip_table_availability (read per-day table availability by venue/date range)

  • get_vip_table_chart (read structured table chart with optional per-date status overlay and optional layout_image_url)

Conversation policy for create_vip_booking_request:

  • Confirm booking date/time in venue local time before submitting.

  • Use dual-date confirmation wording, especially for late-night arrivals (00:00-05:59).

  • Required confirmation template:

    • Just to confirm: you want a table for [Night Day] night ([Night Date]), arriving around [Time] on [Arrival Day], [Arrival Date] ([Timezone]). I'll submit that as [Night Day] night with [Time] arrival. Is that correct?

  • If the user gives a time like 2am without a day, ask:

    • Do you mean 2:00 AM after Thursday night (Friday morning), or after Friday night (Saturday morning)?

  • If the user changes day, regenerate confirmation before submission.

Ops-tier sessions also have internal queue tools:

  • list_vip_reservations (all outstanding reservations; default statuses: submitted, in_review, confirmed)

  • list_vip_requests_for_alerting (due alerts only)

  • mark_vip_request_alert_sent

  • claim_vip_request_after_ack

  • update_vip_booking_status (set confirmed/rejected/cancelled with audit event)

  • upsert_vip_venue_tables (write venue table definitions + chart coordinates + optional table notes + optional layout_image_url)

  • upsert_vip_table_availability (write per-date table statuses)

  • upload_vip_table_chart_image (upload chart image to storage and attach layout_image_url to venue table metadata)

To discover bookable venues first, use:

  • search_venues with vip_booking_supported_only=true

  • or get_venue_info and check vip_booking_supported

For internal venue-booking workers, claim queue tasks via DB function:

  • public.claim_next_vip_agent_task(p_agent_id text)

VIP Ops Dashboard

Internal dashboard routes:

  • GET /ops/login

  • POST /ops/login

  • POST /ops/logout

  • GET /ops/vip-dashboard

Internal admin API routes (cookie-session protected):

  • GET /api/v1/admin/vip-bookings

  • GET /api/v1/admin/vip-bookings/:id

  • PATCH /api/v1/admin/vip-bookings/:id

Required env vars:

  • VIP_DASHBOARD_ADMINS (comma-separated username:password pairs)

Optional env vars:

  • VIP_DASHBOARD_SESSION_TTL_MINUTES (default: 720)

  • VIP_DASHBOARD_SESSION_COOKIE_NAME (default: vip_dashboard_session)

Run

Stdio (local desktop clients):

npm run dev

Streamable HTTP:

npm run dev:http

For production build:

npm run build
npm start

For HTTP in production:

npm run start:http

Authenticated production smoke check:

NLT_API_KEY=... npm run smoke:prod:auth

Optional env overrides:

  • NLT_MCP_URL (default: https://api.nightlife.dev/mcp)

  • NLT_REST_BASE_URL (default: https://api.nightlife.dev/api/v1)

  • NLT_SMOKE_CITY (default: tokyo)

Debug web UI for recommendations:

MCP_ENABLE_RECOMMENDATIONS=true npm run dev:http
# open http://127.0.0.1:3000/debug/recommendations

Notes

  • Date handling supports tonight, this_weekend, YYYY-MM-DD, and YYYY-MM-DD/YYYY-MM-DD.

  • get_recommendations returns up to 10 diverse modal slots with dynamic city-aware fallback.

  • Venue and performer tools include upcoming events snapshots.

  • log_unmet_request writes unresolved user asks to public.concierge_unmet_requests.

  • VIP phase 1 writes booking submissions to public.vip_booking_requests and worker queue tasks to public.vip_agent_tasks.

  • VIP inventory writes table definitions to public.vip_venue_tables and date-specific statuses to public.vip_table_availability.

  • search_venues and get_venue_info include vip_booking_supported so clients can show exactly which venues accept VIP booking submissions.

  • vip_booking_supported is sourced from public.venues.vip_booking_enabled (separate from guest_list_enabled).

  • create_vip_booking_request only accepts venues where vip_booking_supported=true.

  • City handling is backed by public.cities (slug, timezone, and service-day cutoff).

  • Supported top-level cities are environment-configurable (for example tokyo and san-francisco) while Tokyo can remain the default.

  • Stdio transport: no API key check.

  • HTTP transport (/mcp): API key required by default (MCP_HTTP_REQUIRE_API_KEY=true).

  • API key headers:

    • Authorization: Bearer <key>

    • x-api-key: <key>

  • HTTP responses include key tier/source and rate-limit headers when DB-backed auth is active:

    • X-API-Key-Tier

    • X-API-Key-Source

    • X-RateLimit-Daily-Limit

    • X-RateLimit-Daily-Remaining

    • X-RateLimit-Minute-Limit

    • X-RateLimit-Minute-Remaining

  • Health endpoint: /health.

  • Debug page for manual tool testing: /debug/recommendations.

  • Tool errors are returned as JSON text payloads in result.content[0].text:

    • INVALID_DATE_FILTER

    • INVALID_EVENT_ID

    • UNSUPPORTED_EVENT_ID

    • EVENT_NOT_FOUND

    • INVALID_VENUE_ID

    • VENUE_NOT_FOUND

    • INVALID_PERFORMER_ID

    • PERFORMER_NOT_FOUND

    • INVALID_BOOKING_REQUEST

    • BOOKING_REQUEST_NOT_FOUND

    • BOOKING_STATUS_UPDATE_FAILED

    • VIP_TASK_NOT_AVAILABLE

    • VIP_ALERT_UPDATE_FAILED

    • VIP_CLAIM_FAILED

    • INVALID_REQUEST

    • REQUEST_WRITE_FAILED

    • DB_QUERY_FAILED

    • INTERNAL_ERROR

Contributing & CI

See CONTRIBUTING.md for the workflow and rules. AI agents read AGENTS.md. CLAUDE.md is the architecture source of truth.

Available Tools

17 tools
cancel_vip_booking_requestA

Cancel a VIP booking request. Requires booking ID plus customer email and phone to verify ownership. Works for bookings in submitted, in_review, or confirmed status.

ParametersJSON Schema
NameRequiredDescriptionDefault
booking_request_idYes
customer_emailYes
customer_phoneYes
cancellation_reasonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
booking_request_idYes
statusYes
last_updated_atYes
status_messageYes
latest_noteYes
historyYes
deposit_statusYes
deposit_amount_jpyYes
deposit_payment_urlYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions ownership verification and valid statuses, but does not disclose other behavioral traits such as whether cancellation is irreversible, if it triggers notifications, or what happens on failure. Some transparency is present but incomplete.

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 two sentences, no redundancy. It front-loads the primary action and prerequisites, then adds a crucial status constraint. Every sentence adds value.

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?

Given the tool's complexity (4 params, no annotations, output schema exists), the description covers core usage and constraints. It lacks details on error handling or post-cancellation effects, but is sufficient for an agent to use it correctly in most cases.

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 description coverage is 0%, so the description must add meaning. It clarifies that booking_request_id, customer_email, and customer_phone are for verification, but cancellation_reason is only mentioned as an optional field without additional context. The description partially compensates for the schema gap but not fully.

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 clearly states the action ('Cancel a VIP booking request') and specifies the resource. It also distinguishes from sibling tools like create_vip_booking_request by naming the reverse operation and listing prerequisites.

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 description provides clear context for when to use the tool: requires booking ID plus customer email and phone for ownership verification, and works only for submitted, in_review, or confirmed statuses. It does not explicitly mention alternatives or exclusions, but the status restriction gives strong usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_vip_booking_requestA

Create a VIP table booking request and send it directly to the venue booking desk. The venue must have vip_booking_supported=true. Before calling this tool, always confirm booking date and arrival time in venue local time. For arrivals from 00:00 to 05:59, use the 'night + actual day' format to avoid midnight confusion. Required format: '[Night] night, [time] ([Actual Day] [time])' — e.g., 'Friday night, 2am (Saturday 2am)'. Example confirmation: 'So you're coming Friday night, 2am (Saturday 2am), table for 4 at Zouk?' If the user gives a time like 2am without a day, ask: 'Do you mean Thursday night, 2am (Friday morning), or Friday night, 2am (Saturday morning)?' If the user changes the requested day, regenerate confirmation before calling this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
venue_idYes
booking_dateYes
arrival_timeYes
party_sizeYes
customer_nameYes
customer_emailYes
customer_phoneYes
preferred_table_codeNo
special_requestsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
booking_request_idYes
statusYes
created_atYes
messageYes
preferred_table_codeYes
min_spendYes
min_spend_currencyYes
table_warningYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the tool sends the request directly to the venue booking desk, requires a venue flag, and includes instructions for confirmation. However, it does not mention side effects like irreversible actions, confirmation emails, or failure modes. Still, it adds significant context beyond the schema.

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?

The description is moderately lengthy but well-structured with examples and step-by-step instructions. It front-loads the core purpose and then provides essential usage details. Every sentence adds value, though it could be slightly shortened without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (9 parameters, no schema descriptions, and an output schema not referenced), the description covers key usage context but omits parameter details and return values. It is adequate for an agent if the schema is well-named, but not fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 9 parameters with 0% description coverage. The description only indirectly explains booking_date, arrival_time, and party_size through format examples. Other required parameters like customer_name, customer_email, customer_phone, and venue_id are not explained. This is insufficient compensation for the lack of 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 description clearly states it creates a VIP table booking request and sends it directly to the venue booking desk. It specifies the prerequisite (venue must have vip_booking_supported=true) and provides a distinct action from siblings like cancel_vip_booking_request. The verb 'create' combined with resource 'VIP booking request' is specific and unambiguous.

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 description provides explicit when-to-use guidance: confirm booking date and arrival time in venue local time before calling, handle midnight confusion with a specific format, and regenerate confirmation if the day changes. It does not explicitly state when not to use or name alternatives, but the context is clear for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_event_detailsC

Get full details for a specific event occurrence ID (UUID).

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
event_idYes
nameYes
dateYes
start_timeYes
end_timeYes
service_dateYes
venueYes
lineupYes
genresYes
priceYes
flyer_urlYes
guest_list_statusYes
nlt_urlYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states the tool gets full details but does not mention read-only nature, authentication, rate limits, or return format. This is insufficient for a tool with zero annotations.

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?

The description is a single concise sentence with no extraneous information. It could potentially include a brief note on output or usage, but it is appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (single parameter, output schema present), the description is minimally adequate. However, it lacks context about what 'full details' includes, prerequisites, or any related work needed before calling this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter event_id is described as a UUID in the tool description, but the schema has 0% coverage (no description in schema). The description adds minimal meaning beyond the name; no example or guidance on obtaining the ID is given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (get full details) and resource (event occurrence), specifying the identifier type (UUID). However, it does not differentiate from sibling tools like search_events or get_performer_info, which could be confused.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance provided on when to use this tool versus alternatives. The description implies usage for a specific event ID but lacks explicit context, exclusions, or when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_guest_list_entry_statusA

Check the status of a guest list entry. Provide either entry_id or event_id + customer_email.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idNo
event_idNo
customer_emailNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
entry_idYes
statusYes
customer_nameYes
event_nameYes
event_dateYes
created_atYes
guest_list_benefitYes
door_instructionsYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

In the absence of annotations, the description carries the full burden but only conveys a read operation ('Check'). It does not detail error cases or behavior when both lookup methods are provided, but for a simple check operation this is mostly sufficient.

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?

Two concise sentences: the first states the purpose, the second provides exact usage instructions. No wasted words.

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?

Given that the tool has an output schema (handling return values) and is a simple read operation, the description covers the main invocation logic. It could mention idempotency or lack of side effects, but the 'Check' verb implies read-only.

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?

With 0% schema description coverage, the description adds critical relational context between parameters ('either ... or ...'), which is not present in the schema. However, it does not describe individual parameter formats or constraints.

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 uses a specific verb ('Check') and resource ('status of a guest list entry'), clearly distinguishing it from sibling tools like 'submit_to_guest_list' (creation) and 'cancel_vip_booking_request' (cancellation).

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?

Explicitly states the two valid parameter combinations ('Provide either entry_id or event_id + customer_email'), guiding the agent on how to invoke the tool correctly without ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_performer_infoA

Get performer details by performer ID, including social links and upcoming events snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
performer_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
performer_idYes
nameYes
slugYes
bioYes
follower_countYes
ranking_scoreYes
genresYes
image_urlYes
social_linksYes
upcoming_eventsYes
nlt_urlYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It correctly indicates this is a read operation returning performer details, social links, and upcoming events. However, it does not disclose any additional behavioral traits such as authentication needs, error handling, or rate limits.

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 a single, well-structured sentence that is front-loaded with the core purpose and includes no extraneous information. Every word earns its place.

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?

Given the tool's low complexity (one parameter, read-only), the description adequately covers the purpose and included data. The existence of an output schema covers return values, so the description is sufficiently complete for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only mentions 'by performer ID' without clarifying the format, length, or pattern of the parameter. This adds marginal value beyond the parameter name, failing to compensate for the lack of schema documentation.

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 uses a specific verb 'Get' and a clear resource 'performer details', and explicitly mentions the included elements: social links and upcoming events snapshot. This clearly distinguishes it from sibling tools like search_performers and get_event_details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for fetching details by a specific ID, but there is no explicit guidance on when to use this tool versus alternatives like search_performers. No exclusions or context for usage are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tonightB

Get tonight's nightlife events and open VIP venues. Always check vip_venues_open — VIP clubs are open even without listed events.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNotokyo
genreNo
areaNo
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
cityYes
date_filterYes
eventsYes
vip_venues_openYes
unavailable_cityYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fails to disclose behavioral traits such as read-only nature, authentication requirements, or rate limits. It only states the operation ('Get'), which implies a read, but offers no additional safety or side-effect information.

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 exceptionally concise, using two sentences to convey purpose and a key usage note. It is front-loaded with the primary function and avoids any redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having a complex input schema (5 optional parameters) and an output schema, the description provides minimal context. It does not explain pagination (limit/offset), filtering (genre/area), or output structure, leaving the agent under-informed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 5 parameters with 0% description coverage, and the description provides no explanation or guidance on any parameter. The user must infer the meaning of city, genre, area, limit, and offset from context, making the tool difficult to invoke correctly.

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 clearly states the tool retrieves 'tonight's nightlife events and open VIP venues', using the verb 'Get' and specifying the resource. It distinguishes from sibling tools like search_events and get_event_details by focusing on the 'tonight' scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a usage hint ('Always check vip_venues_open — VIP clubs are open even without listed events') but lacks explicit guidance on when to use this tool versus alternatives like search_events. It implies context for VIP venues but does not specify exclusions or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_venue_infoB

Get full details for a specific venue ID, including upcoming events and VIP booking support.

ParametersJSON Schema
NameRequiredDescriptionDefault
venue_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
venue_idYes
nameYes
areaYes
addressYes
websiteYes
image_urlYes
vip_booking_supportedYes
sns_instagramYes
sns_tiktokYes
sns_xYes
sns_youtubeYes
guest_list_enabledYes
upcoming_event_countYes
upcoming_eventsYes
nlt_urlYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It minimally discloses that the tool returns details including events and VIP support, but fails to mention read-only nature, authentication needs, or behavior for invalid IDs. Lacks depth for safe invocation.

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 a single, concise sentence that front-loads the core purpose. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (one parameter) and presence of an output schema, the description is minimally adequate. However, it does not mention what happens if venue_id is invalid or other edge-case behaviors.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description should compensate but does not. It only says 'specific venue ID' without explaining format, length, or any constraints beyond the schema's minLength. Adds little value over the schema.

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 clearly states the verb 'Get' and the resource 'full details for a specific venue ID'. It also specifies included content like upcoming events and VIP booking support, which distinguishes it from sibling tools like get_event_details or search_venues.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool should be used when one has a specific venue ID, but it does not explicitly state when to use it versus alternatives (e.g., search_venues) or provide exclusions. No guidance on when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_vip_booking_statusB

Fetch VIP booking status from the venue booking workflow. Requires booking request ID and matching customer email or phone.

ParametersJSON Schema
NameRequiredDescriptionDefault
booking_request_idYes
customer_emailNo
customer_phoneNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
booking_request_idYes
statusYes
last_updated_atYes
status_messageYes
latest_noteYes
historyYes
deposit_statusYes
deposit_amount_jpyYes
deposit_payment_urlYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully convey behavior. It indicates a read operation (fetch) but lacks details on error handling, authorization beyond field matching, rate limits, or side effects. The minimal information leaves ambiguity about what happens on mismatches or missing data.

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 two concise sentences, front-loading the primary purpose and following with key requirement. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description does not need to explain return values. It covers basic purpose and one requirement, but omits guidance on common error cases or how to interpret responses. For a simple fetch, it is minimally adequate.

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 description coverage is 0%, so the description must compensate. It explains that booking_request_id is required and customer_email/phone are needed for matching, adding context beyond the schema. However, it does not clarify which optional field must be provided or format requirements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches VIP booking status from the venue booking workflow, specifying the resource and action. It distinguishes from sibling tools like create or cancel, but does not explicitly differentiate from other get tools like get_guest_list_entry_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions required fields but provides no guidance on when to use this tool versus alternatives. It does not state scenarios where this tool is appropriate or not, nor does it reference sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_vip_pricingA

Get VIP pricing information for a venue. Returns honest weekday and weekend minimum spend ranges, zone summaries, table chart image URL, and booking affordance.

WHEN TO CALL: When a user asks about VIP tables, VIP pricing, bottle service costs, minimum spend, or table reservations at a specific venue.

WHAT TO DO AFTER:

  • Present pricing conversationally ("Weekday minimums start around Â¥100K, weekends from Â¥200K")

  • Show table chart URL as a layout reference only — do not infer availability from the image

  • If booking_supported is true and user is interested, offer to submit an inquiry via create_vip_booking_request

  • Do NOT suggest specific table codes unless the user asks

  • If busy_night is true, mention the event name and that demand may be higher on that night

  • When pricing_approximate is true, use hedging language ("around", "approximately") rather than stating exact figures

When venue_open is false, the venue is closed on that specific date but general pricing ranges for open nights are still included. Present the open nights and pricing to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
venue_idYes
dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
venue_idYes
venue_nameYes
venue_openYes
venue_closed_messageYes
pricing_configuredYes
pricing_not_configured_messageYes
weekday_min_spendYes
weekend_min_spendYes
currencyYes
zonesYes
layout_image_urlYes
booking_supportedYes
booking_noteYes
generated_atYes
service_dateYes
event_pricing_noteYes
event_nameYes
busy_nightYes
pricing_approximateYes

TDQS

A3.8/5.0
Behavior3/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 covers important behaviors: handling venue_open=false (returns open nights' pricing), pricing_approximate flag (use hedging language), and busy_night (mention event). Missing details on authentication, rate limits, or error cases, but adequate for a read-only tool.

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?

The description is front-loaded with purpose and includes clear 'WHEN TO CALL' and 'WHAT TO DO AFTER' sections. It is somewhat verbose but well-structured. Every section serves a purpose, though some post-call guidance could be considered agent behavior rather than tool definition.

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?

Given the existence of an output schema (not shown), the description does not need to explain return values but still summarizes them. It covers edge cases (venue closed, approximate pricing, busy night). Complete enough for a pricing retrieval tool, though missing pagination or request limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does not explain the parameters (venue_id, date) beyond the context. It does not specify date format, requiredness, or how venue_id is obtained. The description focuses on output and post-call actions rather than input semantics.

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 clearly states the verb 'Get', the resource 'VIP pricing for a venue', and lists specific returns (minimum spend ranges, zone summaries, table chart URL, booking affordance). This distinguishes it from sibling tools like create_vip_booking_request or get_vip_booking_status, which handle booking operations.

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 'WHEN TO CALL' section explicitly lists scenarios (VIP tables, pricing, bottle service, etc.), providing clear context. However, it does not explicitly state when not to use this tool or suggest alternatives, though the sibling list implies distinctions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_areasA

List distinct area/neighborhood names for a given city. Use this to discover valid area filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity slug (defaults to tokyo)

Output Schema

ParametersJSON Schema
NameRequiredDescription
cityYes
areasYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It only states the function without detailing ordering, pagination, error handling, or side effects. This is insufficient for a tool with no annotations.

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 consists of two concise sentences that front-load the purpose. Every word contributes, and there is no redundancy or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple tool with one optional parameter and an output schema. However, it omits mention of the default city ('tokyo') and does not hint at the output structure or any filtering behavior, which would improve completeness.

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% with both parameter and description provided. The description does not add meaning beyond the schema; it simply reiterates 'for a given city'. Baseline of 3 is appropriate given high schema coverage.

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 clearly states 'List distinct area/neighborhood names for a given city', specifying the verb 'list' and the resource 'area/neighborhood names'. It distinguishes from sibling tools like list_cities, which lists cities. This is a specific and helpful purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Use this to discover valid area filters', indicating when to use the tool. However, it does not provide exclusions or alternatives, such as noting that list_cities should be used for city-level queries. Guidance is minimal but present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_citiesA

List all available cities with metadata. Use this to discover valid city slugs before calling other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
citiesYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the full burden. It discloses that the tool lists all cities with metadata, which implies a read-only operation. However, it does not elaborate on response size or pagination, though the output schema may cover that.

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?

Two sentences, perfectly front-loaded. The first sentence states the action, the second adds contextual usage. No redundant words.

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?

Given zero parameters, an output schema exists, and the tool is a simple list, the description is complete. It covers purpose, usage, and return type implicitly. No missing elements for this low-complexity tool.

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 tool has zero parameters, so baseline is 4. The description adds context that it returns all cities with metadata, which is useful beyond the empty schema.

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 clearly states 'List all available cities with metadata' as a specific verb-resource combination. It differentiates from siblings like list_areas by establishing this tool as a prerequisite for discovering city slugs.

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?

Explicitly states 'Use this to discover valid city slugs before calling other tools.' This provides clear when-to-use guidance and implies it's a prerequisite, making it easy for the agent to sequence correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_genresA

List all available genres. Use this to discover valid genre names before filtering events or venues.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
genresYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description implies a read-only, non-destructive operation by stating 'list all available genres.' This is adequate for a simple list tool, though it could explicitly mention safety (e.g., no side effects).

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?

Two sentences, no wasted words. The first sentence states the purpose, the second gives practical usage advice. Front-loaded and efficient.

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 tool with no parameters and a simple output (presumably a list of strings), the description is complete. It covers what the tool does and why to use it. No additional details are necessary.

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?

No parameters exist in the input schema, and schema description coverage is 100%. The baseline for zero parameters is 4, and the description adds no param info, which is appropriate.

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 clearly states the action ('list all available genres') and the resource ('genres'). It distinguishes from sibling tools like search_events or search_venues by focusing on genre discovery, not filtering or event retrieval.

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?

Explicitly advises using this tool before filtering events or venues, providing clear context. While it doesn't list what not to use or alternatives, the guidance is sufficient for this simple tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

log_unmet_requestB

Log unmet user intent when no good nightlife answer is available, for product follow-up.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNo
languageNo
cityNo
raw_queryYes
intentNo
suggested_filtersNo
user_hashNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
request_idYes
statusYes
created_atYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only mentions logging without detailing side effects, data retention, or privacy implications, leaving behavioral traits vague.

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 a single sentence with no wasted words, effectively communicating the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters including a nested object and an output schema, the description provides insufficient context about parameter meanings and return values, making it incomplete for complex use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description adds no explanation for any of the 7 parameters, leaving the agent without guidance on how to populate them.

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 clearly states the tool logs unmet user intent when no good nightlife answer is available, distinguishing it from siblings which handle bookings, events, and venue information.

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 description specifies when to use (when no good nightlife answer), implying not to use when an answer exists, but does not explicitly state alternatives or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_eventsA

Search nightlife events. Returns events plus vip_venues_open showing VIP clubs open on the queried date even without listed events. Always check vip_venues_open before concluding nothing is happening.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNotokyo
dateNo
genreNo
areaNo
queryNo
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
cityYes
date_filterYes
eventsYes
vip_venues_openYes
unavailable_cityYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that the response includes vip_venues_open even when no events are found, and implies a read-only operation. However, it does not mention pagination, rate limits, or authentication requirements, which are moderately important for a search tool.

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 two sentences with no extraneous information. It is front-loaded with the primary purpose and immediately adds a crucial behavioral note. Every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (7 parameters, an output schema, and multiple siblings), the description covers the unique return behavior (vip_venues_open) but omits parameter explanations and overall search semantics. While the output schema may fill some gaps, the description alone is not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description only indirectly references the 'date' parameter by mentioning 'queried date'. It fails to explain the other 6 parameters (city, genre, area, query, limit, offset), leaving the agent to infer their meaning from names alone. This is insufficient compensation for the missing 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 description clearly states the verb 'search' and the resource 'nightlife events', and distinguishes itself from siblings like search_venues and search_performers by highlighting a unique feature (vip_venues_open). It is specific and unambiguous.

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 description advises to 'always check vip_venues_open before concluding nothing is happening', which is a clear usage guideline. However, it does not explicitly mention when not to use this tool or compare it with alternatives like get_tonight or search_venues, missing an opportunity for fuller guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_performersB

Search performers by city/date window with optional genre and text query filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNotokyo
dateNo
genreNo
queryNo
sort_byNopopularity
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
cityYes
date_filterYes
performersYes
unavailable_cityYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must compensate. It only mentions 'search' without disclosing pagination behavior, rate limits, or any side effects. The output schema exists but is not referenced.

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 a single, well-structured sentence that front-loads the core action and filters without extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters and no annotations, the description fails to address pagination (limit/offset), sorting options (enum), or required fields, leaving the agent uninformed about essential usage details. The output schema partially compensates but is not explained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description adds minimal parameter context beyond the schema (e.g., 'optional genre and text query filters'). It does not explain the meaning or constraints of parameters like sort_by, limit, or offset, despite having 7 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?

The description clearly states the tool searches performers with specific filters (city, date window, optional genre, query), distinguishing it from sibling tools like search_events or search_venues.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for searching performers but provides no explicit guidance on when to use this tool versus alternatives like search_events or list_cities, nor does it state limitations or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_venuesB

Search nightlife venues by city/date window and optional area, genre, text query, and VIP booking support.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNotokyo
dateNo
areaNo
genreNo
queryNo
vip_booking_supported_onlyNo
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
cityYes
date_filterYes
venuesYes
unavailable_cityYes

TDQS

B3.1/5.0
Behavior2/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 does not disclose behavioral traits such as pagination behavior (though 'limit' and 'offset' are in schema), rate limits, authentication requirements, or how results are ordered. The term 'search' is vague—does it support partial matches, exact matches, or full-text?

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 a single, concise sentence of 16 words. It front-loads the core action and lists essential filters efficiently. No redundant words or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 8 parameters, no annotations, and an output schema exists, the description is too minimal. It does not mention default behavior (e.g., city defaults to 'tokyo', limit 10), date format requirements, or result ordering. The presence of an output schema does not excuse the lack of contextual detail about the search behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description should add meaning. It lists parameter names (city, date, area, genre, query, vip_booking_supported_only) but does not explain their semantics beyond the name. For instance, 'date' format is unspecified, 'query' is ambiguous (text in venue name?), and 'vip_booking_supported_only' is self-explanatory but not elaborated.

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 clearly states the verb 'Search', the resource 'nightlife venues', and lists key parameters (city, date, area, genre, query, VIP booking). It distinguishes this tool from sibling tools like 'search_events' and 'search_performers' by specifying the resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention any exclusions, prerequisites, or when not to use it. For example, it does not differentiate from 'search_events' in terms of typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_to_guest_listC

Submit a guest list entry for an event or venue. Provide either event_id or venue_id + service_date. Returns confirmation with door instructions and guest list benefits if available.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idNo
venue_idNo
service_dateNo
customer_nameYes
customer_emailYes
customer_phoneNo
messaging_channelNo
messaging_handleNo
languageNoen
sourceNoconcierge

Output Schema

ParametersJSON Schema
NameRequiredDescription
entry_idYes
statusYes
event_nameYes
event_dateYes
messageYes
guest_list_benefitYes
door_instructionsYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It confirms the operation is a submission (likely a write), but does not mention side effects (e.g., overwriting existing entries), required authentication, rate limits, or idempotency. The description is insufficient for an agent to understand the tool's behavior.

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?

The description is concise with two sentences. It front-loads the primary purpose and conditional logic. However, it could benefit from a slightly more structured format (e.g., listing key points) to improve scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters, 2 required, no annotations), the description is too sparse. It doesn't cover expected input formats, validation rules, or what happens on error. The presence of an output schema partially compensates, but the description fails to provide enough context for reliable tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description should clarify parameter meanings. It only explains the conditional parameters (event_id, venue_id, service_date). Other important parameters like messaging_channel, source, and language are undocumented, leaving the agent to guess their purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Submit a guest list entry') and the resource ('event or venue'), and specifies that the tool returns confirmation, door instructions, and benefits. However, it does not explicitly differentiate from sibling tools like create_vip_booking_request or get_guest_list_entry_status, which could cause confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear usage condition: 'Provide either event_id or venue_id + service_date.' This helps the agent select the correct parameters. However, it lacks guidance on when to use this tool versus alternatives like create_vip_booking_request, and does not mention any prerequisites or error conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct entity or action (e.g., events, venues, performers, VIP bookings, guest lists, metadata). No two tools serve overlapping purposes, and descriptions clearly differentiate them.

Naming Consistency5/5

All tools follow verb_noun snake_case pattern (get_, list_, search_, create_, cancel_, submit_, log_). Convention is consistent across all tools.

Tool Count5/5

17 tools cover the full scope of nightlife search and booking (discovery, details, VIP requests, guest lists, logging). Each tool serves a necessary function without bloat.

Completeness5/5

The set covers discovery (cities, areas, genres, search), details (events, venues, performers), VIP booking lifecycle (pricing, create, cancel, status), guest list (submit, status), and fallback logging. No obvious gaps for the intended use case.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables users to search for events, performers, and venues through the SeatGeek API. Provides event recommendations, detailed venue seating information, and performer discovery capabilities for ticketed entertainment events.
    4
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Preference-aware events discovery MCP server that aggregates events, restaurants, and cultural activities across multiple sources and re-ranks them against your personal taste profile to surface things you'd actually want to do.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying electronic/dance music events from 19hz.info by region, with tools to list available regions and retrieve events data.
    16
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Live-concert discovery MCP server: search concerts, artist tour dates, festivals and shows by city. Gives AI assistants real-time access to Gigora's global live-music data.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/alcylu/nightlife-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server