API & AI assistants
Run WeSay from Claude, ChatGPT and your own code.
Ask an assistant to draft a presentation, open a survey or summarise what an audience said, and it does it in your WeSay account. WeSay has an MCP server, the standard way AI assistants connect to apps, and a REST API with the same features. Both are part of WeSay Pro.
MCP server
Address: https://wesay.live/mcp (Streamable HTTP; protocol versions 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26). If that address doesn't work from your network, use https://rynpprarirqbwqrzvvcr.supabase.co/functions/v1/api/mcp.
Authentication: send your key as Authorization: Bearer wsk_…. For assistants that only take an address, add the key to the end: https://wesay.live/mcp/wsk_…. Treat that link like a password.
Claude (claude.ai and the desktop app)
Settings → Connectors → Add custom connector. Name it WeSay and paste your personal connector link from API & AI in WeSay.
ChatGPT
Settings → Apps & Connectors → Advanced → turn on Developer mode (paid plans), then Create a connector with your personal connector link and “No authentication”.
Claude Code
claude mcp add --transport http wesay https://wesay.live/mcp --header "Authorization: Bearer YOUR_API_KEY"
Cursor, VS Code and other clients
{
"mcpServers": {
"wesay": {
"url": "https://wesay.live/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Discovery: /.well-known/ai-catalog.json and the server card at /mcp/server-card.
Tools
get_account | The connected WeSay account: its plan, limits, how many presentations it has, and links to the dashboard. Call this first if unsure what the account can do. |
|---|---|
list_presentations | The account's presentations, most recently updated first, with their ids, slide counts and editor links. Use the id with the other tools. |
get_presentation | One presentation with every slide in order: type, title, options and settings, plus slide ids for update_slide. |
create_presentation | Creates a new draft presentation in WeSay with up to 50 slides, ready for the presenter to review and present. Good decks mix a content slide to open, then a few questions (word_cloud to warm up, multiple_choice or rating to measure, open_text to reflect), and keep each title short enough to read from the back of a room. Returns the id and an editor link to give the user. Nobody sees it until the presenter starts a session. |
add_slides | Adds slides to an existing presentation, at the end or at a position (0 is the start). A presentation holds up to 200 slides. |
update_slide | Changes the title, options or settings of one slide (its type stays the same). Settings are merged with the slide's current settings. |
list_sessions | Sessions the account has run (live sessions and surveys), newest first, with how many people joined and answered. |
get_session_results | What the audience said in a session: per-slide vote counts and percentages, averages, word-cloud phrases, written answers, rankings, audience Q&A questions with upvotes, and recorded actions. Answers are anonymous. Leave out session_id for the latest session (of presentation_id, if given). Useful for summaries, reports and next steps. |
open_survey | Opens a presentation as a survey: people answer from a link at their own pace until it is closed. Returns the link and six-digit code to share. If a survey is already open for it, returns that one. |
close_survey | Closes an open survey so no more answers come in. The results stay available. |
describe_slide_types | Every WeSay slide type and the settings each one takes. Read this before create_presentation if unsure. |
Things to ask
- “Build a 6-slide WeSay check-in for Monday’s team meeting: a word cloud, a 1–5 rating and one open question.”
- “Make a 5-question WeSay quiz on the water cycle for 12-year-olds, in French.”
- “Summarise what the audience said in my last WeSay session and suggest three next steps.”
- “Open my ‘Workshop feedback’ presentation as a survey and give me the link to share.”
REST API
Base address: https://wesay.live/api (or https://rynpprarirqbwqrzvvcr.supabase.co/functions/v1/api). Every call takes Authorization: Bearer wsk_… and returns JSON. Up to 120 requests a minute per key. The full description is at https://wesay.live/api/v1/openapi.json.
GET /v1/me | WeSay account |
|---|---|
GET /v1/presentations | List presentations (?search, ?include_archived, ?limit) |
POST /v1/presentations | Create a presentation |
GET /v1/presentations/{presentation_id} | Get a presentation |
POST /v1/presentations/{presentation_id}/slides | Add slides |
POST /v1/presentations/{presentation_id}/survey | Open a survey |
PATCH /v1/slides/{slide_id} | Change a slide |
GET /v1/sessions | List sessions (?presentation_id, ?limit) |
GET /v1/sessions/latest/results | Session results (?presentation_id) |
GET /v1/sessions/{session_id}/results | Session results |
POST /v1/sessions/{session_id}/close | Close a survey |
GET /v1/slide-types | Slide types |
curl -X POST https://wesay.live/api/v1/presentations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Team check-in","slides":[
{"type":"word_cloud","title":"One word for this week?"},
{"type":"rating","title":"How is your energy?","settings":{"scale":5}}]}'
Errors come back as {"error": "…"} with a status: 400 (fix the request; the message says what), 401 (missing or revoked key), 402 (the account's Pro has ended), 404 (not in this account), 429 (slow down).
Slide types
multiple_choice | A poll with 2–12 options. settings: allow_multiple, quiz_mode + correct_option (an option), ask_confidence, ask_prediction. |
|---|---|
word_cloud | Short answers shown as a word cloud. settings: moderation_enabled, profanity_filter. |
open_text | Longer written answers. settings: moderation_enabled, profanity_filter; quiz_mode + accepted_answers (list) for a typed-answer quiz. |
rating | A 1–5 or 1–10 rating. settings: scale (5 or 10). |
scales | A labelled scale. settings: scale (5 or 10), min_label, max_label. |
ranking | People put 2–12 options in order. |
allocation | People share 100 points across 2–12 options. |
image_choice | Pick one of 2–12 options, each with a picture. settings: option_images ({ option: https image URL }). |
pin_image | People tap a spot on a picture. settings: image_url (https, required). |
guess_number | Everyone guesses a number. settings: number_min, number_max, optional correct_number. |
grid_2x2 | Place each of 2–12 items on two axes. settings: x_label, y_label, scale (5 or 10). |
content | An information slide with no question. settings: body (text), image_url, video_url (YouTube, Vimeo or an https video), embed_url (an https page). |
Safe by design
- A key only reaches its own account. It can read presentations and results and create or change drafts; it can't delete anything.
- WeSay stores only a fingerprint (SHA-256) of each key and shows the key once. Revoke a key in WeSay and it stops working at once.
- Audience answers are anonymous: no names or emails are ever collected from participants.
- Nothing reaches an audience until the presenter presses Present or shares a survey link.
Give your audience a way in.
Free for up to 75 people in every session. No credit card, and nothing for your audience to install.
Start free, upgrade when you need the API →