{"ok":true,"site":{"host":"mysoci-agent-city-webmcp.vercel.app","url":"https://mysoci-agent-city-webmcp.vercel.app/","type":"live","desc":"Find an event, privacy-safe friends and a meetup place with native WebMCP tools. One shared plan, with human approval. A standalone WebMCP prototype for MySoci’s future agent layer.","tools":[{"name":"search_events","kind":"answer","impl":"imperative","description":"Search the app's deterministic New York weekend events by words, interests, day, and maximum ticket price. Returns event ids for later planning. Does not change the saved plan.","title":"Search city events","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"query":{"type":"string","maxLength":80,"description":"Optional words matched against event, venue, and neighborhood."},"interests":{"type":"array","maxItems":3,"uniqueItems":true,"items":{"enum":["ai","electronic-music","photography"]},"description":"Any interests that may match an event."},"day":{"enum":["saturday","sunday"],"description":"Weekend day to search."},"maxPrice":{"type":"integer","minimum":0,"maximum":200,"description":"Maximum ticket price in USD."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"save_event_to_plan","kind":"act","impl":"imperative","description":"Save one seeded event to the shared Saturday plan. Call with confirmed=false to request visible human approval. Call again with confirmed=true only after the human explicitly approves. The UI can remove the event afterward.","title":"Save event to Saturday plan","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"eventId":{"type":"string","pattern":"^[a-z0-9-]{1,64}$","description":"Exact event id returned by search_events."},"confirmed":{"type":"boolean","description":"True only after the human explicitly approves saving this event."}},"required":["eventId","confirmed"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"search_people","kind":"answer","impl":"imperative","description":"Search deterministic fictional profiles by interests, availability, words, or privacy visibility. Hidden presence is never converted into a location.","title":"Search social profiles","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"query":{"type":"string","maxLength":80,"description":"Optional words matched against a profile name, handle, bio, or interests."},"interests":{"type":"array","maxItems":3,"uniqueItems":true,"items":{"enum":["ai","electronic-music","photography","design","film","coffee"]},"description":"Any interests that may match a profile."},"availability":{"enum":["available","busy","unavailable"],"description":"Optional exact availability filter."},"presence":{"enum":["hidden","city-only","nearby"],"description":"Optional privacy visibility filter."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_profile","kind":"answer","impl":"imperative","description":"Read one fictional profile and its relationship. Presence is redacted to hidden, city-only, or coarse nearby visibility; no precise person coordinates are exposed.","title":"Get a social profile","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"profileId":{"type":"string","pattern":"^[a-z0-9-]{1,64}$","description":"Exact profile id returned by search_people or another social tool."}},"required":["profileId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"search_places","kind":"answer","impl":"imperative","description":"Search deterministic fictional meetup places by coarse neighborhood, event anchor, interests, or words. Results are planning suggestions, not reservations.","title":"Search meetup places","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"query":{"type":"string","maxLength":80,"description":"Optional words matched against a place name, summary, or atmosphere."},"interests":{"type":"array","maxItems":3,"uniqueItems":true,"items":{"enum":["ai","electronic-music","photography","design","film","coffee"]},"description":"Any interests that may match a meetup place."},"neighborhood":{"type":"string","maxLength":80,"description":"Optional coarse neighborhood filter."},"eventId":{"type":"string","pattern":"^[a-z0-9-]{1,64}$","description":"Optional event id; when present, use its neighborhood as the coarse anchor."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"find_nearby_friends","kind":"answer","impl":"imperative","description":"Find friends marked available and nearby the selected event using coarse neighborhood presence only. Hidden and city-only profiles are never returned as nearby.","title":"Find nearby friends","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"eventId":{"type":"string","pattern":"^[a-z0-9-]{1,64}$","description":"Optional event id; defaults to the human's currently selected event."},"availability":{"enum":["available","any"],"description":"Whether to include only friends marked available. Defaults to available."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"suggest_people_for_plan","kind":"act","impl":"imperative","description":"Prioritize available friends for the selected event using shared interests and privacy-safe coarse presence, then recommend fictional places in the event neighborhood. Hidden people are excluded.","title":"Suggest people and a meetup place","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"eventId":{"type":"string","pattern":"^[a-z0-9-]{1,64}$","description":"Optional event id; defaults to the human's currently selected event."},"maxPeople":{"type":"integer","minimum":1,"maximum":3,"description":"Maximum number of privacy-safe suggestions. Defaults to 3."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_group_meetup","kind":"act","impl":"imperative","description":"Prepare a meetup from the selected seeded event, fictional place, and privacy-safe friends. The first call must use confirmed=false; the shared app shows the proposal and only a visible human click can authorize the confirmed=true call. No real messages or reservations are made.","title":"Create a confirmed group meetup","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"eventId":{"type":"string","pattern":"^[a-z0-9-]{1,64}$","description":"Optional seeded event id; defaults to the human's selected event."},"placeId":{"type":"string","pattern":"^[a-z0-9-]{1,64}$","description":"Optional fictional meetup place id; defaults to the top place recommendation."},"profileIds":{"type":"array","maxItems":3,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9-]{1,64}$"},"description":"Optional fictional friend ids; defaults to the current social suggestions."},"time":{"type":"string","pattern":"^\\d{1,2}:\\d{2} [AP]M$","description":"Optional seeded 12-hour meetup time; defaults to the event time."},"confirmed":{"type":"boolean","description":"Required. False prepares a visible proposal. True is accepted only after the human clicks Confirm meetup in the app."}},"required":["confirmed"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"send_event_invites","kind":"transact","impl":"imperative","description":"Prepare pending invitations for eligible fictional friends on the confirmed shared meetup. The first call must use confirmed=false; only a visible human click can authorize confirmed=true. This sandbox never contacts real people or external services.","title":"Prepare fictional event invites","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"meetupId":{"type":"string","pattern":"^[a-z0-9-]{1,64}$","description":"Optional confirmed meetup id; defaults to the current shared meetup."},"profileIds":{"type":"array","maxItems":3,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9-]{1,64}$"},"description":"Optional fictional friend ids; defaults to the meetup's uninvited participants."},"confirmed":{"type":"boolean","description":"Required. False prepares a visible invite proposal. True is accepted only after the human clicks Approve invites in the app."}},"required":["confirmed"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Media & Personal","favicon":"/favicons/mysoci-agent-city-webmcp.vercel.app.svg","apiSurface":"spec","toolCount":9}}