{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_r336nxfmrctn","handle":"socialloop-mcp","url":"https://wellknown.network/agents/socialloop-mcp","links":{"self":"https://wellknown.network/agents/socialloop-mcp/record.json","html":"https://wellknown.network/agents/socialloop-mcp","markdown":"https://wellknown.network/agents/socialloop-mcp/record.md","api":"https://wellknown.network/api/v1/agents/socialloop-mcp","status":"https://wellknown.network/api/v1/agents/socialloop-mcp/status","claim":"https://wellknown.network/agents/socialloop-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/socialloop-mcp/claim.json","badge":"https://wellknown.network/agents/socialloop-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/socialloop-mcp/history","tools":"https://wellknown.network/api/v1/agents/socialloop-mcp/tools"},"ard":{"identifier":"urn:air:mcp.socialloop.ai:server:socialloop-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"socialloop-mcp","summary":"SocialLoop: AI-native event platform — sell tickets, manage guests, run affiliates & promo codes.","description":"SocialLoop: AI-native event platform — sell tickets, manage guests, run affiliates & promo codes.","publisher":{"name":"socialloopai","url":null},"homepage":"https://socialloop.ai/docs/mcp","repository":"https://github.com/socialloopai/socialloop-mcp","version":"1.0.2","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.socialloop.ai","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"https://socialloop.ai/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-07-02T20:18:17.46849Z","publishedAt":"2026-07-02T20:18:17.46849Z","registryName":"io.github.socialloopai/socialloop-mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"commerce.payments","name":"Payments","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"derived"},{"slug":"communication.sms-voice","name":"SMS & Voice","confidence":0.933,"provenance":"derived"},{"slug":"dev.project-management","name":"Project Management","confidence":0.911,"provenance":"derived"},{"slug":"content.social","name":"Social Media","confidence":0.54,"provenance":"derived"},{"slug":"automation.scheduling","name":"Scheduling & Cron","confidence":0.54,"provenance":"derived"},{"slug":"content.marketing","name":"Marketing","confidence":0.525,"provenance":"derived"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":0.51,"provenance":"derived"}],"categories":["automation","commerce","communication","content","dev","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 1h ago.","lastOkAt":"2026-10-11T00:28:12.551Z","lastProbedAt":"2026-10-11T00:28:12.551Z","statusComputedAt":"2026-10-11T00:29:22.674Z","reliability30d":{"probes":219,"successRate":1,"p50Ms":177,"basis":"mixed","measures":{"availability":"availability (some checks stopped at authentication)","latency":"response time (mixed)","tools":"partially observed","summary":"Some successful checks reached the service and some stopped at an authentication response; figures combine both."},"checks":{"total":218,"ok":218,"authBoundaryOk":110,"serviceOk":108,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-11T00:28:12.551Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":147,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://mcp.socialloop.ai/.well-known/oauth-protected-resource\""}},{"at":"2026-10-10T19:26:35.016Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":194,"error":null,"detail":{"tools":[{"name":"inspect_email_surveys","description":"Read surveys in the connected email workspace: surveyList(cursor), surveyGet(surveyId; also returns answerTotals per question, complete false while older respon"},{"name":"draft_email_survey","description":"Save a survey with stable surveyId, expectedRevision and draft {name,title,description,communityId,questions:[{id,label,type:text/select/multiSelect/number,requ"},{"name":"publish_email_survey","description":"After organizer confirmation, publish or archive a survey using surveyId and expectedRevision. Publishing creates an immutable version and returns its public UR"},{"name":"inspect_email_reply_domain","description":"Owner-only reply setup inspection. read requires domainId for the sending domain and optionally replyDomainId for an already connected child subdomain. Reports "},{"name":"configure_email_reply_domain","description":"Owner-confirmed branded reply setup. setup/verify require domainId, connected replyDomainId, expectedRevision and stable requestId. The reply domain must be one"},{"name":"inspect_email_tracking","description":"Read actual provider click/open measurement settings for an owned sending domain. Supply domainId. Returns observed settings, revision, checkedAtMs and pendingU"},{"name":"configure_email_tracking","description":"Owner-confirmed measurement setup. All actions need domainId, expectedRevision and stable requestId. setup additionally needs trackingSubdomain (one DNS label, "},{"name":"inspect_email_websites","description":"List website ownership/receipt readiness through the shared workspace API. No server keys or visitor tokens are returned. Workflow guide (MCP resource): sociall"},{"name":"configure_email_website","description":"Create, verify DNS ownership, or disable a website connection after confirmation. create requires origin/name; verify and disable require siteId/revision. This "},{"name":"inspect_email_website_results","description":"Read one page of current consented website-reported activity for campaignId or personId (u_ account only). Page size 25; use nextCursor. External orders are sit"},{"name":"inspect_email_replies","description":"Inspect campaign reply receiving readiness, list bounded conversations, or read a conversation by threadId. Download a listed attachment with action attachment,"},{"name":"draft_email_response","description":"Save or review one response to a verified non-automatic incoming email received within 30 days. Supply threadId, messageId, expectedRevision; saveResponse also "},{"name":"send_email_response","description":"After showing the exact review to the organizer and receiving confirmation, sendResponse with threadId, messageId, expectedRevision and reviewHash. One approved"},{"name":"organize_email_replies","description":"Mark a conversation open or done using threadId, expectedRevision, status and a stable requestId. This does not send email or alter consent. Workflow guide (MCP"},{"name":"inspect_contact_import","description":"Analyze an existing owner-uploaded NDJSON file or get a reviewed import status. analyze requires listId, storagePath under contact-imports/yourUid, totalContact"},{"name":"confirm_contact_import","description":"After showing the organizer the import analysis and receiving confirmation, confirm with jobId and its exact reviewHash, or cancel with jobId. Only the list own"},{"name":"inspect_email_team","description":"Inspect explicitly granted email workspaces, settings, members, eligible reviewers (cursor), reviews (view all/assigned_to_me; cursor), reviewDetail (reviewId),"},{"name":"edit_email_review","description":"Request team review of a prepared target: kind campaign plus campaignId/expectedRevision, journey plus flowId/expectedRevision, or experiment plus definition. A"},{"name":"manage_email_team","description":"After explicit organizer confirmation, an owner may inviteCreate with stable UUID inviteId/requestId, email, role editor/reviewer/publisher/viewer and expectedR"},{"name":"respond_email_workspace_invitation","description":"After the connected recipient inspects inviteView and explicitly chooses, accept or decline with workspaceId, inviteId, current expectedRevision and a stable UU"},{"name":"draft_email_with_ai","description":"Suggest edits to a saved web campaign using its authorized content and aggregate context. Supply campaignId, expectedRevision, instruction and editTarget (all, "},{"name":"record_email_permission","description":"Record existing imported-contact permission evidence after human confirmation. Payload email, sourcePath (users/yourUid/distribution_lists/listId/contacts/conta"},{"name":"inspect_email_workspace","description":"details (campaignId) returns retained campaign preview and metadata; deliveries (campaignId, optional exact email/status/cursor) searches the full history; cont"},{"name":"edit_email_campaign","description":"Save a draft or prepare its audience in the same web Email Campaigns workspace. libraryEditorialSchedule (libraryId, expectedRevision, expectedScheduleRevision,"},{"name":"send_email_campaign","description":"Use for your own list/network, newsletters and recurring mailings; to invite new people to one event use send_invitations, and to message people already on an e"},{"name":"inspect_email_sequence","description":"Inspect the same visual sequences as the web studio: list; get/enrollments/history (flowId and optional cursor; enrollments also accepts exact email and status "},{"name":"edit_email_sequence","description":"Save a visual sequence draft (stable flowId, expectedRevision, definition), prepareAudience (flowId, expectedRevision), pause or cancel a sequence (flowId, expe"},{"name":"activate_email_sequence","description":"With the organizer’s explicit approval: activate a reviewed flowId/expectedRevision/reviewHash; resume a paused flow; startAudience with expectedVersion and exp"},{"name":"inspect_email_experiment","description":"List, review (definition), or report (experimentId) on email experiments shared with the web studio. Review returns the exact audience, immutable content and ap"},{"name":"start_email_experiment","description":"Activate a reviewed email experiment using stable experimentId, definition and reviewHash, cancel it by experimentId, or chooseWinner with experimentId, decisio"},{"name":"inspect_network_profile","description":"Read the canonical scoped Network profile used by the web product: get, purchases, history, membershipHistory, communications, communication, permissions, activ"},{"name":"manage_sending_domain","description":"Owner-confirmed connection of the organizer's own email sending domain — the same engine as Account → Custom domain. Email invitations, campaigns, click measure"},{"name":"set_email_sender_identity","description":"Update the connected account’s own-domain sender identity: payload domainId, expectedRevision, fromLocalPart, companyName and physicalAddress. Does not modify D"},{"name":"get_sms_announcement_audience","description":"Read eligible SMS guests and hosts, exclusions, sender identity and remaining allowance for a managed event. Phone numbers and private consent records are never"},{"name":"preview_sms_announcement","description":"Prepare the exact SMS body and eligible audience for host review. Use a separate brief message (usually <=160 characters), not the full email. Host introduction"},{"name":"send_sms_announcement","description":"After host review, queue the exact previewed SMS to opted-in event guests and hosts. Requires preview_id plus its exact body as message and audienceSize as reci"},{"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 even"},{"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 eve"},{"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 "},{"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 u"},{"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, "},{"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 oc"},{"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 'r"},{"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 (pr"},{"name":"publish_event","description":"Make a draft event live. Pass event_id for a draft you host — one made by duplicate_event, or saved in the studio. Or pass draft_id + edit_token to finish a cre"},{"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, passi"},{"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"},{"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"},{"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. Requ"},{"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` from a v"},{"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 ac"},{"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_"},{"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."},{"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 co"},{"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 even"},{"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."},{"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."},{"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."},{"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."},{"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."},{"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 filt"},{"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. Opt"},{"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 ag"},{"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. Requ"},{"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. Require"},{"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"},{"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_on"},{"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 permission"},{"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."},{"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 "},{"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. Requ"},{"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_"},{"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 mus"},{"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 eve"},{"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_i"},{"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"},{"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_conta"},{"name":"make_announcement","description":"Send email and in-app announcements to event guests. SMS is also available: use get_sms_announcement_audience, preview_sms_announcement, then send_sms_announcem"},{"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"},{"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."},{"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."},{"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"},{"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. Op"},{"name":"get_share_links","description":"Get the shareable links for a live event — public URL, vanity short link, and every trackable custom link with its source and click count. Requires event_id; yo"},{"name":"create_promo_code","description":"Create a coupon / discount / promo code (percent or fixed) that guests type at checkout, on a live event or an unclaimed draft. Use this when the host asks for "},{"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 b"},{"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. Req"},{"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 mu"},{"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. Cou"},{"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 discou"},{"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 ca"},{"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 mus"},{"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 "},{"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 even"},{"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 +"},{"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."},{"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"},{"name":"create_promo_profile","description":"Create a reusable discount PROFILE on a live event — a shared per-tier discount config (tiers: ticket_class_id → percent/fixed) that MANY promo codes attach to,"},{"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-on"},{"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"}],"toolCount":194,"toolsHash":"15fbcea0e13aae8509dee1df70782c89fbf879670882834b08857ae22e942ee8","serverName":"socialloop","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T18:27:13.082Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":159,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://mcp.socialloop.ai/.well-known/oauth-protected-resource\""}},{"at":"2026-10-10T13:25:36.614Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":190,"error":null,"detail":{"tools":[{"name":"inspect_email_surveys","description":"Read surveys in the connected email workspace: surveyList(cursor), surveyGet(surveyId; also returns answerTotals per question, complete false while older respon"},{"name":"draft_email_survey","description":"Save a survey with stable surveyId, expectedRevision and draft {name,title,description,communityId,questions:[{id,label,type:text/select/multiSelect/number,requ"},{"name":"publish_email_survey","description":"After organizer confirmation, publish or archive a survey using surveyId and expectedRevision. Publishing creates an immutable version and returns its public UR"},{"name":"inspect_email_reply_domain","description":"Owner-only reply setup inspection. read requires domainId for the sending domain and optionally replyDomainId for an already connected child subdomain. Reports "},{"name":"configure_email_reply_domain","description":"Owner-confirmed branded reply setup. setup/verify require domainId, connected replyDomainId, expectedRevision and stable requestId. The reply domain must be one"},{"name":"inspect_email_tracking","description":"Read actual provider click/open measurement settings for an owned sending domain. Supply domainId. Returns observed settings, revision, checkedAtMs and pendingU"},{"name":"configure_email_tracking","description":"Owner-confirmed measurement setup. All actions need domainId, expectedRevision and stable requestId. setup additionally needs trackingSubdomain (one DNS label, "},{"name":"inspect_email_websites","description":"List website ownership/receipt readiness through the shared workspace API. No server keys or visitor tokens are returned. Workflow guide (MCP resource): sociall"},{"name":"configure_email_website","description":"Create, verify DNS ownership, or disable a website connection after confirmation. create requires origin/name; verify and disable require siteId/revision. This "},{"name":"inspect_email_website_results","description":"Read one page of current consented website-reported activity for campaignId or personId (u_ account only). Page size 25; use nextCursor. External orders are sit"},{"name":"inspect_email_replies","description":"Inspect campaign reply receiving readiness, list bounded conversations, or read a conversation by threadId. Download a listed attachment with action attachment,"},{"name":"draft_email_response","description":"Save or review one response to a verified non-automatic incoming email received within 30 days. Supply threadId, messageId, expectedRevision; saveResponse also "},{"name":"send_email_response","description":"After showing the exact review to the organizer and receiving confirmation, sendResponse with threadId, messageId, expectedRevision and reviewHash. One approved"},{"name":"organize_email_replies","description":"Mark a conversation open or done using threadId, expectedRevision, status and a stable requestId. This does not send email or alter consent. Workflow guide (MCP"},{"name":"inspect_contact_import","description":"Analyze an existing owner-uploaded NDJSON file or get a reviewed import status. analyze requires listId, storagePath under contact-imports/yourUid, totalContact"},{"name":"confirm_contact_import","description":"After showing the organizer the import analysis and receiving confirmation, confirm with jobId and its exact reviewHash, or cancel with jobId. Only the list own"},{"name":"inspect_email_team","description":"Inspect explicitly granted email workspaces, settings, members, eligible reviewers (cursor), reviews (view all/assigned_to_me; cursor), reviewDetail (reviewId),"},{"name":"edit_email_review","description":"Request team review of a prepared target: kind campaign plus campaignId/expectedRevision, journey plus flowId/expectedRevision, or experiment plus definition. A"},{"name":"manage_email_team","description":"After explicit organizer confirmation, an owner may inviteCreate with stable UUID inviteId/requestId, email, role editor/reviewer/publisher/viewer and expectedR"},{"name":"respond_email_workspace_invitation","description":"After the connected recipient inspects inviteView and explicitly chooses, accept or decline with workspaceId, inviteId, current expectedRevision and a stable UU"},{"name":"draft_email_with_ai","description":"Suggest edits to a saved web campaign using its authorized content and aggregate context. Supply campaignId, expectedRevision, instruction and editTarget (all, "},{"name":"record_email_permission","description":"Record existing imported-contact permission evidence after human confirmation. Payload email, sourcePath (users/yourUid/distribution_lists/listId/contacts/conta"},{"name":"inspect_email_workspace","description":"details (campaignId) returns retained campaign preview and metadata; deliveries (campaignId, optional exact email/status/cursor) searches the full history; cont"},{"name":"edit_email_campaign","description":"Save a draft or prepare its audience in the same web Email Campaigns workspace. libraryEditorialSchedule (libraryId, expectedRevision, expectedScheduleRevision,"},{"name":"send_email_campaign","description":"Use for your own list/network, newsletters and recurring mailings; to invite new people to one event use send_invitations, and to message people already on an e"},{"name":"inspect_email_sequence","description":"Inspect the same visual sequences as the web studio: list; get/enrollments/history (flowId and optional cursor; enrollments also accepts exact email and status "},{"name":"edit_email_sequence","description":"Save a visual sequence draft (stable flowId, expectedRevision, definition), prepareAudience (flowId, expectedRevision), pause or cancel a sequence (flowId, expe"},{"name":"activate_email_sequence","description":"With the organizer’s explicit approval: activate a reviewed flowId/expectedRevision/reviewHash; resume a paused flow; startAudience with expectedVersion and exp"},{"name":"inspect_email_experiment","description":"List, review (definition), or report (experimentId) on email experiments shared with the web studio. Review returns the exact audience, immutable content and ap"},{"name":"start_email_experiment","description":"Activate a reviewed email experiment using stable experimentId, definition and reviewHash, cancel it by experimentId, or chooseWinner with experimentId, decisio"},{"name":"inspect_network_profile","description":"Read the canonical scoped Network profile used by the web product: get, purchases, history, membershipHistory, communications, communication, permissions, activ"},{"name":"manage_sending_domain","description":"Owner-confirmed connection of the organizer's own email sending domain — the same engine as Account → Custom domain. Email invitations, campaigns, click measure"},{"name":"set_email_sender_identity","description":"Update the connected account’s own-domain sender identity: payload domainId, expectedRevision, fromLocalPart, companyName and physicalAddress. Does not modify D"},{"name":"get_sms_announcement_audience","description":"Read eligible SMS guests and hosts, exclusions, sender identity and remaining allowance for a managed event. Phone numbers and private consent records are never"},{"name":"preview_sms_announcement","description":"Prepare the exact SMS body and eligible audience for host review. Use a separate brief message (usually <=160 characters), not the full email. Host introduction"},{"name":"send_sms_announcement","description":"After host review, queue the exact previewed SMS to opted-in event guests and hosts. Requires preview_id plus its exact body as message and audienceSize as reci"},{"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 even"},{"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 eve"},{"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 "},{"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 u"},{"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, "},{"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 oc"},{"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 'r"},{"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 (pr"},{"name":"publish_event","description":"Make a draft event live. Pass event_id for a draft you host — one made by duplicate_event, or saved in the studio. Or pass draft_id + edit_token to finish a cre"},{"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, passi"},{"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"},{"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"},{"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. Requ"},{"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` from a v"},{"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 ac"},{"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_"},{"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."},{"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 co"},{"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 even"},{"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."},{"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."},{"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."},{"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."},{"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."},{"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 filt"},{"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. Opt"},{"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 ag"},{"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. Requ"},{"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. Require"},{"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"},{"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_on"},{"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 permission"},{"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."},{"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 "},{"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. Requ"},{"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_"},{"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 mus"},{"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 eve"},{"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_i"},{"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"},{"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_conta"},{"name":"make_announcement","description":"Send email and in-app announcements to event guests. SMS is also available: use get_sms_announcement_audience, preview_sms_announcement, then send_sms_announcem"},{"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"},{"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."},{"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."},{"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"},{"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. Op"},{"name":"get_share_links","description":"Get the shareable links for a live event — public URL, vanity short link, and every trackable custom link with its source and click count. Requires event_id; yo"},{"name":"create_promo_code","description":"Create a coupon / discount / promo code (percent or fixed) that guests type at checkout, on a live event or an unclaimed draft. Use this when the host asks for "},{"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 b"},{"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. Req"},{"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 mu"},{"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. Cou"},{"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 discou"},{"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 ca"},{"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 mus"},{"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 "},{"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 even"},{"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 +"},{"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."},{"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"},{"name":"create_promo_profile","description":"Create a reusable discount PROFILE on a live event — a shared per-tier discount config (tiers: ticket_class_id → percent/fixed) that MANY promo codes attach to,"},{"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-on"},{"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"}],"toolCount":194,"toolsHash":"8b1c3957c5c2bf23a2164d45b44597beb8e563014247a0ef642cca2a8615ed1b","serverName":"socialloop","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T11:25:45.148Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":160,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://mcp.socialloop.ai/.well-known/oauth-protected-resource\""}},{"at":"2026-10-10T06:27:47.540Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":213,"error":null,"detail":{"tools":[{"name":"inspect_email_surveys","description":"Read surveys in the connected email workspace: surveyList(cursor), surveyGet(surveyId; also returns answerTotals per question, complete false while older respon"},{"name":"draft_email_survey","description":"Save a survey with stable surveyId, expectedRevision and draft {name,title,description,communityId,questions:[{id,label,type:text/select/multiSelect/number,requ"},{"name":"publish_email_survey","description":"After organizer confirmation, publish or archive a survey using surveyId and expectedRevision. Publishing creates an immutable version and returns its public UR"},{"name":"inspect_email_reply_domain","description":"Owner-only reply setup inspection. read requires domainId for the sending domain and optionally replyDomainId for an already connected child subdomain. Reports "},{"name":"configure_email_reply_domain","description":"Owner-confirmed branded reply setup. setup/verify require domainId, connected replyDomainId, expectedRevision and stable requestId. The reply domain must be one"},{"name":"inspect_email_tracking","description":"Read actual provider click/open measurement settings for an owned sending domain. Supply domainId. Returns observed settings, revision, checkedAtMs and pendingU"},{"name":"configure_email_tracking","description":"Owner-confirmed measurement setup. All actions need domainId, expectedRevision and stable requestId. setup additionally needs trackingSubdomain (one DNS label, "},{"name":"inspect_email_websites","description":"List website ownership/receipt readiness through the shared workspace API. No server keys or visitor tokens are returned. Workflow guide (MCP resource): sociall"},{"name":"configure_email_website","description":"Create, verify DNS ownership, or disable a website connection after confirmation. create requires origin/name; verify and disable require siteId/revision. This "},{"name":"inspect_email_website_results","description":"Read one page of current consented website-reported activity for campaignId or personId (u_ account only). Page size 25; use nextCursor. External orders are sit"},{"name":"inspect_email_replies","description":"Inspect campaign reply receiving readiness, list bounded conversations, or read a conversation by threadId. Download a listed attachment with action attachment,"},{"name":"draft_email_response","description":"Save or review one response to a verified non-automatic incoming email received within 30 days. Supply threadId, messageId, expectedRevision; saveResponse also "},{"name":"send_email_response","description":"After showing the exact review to the organizer and receiving confirmation, sendResponse with threadId, messageId, expectedRevision and reviewHash. One approved"},{"name":"organize_email_replies","description":"Mark a conversation open or done using threadId, expectedRevision, status and a stable requestId. This does not send email or alter consent. Workflow guide (MCP"},{"name":"inspect_contact_import","description":"Analyze an existing owner-uploaded NDJSON file or get a reviewed import status. analyze requires listId, storagePath under contact-imports/yourUid, totalContact"},{"name":"confirm_contact_import","description":"After showing the organizer the import analysis and receiving confirmation, confirm with jobId and its exact reviewHash, or cancel with jobId. Only the list own"},{"name":"inspect_email_team","description":"Inspect explicitly granted email workspaces, settings, members, eligible reviewers (cursor), reviews (view all/assigned_to_me; cursor), reviewDetail (reviewId),"},{"name":"edit_email_review","description":"Request team review of a prepared target: kind campaign plus campaignId/expectedRevision, journey plus flowId/expectedRevision, or experiment plus definition. A"},{"name":"manage_email_team","description":"After explicit organizer confirmation, an owner may inviteCreate with stable UUID inviteId/requestId, email, role editor/reviewer/publisher/viewer and expectedR"},{"name":"respond_email_workspace_invitation","description":"After the connected recipient inspects inviteView and explicitly chooses, accept or decline with workspaceId, inviteId, current expectedRevision and a stable UU"},{"name":"draft_email_with_ai","description":"Suggest edits to a saved web campaign using its authorized content and aggregate context. Supply campaignId, expectedRevision, instruction and editTarget (all, "},{"name":"record_email_permission","description":"Record existing imported-contact permission evidence after human confirmation. Payload email, sourcePath (users/yourUid/distribution_lists/listId/contacts/conta"},{"name":"inspect_email_workspace","description":"details (campaignId) returns retained campaign preview and metadata; deliveries (campaignId, optional exact email/status/cursor) searches the full history; cont"},{"name":"edit_email_campaign","description":"Save a draft or prepare its audience in the same web Email Campaigns workspace. libraryEditorialSchedule (libraryId, expectedRevision, expectedScheduleRevision,"},{"name":"send_email_campaign","description":"Use for your own list/network, newsletters and recurring mailings; to invite new people to one event use send_invitations, and to message people already on an e"},{"name":"inspect_email_sequence","description":"Inspect the same visual sequences as the web studio: list; get/enrollments/history (flowId and optional cursor; enrollments also accepts exact email and status "},{"name":"edit_email_sequence","description":"Save a visual sequence draft (stable flowId, expectedRevision, definition), prepareAudience (flowId, expectedRevision), pause or cancel a sequence (flowId, expe"},{"name":"activate_email_sequence","description":"With the organizer’s explicit approval: activate a reviewed flowId/expectedRevision/reviewHash; resume a paused flow; startAudience with expectedVersion and exp"},{"name":"inspect_email_experiment","description":"List, review (definition), or report (experimentId) on email experiments shared with the web studio. Review returns the exact audience, immutable content and ap"},{"name":"start_email_experiment","description":"Activate a reviewed email experiment using stable experimentId, definition and reviewHash, cancel it by experimentId, or chooseWinner with experimentId, decisio"},{"name":"inspect_network_profile","description":"Read the canonical scoped Network profile used by the web product: get, purchases, history, membershipHistory, communications, communication, permissions, activ"},{"name":"manage_sending_domain","description":"Owner-confirmed connection of the organizer's own email sending domain — the same engine as Account → Custom domain. Email invitations, campaigns, click measure"},{"name":"set_email_sender_identity","description":"Update the connected account’s own-domain sender identity: payload domainId, expectedRevision, fromLocalPart, companyName and physicalAddress. Does not modify D"},{"name":"get_sms_announcement_audience","description":"Read eligible SMS guests and hosts, exclusions, sender identity and remaining allowance for a managed event. Phone numbers and private consent records are never"},{"name":"preview_sms_announcement","description":"Prepare the exact SMS body and eligible audience for host review. Use a separate brief message (usually <=160 characters), not the full email. Host introduction"},{"name":"send_sms_announcement","description":"After host review, queue the exact previewed SMS to opted-in event guests and hosts. Requires preview_id plus its exact body as message and audienceSize as reci"},{"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 even"},{"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 eve"},{"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 "},{"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 u"},{"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, "},{"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 oc"},{"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 'r"},{"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 (pr"},{"name":"publish_event","description":"Make a draft event live. Pass event_id for a draft you host — one made by duplicate_event, or saved in the studio. Or pass draft_id + edit_token to finish a cre"},{"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, passi"},{"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"},{"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"},{"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. Requ"},{"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` from a v"},{"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 ac"},{"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_"},{"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."},{"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 co"},{"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 even"},{"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."},{"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."},{"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."},{"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."},{"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."},{"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 filt"},{"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. Opt"},{"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 ag"},{"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. Requ"},{"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. Require"},{"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"},{"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_on"},{"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 permission"},{"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."},{"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 "},{"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. Requ"},{"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_"},{"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 mus"},{"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 eve"},{"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_i"},{"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"},{"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_conta"},{"name":"make_announcement","description":"Send email and in-app announcements to event guests. SMS is also available: use get_sms_announcement_audience, preview_sms_announcement, then send_sms_announcem"},{"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"},{"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."},{"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."},{"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"},{"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. Op"},{"name":"get_share_links","description":"Get the shareable links for a live event — public URL, vanity short link, and every trackable custom link with its source and click count. Requires event_id; yo"},{"name":"create_promo_code","description":"Create a coupon / discount / promo code (percent or fixed) that guests type at checkout, on a live event or an unclaimed draft. Use this when the host asks for "},{"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 b"},{"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. Req"},{"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 mu"},{"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. Cou"},{"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 discou"},{"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 ca"},{"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 mus"},{"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 "},{"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 even"},{"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 +"},{"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."},{"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"},{"name":"create_promo_profile","description":"Create a reusable discount PROFILE on a live event — a shared per-tier discount config (tiers: ticket_class_id → percent/fixed) that MANY promo codes attach to,"},{"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-on"},{"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"}],"toolCount":194,"toolsHash":"2cbc6e64e146a743cee11deb7b6b0d3b5c64f9d5b96567bfc2c108269b78f0e0","serverName":"socialloop","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T04:31:19.463Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":146,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://mcp.socialloop.ai/.well-known/oauth-protected-resource\""}},{"at":"2026-10-10T00:28:48.091Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":237,"error":null,"detail":{"tools":[{"name":"inspect_email_surveys","description":"Read surveys in the connected email workspace: surveyList(cursor), surveyGet(surveyId; also returns answerTotals per question, complete false while older respon"},{"name":"draft_email_survey","description":"Save a survey with stable surveyId, expectedRevision and draft {name,title,description,communityId,questions:[{id,label,type:text/select/multiSelect/number,requ"},{"name":"publish_email_survey","description":"After organizer confirmation, publish or archive a survey using surveyId and expectedRevision. Publishing creates an immutable version and returns its public UR"},{"name":"inspect_email_reply_domain","description":"Owner-only reply setup inspection. read requires domainId for the sending domain and optionally replyDomainId for an already connected child subdomain. Reports "},{"name":"configure_email_reply_domain","description":"Owner-confirmed branded reply setup. setup/verify require domainId, connected replyDomainId, expectedRevision and stable requestId. The reply domain must be one"},{"name":"inspect_email_tracking","description":"Read actual provider click/open measurement settings for an owned sending domain. Supply domainId. Returns observed settings, revision, checkedAtMs and pendingU"},{"name":"configure_email_tracking","description":"Owner-confirmed measurement setup. All actions need domainId, expectedRevision and stable requestId. setup additionally needs trackingSubdomain (one DNS label, "},{"name":"inspect_email_websites","description":"List website ownership/receipt readiness through the shared workspace API. No server keys or visitor tokens are returned. Workflow guide (MCP resource): sociall"},{"name":"configure_email_website","description":"Create, verify DNS ownership, or disable a website connection after confirmation. create requires origin/name; verify and disable require siteId/revision. This "},{"name":"inspect_email_website_results","description":"Read one page of current consented website-reported activity for campaignId or personId (u_ account only). Page size 25; use nextCursor. External orders are sit"},{"name":"inspect_email_replies","description":"Inspect campaign reply receiving readiness, list bounded conversations, or read a conversation by threadId. Download a listed attachment with action attachment,"},{"name":"draft_email_response","description":"Save or review one response to a verified non-automatic incoming email received within 30 days. Supply threadId, messageId, expectedRevision; saveResponse also "},{"name":"send_email_response","description":"After showing the exact review to the organizer and receiving confirmation, sendResponse with threadId, messageId, expectedRevision and reviewHash. One approved"},{"name":"organize_email_replies","description":"Mark a conversation open or done using threadId, expectedRevision, status and a stable requestId. This does not send email or alter consent. Workflow guide (MCP"},{"name":"inspect_contact_import","description":"Analyze an existing owner-uploaded NDJSON file or get a reviewed import status. analyze requires listId, storagePath under contact-imports/yourUid, totalContact"},{"name":"confirm_contact_import","description":"After showing the organizer the import analysis and receiving confirmation, confirm with jobId and its exact reviewHash, or cancel with jobId. Only the list own"},{"name":"inspect_email_team","description":"Inspect explicitly granted email workspaces, settings, members, eligible reviewers (cursor), reviews (view all/assigned_to_me; cursor), reviewDetail (reviewId),"},{"name":"edit_email_review","description":"Request team review of a prepared target: kind campaign plus campaignId/expectedRevision, journey plus flowId/expectedRevision, or experiment plus definition. A"},{"name":"manage_email_team","description":"After explicit organizer confirmation, an owner may inviteCreate with stable UUID inviteId/requestId, email, role editor/reviewer/publisher/viewer and expectedR"},{"name":"respond_email_workspace_invitation","description":"After the connected recipient inspects inviteView and explicitly chooses, accept or decline with workspaceId, inviteId, current expectedRevision and a stable UU"},{"name":"draft_email_with_ai","description":"Suggest edits to a saved web campaign using its authorized content and aggregate context. Supply campaignId, expectedRevision, instruction and editTarget (all, "},{"name":"record_email_permission","description":"Record existing imported-contact permission evidence after human confirmation. Payload email, sourcePath (users/yourUid/distribution_lists/listId/contacts/conta"},{"name":"inspect_email_workspace","description":"details (campaignId) returns retained campaign preview and metadata; deliveries (campaignId, optional exact email/status/cursor) searches the full history; cont"},{"name":"edit_email_campaign","description":"Save a draft or prepare its audience in the same web Email Campaigns workspace. libraryEditorialSchedule (libraryId, expectedRevision, expectedScheduleRevision,"},{"name":"send_email_campaign","description":"Use for your own list/network, newsletters and recurring mailings; to invite new people to one event use send_invitations, and to message people already on an e"},{"name":"inspect_email_sequence","description":"Inspect the same visual sequences as the web studio: list; get/enrollments/history (flowId and optional cursor; enrollments also accepts exact email and status "},{"name":"edit_email_sequence","description":"Save a visual sequence draft (stable flowId, expectedRevision, definition), prepareAudience (flowId, expectedRevision), pause or cancel a sequence (flowId, expe"},{"name":"activate_email_sequence","description":"With the organizer’s explicit approval: activate a reviewed flowId/expectedRevision/reviewHash; resume a paused flow; startAudience with expectedVersion and exp"},{"name":"inspect_email_experiment","description":"List, review (definition), or report (experimentId) on email experiments shared with the web studio. Review returns the exact audience, immutable content and ap"},{"name":"start_email_experiment","description":"Activate a reviewed email experiment using stable experimentId, definition and reviewHash, cancel it by experimentId, or chooseWinner with experimentId, decisio"},{"name":"inspect_network_profile","description":"Read the canonical scoped Network profile used by the web product: get, purchases, history, membershipHistory, communications, communication, permissions, activ"},{"name":"manage_sending_domain","description":"Owner-confirmed connection of the organizer's own email sending domain — the same engine as Account → Custom domain. Email invitations, campaigns, click measure"},{"name":"set_email_sender_identity","description":"Update the connected account’s own-domain sender identity: payload domainId, expectedRevision, fromLocalPart, companyName and physicalAddress. Does not modify D"},{"name":"get_sms_announcement_audience","description":"Read eligible SMS guests and hosts, exclusions, sender identity and remaining allowance for a managed event. Phone numbers and private consent records are never"},{"name":"preview_sms_announcement","description":"Prepare the exact SMS body and eligible audience for host review. Use a separate brief message (usually <=160 characters), not the full email. Host introduction"},{"name":"send_sms_announcement","description":"After host review, queue the exact previewed SMS to opted-in event guests and hosts. Requires preview_id plus its exact body as message and audienceSize as reci"},{"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 even"},{"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 eve"},{"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 "},{"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 u"},{"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, "},{"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 oc"},{"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 'r"},{"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 (pr"},{"name":"publish_event","description":"Make a draft event live. Pass event_id for a draft you host — one made by duplicate_event, or saved in the studio. Or pass draft_id + edit_token to finish a cre"},{"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, passi"},{"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"},{"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"},{"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. Requ"},{"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` from a v"},{"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 ac"},{"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_"},{"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."},{"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 co"},{"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 even"},{"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."},{"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."},{"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."},{"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."},{"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."},{"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 filt"},{"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. Opt"},{"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 ag"},{"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. Requ"},{"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. Require"},{"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"},{"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_on"},{"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 permission"},{"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."},{"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 "},{"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. Requ"},{"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_"},{"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 mus"},{"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 eve"},{"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_i"},{"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"},{"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_conta"},{"name":"make_announcement","description":"Send email and in-app announcements to event guests. SMS is also available: use get_sms_announcement_audience, preview_sms_announcement, then send_sms_announcem"},{"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"},{"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."},{"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."},{"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"},{"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. Op"},{"name":"get_share_links","description":"Get the shareable links for a live event — public URL, vanity short link, and every trackable custom link with its source and click count. Requires event_id; yo"},{"name":"create_promo_code","description":"Create a coupon / discount / promo code (percent or fixed) that guests type at checkout, on a live event or an unclaimed draft. Use this when the host asks for "},{"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 b"},{"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. Req"},{"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 mu"},{"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. Cou"},{"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 discou"},{"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 ca"},{"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 mus"},{"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 "},{"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 even"},{"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 +"},{"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."},{"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"},{"name":"create_promo_profile","description":"Create a reusable discount PROFILE on a live event — a shared per-tier discount config (tiers: ticket_class_id → percent/fixed) that MANY promo codes attach to,"},{"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-on"},{"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"}],"toolCount":194,"toolsHash":"e0b8e12ae10f422ff27b5995ceb0d67ee1dc106232133e53a00b5f637b909a71","serverName":"socialloop","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T21:26:29.452Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":152,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://mcp.socialloop.ai/.well-known/oauth-protected-resource\""}},{"at":"2026-10-09T17:28:13.559Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":207,"error":null,"detail":{"tools":[{"name":"inspect_email_surveys","description":"Read surveys in the connected email workspace: surveyList(cursor), surveyGet(surveyId; also returns answerTotals per question, complete false while older respon"},{"name":"draft_email_survey","description":"Save a survey with stable surveyId, expectedRevision and draft {name,title,description,communityId,questions:[{id,label,type:text/select/multiSelect/number,requ"},{"name":"publish_email_survey","description":"After organizer confirmation, publish or archive a survey using surveyId and expectedRevision. Publishing creates an immutable version and returns its public UR"},{"name":"inspect_email_reply_domain","description":"Owner-only reply setup inspection. read requires domainId for the sending domain and optionally replyDomainId for an already connected child subdomain. Reports "},{"name":"configure_email_reply_domain","description":"Owner-confirmed branded reply setup. setup/verify require domainId, connected replyDomainId, expectedRevision and stable requestId. The reply domain must be one"},{"name":"inspect_email_tracking","description":"Read actual provider click/open measurement settings for an owned sending domain. Supply domainId. Returns observed settings, revision, checkedAtMs and pendingU"},{"name":"configure_email_tracking","description":"Owner-confirmed measurement setup. All actions need domainId, expectedRevision and stable requestId. setup additionally needs trackingSubdomain (one DNS label, "},{"name":"inspect_email_websites","description":"List website ownership/receipt readiness through the shared workspace API. No server keys or visitor tokens are returned. Workflow guide (MCP resource): sociall"},{"name":"configure_email_website","description":"Create, verify DNS ownership, or disable a website connection after confirmation. create requires origin/name; verify and disable require siteId/revision. This "},{"name":"inspect_email_website_results","description":"Read one page of current consented website-reported activity for campaignId or personId (u_ account only). Page size 25; use nextCursor. External orders are sit"},{"name":"inspect_email_replies","description":"Inspect campaign reply receiving readiness, list bounded conversations, or read a conversation by threadId. Download a listed attachment with action attachment,"},{"name":"draft_email_response","description":"Save or review one response to a verified non-automatic incoming email received within 30 days. Supply threadId, messageId, expectedRevision; saveResponse also "},{"name":"send_email_response","description":"After showing the exact review to the organizer and receiving confirmation, sendResponse with threadId, messageId, expectedRevision and reviewHash. One approved"},{"name":"organize_email_replies","description":"Mark a conversation open or done using threadId, expectedRevision, status and a stable requestId. This does not send email or alter consent. Workflow guide (MCP"},{"name":"inspect_contact_import","description":"Analyze an existing owner-uploaded NDJSON file or get a reviewed import status. analyze requires listId, storagePath under contact-imports/yourUid, totalContact"},{"name":"confirm_contact_import","description":"After showing the organizer the import analysis and receiving confirmation, confirm with jobId and its exact reviewHash, or cancel with jobId. Only the list own"},{"name":"inspect_email_team","description":"Inspect explicitly granted email workspaces, settings, members, eligible reviewers (cursor), reviews (view all/assigned_to_me; cursor), reviewDetail (reviewId),"},{"name":"edit_email_review","description":"Request team review of a prepared target: kind campaign plus campaignId/expectedRevision, journey plus flowId/expectedRevision, or experiment plus definition. A"},{"name":"manage_email_team","description":"After explicit organizer confirmation, an owner may inviteCreate with stable UUID inviteId/requestId, email, role editor/reviewer/publisher/viewer and expectedR"},{"name":"respond_email_workspace_invitation","description":"After the connected recipient inspects inviteView and explicitly chooses, accept or decline with workspaceId, inviteId, current expectedRevision and a stable UU"},{"name":"draft_email_with_ai","description":"Suggest edits to a saved web campaign using its authorized content and aggregate context. Supply campaignId, expectedRevision, instruction and editTarget (all, "},{"name":"record_email_permission","description":"Record existing imported-contact permission evidence after human confirmation. Payload email, sourcePath (users/yourUid/distribution_lists/listId/contacts/conta"},{"name":"inspect_email_workspace","description":"details (campaignId) returns retained campaign preview and metadata; deliveries (campaignId, optional exact email/status/cursor) searches the full history; cont"},{"name":"edit_email_campaign","description":"Save a draft or prepare its audience in the same web Email Campaigns workspace. libraryEditorialSchedule (libraryId, expectedRevision, expectedScheduleRevision,"},{"name":"send_email_campaign","description":"Use for your own list/network, newsletters and recurring mailings; to invite new people to one event use send_invitations, and to message people already on an e"},{"name":"inspect_email_sequence","description":"Inspect the same visual sequences as the web studio: list; get/enrollments/history (flowId and optional cursor; enrollments also accepts exact email and status "},{"name":"edit_email_sequence","description":"Save a visual sequence draft (stable flowId, expectedRevision, definition), prepareAudience (flowId, expectedRevision), pause or cancel a sequence (flowId, expe"},{"name":"activate_email_sequence","description":"With the organizer’s explicit approval: activate a reviewed flowId/expectedRevision/reviewHash; resume a paused flow; startAudience with expectedVersion and exp"},{"name":"inspect_email_experiment","description":"List, review (definition), or report (experimentId) on email experiments shared with the web studio. Review returns the exact audience, immutable content and ap"},{"name":"start_email_experiment","description":"Activate a reviewed email experiment using stable experimentId, definition and reviewHash, cancel it by experimentId, or chooseWinner with experimentId, decisio"},{"name":"inspect_network_profile","description":"Read the canonical scoped Network profile used by the web product: get, purchases, history, membershipHistory, communications, communication, permissions, activ"},{"name":"manage_sending_domain","description":"Owner-confirmed connection of the organizer's own email sending domain — the same engine as Account → Custom domain. Email invitations, campaigns, click measure"},{"name":"set_email_sender_identity","description":"Update the connected account’s own-domain sender identity: payload domainId, expectedRevision, fromLocalPart, companyName and physicalAddress. Does not modify D"},{"name":"get_sms_announcement_audience","description":"Read eligible SMS guests and hosts, exclusions, sender identity and remaining allowance for a managed event. Phone numbers and private consent records are never"},{"name":"preview_sms_announcement","description":"Prepare the exact SMS body and eligible audience for host review. Use a separate brief message (usually <=160 characters), not the full email. Host introduction"},{"name":"send_sms_announcement","description":"After host review, queue the exact previewed SMS to opted-in event guests and hosts. Requires preview_id plus its exact body as message and audienceSize as reci"},{"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 even"},{"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 eve"},{"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 "},{"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 u"},{"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, "},{"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 oc"},{"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 'r"},{"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 (pr"},{"name":"publish_event","description":"Make a draft event live. Pass event_id for a draft you host — one made by duplicate_event, or saved in the studio. Or pass draft_id + edit_token to finish a cre"},{"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, passi"},{"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"},{"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"},{"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. Requ"},{"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` from a v"},{"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 ac"},{"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_"},{"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."},{"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 co"},{"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 even"},{"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."},{"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."},{"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."},{"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."},{"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."},{"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 filt"},{"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. Opt"},{"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 ag"},{"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. Requ"},{"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. Require"},{"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"},{"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_on"},{"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 permission"},{"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."},{"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 "},{"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. Requ"},{"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_"},{"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 mus"},{"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 eve"},{"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_i"},{"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"},{"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_conta"},{"name":"make_announcement","description":"Send email and in-app announcements to event guests. SMS is also available: use get_sms_announcement_audience, preview_sms_announcement, then send_sms_announcem"},{"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"},{"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."},{"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."},{"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"},{"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. Op"},{"name":"get_share_links","description":"Get the shareable links for a live event — public URL, vanity short link, and every trackable custom link with its source and click count. Requires event_id; yo"},{"name":"create_promo_code","description":"Create a coupon / discount / promo code (percent or fixed) that guests type at checkout, on a live event or an unclaimed draft. Use this when the host asks for "},{"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 b"},{"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. Req"},{"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 mu"},{"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. Cou"},{"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 discou"},{"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 ca"},{"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 mus"},{"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 "},{"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 even"},{"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 +"},{"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."},{"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"},{"name":"create_promo_profile","description":"Create a reusable discount PROFILE on a live event — a shared per-tier discount config (tiers: ticket_class_id → percent/fixed) that MANY promo codes attach to,"},{"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-on"},{"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"}],"toolCount":194,"toolsHash":"7884dd809207f09188679547037e66ab0f597c7f6c220ace5a866a969b7b9956","serverName":"socialloop","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":null,"package":null,"toolSurface":{"id":"ts_dq92q9bfqy27","endpointId":"ep_v3j2a4zxhndc","hash":"15fbcea0e13aae8509dee1df70782c89fbf879670882834b08857ae22e942ee8","toolCount":194,"serverName":"socialloop","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-10T19:26:35.016Z","lastSeenAt":"2026-10-10T19:26:35.016Z","observations":1,"toolNames":["inspect_email_surveys","draft_email_survey","publish_email_survey","inspect_email_reply_domain","configure_email_reply_domain","inspect_email_tracking","configure_email_tracking","inspect_email_websites","configure_email_website","inspect_email_website_results","inspect_email_replies","draft_email_response","send_email_response","organize_email_replies","inspect_contact_import","confirm_contact_import","inspect_email_team","edit_email_review","manage_email_team","respond_email_workspace_invitation","draft_email_with_ai","record_email_permission","inspect_email_workspace","edit_email_campaign","send_email_campaign","inspect_email_sequence","edit_email_sequence","activate_email_sequence","inspect_email_experiment","start_email_experiment","inspect_network_profile","manage_sending_domain","set_email_sender_identity","get_sms_announcement_audience","preview_sms_announcement","send_sms_announcement","discover_events","list_events","create_event_draft","update_event_draft","update_event","create_event_series","manage_event_series","duplicate_event","publish_event","set_event_image","generate_event_cover","refine_event_cover","set_event_url","set_event_address","add_event_host","set_host_visibility","cancel_event","add_ticket_tier","update_ticket_tier","archive_ticket_tier","unarchive_ticket_tier","reorder_ticket_tiers","delete_ticket_tier","list_ticket_tiers","list_guests","export_guest_list_csv","add_guest","edit_guest","remove_guest","check_in_guest","check_in_plus_one","promote_guest_to_staff","demote_staff_to_guest","import_guest_list","get_guest_details","update_staff_role","list_event_staff","list_guest_requests","approve_guest_request","deny_guest_request","send_invitations","make_announcement","get_invitation_status","cancel_invitation_job","list_distribution_lists","import_contacts_to_list","create_custom_link","get_share_links","create_promo_code","update_promo_code","bulk_create_promo_codes","list_promo_codes","add_affiliate","create_affiliate_profile","bulk_invite_affiliates","update_affiliate_commission","revoke_affiliate_access","list_affiliates","add_affiliate_code","remove_affiliate_code","update_open_link_config","create_promo_profile","list_promo_profiles","add_codes_to_profile","adopt_codes_to_profile","remove_codes_from_profile","update_promo_profile","delete_promo_profile","invite_team_member","list_team_invites","cancel_team_invite","add_vendor","add_talent","add_task","add_project","record_expense","record_transaction","add_schedule_item","add_role","add_inventory_item","add_programming_item","add_meal","add_place","set_place_build_status","add_sponsor","list_sponsors","create_production_item","update_production_item","delete_production_item","list_production_items","link_production_items","assign_role","assign_member","update_meal_menu","update_invoice_line_items","update_inventory_details","create_form","update_form","set_form_active","list_forms","list_form_responses","export_form_responses_csv","get_community_signup_form","set_community_signup_form","list_community_signup_responses","export_community_signup_responses_csv","get_event_revenue","list_ticket_sales","create_community","update_community","list_my_communities","list_community_members","list_join_requests","approve_join_request","reject_join_request","remove_community_member","list_membership_tiers","save_membership_tier","archive_membership_tier","unarchive_membership_tier","cancel_membership","reject_community_event","list_pending_community_events","list_community_activity","approve_community_event","list_spaces","add_space","update_space","set_space_status","check_space_availability","find_open_slots","submit_event_to_community","release_booking","assign_event_to_space","unassign_event_from_space","list_bookings","propose_deal","accept_deal","decline_deal","end_deal","list_deals","set_role_deal_defaults","grant_member_setup","update_member_setup","set_event_split_exception","remove_member_setup","create_partner_profile","update_partner_profile","archive_partner_profile","add_profile_member","remove_profile_member","list_partner_profiles","list_my_network","list_shared_events","get_account_status","set_profile_name","connect_stripe","list_custom_domains"],"distinctSurfaces":50},"endpointFacts":[{"id":"ep_fm3agjmxdhuz","url":"https://mcp.socialloop.ai","type":"mcp_streamable_http","factsCheckedAt":"2026-10-09T14:30:27.589Z","auth":{"observedAt":"2026-10-09T14:30:27.901Z","authRequired":true,"scheme":"Bearer","resourceMetadata":{"url":"https://mcp.socialloop.ai/.well-known/oauth-protected-resource","resource":"https://mcp.socialloop.ai/","authorizationServers":["https://mcp.socialloop.ai/"],"scopesSupported":["events"]},"authorizationServer":{"url":"https://mcp.socialloop.ai/.well-known/oauth-authorization-server","issuer":"https://mcp.socialloop.ai/","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["client_secret_post","none"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":null},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-09T14:30:27.917Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"mcp.socialloop.ai","issuer":{"commonName":"WR3","organization":"Google Trust Services"},"validFrom":"2026-09-23T19:09:10.000Z","validTo":"2026-12-22T20:08:31.000Z","daysToExpiry":72,"sanCount":1,"fingerprint256":"D7:62:55:1B:F0:52:AA:2A:5F:C0:DD:C2:8C:C0:76:E4:6C:8B:6C:8F:65:70:04:6F:38:DB:22:71:B0:D9:BD:E1"}},{"id":"ep_v3j2a4zxhndc","url":"https://socialloop.ai/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-09T04:27:31.606Z","auth":{"observedAt":"2026-10-09T04:27:31.768Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-09T04:27:31.794Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"socialloop.ai","issuer":{"commonName":"YR1","organization":"Let's Encrypt"},"validFrom":"2026-09-30T14:57:23.000Z","validTo":"2026-12-29T14:57:22.000Z","daysToExpiry":79,"sanCount":1,"fingerprint256":"93:A3:A7:D1:C7:43:F1:25:14:DD:5B:6A:CA:B6:AF:9C:E2:F4:E9:0E:10:6B:34:CA:F2:36:9C:0D:B4:05:9F:1E"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.socialloopai/socialloop-mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.socialloopai%2Fsocialloop-mcp","firstSeenAt":"2026-09-07T03:22:04.485Z","fetchedAt":"2026-10-08T09:19:51.510Z","normalizedAt":"2026-10-08T09:19:51.510Z"}]},"firstSeenAt":"2026-09-07T03:22:04.485Z","updatedAt":"2026-10-10T19:28:33.861Z"}