Juno
API reference

Create participant link

create_participant_link Requires links:write

Create an invite link carrying what you already know about the people who will open it — company, role, the systems they use. Juno briefs the interviewer with it so the interview does not ask for details you supplied. By default the link is for a group: send one link to everyone in that segment. Set audience='person' when the context identifies one individual and you want the finished interview matched back to their record; that link then belongs to whoever opens it first. The context is recorded on the resulting interview and returned by list_interviews. Use note for free-text direction (what to explore, why these people matter) — it is briefed to the interviewer but never becomes interview data. Pass a unique idempotency_key when you may retry after a timeout or dropped connection; retrying with the same key returns the first result instead of starting a second job. For a person link this means a retry never mints a second link.

Input

study_id
string <uuid>

Unique study id returned by Juno.

context
object | null

Key/value facts about the people this link is for, e.g. {"company": "Coca-Cola", "role": "Head of Martech"}. At most 20 keys; nonempty keys up to 100 characters without controls or reserved Juno URL names (Unicode case-insensitive, checked at runtime). Values up to 2048 characters, without NUL. The encoded JSON must fit 16384 UTF-8 bytes, checked at runtime across all keys and values.

audience
enum("group", "person")

Who the link is for. 'group' (the default) describes a segment — everyone you send it to gets this context, so one link covers a whole company or role. Use 'person' when the context identifies one individual (e.g. a contact_id you want the finished interview matched back to): the link then addresses one interview. Reopening that same link continues the interview with its original context, even in another browser or device. Give each different participant a fresh person link and treat it as sensitive.

note
string | null

Free-text direction for the interviewer about the people this link is for, e.g. 'These participants recently cancelled. Explore what changed and why they left.' Unlike context (facts, which become data columns on the interview), the note is guidance Juno follows during the conversation. Up to 2048 characters after trimming surrounding whitespace, without NUL. The schema describes this normalized value; padded legacy input is accepted. Never shown to the participant and never included in exports.

idempotency_key
string | null

Optional retry key, the MCP form of the REST Idempotency-Key header. Pass a new unique value (for example a UUID) with each new request, and send the same value again only when retrying that exact request because you did not see its result (a timeout or dropped connection). A retry then returns the first result instead of starting a second job. The same key with different arguments returns 409, as does a retry while the first call is still running. Keys are scoped to your organisation and this operation and kept for about 7 days. Omit it and every call runs.

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_participant_link",
    "arguments": {
      "study_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "context": null,
      "audience": "group",
      "note": null,
      "idempotency_key": null
    }
  }
}