Skip to main content
Glama

İstanbul etkinlik arama

istanbul_events_search
Read-onlyIdempotent

Search indexed Istanbul event sessions; use event_detail for full verification.

Dates: YYYY-MM-DD or today/tomorrow (Europe/Istanbul), default next 7 days,
maximum 31 days. Times: HH:MM within a day.
Started sessions are excluded by default, even for explicit dates. Use
include_past=true for retained active past sessions; this is not an archive
and expired prices stay unknown. result_info.filter_counts explains exclusions.
start_time_basis records the source of the time. source_time_conflict=true
means published Istanbul HTML session times took precedence over conflicting
JSON-LD times; preserve per-event warnings and verify the ticket page.
timing_kind=flexible_entry has event_date but start_at=null: its source_start_at
is catalogue metadata, never a visit or reservation time. Show the date and
ticket link, and verify opening hours/admission conditions. Clock-filtered
searches exclude date-only flexible tickets; excluded_unverified_time counts them.
admission_window holds published opening/last-entry/closing clocks, not an
appointment. Source excluded_weekdays uses Monday=0..Sunday=6; restricted
dates are excluded and counted in excluded_entry_date. Detail retains them
for inspection with entry_date_restricted=true, never an admission guarantee.
Categories: concert, theatre, opera_ballet, standup, family, festival, exhibition, workshop, sport, seminar,
other. District: one of Istanbul's 39 districts. Coordinates must be paired;
Turkish aliases such as tiyatro, konser, çocuk, atölye are accepted.
query searches titles by default; query_scope=all also searches venue names.
Empty/whitespace query means no text filter. match_mode=words (default)
matches complete normalized words, so Sıla does not match Silahşör.
Use match_mode=prefix explicitly for stems/autocomplete; prefix matches
are related title matches, never proof of artist identity.
radius defaults to 5000m, maximum 20000m. Limit defaults to 10, maximum 50.
Radius/distance are straight-line; the opposite shore may be included.
Price-unknown sessions remain labeled unknown with max_price_try; they are
not verified within budget. free_only requires observed zero price.
Set include_unknown_prices=false for verified-price-only results. Named,
budget, free, category and exclude_child_only queries may refresh up to three
relevant Biletinial details.
Category coverage is partial; category_source distinguishes provider genres
from explicit type markers in titles. Zero matches do not prove no city events.
For users explicitly seeking adult participation, exclude_child_only=true
removes published ranges with an upper age below 18 before result/plan limits.
Unknown ages and minimum-only limits are retained, not verified for the user;
this is not a general adult eligibility guarantee or a guessed numeric age.
child_age (0–17) requires a published matching age range and family genre;
missing age evidence is excluded, not guessed. Ticket-type eligibility and
service fees still need checking on the ticket page.
Explicitly sold-out sessions are excluded unless include_sold_out=true;
with that opt-in, a fresh observed sold-out price can be shown for inspection,
including zero, while availability remains sold_out. It is not an attendance recommendation.
unknown availability is still not a ticket guarantee.
With party_size (1–50) and ticket_profile, max_price_try is the WHOLE PARTY's
observed ticket subtotal for one event. Profiles: general (unrestricted),
adult, student, child, senior, any (conditional observations). Or supply
party={"adult":2,"child":1}; no unknown participant counts are invented.
price_quote gives ticket quantities/package admissions, observed subtotal,
unknown fees and unverified live group/adjacent-seat availability. General
tickets may cover eligible profile groups; discounted tickets are not
assigned to another profile. An adult-only ticket is not a child ticket.
budget_includes_fees=true requires observed fee inclusion; unknown fee totals
remain unknown, never guessed. For a strict budget use include_unknown_prices=false.
Without party/profile, legacy minimum ticket observations remain informational;
minimum_observed_try is not a per-person/group checkout total. Do not divide
or multiply a package label as if it were a single normal ticket.
result_info.empty_reasons and coverage distinguish unknown locations/prices
from verified exclusions. excluded_unknown_location and excluded_outside_location
sum to legacy excluded_location; neither establishes city-wide absence.
participation_conditions contains scoped published statements and unverified_topics;
source claims, source_section and observation time must be preserved. Unknown,
expired or truncated conditions do not establish accessibility, language,
reservation, refunds, materials or personal eligibility. Inspect detail for
full bounded statements. Catalogue venue hints only prioritize verification.
Ticketmaster is a catalogue, not live ticket inventory. Biletinial list
sessions need detail verification for venue, complete sessions and prices.
For each event shown to the user, include a clickable event/ticket-page link
from ticket_url or a non-null ticket_links[].url beside its title. Preserve
the exact returned URL; if none is available, say so rather than inventing one.
Each card includes about.text, a short source excerpt with status, provenance
and truncation. Briefly explain the topic for each recommendation; inspect
event_detail if not_checked. Missing text is unknown, never inferred from a title.
Preserve freshness, source coverage, truncated and warnings; no city-wide
completeness, live seat, routing or checkout guarantee.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "istanbul_events_search"
  }
}

Input Schema

NameRequiredDescriptionDefault
latNo
lonNo
limitNo
partyNo
queryNo
venueNo
date_toNo
time_toNo
categoryNo
districtNo
radius_mNo
child_ageNo
date_fromNo
free_onlyNo
time_fromNo
match_modeNowords
party_sizeNo
query_scopeNotitle
include_pastNo
max_price_tryNo
ticket_profileNo
include_sold_outNo
exclude_child_onlyNo
budget_includes_feesNo
include_unknown_pricesNo

Output Schema

NameRequiredDescriptionDefault
okNo
dataNo
errorNo
limitsNo
geojsonNo
sourcesNo
summaryYes
warningsNo
freshnessYes
paginationNo
result_infoNo
next_queriesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / $defs / ResultInfo / properties / coverage
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "maxProperties": 20,
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Coverage"
      +}
    • addedOutput schema / $defs / ResultInfo / properties / empty_reasons
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "maxItems": 30,
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Empty Reasons"
      +}
  2. Changed4 schema fields changed
    • addedInput schema / properties / budget_includes_fees
      Added value: +{
      +  "default": false,
      +  "title": "Budget Includes Fees",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / party
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {
      +        "type": "integer"
      +      },
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Party"
      +}
    • addedInput schema / properties / party_size
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Party Size"
      +}
    • addedInput schema / properties / ticket_profile
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Ticket Profile"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / exclude_child_only
      Added value: +{
      +  "default": false,
      +  "title": "Exclude Child Only",
      +  "type": "boolean"
      +}
  4. Changed2 schema fields changed
    • addedInput schema / properties / include_past
      Added value: +{
      +  "default": false,
      +  "title": "Include Past",
      +  "type": "boolean"
      +}
    • addedOutput schema / $defs / ResultInfo / properties / filter_counts
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {
      +        "type": "integer"
      +      },
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Filter Counts"
      +}
  5. Changed3 schema fields changed
    • addedInput schema / properties / match_mode
      Added value: +{
      +  "default": "words",
      +  "title": "Match Mode",
      +  "type": "string"
      +}
    • addedOutput schema / $defs / Source / properties / refresh_status
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "idle",
      +        "refreshing",
      +        "failed",
      +        "unavailable"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Refresh Status"
      +}
    • addedOutput schema / $defs / Source / properties / serving_stale
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Serving Stale"
      +}
  6. Changed4 schema fields changed
    • addedInput schema / properties / child_age
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Child Age"
      +}
    • addedInput schema / properties / include_sold_out
      Added value: +{
      +  "default": false,
      +  "title": "Include Sold Out",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / include_unknown_prices
      Added value: +{
      +  "default": true,
      +  "title": "Include Unknown Prices",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / query_scope
      Added value: +{
      +  "default": "title",
      +  "title": "Query Scope",
      +  "type": "string"
      +}
  7. Added

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the read-only/idempotent annotations, it discloses many non-obvious behaviors: started-session exclusion, source-time conflicts, flexible-entry semantics, partial category coverage, unknown price handling, sold-out treatment, and whole-party price interpretation. It also warns about verification limits, catalogue-vs-live distinctions, and non-guarantees around availability and completeness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is front-loaded with purpose and core filters, and most caveats are relevant for a 25-parameter high-stakes search tool. However, it is a dense single block with repetitive non-guarantee language and would be easier to scan if grouped into structured sections.

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 the tool's complexity, 25 parameters, and the presence of an output schema, the description is more than complete. It covers search behavior, filtering semantics, price interpretation, eligibility caveats, and verification boundaries without needing to explain return values in detail.

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

Parameters5/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 carry parameter meaning and it does: it specifies date and time formats, defaults and maxima, category values, district constraints, coordinate pairing, query behavior, match_mode semantics, radius and limit limits, price profiles, party sizing, and several eligibility filters. The only minor gap is that venue and individual lat/lon semantics are less explicit, but overall it compensates strongly for the schema gap.

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 first sentence states a specific verb and resource: search indexed Istanbul event sessions. It also explicitly distinguishes the sibling tool istanbul_event_detail as the place for full verification.

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 gives extensive when-to-use guidance across dates, times, past sessions, flexible-entry events, price filters, sold-out behavior, child eligibility, party sizing, and budget handling. It also names event_detail as the alternative for verification and detail inspection.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.