parisfomo-events
https://paris.whatsupin-review.pages.dev
Registry code: 56efd15fa7701091
Paris Events (https://paris.whatsupin-review.pages.dev). Read-only Paris events (dance, AI, music, arts, food, sports, street fairs, exercise, volunteering). Filter with category, topic or scope. For "in <neighborhood>" use neighborhood (a neighborhood or town name); for "near <place>" use near (a neighborhood, town, venue name or "lat,lon") with radius_km. Results then carry distance_km, and place.unplaced_events counts events left out because their venue isn't mapped. Use search_events or list_upcoming; get_event looks one up by its stable id; get_city lists the valid neighborhood, town,…
- endpoint
- https://paris.whatsupin-review.pages.dev/mcp
- protocol
- streamable-http ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is parisfomo-events live?
- Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
- Is parisfomo-events free to use?
- Yes — the hub reached it with no key and no payment.
- What tools does parisfomo-events have?
- 6 tools: find_performer, create_custom_calendar, get_event, list_upcoming, get_city, search_events.
- Is parisfomo-events safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 100%· all time 100%
last good check
of 6 tools
- unknown → live
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
list_upcoming open 1h ago
Browse the next N days of events day by day, with no search words. `by_day` counts every match per date, and when more events match than `limit` the rows are spread evenly across the days (earliest first within each day), so each day is represented. Use it for overviews like "what's happening this week"; for search words, free-only, a town or exact from/to dates use search_events, and for one event's details get_event. Optional filters: one category or topic, an audience, and a place: `neighborhood` keeps events inside a named area (radius_km widens it past the boundary), `near` ranks events by distance from a place or "lat,lon" within radius_km. No sign-in; each client gets 30 calls a minute and 2,500 event rows an hour.
{ "type": "object", "properties": { "days": { "type": "integer", "description": "Window in days (default 7, max 60)" }, "near": { "type": "string", "description": "Events within radius_km of a place: a neighborhood, a town, a venue name, or \"lat,lon\". Results get distance_km, nearest first within each day. Use this for \"near X\"; use neighborhood for \"in X\". Unmapped venues are left out (counted in place.unplaced_events)." }, "limit": { "type": "integer", "description": "Max rows (default 50, max 100)" }, "topic": { "enum": [ "arts", "books", "civic", "classes", "comedy", "community", "conferences", "culture", "faith", "family", "film", "food_drink", "games", "markets", "networking", "nightlife", "nonprofit", "outdoors", "science", "sports", "startup", "talks", "wellness", "wine", "business" ], "type": "string" }, "sector": { "enum": [ "senior_care", "healthcare", "life_sciences", "real_estate", "finance_insurance", "legal", "tech", "defense_government", "trades_construction", "hospitality_food", "retail_ecommerce", "marketing_media", "nonprofit", "energy_climate", "hr_workforce", "creative_design" ], "type": "string", "description": "Industry a work event is for (only events with a work topic carry one; general networking has none): e.g. senior_care, healthcare, real_estate, finance_insurance, legal, tech" }, "audience": { "enum": [ "general", "kids", "teens", "seniors" ], "type": "string", "description": "Who the event is only for: kids, teens, seniors (older adults: senior-center programs, 55+ groups), or general (none of those). Default: no filter. Caregiver/aging talks for families and professionals are general." }, "category": { "enum": [ "ai", "dance", "dating", "entertainment", "exercise", "music", "volunteer" ], "type": "string" }, "radius_km": { "type": "number", "description": "Distance for near (default 1.5, max 50), or how far neighborhood reaches past its boundary (default 0)" }, "biz_format": { "enum": [ "referral_group", "chamber", "mixer", "breakfast_lunch", "workshop_training", "conference_expo", "career_fair", "ce_credits", "pitch_demo", "committee_meeting" ], "type": "string", "description": "Kind of work event: referral_group (BNI etc.), chamber, mixer, breakfast_lunch, workshop_training, conference_expo, career_fair, ce_credits, pitch_demo, committee_meeting" }, "neighborhood": { "type": "string", "description": "Only events in this Paris neighborhood (or town): 10th arrondissement, 11th arrondissement, 12th arrondissement, 13th arrondissement, 14th arrondissement, 15th arrondissement, 16th arrondissement, 17th arrondissement, 18th arrondissement, 19th arrondissement, 1st arrondissement, 20th arrondissement, 2nd arrondissement, 3rd arrondissement, 4th arrondissement, 5th arrondissement, 6th arrondissement, 7th arrondissement, 8th arrondissement, 9th arrondissement. Sub-neighborhood and common names work too. Add radius_km to also take events within that distance of its centre. Events whose venue isn't mapped can't be placed and are left out; the response's place.unplaced_events counts them." } } }arguments 115 linesget_city open 1h ago
Get what Paris Events covers in Paris: how many upcoming events it lists and for which dates, when the data was last published, how many sources feed it, and upcoming events per category, topic, neighborhood and town. Call it before searching to pick valid category, topic, neighborhood and town values, or to tell a user what this site covers; it returns counts only, no events (use search_events or list_upcoming for those). Takes no arguments. No sign-in; each client gets 30 calls a minute and 2,500 event rows an hour.
{ "type": "object", "properties": {} }arguments 4 linessearch_events open 1h ago
Search every upcoming Paris event by words, dates, price, topic or place: dance, AI, music, arts, food, sports, comedy, exercise, volunteering, dating, business and professional networking. Use it whenever the question has search words, a date range ("this weekend": from/to), free-only, a town or an area; for a day-by-day overview of the next few days with no search words use list_upcoming, for one act by name find_performer. All words in `query` must appear in the title, venue, performers, organizer or tags; dates are local (Europe/Paris), YYYY-MM-DD. Results come earliest first, at most `limit`; `count` says how many matched in total, so narrow the search rather than paging. get_city lists valid neighborhood, town, category and topic values. No sign-in; each client gets 30 calls a minute and 2,500 event rows an hour.
{ "type": "object", "properties": { "to": { "type": "string", "description": "Latest date (default: none)" }, "city": { "type": "string", "description": "City, e.g. 'Paris' or another town in the Paris (case-insensitive)" }, "free": { "type": "boolean", "description": "Only free events (a listed free price, or an unpriced listing from a source whose events are free)" }, "from": { "type": "string", "description": "Earliest date (default: today)" }, "near": { "type": "string", "description": "Events within radius_km of a place: a neighborhood, a town, a venue name, or \"lat,lon\". Results get distance_km, nearest first within each day. Use this for \"near X\"; use neighborhood for \"in X\". Unmapped venues are left out (counted in place.unplaced_events)." }, "limit": { "type": "integer", "description": "Max results (default 25, max 100)" }, "query": { "type": "string", "description": "Free text, e.g. 'salsa', 'hackathon', 'street fair'" }, "scope": { "enum": [ "paris", "hauts_de_seine", "seine_saint_denis", "val_de_marne", "yvelines", "essonne", "val_doise", "seine_et_marne", "beyond", "metro", "any" ], "type": "string", "description": "Geography: one region (paris = Paris, hauts_de_seine = Hauts-de-Seine (La Défense, Boulogne), seine_saint_denis = Seine-Saint-Denis (Saint-Denis, Montreuil), val_de_marne = Val-de-Marne (Vincennes, Créteil), yvelines = Yvelines (Versailles, Saint-Germain), essonne = Essonne (Massy, Évry, Saclay), val_doise = Val-d'Oise (Cergy, Enghien, Roissy), seine_et_marne = Seine-et-Marne (Disneyland, Fontainebleau), beyond = Farther), metro (all but the farther-away region), or any (default)" }, "topic": { "enum": [ "arts", "books", "civic", "classes", "comedy", "community", "conferences", "culture", "faith", "family", "film", "food_drink", "games", "markets", "networking", "nightlife", "nonprofit", "outdoors", "science", "sports", "startup", "talks", "wellness", "wine", "business" ], "type": "string", "description": "Topic (the site's Arts, Food, Learn, Sports tabs: e.g. comedy, film, food_drink, sports, talks, classes, markets, outdoors; business = chamber mixers, referral groups, small-business workshops, trade shows, career fairs)" }, "season": { "type": "string", "description": "Seasonal series tag, e.g. 'techweek27' (only when the site lists one)" }, "sector": { "enum": [ "senior_care", "healthcare", "life_sciences", "real_estate", "finance_insurance", "legal", "tech", "defense_government", "trades_construction", "hospitality_food", "retail_ecommerce", "marketing_media", "nonprofit", "energy_climate", "hr_workforce", "creative_design" ], "type": "string", "description": "Industry a work event is for (only events with a work topic carry one; general networking has none): e.g. senior_care, healthcare, real_estate, finance_insurance, legal, tech" }, "audience": { "enum": [ "general", "kids", "teens", "seniors" ], "type": "string", "description": "Who the event is only for: kids, teens, seniors (older adults: senior-center programs, 55+ groups), or general (none of those). Default: no filter. Caregiver/aging talks for families and professionals are general." }, "category": { "enum": [ "ai", "dance", "dating", "entertainment", "exercise", "music", "volunteer" ], "type": "string", "description": "Scored category (the site's AI, Dance, Fun, Gym, Music, Singles, Volunteer tabs)" }, "radius_km": { "type": "number", "description": "Distance for near (default 1.5, max 50), or how far neighborhood reaches past its boundary (default 0)" }, "biz_format": { "enum": [ "referral_group", "chamber", "mixer", "breakfast_lunch", "workshop_training", "conference_expo", "career_fair", "ce_credits", "pitch_demo", "committee_meeting" ], "type": "string", "description": "Kind of work event: referral_group (BNI etc.), chamber, mixer, breakfast_lunch, workshop_training, conference_expo, career_fair, ce_credits, pitch_demo, committee_meeting" }, "neighborhood": { "type": "string", "description": "Only events in this Paris neighborhood (or town): 10th arrondissement, 11th arrondissement, 12th arrondissement, 13th arrondissement, 14th arrondissement, 15th arrondissement, 16th arrondissement, 17th arrondissement, 18th arrondissement, 19th arrondissement, 1st arrondissement, 20th arrondissement, 2nd arrondissement, 3rd arrondissement, 4th arrondissement, 5th arrondissement, 6th arrondissement, 7th arrondissement, 8th arrondissement, 9th arrondissement. Sub-neighborhood and common names work too. Add radius_km to also take events within that distance of its centre. Events whose venue isn't mapped can't be placed and are left out; the response's place.unplaced_events counts them." } } }arguments 154 linesfind_performer unknown never probed
Find a performer, band, comedian or act in Paris by name (words in `query` must all match; case-insensitive) and get their upcoming events, top venues, genres or topics and the platforms that list them. Names come only from public event listings; there are no contact details. Use it for "when is <band> playing" or "who plays at <venue>". For events by topic or venue rather than by name, use search_events; use get_event with an id for one event's full listing. No sign-in; each client gets 30 calls a minute and 2,500 event rows an hour.
{ "type": "object", "required": [ "query" ], "properties": { "limit": { "type": "integer", "description": "Max matches (default 10, max 25)" }, "query": { "type": "string", "description": "Part of a name, e.g. 'khruangbin'" } } }arguments 16 linescreate_custom_calendar unknown never probed
Build a subscribable calendar of upcoming Paris events from the user's interests. Returns a link that opens the calendar on Paris Events (open_on_paris_events; give the user this first), subscribe links (Google Calendar, Apple/Outlook webcal, plain .ics) and a preview. The calendar refreshes itself every few hours, so new matching events keep appearing. An event is included if it matches ANY interest and no exclude term. Nothing is stored by Paris Events: the interests are encoded in the link itself. Interview the user first (see the custom_calendar prompt), check matches with search_events, and call this again to adjust. For a one-off answer rather than a standing calendar, use search_events. No sign-in; each client gets 30 calls a minute and 2,500 event rows an hour.
{ "type": "object", "required": [ "interests" ], "properties": { "name": { "type": "string", "description": "Calendar name shown in their calendar app, e.g. 'Salsa + AI nights'" }, "exclude": { "type": "array", "items": { "type": "string" }, "description": "Words; any event containing one is left out" }, "interests": { "type": "array", "items": { "type": "object", "properties": { "city": { "type": "string", "description": "One city outside Paris (case-insensitive)" }, "days": { "type": "array", "items": { "enum": [ "sun", "mon", "tue", "wed", "thu", "fri", "sat" ], "type": "string" }, "description": "Days of the week (default all)" }, "free": { "type": "boolean", "description": "Only free events" }, "near": { "type": "string", "description": "Events within radius_km of a place: a neighborhood, a town, a venue name, or \"lat,lon\". Results get distance_km, nearest first within each day. Use this for \"near X\"; use neighborhood for \"in X\". Unmapped venues are left out (counted in place.unplaced_events)." }, "query": { "type": "string", "description": "Words that must ALL appear in the event's title/location/organizer/tags, e.g. 'salsa', 'hackathon', 'trail run'. Make separate interests for alternatives." }, "scope": { "enum": [ "paris", "hauts_de_seine", "seine_saint_denis", "val_de_marne", "yvelines", "essonne", "val_doise", "seine_et_marne", "metro", "any" ], "type": "string", "description": "Area for this interest (default any)" }, "times": { "type": "array", "items": { "enum": [ "morning", "afternoon", "evening", "late", "allday" ], "type": "string" }, "description": "Start times, local: morning 5-12, afternoon 12-17, evening 17-21, late 21+; allday = no set time (fairs, exhibits). Default all" }, "topic": { "enum": [ "arts", "books", "civic", "classes", "comedy", "community", "conferences", "culture", "faith", "family", "film", "food_drink", "games", "markets", "networking", "nightlife", "nonprofit", "outdoors", "science", "sports", "startup", "talks", "wellness", "wine", "business" ], "type": "string" }, "category": { "enum": [ "ai", "dance", "dating", "entertainment", "exercise", "music", "volunteer" ], "type": "string" }, "radius_km": { "type": "number", "description": "Distance for near (default 1.5, max 50), or how far neighborhood reaches past its boundary (default 0)" }, "neighborhood": { "type": "string", "description": "Only events in this Paris neighborhood (or town): 10th arrondissement, 11th arrondissement, 12th arrondissement, 13th arrondissement, 14th arrondissement, 15th arrondissement, 16th arrondissement, 17th arrondissement, 18th arrondissement, 19th arrondissement, 1st arrondissement, 20th arrondissement, 2nd arrondissement, 3rd arrondissement, 4th arrondissement, 5th arrondissement, 6th arrondissement, 7th arrondissement, 8th arrondissement, 9th arrondissement. Sub-neighborhood and common names work too. Add radius_km to also take events within that distance of its centre. Events whose venue isn't mapped can't be placed and are left out; the response's place.unplaced_events counts them." } } }, "description": "1-12 interests; each needs a query, category or topic" }, "include_kids": { "type": "boolean", "description": "Include kids'/teens'-only events (default false)" }, "include_seniors": { "type": "boolean", "description": "Include events only for older adults (senior-center programs, 55+ groups; default false)" } } }arguments 148 linesget_event unknown never probed
Get the full listing for one upcoming event by the `id` that search_events, list_upcoming or find_performer returned: title, dates, venue, price (all-in, or "See tickets"), the original listing (`link`), every source that lists it and first_seen / last_seen / last_fetched dates. Ids stay the same while an event is listed; a past or removed event returns an error, so search again. No sign-in; each client gets 30 calls a minute and 2,500 event rows an hour.
{ "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string", "description": "12-character event id" } } }arguments 12 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id56efd15fa7701091.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/56efd15fa7701091/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/56efd15fa7701091?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.