Agent Skills · Rich presentation · Human-in-the-loop
Elicitly™ connects them. Give your prompts and Agent Skills rich displays and human approvals — show, confirm, choose, approve — without building an MCP server.
Send the renewal quote to Acme?
→ { "confirmed": true }
1 — your skill asks
No UI code, no server to write.
elicit_confirm({ message: "Send the renewal quote to Acme?" })2 — your user answers
Their MCP host renders it — the same host they're already working in.
3 — your skill continues
Branch on the answer and carry on.
{ "confirmed": true }A wall of text is slow to absorb. The same answer, laid out with pictures, reads at a glance — and elicit_display renders it inline, in the host your users already chat in.
Jupiter's four Galilean moons:
| Moon | Diameter | Orbit | Notable for |
|---|---|---|---|
| Io | 3,643 km | 1.77 days | Most volcanic body in the Solar System |
| Europa | 3,122 km | 3.55 days | Ice shell over a salty ocean |
| Ganymede | 5,268 km | 7.15 days | Largest moon — bigger than Mercury |
| Callisto | 4,821 km | 16.69 days | One of the most cratered surfaces |

Jupiter
Its four Galilean moons

Io
3,643 km · 1.77 days

Europa
3,122 km · 3.55 days

Ganymede
5,268 km · 7.15 days

Callisto
4,821 km · 16.69 days
Images: NASA; NASA/JPL-Caltech/SwRI/MSSS/Kevin M. Gill (CC BY 2.0); zelario12 (CC BY-SA 2.0) — via Wikimedia Commons. See the example →
Show the context, then ask for the decision. Rich displays and human approvals come from Elicitly's tools, so your skill gets an MCP App without you building an MCP server. Browse the tools →
# SKILL.md — renewal discount (excerpt) When a rep asks for more than 10% off a renewal: 1. Call elicit_approval for the sales manager: message: "Approve ${discount}% off ${account}?" displayTemplate: templates/deal.liquid context: { account, amount, discount, margin, rep } labels: { submit: "Approve" } 2. Apply the discount only when the decision is approved.
Approve 15% off Acme Corp?

Acme Corp — annual renewal
Rep: Mei Chen · West
# SKILL.md — supplier change (excerpt) When a supplier sends new bank or address details: 1. Call elicit_proposal with the ERP record as Current and the supplier's letter as a Source. 2. Write back only the fields the reviewer includes. Never change bank details without an approved proposal.
| Field | Supplier letter | Current | Proposed | Include |
|---|---|---|---|---|
| Account number | 77310264 (differs from current) | 40281937 | 77310264 | included |
| Remit-to address | 400 Congress Ave, Austin TX (differs from current) | 12 Elm St, Austin TX | 400 Congress Ave, Austin TX | included |
| Payment terms | Net 30 | Net 30 | Net 30 | not included |
# SKILL.md — deploy (excerpt) Before deploying: 1. Call elicit_display with templates/release.liquid and context { version, changes }, so the user sees what ships. 2. Call elicit_confirm: message: "Deploy ${version} to production?" Proceed only when the result is { "confirmed": true }.
Release v2.1.0
| Type | Change |
|---|---|
| feat | Org allowlist for template images |
| fix | Dark mode follows the host theme |
| docs | Diagrams for the approval flows |
Deploy v2.1.0 to production?
This gap is why the Pro Edition exists: when the host can't render a dialog, Pro's hosted review page works anywhere — your skill makes the same calls either way. How Pro adapts →
Free is the dialog; Pro is the durable process — approvals that survive disconnects, reach any device, and leave an audit trail.
Free in Early Access
Hosted approvals with review pages, an audit trail, and TTL-bounded decisions that survive disconnects.
See pricing