Elicitly Pro

Elicitly puts a human in the loop of any MCP-connected agent.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeRead-only

What it can do

  • Elicit Approval: Request human approval before proceeding. Async: returns immediately with a pending request that a human decides later on the hosted review page (block with `elicit_await`, fetch the
  • Elicit Await: Long-poll for a decision on a pending elicitation: blocks until the request is submitted, declined, canceled, or expired — or until the server's polling window closes. Returns `{ status
  • Elicit Confirm: Ask the user an OK/Cancel confirmation via elicitation (convenience wrapper over elicit_form), modeled on JavaScript's confirm(). Use this for a single yes/no question; use elicit_form

What data it sees

Do you need an account

No: the server works without sign-in

Elicitly puts a human in the loop of any MCP-connected agent. The free stdio server (npx -y elicitly) provides elicit_confirm, elicit_form, and elicit_doctor — native host dialogs plus a capability diagnostic. The hosted Pro Edition adds durable approvals: requests that survive disconnects, reach any device via a review page, and leave an audit trail.

Server tool list (12)

Raw names from tools/list. Only developers need these.

elicit_approvalRequest human approval before proceeding. Async: returns immediately with a pending request that a human decides later on the hosted review page (block with `elicit_await`, fetch the outcome with `elicit_result`); for a synchronous in-session form answered by the connected host, use `elicit_form` instead. Two modes, at least one of `context` / `requestedSchema` is required: (1) json mode — pass `context`, a read-only payload the reviewer approves or declines as-is; optionally also pass `displayTemplate`, a LiquidJS template that customizes how `context` is rendered on the review page (instead of the default raw JSON view); (2) form mode — pass `requestedSchema`, a JSON Schema restricted to the MCP elicitation requestedSchema subset (MCP 2025-11-25): a flat object whose properties are strings, numbers/integers, booleans, or single/multi-select enums (no nested objects, arrays of objects, $ref, or allOf) — the reviewer fills in these fields on the review page and submits them back as the submitted data. Both may be passed together: `context` (optionally rendered via `displayTemplate`) is then displayed as read-only context above the form (it is NOT merged into or used to pre-fill the form fields, which are seeded only from `requestedSchema` defaults). Per the MCP elicitation spec, form mode MUST NOT be used to request secrets, credentials, or other sensitive information from the reviewer.
elicit_awaitLong-poll for a decision on a pending elicitation: blocks until the request is submitted, declined, canceled, or expired — or until the server's polling window closes. Returns `{ status }` (pending | submitted | declined | canceled | expired | consumed); a `pending` return means the window elapsed, so call again to keep waiting. Prefer this over polling `elicit_status` in a loop.
elicit_confirmAsk the user an OK/Cancel confirmation via elicitation (convenience wrapper over elicit_form), modeled on JavaScript's confirm(). Use this for a single yes/no question; use elicit_form to collect arbitrary fields. Returns three-state {confirmed}: true = proceed, false = a human explicitly said no, null = no answer was obtained (reason: "dismissed" | "error") — ask again later.
elicit_doctorReport the connected host's elicitation/sampling/roots support. initialize.request/response echo the handshake verbatim; support holds Elicitly's derived booleans; deprecations flags client features (sampling, roots, logging) moved to Deprecated in the MCP 2026-07-28 spec (SEP-2577); probeElicitation adds a live form-elicitation round-trip under probes.elicitationForm. Client-features background: https://modelcontextprotocol.io/docs/learn/client-concepts. Pass share: true to contribute the report to Elicitly's public Support Matrix evidence queue — stored: this report plus the optional productName / productVersion / notes (the host product's name and version, which the report cannot see from inside, and any unusual setup); the report itself contains no elicitation payloads or conversation content. The result then carries shared: true|false.
elicit_formTrigger a form elicitation with a caller-supplied JSON schema; returns the raw {action, content}. For a plain OK/Cancel question, prefer elicit_confirm. MUST NOT be used to request secrets, credentials, or other sensitive information.
elicit_historyList your past elicitations, newest first, paginated with jump-to-page. `scope` 'me' = your own requests; 'org' = the whole organization (admins only). Returns `{ items, page, pageSize, asOf, total, scope }` — `total` lets you compute the last page (ceil(total/pageSize)); pass the returned `asOf` back on later pages to keep the window stable while new requests arrive.
elicit_pingConnectivity check for the hosted Elicitly server: echoes `message` back as `pong: <message>` over the authenticated session.
elicit_proposalAsk a human to review, edit, and selectively approve a proposed record create-or-update, shown as a diff grid: one or more read-only Source columns, a read-only Current column, and an editable Proposed column. Async like elicit_approval: returns a pending request decided on the hosted review page. Pass `requestedSchema` (a JSON Schema in the MCP elicitation requestedSchema subset — flat object of strings/numbers/booleans/enums) to define the editable Proposed fields; each property's `default` is its initial proposed value (you compute it — e.g. take Current if present else Source). Pass `columns` to name the Source column(s) and the Current column, and `fields` to supply each property's Source value(s) and Current value. The reviewer edits proposed values, chooses which fields to include, and submits; the result (via elicit_result) carries `decision` (submitted|declined) and, on submit, `values` (included fields only). MUST NOT be used to request secrets or credentials.
elicit_resultFetch the outcome of a decided request (poll `elicit_status` or block on `elicit_await` first — this errors while the request is still pending, after it expires undecided, or if it was canceled via `elicit_cancel`; repeatable reads are fine afterward). Returns `{ status: 'consumed', decision, context, formSubmission }` plus per-tool overlays: `elicit_selection` adds `selectedIds` (the chosen option ids); `elicit_proposal` adds, on submit, `values` (only the fields the reviewer included).
elicit_selectionAsk a human to choose one or more options from a caller-supplied list (disambiguation, record matching, picking work items). Async like elicit_approval: returns a pending request decided on the hosted review page; the chosen option ids come back via elicit_result as `selectedIds`. Options render as rows of a table the Liquid templates and `css` can customize. Defaults to single-select — raise `maxSelections` for multi-select.
elicit_statusNon-blocking status check for an elicitation you created: returns `{ status }` — pending | submitted | declined | canceled | expired | consumed. Read-only and repeatable (never consumes the result); use `elicit_await` to block on a decision and `elicit_result` to fetch the outcome.
elicit_cancelWithdraw a pending elicitation you created — the plan changed or the request is superseded. The request resolves `canceled`: a terminal status distinct from `declined` (the reviewer's explicit no) and `expired` (nobody decided in time). The review page stops accepting decisions, pending `elicit_await` calls wake, and `elicit_result` has no outcome to fetch. Errors if the request was already decided or has expired; a cancel racing a concurrent decision loses cleanly to whichever landed first.