{"name":"io.github.socialloopai/socialloop-mcp","slug":"socialloopai-socialloop-mcp","title":null,"description":"SocialLoop: AI-native event platform — sell tickets, manage guests, run affiliates & promo codes.","url":"https://mcp.market/server/socialloopai-socialloop-mcp","rating":null,"grade":"A","score":97,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":28,"stars":2,"forks":0,"downloads_week":null,"last_push_at":"2026-09-05T09:04:50.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T01:25:47.635Z","last_ok_at":"2026-11-04T01:25:47.635Z","latency_ms":268},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/socialloopai/socialloop-mcp","website":"https://socialloop.ai/docs/mcp","version":"1.0.2","remotes":[{"type":"streamable-http","url":"https://mcp.socialloop.ai"},{"type":"streamable-http","url":"https://socialloop.ai/mcp"}],"packages":[],"tools":[{"name":"accept_deal","description":"Confirm a recorded deal's pending terms as a party (or community admin). Activates on unanimity — an ACTIVE deal auto-stamps its ticket split when the event attaches (deal = pre-approval), so this is the money-consequential confirm. Requires deal_id.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"deal_id":{"type":"string","minLength":1,"maxLength":128}},"required":["deal_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_affiliate","description":"Invite an affiliate/promoter to a live event by email with their discount and optional commission. Sends an invite email; they get a tracked code on accept. Counts against the affiliate plan cap. Requires event_id + email; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"discount_type":{"type":"string","enum":["percent","fixed"]},"discount_value":{"type":"number","minimum":0,"maximum":1000000},"commission_type":{"type":"string","enum":["percent","fixed"]},"commission_value":{"type":"number","minimum":0,"maximum":1000000},"code_prefix":{"type":"string","maxLength":12},"starts_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["event_id","email"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_affiliate_code","description":"Extend an affiliate to another ticket tier — adds the tier to their promo code with its own discount and optional commission. Requires event_id + affiliate_id + ticket_class_id + discount; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"affiliate_id":{"type":"string","minLength":1,"maxLength":128},"ticket_class_id":{"type":"string","minLength":1,"maxLength":128},"discount_type":{"type":"string","enum":["percent","fixed"]},"discount_value":{"type":"number","minimum":0,"maximum":1000000},"commission_type":{"type":"string","enum":["percent","fixed"]},"commission_value":{"type":"number","minimum":0,"maximum":1000000}},"required":["event_id","affiliate_id","ticket_class_id","discount_type","discount_value"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_codes_to_profile","description":"Attach or auto-generate promo codes under a discount profile — each code inherits the profile's discount and becomes immediately redeemable. Give explicit codes and/or auto_generate a count (optional code_prefix); max 500/call, duplicates skipped with a suggestion. Requires event_id + profile_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"profile_id":{"type":"string","minLength":1,"maxLength":128},"codes":{"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"auto_generate":{"type":"integer","exclusiveMinimum":0,"maximum":500},"code_prefix":{"type":"string","maxLength":32}},"required":["event_id","profile_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_event_host","description":"Invite a co-host to a live event by email. role 'producer' = full permissions; role 'co_host' = display + invite-from-own-list. They get an email and join on accept. Requires event_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"role":{"type":"string","enum":["producer","co_host"]}},"required":["event_id","email","role"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_guest","description":"Add a guest to a live event's guest list — name, optional email, phone, category (e.g. vip/press), plus-ones, note, tags, and an optional ticket tier. Counts against the weekly invite limit. Requires event_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"first_name":{"type":"string","minLength":1,"maxLength":120},"last_name":{"type":"string","maxLength":120},"email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"type":"string","maxLength":40},"category":{"type":"string","maxLength":80},"plus_ones_allowed":{"type":"integer","minimum":0,"maximum":100},"note":{"type":"string","maxLength":1000},"tags":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":80}},"ticket_class_id":{"type":"string","maxLength":128}},"required":["event_id","first_name"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_inventory_item","description":"Add a physical asset / gear item to a live event's inventory — name, category, status (wish_list … in_use), priority, quantity + quantity needed, unit cost ($), location, project/place links. Requires event_id + name; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000},"category":{"type":"string","maxLength":80},"subcategory":{"type":"string","maxLength":80},"status":{"type":"string","enum":["wish_list","needs_sourced","needs_fixed","needs_transport","ready","in_use","sell_donate","not_available"]},"priority":{"type":"string","enum":["essential","high","medium","low","next_year"]},"phase":{"type":"string","enum":["pre_production","build","event","strike","post"]},"qty":{"type":"integer","minimum":0,"maximum":10000000},"qty_needed":{"type":"integer","minimum":0,"maximum":10000000},"unit_cost":{"type":"number","minimum":0,"maximum":100000000},"unit_of_measure":{"type":"string","maxLength":40},"dimensions":{"type":"string","maxLength":200},"url":{"type":"string","maxLength":500},"current_location":{"type":"string","maxLength":200},"storage_container":{"type":"string","maxLength":200},"to_source":{"type":"boolean"},"project_id":{"type":"string","maxLength":128},"place_id":{"type":"string","maxLength":128},"tags":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":80}}},"required":["event_id","name"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_meal","description":"Add a meal to a live event's culinary plan — kind (breakfast/lunch/dinner/snack/special), serve time (required), title, status (planning … served), expected diners, stations, shopping list, estimated cost ($). Requires event_id + kind + serve_at; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"kind":{"type":"string","enum":["breakfast","brunch","lunch","snack","dinner","late_night","special"]},"serve_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"title":{"type":"string","maxLength":200},"description":{"type":"string","maxLength":2000},"status":{"type":"string","enum":["planning","sourcing","ready","cooking","served","cancelled"]},"expected_diners":{"type":"integer","minimum":0,"maximum":10000000},"stations":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":160}},"shopping_list":{"maxItems":500,"type":"array","items":{"type":"string","maxLength":200}},"estimated_cost":{"type":"number","minimum":0,"maximum":100000000},"notes":{"type":"string","maxLength":2000},"place_id":{"type":"string","maxLength":128},"project_id":{"type":"string","maxLength":128},"tags":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":80}}},"required":["event_id","kind","serve_at"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_place","description":"Add a place / location to a live event — a build site, zone, or venue area (name, structure, sector, lifecycle + build status, parent place, budgets, start date). Requires event_id + name; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":200},"name_alt":{"type":"string","maxLength":200},"description":{"type":"string","maxLength":2000},"structure":{"type":"string","maxLength":200},"sector":{"type":"string","maxLength":80},"lifecycle_status":{"type":"string","enum":["new","exploring","repeating","improving","removing"]},"build_status":{"type":"string","enum":["not_started","surveyed","staged","built","systemized","designed","complete"]},"parent_place_id":{"type":"string","maxLength":128},"budget_requested":{"type":"number","minimum":0,"maximum":100000000},"budget_allocated":{"type":"number","minimum":0,"maximum":100000000},"start_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"tags":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":80}}},"required":["event_id","name"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_profile_member","description":"Add a community member to a partner profile — its split terms apply to them immediately (community-set, no confirmation step). Refuses over existing terms unless replace_existing: true. Requires community_id + profile_id + member_uid.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"profile_id":{"type":"string","minLength":1,"maxLength":128},"member_uid":{"type":"string","minLength":1,"maxLength":128},"replace_existing":{"type":"boolean"}},"required":["community_id","profile_id","member_uid"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_programming_item","description":"Add a programming item (curated experience — workshop, performance, DJ set, ritual) to a live event — title, status (ideation … ready), types, duration, start time, linked talent/places, rider, production needs. Requires event_id + title; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"title":{"type":"string","minLength":1,"maxLength":300},"description":{"type":"string","maxLength":4000},"status":{"type":"string","enum":["ideation","needs_talent","confirming","programmed","story_and_design","needs_producer","production","ready","cancelled","blocked","on_event_serendipity"]},"phase":{"type":"string","enum":["pre_production","build","event","strike","post"]},"types":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":60}},"act":{"type":"string","maxLength":200},"experience_series":{"type":"string","maxLength":200},"duration_minutes":{"type":"integer","exclusiveMinimum":0,"maximum":100000},"start_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"talent_ids":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":128}},"place_ids":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":128}},"rider":{"type":"string","maxLength":4000},"production_needs":{"type":"string","maxLength":4000},"tags":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":80}}},"required":["event_id","title"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_project","description":"Create a production project on a live event — the container for tasks, roles, vendors, and budget. Name, description, category, priority, status, deliverable, dates. Requires event_id + name; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":4000},"category":{"type":"string","maxLength":80},"priority":{"type":"string","enum":["explore","low","medium","high","urgent"]},"overall_status":{"type":"string","enum":["not_started","on_hold","blocked","complete","cancelled"]},"deliverable":{"type":"string","maxLength":1000},"notes":{"type":"string","maxLength":4000},"tags":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":80}},"start_date":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"target_date":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["event_id","name"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_role","description":"Add a production role to a live event — an accountable role (Stage Manager, Catering Lead) that tasks/vendors/receipts reference. Name, description, category, notes. Requires event_id + name; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000},"category":{"type":"string","maxLength":80},"notes":{"type":"string","maxLength":2000},"tags":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":80}}},"required":["event_id","name"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_schedule_item","description":"Add a run-of-show cue / schedule item to a live event — a time-blocked moment (lighting/sound/performance/transition/safety/…) with start (and optional end), lane, cue number, project, talent. Requires event_id + title + start_at; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"title":{"type":"string","minLength":1,"maxLength":300},"start_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"end_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"type":{"type":"string","enum":["lighting","sound","video","announce","transition","performance","safety","pyro","other"]},"lane":{"type":"string","maxLength":80},"cue_number":{"type":"string","maxLength":40},"description":{"type":"string","maxLength":2000},"notes":{"type":"string","maxLength":2000},"project_id":{"type":"string","maxLength":128},"talent_ids":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":128}}},"required":["event_id","title","start_at"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_space","description":"Add a bookable venue Space (room/floor) to a community you run — name, optional location_name (the Location grouping Spaces: campus building, city site, festival zone; skip for a single place), floor, capacity, photos, house rules, weekly hours (soft policy), building address (stamped onto events at booking confirm), per-booking hour cap. Admin-only. Requires community_id + name.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"name":{"type":"string","minLength":1,"maxLength":80},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"location_name":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}]},"floor":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"capacity":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":100000},{"type":"null"}]},"photos":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":2048}},"rules":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"hours":{"anyOf":[{"type":"object","properties":{"mon":{"anyOf":[{"type":"null"},{"minItems":0,"maxItems":6,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"end":{"type":"string","pattern":"^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"}},"required":["start","end"],"additionalProperties":false}}]},"tue":{"anyOf":[{"type":"null"},{"minItems":0,"maxItems":6,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"end":{"type":"string","pattern":"^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"}},"required":["start","end"],"additionalProperties":false}}]},"wed":{"anyOf":[{"type":"null"},{"minItems":0,"maxItems":6,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"end":{"type":"string","pattern":"^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"}},"required":["start","end"],"additionalProperties":false}}]},"thu":{"anyOf":[{"type":"null"},{"minItems":0,"maxItems":6,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"end":{"type":"string","pattern":"^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"}},"required":["start","end"],"additionalProperties":false}}]},"fri":{"anyOf":[{"type":"null"},{"minItems":0,"maxItems":6,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"end":{"type":"string","pattern":"^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"}},"required":["start","end"],"additionalProperties":false}}]},"sat":{"anyOf":[{"type":"null"},{"minItems":0,"maxItems":6,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"end":{"type":"string","pattern":"^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"}},"required":["start","end"],"additionalProperties":false}}]},"sun":{"anyOf":[{"type":"null"},{"minItems":0,"maxItems":6,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"end":{"type":"string","pattern":"^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"}},"required":["start","end"],"additionalProperties":false}}]}},"additionalProperties":false},{"type":"null"}]},"address":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"address":{"type":"string","minLength":1,"maxLength":300},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["name","address","latitude","longitude"],"additionalProperties":false},{"type":"null"}]},"max_booking_hours":{"type":"integer","minimum":1,"maximum":168}},"required":["community_id","name"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_sponsor","description":"Add a sponsor to your sponsor book — company, tier (platinum/gold/silver/bronze), total committed ($), deliverables, optional contact. Spans all your events. Requires a connected account.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"company_name":{"type":"string","minLength":1,"maxLength":200},"tier":{"type":"string","enum":["platinum","gold","silver","bronze"]},"total_committed":{"type":"number","minimum":0,"maximum":1000000000},"deliverables":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":200}},"contact_name":{"type":"string","maxLength":160},"contact_email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"contact_phone":{"type":"string","maxLength":40},"notes":{"type":"string","maxLength":4000}},"required":["company_name"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_talent","description":"Add talent (performer, artist, DJ, speaker) to a live event's roster — name, bio, booking status, categories, act title, duration, contact, rider. Requires event_id + name; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":200},"short_bio":{"type":"string","maxLength":1000},"description":{"type":"string","maxLength":4000},"status":{"type":"string","enum":["no_contact","in_talks","bullpen","scheduling","confirmed","scheduled","declined","completed"]},"categories":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":80}},"act_title":{"type":"string","maxLength":200},"duration_minutes":{"type":"integer","exclusiveMinimum":0,"maximum":100000},"email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"type":"string","maxLength":40},"home_base":{"type":"string","maxLength":200},"portfolio_url":{"type":"string","maxLength":500},"rider":{"type":"string","maxLength":4000},"is_speaker":{"type":"boolean"}},"required":["event_id","name"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_task","description":"Add a production task to a live event — title, priority, and phase (pre_production/build/event/strike/post). Requires event_id + title; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"title":{"type":"string","minLength":1,"maxLength":300},"priority":{"type":"string","enum":["explore","low","medium","high","urgent"]},"phase":{"type":"string","enum":["pre_production","build","event","strike","post"]}},"required":["event_id","title"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_ticket_tier","description":"Add a ticket tier to a live event you manage — free RSVP (price 0) or paid, with capacity, optional approval, or a secret unlock code. Paid tiers need Stripe connected. Requires event_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":200},"price":{"type":"number","minimum":0,"maximum":1000000},"capacity":{"type":"integer","exclusiveMinimum":0,"maximum":10000000},"description":{"type":"string","maxLength":1000},"requires_approval":{"type":"boolean"},"secret":{"type":"boolean"},"max_per_person":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":1000000},{"type":"null"}]}},"required":["event_id","name","price","capacity"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"add_vendor","description":"Add a vendor (supplier) to a live event's production graph — name, service, pipeline status, contact info, itemized list, notes, tags, linked projects. Requires event_id + name; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":200},"service":{"type":"string","maxLength":200},"status":{"type":"string","enum":["no_contact","in_contact","order_requested","contract_received","invoice_received","deposit_sent","full_payment_sent","recurring"]},"point_of_contact":{"type":"string","maxLength":160},"email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"type":"string","maxLength":40},"url":{"type":"string","maxLength":500},"itemized_list":{"type":"string","maxLength":4000},"notes":{"type":"string","maxLength":4000},"tags":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":80}},"project_ids":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":128}}},"required":["event_id","name"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"adopt_codes_to_profile","description":"Reassign existing standalone promo codes into a discount profile — each adopted code takes the profile's discount but keeps its prior usage count. Codes already in a profile or linked to an affiliate are skipped. Max 100/call. Requires event_id + profile_id + code_ids; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"profile_id":{"type":"string","minLength":1,"maxLength":128},"code_ids":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":128}}},"required":["event_id","profile_id","code_ids"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"approve_community_event","description":"Approve a pending event submission in a community you run — listing, pre-consented deal terms, and any venue Space booking confirm in ONE atomic action. REFUSES payout-routing submissions (money approvals happen in the studio — link provided). A slot taken meanwhile aborts the whole approval with the conflict named. Requires community_id + event_id; creator/admin/moderator.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"event_id":{"type":"string","minLength":1,"maxLength":64},"assign_space":{"type":"object","properties":{"space_id":{"type":"string","minLength":1,"maxLength":128},"start_time":{"type":"string","minLength":1},"end_time":{"type":"string","minLength":1}},"required":["space_id","start_time","end_time"],"additionalProperties":false}},"required":["community_id","event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"approve_guest_request","description":"Approve someone on the event WAITLIST / approval queue — issues them a capacity-limited comp ticket and notifies them. Get request_id + user_id + ticket_class_id from list_guest_requests. Requires event_id + those ids; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"request_id":{"type":"string","minLength":1,"maxLength":128},"user_id":{"type":"string","minLength":1,"maxLength":128},"ticket_class_id":{"type":"string","minLength":1,"maxLength":128}},"required":["event_id","request_id","user_id","ticket_class_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"approve_join_request","description":"Approve a pending request to join a community you run (adds them as a member). Requires community_id + user_id; you must be its creator or admin.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"user_id":{"type":"string","minLength":1,"maxLength":128}},"required":["community_id","user_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"archive_partner_profile","description":"Archive a partner profile — ends every member's terms prospectively. Terminal. Requires community_id + profile_id.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"profile_id":{"type":"string","minLength":1,"maxLength":128}},"required":["community_id","profile_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"archive_ticket_tier","description":"Archive a ticket tier (take it off sale) on a live event you manage. Reversible. Requires event_id + tier_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"tier_id":{"type":"string","minLength":1,"maxLength":128}},"required":["event_id","tier_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"assign_event_to_space","description":"As a community you run, ASSIGN an approved event to a venue Space + slot (space_id + ISO start_time/end_time) — confirms the booking on the same conflict lock so it can never double-book. If the event already holds a Space here, REASSIGNS it: the old room is released and the new one claimed in one atomic motion (an overlapping slot in a different room is fine). A slot taken meanwhile aborts with the conflict named; idempotent on the same space+slot. Creator/admin/moderator. Requires community_id + event_id + space_id + times.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"event_id":{"type":"string","minLength":1,"maxLength":64},"space_id":{"type":"string","minLength":1,"maxLength":128},"start_time":{"type":"string","minLength":1,"maxLength":64},"end_time":{"type":"string","minLength":1,"maxLength":64}},"required":["community_id","event_id","space_id","start_time","end_time"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"assign_member","description":"Assign a person to a production item — teams→members/leads, milestones→owner/watchers, schedule_items→lead/assigned, cues→caller/owner, tasks→designated, places→build_lead, vendors→admin/leads, projects→leads, inventory→assigned_to/occupants. Identify by member.mode_id (a roster entry) or member.name. op set/add/remove; team.memberCount stays in sync. Requires event_id + entity + item_id + relation + member; host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"entity":{"type":"string","enum":["teams","projects","milestones","schedule_items","schedule","tasks","places","vendors","talent","inventory","receipts","transactions","programming","meals"]},"item_id":{"type":"string","minLength":1,"maxLength":128},"relation":{"type":"string","minLength":1,"maxLength":60},"member":{"type":"object","properties":{"mode_id":{"type":"string","maxLength":128},"name":{"type":"string","maxLength":200},"email":{"type":"string","maxLength":200}},"additionalProperties":false},"op":{"default":"set","type":"string","enum":["set","add","remove"]}},"required":["event_id","entity","item_id","relation","member","op"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"assign_role","description":"Assign a role (by role_id) to a production item — entity tasks/receipts/vendors/inventory/schedule_items (single) or projects (multiple). Stored as a name snapshot. op set/add/remove. Requires event_id + entity + item_id + role_id; host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"entity":{"type":"string","enum":["tasks","projects","receipts","vendors","inventory","schedule_items"]},"item_id":{"type":"string","minLength":1,"maxLength":128},"role_id":{"type":"string","minLength":1,"maxLength":128},"op":{"default":"set","type":"string","enum":["set","add","remove"]}},"required":["event_id","entity","item_id","role_id","op"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"bulk_create_promo_codes","description":"Create up to 500 promo codes on a live event in one call (duplicates and invalid rows skipped with reasons). Counts against the event's promo-code plan cap. Requires event_id; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"codes":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":64},"discount_type":{"type":"string","enum":["percent","fixed"]},"discount_value":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"max_uses":{"type":"integer","exclusiveMinimum":0,"maximum":10000000},"starts_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"applicable_classes":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":128}}},"required":["code","discount_type","discount_value","max_uses"],"additionalProperties":false}}},"required":["event_id","codes"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"bulk_invite_affiliates","description":"Invite up to 200 affiliates to a live event at once by email with a shared discount/commission. Sends each an invite email. Counts against the affiliate plan cap. Requires event_id + emails; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"emails":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"discount_type":{"type":"string","enum":["percent","fixed"]},"discount_value":{"type":"number","minimum":0,"maximum":1000000},"commission_type":{"type":"string","enum":["percent","fixed"]},"commission_value":{"type":"number","minimum":0,"maximum":1000000},"code_prefix":{"type":"string","maxLength":12},"starts_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["event_id","emails"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"cancel_event","description":"Cancel a live event you manage — marks it cancelled, removes it from public discovery, cleans up invites/affiliates/broadcasts. Irreversible and outward-facing. Requires event_id; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"cancel_invitation_job","description":"Cancel a running or scheduled invitation send (stops future batches; already-scheduled emails still deliver). Requires event_id + job_id; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"job_id":{"type":"string","minLength":1,"maxLength":128}},"required":["event_id","job_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"cancel_team_invite","description":"Cancel a pending team/staff invite (before it's accepted). To remove an accepted member, use demote_staff_to_guest. Requires event_id + invite_id; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"invite_id":{"type":"string","minLength":1,"maxLength":128}},"required":["event_id","invite_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"check_in_guest","description":"Check a guest in (or back out) at a live event you manage — toggles their ticket between active and checked-in. Pass checked_in false to undo. Requires event_id + guest_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"guest_id":{"type":"string","minLength":1,"maxLength":128},"checked_in":{"type":"boolean"}},"required":["event_id","guest_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"check_in_plus_one","description":"Check in one of a guest's allowed plus-ones at a live event you manage (fails if they're at their plus-one limit). Requires event_id + parent_guest_id + plus_one_name; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"parent_guest_id":{"type":"string","minLength":1,"maxLength":128},"plus_one_name":{"type":"string","minLength":1,"maxLength":160}},"required":["event_id","parent_guest_id","plus_one_name"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"check_space_availability","description":"Check whether a venue Space is free for a specific slot: available (no confirmed overlap), every overlapping booking labeled hard (taken) or soft (pending request — first approval wins), and a soft listed-hours verdict, with local-time ranges. Requires community_id + space_id + ISO start_time/end_time. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"space_id":{"type":"string","minLength":1,"maxLength":128},"start_time":{"type":"string","minLength":1,"maxLength":64},"end_time":{"type":"string","minLength":1,"maxLength":64}},"required":["community_id","space_id","start_time","end_time"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"connect_stripe","description":"Get a Stripe Connect onboarding link the host opens to connect their account and enable payouts for ticket sales. Creates their Stripe account and returns the onboarding URL. Check get_account_status first. Requires a connected account.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"return_path":{"type":"string","enum":["/producer-center?tab=payouts","/producer-center?tab=communities","/producer-center?tab=distribution"]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"create_affiliate_profile","description":"Create a reusable 'open' affiliate profile — a shareable link promoters self-join (no named email; use add_affiliate for a specific person). Set per-tier discount, optional code prefix, affiliate cap, commission, and start/expiry. Counts against the affiliate-profile plan cap. Requires event_id + at least one tier; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"profile_name":{"type":"string","maxLength":160},"tiers":{"type":"object","propertyNames":{"type":"string","maxLength":128},"additionalProperties":{"type":"object","properties":{"discount_type":{"type":"string","enum":["percent","fixed"]},"discount_value":{"type":"number","minimum":0,"maximum":1000000}},"required":["discount_type","discount_value"],"additionalProperties":false}},"max_affiliates":{"type":"integer","minimum":0,"maximum":100000},"code_prefix":{"type":"string","maxLength":16},"commission_type":{"type":"string","enum":["percent","fixed"]},"commission_value":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"starts_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["event_id","tiers"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"create_community","description":"Create a community you own — name, description, category, privacy (open/private), tags, icon/cover. Counts against your community plan cap. Requires a connected account.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","minLength":1,"maxLength":4000},"short_description":{"type":"string","maxLength":280},"category":{"type":"string","enum":["sports_and_fitness","arts_and_culture","technology","career_and_business","education_and_learning","health_and_wellness","music","gaming","food_and_dining","outdoor_and_adventure","hobbies_and_crafts","social_and_networking","parents_and_family","community_and_causes"]},"privacy":{"type":"string","enum":["open","private"]},"tags":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":60}},"icon_url":{"type":"string","maxLength":1000},"cover_image_url":{"type":"string","maxLength":1000},"home_city":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["name","latitude","longitude"],"additionalProperties":false}},"required":["name","description","category","privacy"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"create_custom_link","description":"Create a trackable share link (socialloop.ai/go/…) for a live event — tag it with a source (instagram, newsletter) and optional campaign; clicks are counted. Opens the public or immersive page. Requires event_id; host only.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"source":{"type":"string","minLength":1,"maxLength":60},"campaign":{"type":"string","maxLength":80},"target_type":{"type":"string","enum":["loops","immersive"]}},"required":["event_id","source"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"create_event_draft","description":"Create an event draft on the user's behalf and return a claim link they open to publish it. Use when a user wants to create or publish an event — works even if they have no SocialLoop account yet. The draft is private until the user opens the claim link and confirms. For a user connected via 'Connect with SocialLoop', it publishes directly to their account and returns a manage link instead. Ticketing can be free RSVP, a fixed price, named tiers, or a donation (ticket_mode 'pwyw') with a minimum and suggested amounts.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"idempotency_key":{"default":"2b910594-43fc-4e91-83e1-e6ef146cbef9","type":"string","minLength":1,"maxLength":200},"event_name":{"type":"string","minLength":1,"maxLength":200},"event_description":{"type":"string","maxLength":5000},"description_html":{"type":"string","maxLength":20000},"starts_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z||([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"ends_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z||([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timezone":{"type":"string","minLength":1,"maxLength":64},"location_address":{"type":"string","maxLength":500},"venue_name":{"type":"string","maxLength":200},"category":{"type":"string","maxLength":80},"visibility":{"default":"public","type":"string","enum":["public","friends","private"]},"capacity":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":1000000},{"type":"null"}]},"requires_approval":{"type":"boolean"},"ticket_mode":{"default":"rsvp","type":"string","enum":["rsvp","paid","tiered","pwyw"]},"ticket_price":{"type":"number","minimum":0,"maximum":1000000},"tiers":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"price":{"type":"number","minimum":0,"maximum":1000000},"capacity":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":1000000},{"type":"null"}]},"requires_approval":{"type":"boolean"}},"required":["name","price"],"additionalProperties":false}},"pwyw_min_price":{"type":"number","minimum":0,"maximum":1000000},"pwyw_suggested_prices":{"maxItems":6,"type":"array","items":{"type":"number","exclusiveMinimum":0,"maximum":1000000}},"cover_image_url":{"type":"string","maxLength":2000,"format":"uri"},"contact_email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"source":{"type":"string","maxLength":120}},"required":["idempotency_key","event_name","starts_at","visibility","ticket_mode"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"create_event_series","description":"Turn an existing event into a recurring series — pattern (daily/weekly/biweekly/monthly) + end (end_after total occurrences, or end_date). The source becomes occurrence 1; the rest are created on cadence with its tickets/promo/forms replayed. Requires source_event_id + pattern; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"source_event_id":{"type":"string","minLength":1,"maxLength":64},"pattern":{"type":"string","enum":["daily","weekly","biweekly","monthly"]},"end_after":{"type":"integer","minimum":2,"maximum":52},"end_date":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["source_event_id","pattern"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"create_form","description":"Create a registration/intake form on a live event — name + questions (text/textarea/select/multiSelect/email/phone/url/number, with options/required/placeholder). Starts as draft; activate with set_form_active. Requires event_id + name; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":200},"questions":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":128},"label":{"type":"string","minLength":1,"maxLength":500},"type":{"type":"string","enum":["text","textarea","select","multiSelect","email","phone","url","number"]},"required":{"type":"boolean"},"placeholder":{"type":"string","maxLength":300},"options":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":300}},"canonical_key":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["label","type"],"additionalProperties":false}}},"required":["event_id","name"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"create_partner_profile","description":"Create a partner profile — a named terms-group ('Resident DJs · keep 75%'). Members added or invited into it get its split terms automatically. Needs the community's Stripe connected. Requires community_id + name + terms.member_share_pct.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"name":{"type":"string","minLength":1,"maxLength":60},"terms":{"type":"object","properties":{"member_share_pct":{"type":"number","minimum":0.01,"maximum":99.99}},"required":["member_share_pct"],"additionalProperties":false}},"required":["community_id","name","terms"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"create_production_item","description":"Create a production item in ANY area of a live event — entity is one of: milestones, timeline, schedule_items, tasks, projects, vendors, talent, roles, inventory, programming, meals, places, modes (event roster), transactions, invoices, teams, receipts. Pass name + optional status + notes + a `fields` object of entity details (e.g. milestones {target_date, category, phase}). USE THIS for milestones — a milestone is NOT a task. Requires event_id + entity + name; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"entity":{"type":"string","enum":["vendors","talent","tasks","projects","schedule","receipts","roles","inventory","programming","meals","places","milestones","timeline","schedule_items","modes","transactions","invoices","teams","buildUnits","scholarships","invitations"]},"name":{"type":"string","minLength":1,"maxLength":300},"status":{"type":"string","maxLength":60},"notes":{"type":"string","maxLength":4000},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["event_id","entity","name"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"create_promo_code","description":"Create a discount/promo code (percent or fixed) on a live event or an unclaimed draft. Provide either event_id, or draft_id + edit_token.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"draft_id":{"type":"string","minLength":1,"maxLength":64},"edit_token":{"type":"string","minLength":1,"maxLength":256},"code":{"type":"string","minLength":1,"maxLength":64},"discount_type":{"type":"string","enum":["percent","fixed"]},"discount_value":{"type":"number","minimum":0,"maximum":1000000},"max_uses":{"type":"integer","exclusiveMinimum":0,"maximum":10000000},"starts_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"applicable_classes":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":128}},"enabled":{"type":"boolean"}},"required":["code","discount_type","discount_value"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"create_promo_profile","description":"Create a discount (coupon) profile on a live event — a reusable per-tier discount config (tiers: ticket_class_id → percent/fixed) that promo codes attach to, with optional max uses + schedule. Counts against your plan's discount-profile cap. Requires event_id + tiers; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"profile_name":{"type":"string","maxLength":160},"tiers":{"type":"object","propertyNames":{"type":"string","maxLength":128},"additionalProperties":{"type":"object","properties":{"discount_type":{"type":"string","enum":["percent","fixed"]},"discount_value":{"type":"number","minimum":0,"maximum":1000000}},"required":["discount_type","discount_value"],"additionalProperties":false}},"max_uses":{"type":"integer","exclusiveMinimum":0,"maximum":10000000},"starts_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["event_id","tiers"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"decline_deal","description":"Decline a deal's pending terms (optional reason). First-proposal declines close the thread; renegotiation declines keep the deal active on current terms. Requires deal_id.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"deal_id":{"type":"string","minLength":1,"maxLength":128},"reason":{"type":"string","maxLength":1000}},"required":["deal_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"delete_production_item","description":"Permanently delete a production item (any entity: milestones, timeline, schedule_items, tasks, projects, vendors, talent, roles, inventory, programming, meals, places, modes, transactions, invoices, teams, receipts). To merely hide it, use update_production_item active:false instead. Requires event_id + entity + item_id; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"entity":{"type":"string","enum":["vendors","talent","tasks","projects","schedule","receipts","roles","inventory","programming","meals","places","milestones","timeline","schedule_items","modes","transactions","invoices","teams","buildUnits","scholarships","invitations"]},"item_id":{"type":"string","minLength":1,"maxLength":128}},"required":["event_id","entity","item_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"delete_promo_profile","description":"Delete a discount profile and resolve its codes — 'detach' (default) keeps each code standalone; 'delete_codes' deletes unused codes but disables any with redemptions. Requires event_id + profile_id; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"profile_id":{"type":"string","minLength":1,"maxLength":128},"action":{"type":"string","enum":["detach","delete_codes"]}},"required":["event_id","profile_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"delete_ticket_tier","description":"Permanently delete a ticket tier — only if no tickets were sold (otherwise archive it). Irreversible. Requires event_id + tier_id; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"tier_id":{"type":"string","minLength":1,"maxLength":128}},"required":["event_id","tier_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"demote_staff_to_guest","description":"Remove a staff member's role on a live event and demote them back to a guest (they keep their spot). Requires event_id + user_id; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"user_id":{"type":"string","minLength":1,"maxLength":128}},"required":["event_id","user_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"deny_guest_request","description":"Deny someone on the event WAITLIST / approval queue — releases their held slot back to the tier, frees them to re-register, and emails them. Get request_id from list_guest_requests. Requires event_id + request_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"request_id":{"type":"string","minLength":1,"maxLength":128},"reason":{"type":"string","maxLength":1000}},"required":["event_id","request_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"discover_events","description":"Find public upcoming events on SocialLoop — answer \"what's on in San Francisco this weekend\" or \"any free tech meetups next month\". Each result carries the event name, start/end time with timezone, city and venue, category, host, ticket price range, and the page to RSVP or buy on. Filters: city, date_from, date_to, free_only, limit. No login or account required. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"city":{"type":"string","minLength":1,"maxLength":120},"date_from":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z||([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"date_to":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z||([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"free_only":{"type":"boolean"},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":50}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"duplicate_event","description":"Duplicate an event's setup into a new draft — copies name (+ '(Copy)'), description, category, image, location, visibility, ticket tiers/pricing, and extras (promo codes, discount profiles, forms, immersive page). Does NOT copy guests/RSVPs/sales. Optional new_start_date/new_end_date. Requires source_event_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"source_event_id":{"type":"string","minLength":1,"maxLength":64},"new_name":{"type":"string","minLength":1,"maxLength":300},"new_start_date":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"new_end_date":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["source_event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"edit_guest","description":"Edit a guest-list entry on a live event you manage — name, email, phone, category, plus-ones, note, tags. Only guest-list entries, never purchased tickets. Requires event_id + guest_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"guest_id":{"type":"string","minLength":1,"maxLength":128},"first_name":{"type":"string","minLength":1,"maxLength":120},"last_name":{"type":"string","maxLength":120},"email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"type":"string","maxLength":40},"category":{"type":"string","maxLength":80},"plus_ones_allowed":{"type":"integer","minimum":0,"maximum":100},"note":{"type":"string","maxLength":1000},"tags":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":80}}},"required":["event_id","guest_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"end_deal","description":"End an ACTIVE deal prospectively — sold tickets keep their stamped terms, attached events are untouched, only NEW attachments stop. Terminal for the thread. Requires deal_id.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"deal_id":{"type":"string","minLength":1,"maxLength":128},"reason":{"type":"string","maxLength":1000}},"required":["deal_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"export_community_signup_responses_csv","description":"Export a community's signup answers as a CSV — one row per member, one column per question, plus Submitted At/Name/Email — and return a download link. Requires community_id; creator or admin. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128}},"required":["community_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"export_form_responses_csv","description":"Export a form's submitted responses as a downloadable CSV — one row per submission, one column per question, plus Submitted At — and return a download link. Requires event_id + form_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"form_id":{"type":"string","minLength":1,"maxLength":128}},"required":["event_id","form_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"export_guest_list_csv","description":"Export a live event's guest list as a downloadable CSV (name, email, phone, category, ticket class, plus-ones, checked-in, note) and return a download link. Optional category filter. Requires event_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"category":{"type":"string","maxLength":60}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"find_open_slots","description":"Find open bookable gaps across a community's venue Spaces for a duration (minutes) within a date range (max 31 days) — clears confirmed bookings AND each Space's listed hours. Optional space_id, location_name (narrow to one Location), min_capacity, limit. Truthfully bounded: truncation flags mean UNKNOWN beyond the page. Requires community_id + duration_minutes + date_from + date_to. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"duration_minutes":{"type":"integer","minimum":15,"maximum":10080},"date_from":{"type":"string","minLength":1,"maxLength":64},"date_to":{"type":"string","minLength":1,"maxLength":64},"space_id":{"type":"string","minLength":1,"maxLength":128},"location_name":{"type":"string","minLength":1,"maxLength":60},"min_capacity":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"limit":{"type":"integer","minimum":1,"maximum":50}},"required":["community_id","duration_minutes","date_from","date_to"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"generate_event_cover","description":"Generate a brand-new cover image (a finished event flyer) for an event from a TEXT prompt — describe the vibe, palette, imagery, and energy. We render it server-side (no image upload from you needed — works even when you can't pass a file) and set it as the event's cover; the event's name becomes the flyer's hero title by default. Counts against the monthly AI-image limit. Requires event_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"prompt":{"type":"string","minLength":3,"maxLength":2000},"include_title":{"type":"boolean"}},"required":["event_id","prompt"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"get_account_status","description":"Get your account status — plan + subscription, Stripe connected + payouts/charges enabled (can you get paid out), weekly-invite add-on, and your plan caps (staff, promo codes, affiliates, tiers, communities, form questions, weekly invites). Requires a connected account. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"get_community_signup_form","description":"Read a community's signup form — name, live or not, questions (with ids), and how many members answered. Requires community_id; you must be its creator or admin. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128}},"required":["community_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"get_event_revenue","description":"Get a live event's revenue — net actually paid (cents), tickets sold, per-tier breakdown, an unattributed bucket, and each affiliate's reported revenue/commission (the same 'Earned' figure the Revenue & Payouts page shows). Requires event_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"get_guest_details","description":"Get the full record for one guest on a live event — identity, tier, plus-ones, check-in status + time, staff role, tags, note, activity log, and plus-ones. Requires event_id + guest_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"guest_id":{"type":"string","minLength":1,"maxLength":128}},"required":["event_id","guest_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"get_invitation_status","description":"Check the status of an invitation send — state, recipient count, invites/emails sent, failures, % complete. Requires event_id + job_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"job_id":{"type":"string","minLength":1,"maxLength":128}},"required":["event_id","job_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"get_share_links","description":"Get the shareable links for a live event — public URL, immersive-page URL, vanity short link, and every trackable custom link with its source and click count. Requires event_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"grant_member_setup","description":"Set a member's producer setup in a community you run: submit permission, optionally with split terms (they keep 70% / community 30%). Activates immediately — community-set, the member sees it but doesn't confirm. Omit terms = permission-only. Members only (partners use propose_deal). Requires community_id + member_uid.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"member_uid":{"type":"string","minLength":1,"maxLength":128},"terms":{"anyOf":[{"type":"object","properties":{"splits":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"recipient_id":{"type":"string","minLength":1,"maxLength":128},"recipient_type":{"type":"string","enum":["producer","community"]},"share_value":{"type":"number","minimum":0,"maximum":100}},"required":["recipient_id","recipient_type","share_value"],"additionalProperties":false}},"notes":{"type":"string","maxLength":2000}},"required":["splits"],"additionalProperties":false},{"type":"null"}]}},"required":["community_id","member_uid"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"import_contacts_to_list","description":"Import contacts into one of your distribution lists (your network) — give a list_name (created if new) plus a contacts array ({name,email,phone}) and/or raw csv text (header row auto-mapped). Normalizes + dedupes, skips unreachable/duplicate, respects your plan cap. Requires a connected account.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"list_name":{"type":"string","minLength":1,"maxLength":160},"contacts":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":300},"email":{"type":"string","maxLength":320},"phone":{"type":"string","maxLength":60}},"additionalProperties":false}},"csv":{"type":"string","maxLength":8000000}},"required":["list_name"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"import_guest_list","description":"Bulk-add up to 200 guests to a live event's guest list in one call (parse the CSV / contact list into rows; each needs at least a first name). Counts the whole batch against the weekly invite limit. Requires event_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"guests":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"first_name":{"type":"string","minLength":1,"maxLength":120},"last_name":{"type":"string","maxLength":120},"email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"type":"string","maxLength":40},"category":{"type":"string","maxLength":80},"plus_ones_allowed":{"type":"integer","minimum":0,"maximum":100},"note":{"type":"string","maxLength":1000},"tags":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":80}},"ticket_class_id":{"type":"string","maxLength":128}},"required":["first_name"],"additionalProperties":false}}},"required":["event_id","guests"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"invite_team_member","description":"Invite a staff/team member to a live event by email with a role — host (Producer), manager, guest_list, door_person, or promoter (Co-Host). Sends an invite email; they join on accept. Requires a Pro plan. Manage existing staff with list_event_staff / update_staff_role / demote_staff_to_guest. Requires event_id + email + role; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"role":{"type":"string","enum":["host","manager","guest_list","door_person","promoter"]}},"required":["event_id","email","role"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"link_production_items","description":"Interconnect production items on a live event — link an item to others across the graph (task→project, project→teams/places/milestones, vendor→projects, programming→talent/places, inventory→team/place/project, receipt/transaction→team/vendor/project, place→parent, cue→place/programming/talent, milestone→projects/tasks, meal→shift, task→place, team→depends_on, buildUnit→unit_lead/unit_team/environments/build_tasks, scholarship→applicant, invitation→nominated_by/applicant, person↔person via modes→roommates/buddy/mentor/significant_other/sharing_vehicle_with/paying_for/ticket_sending_to/ticket_receiving_from). op add/remove/set. Denormalized names + team counters stay in sync automatically. Requires event_id + entity + item_id + relation + target_ids; host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"entity":{"type":"string","enum":["roles","projects","vendors","programming","inventory","receipts","transactions","places","schedule","schedule_items","milestones","tasks","meals","teams","talent","modes","buildUnits","scholarships","invitations"]},"item_id":{"type":"string","minLength":1,"maxLength":128},"relation":{"type":"string","minLength":1,"maxLength":60},"target_ids":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"op":{"default":"add","type":"string","enum":["add","remove","set"]}},"required":["event_id","entity","item_id","relation","target_ids","op"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_affiliates","description":"List the affiliates on a live event — name, email, their promo codes (discount + commission), and sales stats (tickets sold, revenue, commission). Requires event_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_bookings","description":"List a community's venue bookings — space (with its Location/floor as booked), slot, status, event, host. Optional space_id / day (UTC YYYY-MM-DD, live bookings only) / status filters; ordered by start time; truthfully truncated at 50. Members only. Requires community_id. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"space_id":{"type":"string","minLength":1,"maxLength":128},"day":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"status":{"type":"string","enum":["requested","confirmed","released","denied"]},"limit":{"type":"integer","minimum":1,"maximum":50}},"required":["community_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_community_activity","description":"Trace the consequential decisions in a community you run — the approval audit log, newest-first. Each entry names WHO acted, WHEN, to WHICH event, and — for approvals — at WHAT deal terms (producer%/community%, or 'distribution only'), plus any Space confirmed; rejects carry the reason; Space assign/reassign/unassign carry the Space + slot. Paginated (limit≤100, cursor) and filterable (action, event_id). Requires community_id. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"limit":{"type":"integer","minimum":1,"maximum":100},"cursor":{"type":"string","minLength":1,"maxLength":256},"action":{"type":"string","enum":["event_approved","event_rejected","event_assigned_space","event_reassigned_space","event_unassigned_space","split_exception_set"]},"event_id":{"type":"string","minLength":1,"maxLength":256}},"required":["community_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_community_members","description":"List the active members of a community you run — name, role (creator/admin/member), join date. Optional role filter. Requires community_id; you must be its creator or admin. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"role":{"type":"string","maxLength":40}},"required":["community_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_community_signup_responses","description":"Read members' answers to a community's signup form — who, when, and each answer by question, newest first. Requires community_id; creator or admin. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128}},"required":["community_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_custom_domains","description":"List your custom email-sending domains — domain, verification status, verified-at, DNS record count. Shows whether you can send from your own domain. Requires a connected account. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_deals","description":"List your ticket-split deals with an awaiting_your_confirmation flag, or ALL of a community's deals via community_id (admin-only). Optional event_id/status filters. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"event_id":{"type":"string","minLength":1,"maxLength":128},"status":{"type":"string","enum":["proposed","active","declined","ended"]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_distribution_lists","description":"List your saved distribution lists (name + contact count) so you can pick one to invite from with send_invitations. Requires a connected account. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_event_staff","description":"List the staff on a live event you manage — each member's role, permissions, name/email, and whether they were promoted from a guest. Requires event_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_events","description":"List the events you host — name, date, status, visibility, location, capacity, and headcount, plus the total count. See how many events you have, or find an event's id before acting on it. Optional filters: status, upcoming_only, limit. Requires a connected account. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"status":{"type":"string","maxLength":40},"upcoming_only":{"type":"boolean"},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":200}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_form_responses","description":"Read the responses submitted to a form — each submission's answers and when it arrived, newest first. Requires event_id + form_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"form_id":{"type":"string","minLength":1,"maxLength":128}},"required":["event_id","form_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_forms","description":"List the forms on a live event — name, status, response count, and every question (with ids). Requires event_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_guest_requests","description":"List the pending WAITLIST / approval requests on a live event you manage — how many are waiting, who asked, which tier, and when (oldest first). This is the event waitlist. Pair with approve_guest_request / deny_guest_request. Requires event_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_guests","description":"List the guests on a live event you manage — name, email, phone, category, plus-ones, check-in status — with totals and checked-in count. Optional category filter. Requires event_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"category":{"type":"string","maxLength":80}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_join_requests","description":"List the pending requests to join a community you run — who asked and when. Approve/reject with approve_join_request / reject_join_request. Requires community_id; you must be its creator or admin. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128}},"required":["community_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_my_communities","description":"List the communities you belong to — name, icon, your role, status. owned_only true for just the ones you created. Requires a connected account. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"owned_only":{"type":"boolean"}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_my_network","description":"List the people in your network — everyone who has attended your events, with how many events each attended and when last seen (most frequent first). Optional name/username search. Requires a connected account. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"search":{"type":"string","maxLength":120}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_partner_profiles","description":"List a community's partner profiles with terms and member counts (admin-only). Requires community_id. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128}},"required":["community_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_pending_community_events","description":"List events awaiting approval in a community you run — who submitted, when, whether they asked for your community payout, and any requested venue Space slot with its conflicts (hard = confirmed overlap, approval will fail; soft = competing pending request, first approval wins). Approve with approve_community_event — except payout-routing submissions, which are reviewed in the studio (link returned); decline with reject_community_event. Requires community_id. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128}},"required":["community_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_production_items","description":"List production items on a live event — entity is any of milestones, timeline, schedule_items, tasks, projects, vendors, talent, roles, inventory, programming, meals, places, modes, transactions, invoices, teams, receipts — with name, status, and key details. Optional status filter. Requires event_id; host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"entity":{"type":"string","enum":["vendors","talent","tasks","projects","schedule","receipts","roles","inventory","programming","meals","places","milestones","timeline","schedule_items","modes","transactions","invoices","teams","buildUnits","scholarships","invitations"]},"status":{"type":"string","maxLength":60}},"required":["event_id","entity"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_promo_codes","description":"List the promo codes on a live event — code, discount, usage vs cap, schedule, classes, and whether each is an affiliate/profile code. Requires event_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"enabled_only":{"type":"boolean"}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_promo_profiles","description":"List the discount (coupon) profiles on a live event — name, per-tier config, schedule, code count, enabled state. Requires event_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_shared_events","description":"List events shared with you — where you're added as staff (producer/manager/guest-list/door) or as an affiliate/promoter — with each event's name and your role. Requires a connected account. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_spaces","description":"List a community's bookable venue Spaces (rooms/floors) — name, Location (the named place grouping Spaces, when used), floor, capacity, status, weekly hours, per-booking hour cap, photo count. Sorted Location → floor → name. For members, active-deal partners, or anyone in an open community. Optional include_archived. Requires community_id. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"include_archived":{"type":"boolean"}},"required":["community_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_sponsors","description":"List your sponsors — company, tier, total committed ($), deliverables, contact, plus the grand total (highest first). Optional tier filter. Requires a connected account. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"tier":{"type":"string","maxLength":40}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_team_invites","description":"List the pending team/staff invites on a live event — email, role, and when invited. Accepted staff appear in list_event_staff. Requires event_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_ticket_sales","description":"List the paid ticket sales on a live event — buyer name/email, tier, amount paid (cents), discount, promo code, date (newest first). Skips free/guest-list and cancelled tickets. Requires event_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"list_ticket_tiers","description":"List the ticket tiers on a live event you manage — name, price, capacity, sold, available — with totals. Requires event_id; you must be a host. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"include_archived":{"type":"boolean"}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"make_announcement","description":"Send an announcement to ALL guests of a live event you manage — one message delivered by email (to guests with an address on file, minus unsubscribes) AND as an in-app push notification. Provide subject + message. Use when the host wants to tell their guests something (a time/venue change, a reminder, a thank-you). Outward-facing and can't be unsent — confirm the wording with the host first. Requires event_id; host only.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"subject":{"type":"string","minLength":1,"maxLength":120},"message":{"type":"string","minLength":1,"maxLength":5000}},"required":["event_id","subject","message"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"manage_event_series","description":"Manage a recurring series — action 'extend' (add additional_count more occurrences), 'end' (cancel upcoming; mode 'pause' to suspend, optional from_date), or 'resume' (restart a paused series). Requires series_id + action; you must be a host of the series.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"series_id":{"type":"string","minLength":1,"maxLength":128},"action":{"type":"string","enum":["extend","end","resume"]},"additional_count":{"type":"integer","minimum":1,"maximum":52},"from_date":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"mode":{"type":"string","enum":["end","pause"]}},"required":["series_id","action"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"promote_guest_to_staff","description":"Promote a guest (who has a SocialLoop account) to staff on a live event — role doorPerson, guestList, manager, promoter, host, or custom. Grants real permissions. Requires event_id + guest_id + user_id + role; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"guest_id":{"type":"string","minLength":1,"maxLength":128},"user_id":{"type":"string","minLength":1,"maxLength":128},"role":{"type":"string","enum":["doorPerson","guestList","manager","promoter","host","custom"]},"permissions":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"boolean"}}},"required":["event_id","guest_id","user_id","role"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"propose_deal","description":"Record agreed ticket-split terms as a deal proposal (the receipt of an agreement already reached). community_standing: community_id + producer_id + both legs' % terms. event_coproduction: event_id + party_ids + producer/venue/sponsor % legs (the organizer must be a party). The other side confirms with accept_deal. Recording auto-accepts YOUR side of the terms (one counterparty confirm then activates a 2-party deal), so this is consent to a revenue split — hence the one-tap confirm.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"kind":{"type":"string","enum":["community_standing","event_coproduction"]},"community_id":{"type":"string","minLength":1,"maxLength":128},"producer_id":{"type":"string","minLength":1,"maxLength":128},"event_id":{"type":"string","minLength":1,"maxLength":128},"party_ids":{"minItems":2,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"terms":{"type":"object","properties":{"splits":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"recipient_id":{"type":"string","minLength":1,"maxLength":128},"recipient_type":{"type":"string","enum":["producer","community","venue","sponsor"]},"share_value":{"type":"number","minimum":0,"maximum":100}},"required":["recipient_id","recipient_type","share_value"],"additionalProperties":false}},"community_attach_cap_pct":{"type":"number","minimum":0,"maximum":100},"notes":{"type":"string","maxLength":2000}},"required":["splits"],"additionalProperties":false}},"required":["kind","terms"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"record_expense","description":"Record an expense (receipt) against a live event's budget — item, cost ($), amount paid, status, type, optional linked vendor/project. Editable via update_production_item (entity 'receipts'). Requires event_id + item + cost; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"item":{"type":"string","minLength":1,"maxLength":200},"cost":{"type":"number","minimum":0,"maximum":100000000},"paid":{"type":"number","minimum":0,"maximum":100000000},"status":{"type":"string","enum":["owed","partially_paid","complete"]},"type":{"type":"string","enum":["software","purchase","rental","labor","service","debt"]},"vendor_id":{"type":"string","maxLength":128},"project_id":{"type":"string","maxLength":128},"description":{"type":"string","maxLength":2000},"comments":{"type":"string","maxLength":2000}},"required":["event_id","item","cost"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"record_transaction","description":"Record a bank-side ledger row — actual money moving (income/expense/transfer): name, amount ($), optional fee, category, phase, date, banking references, and links to a receipt/project/vendor/place/team. Requires event_id + name + impact + amount; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":300},"impact":{"type":"string","enum":["income","expense","transfer"]},"amount":{"type":"number","minimum":0,"maximum":100000000},"fee":{"type":"number","minimum":0,"maximum":100000000},"category":{"type":"string","enum":["attendee_payment","donation","sponsor","rental","service","purchase","labor","software","fees","travel_food","transfer","refund","misc"]},"phase":{"type":"string","enum":["pre_production","build","event","strike","post"]},"description":{"type":"string","maxLength":4000},"note":{"type":"string","maxLength":4000},"date":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"receipt_id":{"type":"string","maxLength":128},"project_id":{"type":"string","maxLength":128},"vendor_id":{"type":"string","maxLength":128},"place_id":{"type":"string","maxLength":128},"team_id":{"type":"string","maxLength":128},"payer":{"type":"object","properties":{"id":{"type":"string","maxLength":128},"name":{"type":"string","maxLength":200}},"required":["id","name"],"additionalProperties":false},"receiver":{"type":"object","properties":{"id":{"type":"string","maxLength":128},"name":{"type":"string","maxLength":200}},"required":["id","name"],"additionalProperties":false},"who_for":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":128},"name":{"type":"string","maxLength":200}},"required":["id","name"],"additionalProperties":false}},"payer_email":{"type":"string","maxLength":320},"paid_from_account":{"type":"string","maxLength":200},"paid_to_account":{"type":"string","maxLength":200},"reconciled":{"type":"boolean"},"tags":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":80}},"references":{"type":"object","properties":{"credit_card_id":{"type":"string","maxLength":200},"domestic_routing":{"type":"string","maxLength":200},"electronic_routing":{"type":"string","maxLength":200},"international_routing":{"type":"string","maxLength":200},"source_account":{"type":"string","maxLength":200},"transaction_ref":{"type":"string","maxLength":200}},"additionalProperties":false}},"required":["event_id","name","impact","amount"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"refine_event_cover","description":"Refine the event's CURRENT cover with a short instruction ('make it warmer', 'swap the background', 'bigger title') — we re-render from the existing cover, keep the composition, and set the new one. The event must already have a cover (generate_event_cover first). Counts against the monthly AI-image limit. Requires event_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"instruction":{"type":"string","minLength":3,"maxLength":1000}},"required":["event_id","instruction"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"reject_community_event","description":"Reject an event's request to be listed in a community you run (optional reason). Denies any Space booking request riding it — optionally suggest up to 5 alternative slots, each vetted against confirmed bookings (taken/invalid ones dropped + reported, never suggested). Restores the host's own payout if your community was the payout destination (unless tickets already sold). Requires community_id + event_id; you must be its creator/admin/moderator.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"event_id":{"type":"string","minLength":1,"maxLength":64},"reason":{"type":"string","maxLength":1000},"alternatives":{"maxItems":5,"type":"array","items":{"type":"object","properties":{"space_id":{"type":"string","minLength":1,"maxLength":128},"start_time":{"type":"string","minLength":1,"maxLength":64},"end_time":{"type":"string","minLength":1,"maxLength":64},"note":{"type":"string","maxLength":500}},"required":["space_id","start_time","end_time"],"additionalProperties":false}}},"required":["community_id","event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"reject_join_request","description":"Reject a pending request to join a community you run. Requires community_id + user_id; you must be its creator or admin.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"user_id":{"type":"string","minLength":1,"maxLength":128}},"required":["community_id","user_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"release_booking","description":"Release a venue booking — frees the Space's slot. Community creator/admin/moderator releases any booking; the booking's own host withdraws their slot (listing kept). Terminal; a re-request is a new booking. Optional reason recorded for audit. Requires community_id + booking_id.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"booking_id":{"type":"string","minLength":1,"maxLength":128},"reason":{"type":"string","maxLength":500}},"required":["community_id","booking_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"remove_affiliate_code","description":"Remove a ticket tier from an affiliate (disables their code if it was the last tier). Requires event_id + affiliate_id + ticket_class_id; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"affiliate_id":{"type":"string","minLength":1,"maxLength":128},"ticket_class_id":{"type":"string","minLength":1,"maxLength":128}},"required":["event_id","affiliate_id","ticket_class_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"remove_codes_from_profile","description":"Remove promo codes from a discount profile — 'detach' (default) keeps each code standalone; 'delete' removes unused codes but disables any with redemptions. Requires event_id + profile_id + code_ids; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"profile_id":{"type":"string","minLength":1,"maxLength":128},"code_ids":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":128}},"action":{"type":"string","enum":["detach","delete"]}},"required":["event_id","profile_id","code_ids"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"remove_community_member","description":"Remove a member from a community you run (tears down their membership and cancels any paid membership subscription they hold there immediately). The creator cannot be removed. Requires community_id + user_id; you must be its creator or admin.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"user_id":{"type":"string","minLength":1,"maxLength":128}},"required":["community_id","user_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"remove_guest","description":"Remove a guest-list entry from a live event you manage — deletes the entry and cleans up its counters. Only guest-list entries, never purchased tickets. Requires event_id + guest_id; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"guest_id":{"type":"string","minLength":1,"maxLength":128}},"required":["event_id","guest_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"remove_member_setup","description":"End a member's producer setup in one tap (prospective — sold tickets and attached events keep their terms; its event exceptions end with it). Requires deal_id.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"deal_id":{"type":"string","minLength":1,"maxLength":128},"reason":{"type":"string","maxLength":1000}},"required":["deal_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"remove_profile_member","description":"Remove a member from a partner profile — ends their terms prospectively. Requires community_id + profile_id + member_uid.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"profile_id":{"type":"string","minLength":1,"maxLength":128},"member_uid":{"type":"string","minLength":1,"maxLength":128}},"required":["community_id","profile_id","member_uid"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"reorder_ticket_tiers","description":"Reorder the active ticket tiers' display order. Pass ALL active tier ids in the desired order. Requires event_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"ordered_tier_ids":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":128}}},"required":["event_id","ordered_tier_ids"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"revoke_affiliate_access","description":"Remove an affiliate from a live event — disables their promo codes (keeps redemption history) and revokes access. Requires event_id + affiliate_id; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"affiliate_id":{"type":"string","minLength":1,"maxLength":128}},"required":["event_id","affiliate_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"send_invitations","description":"Send invitations to a live event — app, email, or both — to people (recipient_uids), saved lists (distribution_list_ids), and/or manual contacts (external_contacts). Optionally attach a promo code, add a custom message, send as a linked community, or schedule. Counts against the weekly invite limit; sends real emails/push. Requires event_id; host only.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"delivery_method":{"type":"string","enum":["app","email","both"]},"recipient_uids":{"maxItems":5000,"type":"array","items":{"type":"string","maxLength":128}},"distribution_list_ids":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":128}},"external_contacts":{"maxItems":5000,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":160},"email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"type":"string","maxLength":40}},"required":["name","email"],"additionalProperties":false}},"custom_message":{"type":"string","maxLength":2000},"attach_promo_code":{"type":"string","maxLength":80},"send_as_community_id":{"type":"string","maxLength":128},"scheduled_start_at":{"type":"string","maxLength":40},"dry_run":{"type":"boolean"}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"set_community_signup_form","description":"Replace a community's signup form — questions, live or not, optional name. A live form is required before joining. Pass question ids to keep answers mapped. Requires community_id + questions + enabled; creator or admin.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"questions":{"maxItems":30,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":128},"label":{"type":"string","minLength":1,"maxLength":500},"type":{"type":"string","enum":["text","textarea","select","multiSelect","email","phone","url","number"]},"required":{"type":"boolean"},"placeholder":{"type":"string","maxLength":300},"options":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":300}},"canonical_key":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["label","type"],"additionalProperties":false}},"enabled":{"type":"boolean"},"name":{"type":"string","minLength":1,"maxLength":120}},"required":["community_id","questions","enabled"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"set_event_address","description":"Set or change a live event's address/location. Provide `address` (the text shown on the event page); optionally `venue_name` and `latitude`+`longitude` to also move the map pin. Use this to fix or update where an event is held. Requires event_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"address":{"type":"string","minLength":1,"maxLength":500},"venue_name":{"type":"string","minLength":1,"maxLength":200},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["event_id","address"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"set_event_image","description":"Set or replace a live event's cover image. Provide ONE of: image_base64 (the raw image bytes — use this to set an image attached or generated in the chat, passing its FULL bytes) OR image_url (a public https link, fetched + re-hosted durably). png/jpeg/webp/gif, ≤10 MB, complete image only (truncated payloads rejected). If your runtime can't move the full bytes into the call, host the image at a public URL and use image_url. Requires event_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"image_url":{"type":"string","maxLength":2048,"format":"uri"},"image_base64":{"type":"string","minLength":1,"maxLength":35000000},"content_type":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif"]}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"set_event_split_exception","description":"Adjust the split for ONE event only (setup 80/20, this event 90/10). Re-stamps the attached event immediately; sold tickets keep their terms; the standing setup is untouched; expires with the event. Community-set setups only. Requires community_id + member_uid + event_id + terms.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"member_uid":{"type":"string","minLength":1,"maxLength":128},"event_id":{"type":"string","minLength":1,"maxLength":128},"terms":{"type":"object","properties":{"splits":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"recipient_id":{"type":"string","minLength":1,"maxLength":128},"recipient_type":{"type":"string","enum":["producer","community"]},"share_value":{"type":"number","minimum":0,"maximum":100}},"required":["recipient_id","recipient_type","share_value"],"additionalProperties":false}},"notes":{"type":"string","maxLength":2000}},"required":["splits"],"additionalProperties":false}},"required":["community_id","member_uid","event_id","terms"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"set_event_url","description":"Set a custom vanity URL for a live event you manage (e.g. socialloop.ai/go/sundown-sessions). 3–30 lowercase letters, numbers, and hyphens; must be unique. Requires event_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"slug":{"type":"string","minLength":3,"maxLength":30}},"required":["event_id","slug"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"set_form_active","description":"Activate or deactivate a form on a live event (activating makes it the event's live form, deactivating any other). Requires event_id + form_id + active; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"form_id":{"type":"string","minLength":1,"maxLength":128},"active":{"type":"boolean"}},"required":["event_id","form_id","active"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"set_host_visibility","description":"Show or hide a host on a live event's public page without changing their permissions (visible=false hides, true shows). host_id defaults to you. Requires event_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"host_id":{"type":"string","minLength":1,"maxLength":128},"visible":{"type":"boolean"}},"required":["event_id","visible"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"set_place_build_status","description":"Set a place's build status (not_started → surveyed → staged → built → systemized → designed → complete, or null to clear) — the build axis, separate from lifecycle status. Requires event_id + place_id + build_status; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"place_id":{"type":"string","minLength":1,"maxLength":128},"build_status":{"anyOf":[{"type":"string","enum":["not_started","surveyed","staged","built","systemized","designed","complete"]},{"type":"null"}]}},"required":["event_id","place_id","build_status"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"set_role_deal_defaults","description":"Set a community's standing ticket-split offer per member role (e.g. staff events run 70/30; \"__member__\" = the member's leg). Becomes a real deal only when a member confirms the shown terms at event submission. Admin-only. Requires community_id + by_role.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"by_role":{"type":"object","propertyNames":{"type":"string","enum":["admin","moderator","staff","member"]},"additionalProperties":{"anyOf":[{"type":"object","properties":{"splits":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"recipient_id":{"type":"string","minLength":1,"maxLength":128},"recipient_type":{"type":"string","enum":["producer","community"]},"share_value":{"type":"number","minimum":0,"maximum":100}},"required":["recipient_id","recipient_type","share_value"],"additionalProperties":false}}},"required":["splits"],"additionalProperties":false},{"type":"null"}]}}},"required":["community_id","by_role"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"set_space_status","description":"Archive or re-activate a venue Space. Archiving hides it from pickers and fails future booking confirms closed; existing confirmed bookings are honored, but pending requests will strand. Admin-only. Requires community_id + space_id + status.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"space_id":{"type":"string","minLength":1,"maxLength":128},"status":{"type":"string","enum":["active","archived"]}},"required":["community_id","space_id","status"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"submit_event_to_community","description":"Submit an event you host to a community's calendar, optionally requesting a venue Space slot in the same motion (booking: space_id + ISO times — find one via find_open_slots). Consents to the community's standing deal terms for you; booking-carrying submissions await approval unless you manage the community. Member or active-deal partner. Requires event_id + community_id.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"community_id":{"type":"string","minLength":1,"maxLength":128},"visibility":{"type":"string","enum":["public","subscribers","members"]},"booking":{"type":"object","properties":{"space_id":{"type":"string","minLength":1,"maxLength":128},"start_time":{"type":"string","minLength":1,"maxLength":64},"end_time":{"type":"string","minLength":1,"maxLength":64}},"required":["space_id","start_time","end_time"],"additionalProperties":false}},"required":["event_id","community_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"unarchive_ticket_tier","description":"Restore an archived ticket tier to active (back on sale). Requires event_id + tier_id; you must be a host.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"tier_id":{"type":"string","minLength":1,"maxLength":128}},"required":["event_id","tier_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"unassign_event_from_space","description":"As a community you run, UNASSIGN an event from its venue Space here — frees the Space's calendar slot (recorded admin_released) and clears the event's venue link; the event keeps its listing and venue text. Idempotent — an event with no active booking here changes nothing. Creator/admin/moderator. Requires community_id + event_id.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"event_id":{"type":"string","minLength":1,"maxLength":64}},"required":["community_id","event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_affiliate_commission","description":"Change an affiliate's commission rates on a live event (map of promo_code_id → commission). Affects future sales only. Requires event_id + affiliate_id; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"affiliate_id":{"type":"string","minLength":1,"maxLength":128},"commission_updates":{"type":"object","propertyNames":{"type":"string","maxLength":128},"additionalProperties":{"type":"object","properties":{"commission_type":{"type":"string","enum":["percent","fixed"]},"commission_value":{"type":"number","minimum":0,"maximum":1000000}},"required":["commission_type","commission_value"],"additionalProperties":false}}},"required":["event_id","affiliate_id","commission_updates"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_community","description":"Edit a community you own — name, description, category, privacy, tags, icon, cover. Requires community_id; you must be its creator.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"name":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","minLength":1,"maxLength":4000},"short_description":{"type":"string","maxLength":280},"category":{"type":"string","enum":["sports_and_fitness","arts_and_culture","technology","career_and_business","education_and_learning","health_and_wellness","music","gaming","food_and_dining","outdoor_and_adventure","hobbies_and_crafts","social_and_networking","parents_and_family","community_and_causes"]},"privacy":{"type":"string","enum":["open","private"]},"tags":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":60}},"icon_url":{"type":"string","maxLength":1000},"cover_image_url":{"type":"string","maxLength":1000},"home_city":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","maxLength":200},"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["name","latitude","longitude"],"additionalProperties":false},{"type":"null"}]}},"required":["community_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_event","description":"Edit a live event you manage: name, description (with links), category, start/end time, cover image, turn public discovery on/off, show or hide the guest list, visibility, and capacity. Approval is set per ticket tier — use update_ticket_tier for it. Requires event_id; you must be a host (connected via 'Connect with SocialLoop').","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"event_name":{"type":"string","minLength":1,"maxLength":200},"event_description":{"type":"string","maxLength":10000},"description_html":{"type":"string","maxLength":20000},"category":{"type":"string","maxLength":80},"starts_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z||([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"ends_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z||([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timezone":{"type":"string","minLength":1,"maxLength":64},"cover_image_url":{"type":"string","maxLength":2000,"format":"uri"},"visibility":{"type":"string","enum":["public","friends","private"]},"discoverable":{"type":"boolean"},"show_participants":{"type":"boolean"},"capacity":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":1000000},{"type":"null"}]},"requires_approval":{"type":"boolean"},"absorb_fees":{"type":"boolean"}},"required":["event_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_event_draft","description":"Refine an event draft you previously created (title, time, location, tickets, etc.) using its edit token, against the same claim link. Use to iterate with the user before they publish.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"draft_id":{"type":"string","minLength":1,"maxLength":64},"edit_token":{"type":"string","minLength":1,"maxLength":256},"event_name":{"type":"string","minLength":1,"maxLength":200},"event_description":{"type":"string","maxLength":5000},"description_html":{"type":"string","maxLength":20000},"starts_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"ends_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timezone":{"type":"string","minLength":1,"maxLength":64},"location_address":{"type":"string","maxLength":500},"venue_name":{"type":"string","maxLength":200},"category":{"type":"string","maxLength":80},"visibility":{"type":"string","enum":["public","friends","private"]},"capacity":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":1000000},{"type":"null"}]},"requires_approval":{"type":"boolean"},"ticket_mode":{"type":"string","enum":["rsvp","paid","tiered","pwyw"]},"ticket_price":{"type":"number","minimum":0,"maximum":1000000},"tiers":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"price":{"type":"number","minimum":0,"maximum":1000000},"capacity":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":1000000},{"type":"null"}]},"requires_approval":{"type":"boolean"}},"required":["name","price"],"additionalProperties":false}},"pwyw_min_price":{"type":"number","minimum":0,"maximum":1000000},"pwyw_suggested_prices":{"maxItems":6,"type":"array","items":{"type":"number","exclusiveMinimum":0,"maximum":1000000}},"cover_image_url":{"type":"string","maxLength":2000,"format":"uri"},"contact_email":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["draft_id","edit_token"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_form","description":"Edit a form on a live event — rename and/or replace its questions. Pass questions with their ids (from list_forms) to keep responses mapped. Requires event_id + form_id; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"form_id":{"type":"string","minLength":1,"maxLength":128},"name":{"type":"string","minLength":1,"maxLength":200},"questions":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":128},"label":{"type":"string","minLength":1,"maxLength":500},"type":{"type":"string","enum":["text","textarea","select","multiSelect","email","phone","url","number"]},"required":{"type":"boolean"},"placeholder":{"type":"string","maxLength":300},"options":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":300}},"canonical_key":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["label","type"],"additionalProperties":false}}},"required":["event_id","form_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_inventory_details","description":"Set an inventory item's typed details — kind vehicle/housing/bike/structure/power + that variant's fields (vehicle: plate/makeModel/vin/fuelType; housing: sleepCapacity/powerNeeds; power: rating/phase/voltage). Requires event_id + item_id + kind + details; host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"item_id":{"type":"string","minLength":1,"maxLength":128},"kind":{"type":"string","enum":["vehicle","housing","bike","structure","power"]},"details":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["event_id","item_id","kind","details"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_invoice_line_items","description":"Set an invoice's line items — array of {description, amount} (dollars). Recomputes the invoice total. Replaces the whole list. Requires event_id + item_id; host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"item_id":{"type":"string","minLength":1,"maxLength":128},"line_items":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"description":{"type":"string","minLength":1,"maxLength":500},"amount":{"type":"number","minimum":0,"maximum":100000000}},"required":["description","amount"],"additionalProperties":false}}},"required":["event_id","item_id","line_items"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_meal_menu","description":"Set a meal's menu — array of {name, servings?, description?, dietary_tags?, tags? (allergens)}. Replaces the whole list. Requires event_id + item_id (the meal); host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"item_id":{"type":"string","minLength":1,"maxLength":128},"menu":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":1000},"servings":{"type":"integer","minimum":0,"maximum":100000},"dietary_tags":{"maxItems":40,"type":"array","items":{"type":"string","maxLength":60}},"tags":{"maxItems":40,"type":"array","items":{"type":"string","maxLength":60}}},"required":["name"],"additionalProperties":false}}},"required":["event_id","item_id","menu"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_member_setup","description":"Edit a member setup's split terms (terms: null = permission-only). Prospective — future attaches use the new terms, attached events keep theirs. Requires deal_id.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"deal_id":{"type":"string","minLength":1,"maxLength":128},"terms":{"anyOf":[{"type":"object","properties":{"splits":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"recipient_id":{"type":"string","minLength":1,"maxLength":128},"recipient_type":{"type":"string","enum":["producer","community"]},"share_value":{"type":"number","minimum":0,"maximum":100}},"required":["recipient_id","recipient_type","share_value"],"additionalProperties":false}},"notes":{"type":"string","maxLength":2000}},"required":["splits"],"additionalProperties":false},{"type":"null"}]}},"required":["deal_id","terms"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_open_link_config","description":"Reconfigure an affiliate open link (anyone-can-claim) — set each tier's discount + commission, the profile name, and the affiliate cap. Re-stamps EVERY existing affiliate on the link (large blast radius). Requires event_id + invite_id + tiers; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"invite_id":{"type":"string","minLength":1,"maxLength":128},"tiers":{"type":"object","propertyNames":{"type":"string","maxLength":128},"additionalProperties":{"type":"object","properties":{"ticket_class_name":{"type":"string","minLength":1,"maxLength":200},"discount_type":{"type":"string","enum":["percent","fixed"]},"discount_value":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"max_redemptions":{"type":"integer","minimum":0,"maximum":10000000},"commission_type":{"type":"string","enum":["percent","fixed"]},"commission_value":{"type":"number","minimum":0,"maximum":1000000}},"required":["ticket_class_name","discount_type","discount_value"],"additionalProperties":false}},"profile_name":{"type":"string","maxLength":160},"max_affiliates":{"type":"integer","minimum":0,"maximum":10000000}},"required":["event_id","invite_id","tiers"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_partner_profile","description":"Rename a partner profile or set new terms — new terms roll to ALL members' future events (past sales unchanged). Requires community_id + profile_id.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"profile_id":{"type":"string","minLength":1,"maxLength":128},"name":{"type":"string","minLength":1,"maxLength":60},"terms":{"type":"object","properties":{"member_share_pct":{"type":"number","minimum":0.01,"maximum":99.99}},"required":["member_share_pct"],"additionalProperties":false}},"required":["community_id","profile_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_production_item","description":"Update a production item in ANY area of a live event (entity: milestones, timeline, schedule_items, tasks, projects, vendors, talent, roles, inventory, programming, meals, places, modes, transactions, invoices, teams, receipts) — change status, rename, edit notes, archive/restore (active), or set details via a `fields` object. Requires event_id + entity + item_id; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"entity":{"type":"string","enum":["vendors","talent","tasks","projects","schedule","receipts","roles","inventory","programming","meals","places","milestones","timeline","schedule_items","modes","transactions","invoices","teams","buildUnits","scholarships","invitations"]},"item_id":{"type":"string","minLength":1,"maxLength":128},"status":{"type":"string","maxLength":60},"name":{"type":"string","minLength":1,"maxLength":300},"notes":{"type":"string","maxLength":4000},"active":{"type":"boolean"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["event_id","entity","item_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_promo_code","description":"Edit a promo code on a live event — code, discount, max uses, start/expiry, applicable classes, or enable/disable. Requires event_id + promo_code_id; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"promo_code_id":{"type":"string","minLength":1,"maxLength":128},"code":{"type":"string","minLength":1,"maxLength":64},"discount_type":{"type":"string","enum":["percent","fixed"]},"discount_value":{"type":"number","minimum":0,"maximum":1000000},"max_uses":{"type":"integer","exclusiveMinimum":0,"maximum":10000000},"starts_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"expires_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"applicable_classes":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":128}},"enabled":{"type":"boolean"}},"required":["event_id","promo_code_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_promo_profile","description":"Edit a discount profile — change tiers, name, max uses, schedule, or enabled state. When a discount-config field changes, every linked promo code is re-stamped to match. Requires event_id + profile_id + at least one field; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"profile_id":{"type":"string","minLength":1,"maxLength":128},"tiers":{"type":"object","propertyNames":{"type":"string","maxLength":128},"additionalProperties":{"type":"object","properties":{"discount_type":{"type":"string","enum":["percent","fixed"]},"discount_value":{"type":"number","minimum":0,"maximum":1000000}},"required":["discount_type","discount_value"],"additionalProperties":false}},"profile_name":{"type":"string","maxLength":160},"max_uses":{"type":"integer","exclusiveMinimum":0,"maximum":10000000},"starts_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"expires_at":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"enabled":{"type":"boolean"}},"required":["event_id","profile_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_space","description":"Edit a venue Space's fields (name, location_name, floor, capacity, photos, rules, hours, address, hour cap, timezone; null clears). Renames fan out to future bookings automatically; status changes go through set_space_status. Admin-only. Requires community_id + space_id.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"community_id":{"type":"string","minLength":1,"maxLength":128},"space_id":{"type":"string","minLength":1,"maxLength":128},"name":{"type":"string","minLength":1,"maxLength":80},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"location_name":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}]},"floor":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"capacity":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":100000},{"type":"null"}]},"photos":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":2048}},"rules":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"hours":{"anyOf":[{"type":"object","properties":{"mon":{"anyOf":[{"type":"null"},{"minItems":0,"maxItems":6,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"end":{"type":"string","pattern":"^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"}},"required":["start","end"],"additionalProperties":false}}]},"tue":{"anyOf":[{"type":"null"},{"minItems":0,"maxItems":6,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"end":{"type":"string","pattern":"^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"}},"required":["start","end"],"additionalProperties":false}}]},"wed":{"anyOf":[{"type":"null"},{"minItems":0,"maxItems":6,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"end":{"type":"string","pattern":"^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"}},"required":["start","end"],"additionalProperties":false}}]},"thu":{"anyOf":[{"type":"null"},{"minItems":0,"maxItems":6,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"end":{"type":"string","pattern":"^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"}},"required":["start","end"],"additionalProperties":false}}]},"fri":{"anyOf":[{"type":"null"},{"minItems":0,"maxItems":6,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"end":{"type":"string","pattern":"^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"}},"required":["start","end"],"additionalProperties":false}}]},"sat":{"anyOf":[{"type":"null"},{"minItems":0,"maxItems":6,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"end":{"type":"string","pattern":"^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"}},"required":["start","end"],"additionalProperties":false}}]},"sun":{"anyOf":[{"type":"null"},{"minItems":0,"maxItems":6,"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"end":{"type":"string","pattern":"^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"}},"required":["start","end"],"additionalProperties":false}}]}},"additionalProperties":false},{"type":"null"}]},"address":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"address":{"type":"string","minLength":1,"maxLength":300},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["name","address","latitude","longitude"],"additionalProperties":false},{"type":"null"}]},"max_booking_hours":{"type":"integer","minimum":1,"maximum":168},"timezone":{"type":"string","minLength":1,"maxLength":64}},"required":["community_id","space_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_staff_role","description":"Change an existing staff member's role and/or permissions on a live event (doorPerson, guestList, manager, promoter, host, or custom). Requires event_id + user_id and a role and/or permissions; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"user_id":{"type":"string","minLength":1,"maxLength":128},"role":{"type":"string","enum":["doorPerson","guestList","manager","promoter","host","custom"]},"permissions":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"boolean"}}},"required":["event_id","user_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"update_ticket_tier","description":"Edit a ticket tier on a live event you manage — name, price, capacity (not below sold), description, approval, or secret. Paid prices need Stripe. Requires event_id + tier_id; you must be a host.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","minLength":1,"maxLength":64},"tier_id":{"type":"string","minLength":1,"maxLength":128},"name":{"type":"string","minLength":1,"maxLength":200},"price":{"type":"number","minimum":0,"maximum":1000000},"capacity":{"type":"integer","exclusiveMinimum":0,"maximum":10000000},"description":{"type":"string","maxLength":1000},"show_remaining":{"type":"boolean"},"requires_approval":{"type":"boolean"},"secret":{"type":"boolean"},"max_per_person":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":1000000},{"type":"null"}]}},"required":["event_id","tier_id"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}}],"scan":{"score":97,"grade":"A","scanned_at":"2026-09-26T11:38:03.318Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-26T11:38:03.391Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 139ms (auth required)"]},"poisoning":{"score":15,"max":15,"notes":["151 tool descriptions checked"]},"auth":{"score":15,"max":15,"notes":["OAuth resource metadata advertised on 401"]},"maintenance":{"score":15,"max":15,"notes":["last push 21 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"probes":[{"url":"https://mcp.socialloop.ai","reachable":true,"authRequired":true,"latencyMs":139,"authScheme":"oauth"},{"url":"https://socialloop.ai/mcp","reachable":true,"authRequired":false,"latencyMs":610,"serverInfo":{"name":"socialloop","version":"1.0.0"}}],"packages":[],"repo":{"found":true,"owner":"socialloopai","repo":"socialloop-mcp","archived":false,"pushedAt":"2026-09-05T09:04:50Z","stars":2,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/225991111?v=4","ownerCreatedAt":"2025-08-12T01:05:08Z","license":"MIT"},"icon":{"url":"https://socialloop.ai/180.png?v=2","source":"site","width":180,"height":180},"presence":{"stars":2,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-05T09:04:50.000Z","score":28}}}},"grade_history":[],"reviews":[]}