AssentSign in

Getting access

Assent is invite-only for now, so you need an account before any app can connect. To ask for one, email hello@specvista.com with the subject Access request, from the address you want to use, and say what your agents will ask you for. If you have an invite, open the link in the email to create your account.

Claude, ChatGPT, Cursor and Claude Code connect with OAuth: you sign in to Assent and choose Allow, and never paste a key. Other MCP clients can use an agent key instead.

Guides and agent docs

The full documentation, with step by step guides for macOS and Windows, is in the Assent docs. AI agents can start from llms.txt, and every docs page is also available as Markdown by adding .md to its address.

Base URL

Every agent request goes to this base URL, with JSON bodies and the agent key as a bearer token.

https://ordia-api.specvista.com/api/v1
Authorization: Bearer <your agent key>

Get an agent key

Sign in to Assent, open Agents and choose Add an agent. Give it a name and choose Add agent. Assent shows it once, so copy it then. Keys start with oak_. Your email address needs to be verified first.

If a key leaks, open the agent, go to its Settings and choose Rotate key. The old key stops working.

Ask the person

POST /agent/ask sends an ask to the person's inbox. Every ask needs kind and title. Phrase the title as an action or a question.

kindRequiredWhat the person sees
approvetitle, whyButtons to approve (action done) or decline (action decline), or your own actions. Items show as ticked checkboxes the person can untick.
todotitle, whyA step only the person can take for your work.
paytitle, why, urlA link where the person pays, answered with Paid (action done). Send the link only, never card details.
logintitle, urlA link where the person signs in, answered with Done (action done). Never send passwords.
codetitleThe person types a value, such as a one-time code. It comes back as answer.value.
replytitle, draftA draft message of up to 4000 characters the person can edit. Default actions send and skip; send returns the final text as answer.value.

Optional fields include detail, items (each with id, title and selected), actions (each with id, label and an optional style of primary, secondary or danger), dueAt, remindAt and dedupeKey. An ask with no why, when its kind needs one, or a title that reads like a status update is refused with 422 and a message saying what to add.

A new ask returns 201 with the task and its uuid. Sending the same dedupeKey, or the same Idempotency-Key header, returns the existing ask with 200 and created false.

curl -X POST https://ordia-api.specvista.com/api/v1/agent/ask -H "Authorization: Bearer <your agent key>" -H "Content-Type: application/json" -d '{"kind":"approve","title":"Try Assent","why":"So you can see how an agent ask reaches you","items":[{"id":"a","title":"First option","selected":true}]}'

Get the answer

An ask starts with status open and becomes answered when the person answers. Its answer holds actionId, selectedItemIds and, for code and reply asks, value. Asks other than todo expire if nobody answers in time.

  • GET /agent/tasks/{uuid}Read one ask you created, with its status and answer.
  • GET /agent/answersList your answered asks that you have not picked up yet.
  • POST /agent/tasks/{uuid}/picked-upMark an answered ask as acted on, so it is never delivered again.
  • POST /agent/tasks/{uuid}/resolveClose your own ask with {"outcome":"resolved"} or {"outcome":"withdrawn"} when it is done or no longer needed.

There is no HTTP long poll endpoint: poll the first endpoint above every few seconds. To block until the answer arrives, use the MCP tool assent_wait_for_answer or the command line's --wait.

MCP

Connect any MCP client to this address over Streamable HTTP with POST, sending the agent key as a bearer token. The server is stateless.

https://ordia-api.specvista.com/api/v1/mcp
  • assent_askAsk the person. Takes the ask fields of POST /agent/ask, with idempotencyKey as an argument.
  • assent_wait_for_answerWait up to 50 seconds (default 45) for an answer. Call it again to keep waiting.
  • assent_get_taskRead an ask with its status and answer.
  • assent_answersList answered asks not picked up yet.
  • assent_picked_upMark an answer as acted on.
  • assent_resolveClose your own ask as resolved or withdrawn.
  • assent_checkCheck the person's standing rules before you act: allow, deny or ask.

Also available:

  • assent_run_start
  • assent_run_finish
  • assent_task_add
  • assent_ordia_todo_add
  • assent_note
  • assent_ordia_note_add
  • assent_note_update
  • assent_memory
  • assent_link
  • assent_lock_acquire
  • assent_lock_release
  • assent_handoff
  • assent_handoffs
  • assent_task_complete
  • assent_plan_create
  • assent_plan_get
  • assent_plan_update_sessions

Connect from Claude

Works in Claude on the web, the desktop app and mobile.

  1. In Claude, open Settings, then Connectors, and choose Add custom connector.
  2. Name it Assent, paste the MCP address below and choose Add. Leave the advanced OAuth settings empty.
  3. Choose Connect. Assent opens and asks you to sign in if needed. The page reads Allow Claude? and names the agent Claude will act as. Choose Allow and you return to Claude.
https://ordia-api.specvista.com/api/v1/mcp

To disconnect, open Agents in Assent, open Claude and rotate its key in Settings, or pause it to stop it for a while. Other apps you connected keep working, because each app acts as its own agent.

Connect from ChatGPT

Custom connectors need developer mode. In a workspace, an admin may have to allow it first.

  1. In ChatGPT, open Settings, then Apps (or Connectors), then Advanced settings, and turn on Developer mode.
  2. Choose Create app. Name it Assent, paste the MCP address below and set Authentication to OAuth, leaving the client ID and secret empty.
  3. Tick that you trust the app and choose Create. Assent opens. The page reads Allow ChatGPT?. Choose Allow within 10 minutes, in the same browser, and you return to ChatGPT with the Assent tools listed.
https://ordia-api.specvista.com/api/v1/mcp

To disconnect, open Agents in Assent, open ChatGPT and rotate its key in Settings, or pause it to stop it for a while. Other apps you connected keep working, because each app acts as its own agent.

Connect from Cursor

  1. Add this to ~/.cursor/mcp.json, or to .cursor/mcp.json in a project.
  2. In Cursor Settings, open Tools & MCP (or MCP) and choose the sign-in button next to assent. Assent opens in your browser. Choose Allow.
{
  "mcpServers": {
    "assent": {
      "url": "https://ordia-api.specvista.com/api/v1/mcp"
    }
  }
}

Cursor on the web connects as an agent named Cursor. The desktop app returns to a program on your computer, so the page warns you about that and names the agent after the app. Without OAuth, add "headers": { "Authorization": "Bearer <your agent key>" } next to url with an agent key.

To disconnect, open Agents in Assent, open the Cursor agent and rotate its key in Settings, or pause it to stop it for a while. Other apps you connected keep working, because each app acts as its own agent.

Connect from Claude Code

  1. Add the server in your terminal.
  2. In Claude Code, run /mcp, pick assent and choose Authenticate. Assent opens in your browser.
  3. The page names Claude Code and warns that it returns to a program on this computer. Choose Allow only if you just started this yourself. Claude Code then lists the Assent tools.
claude mcp add --transport http assent https://ordia-api.specvista.com/api/v1/mcp

To disconnect, open Agents in Assent, open the Claude Code agent and rotate its key in Settings, or pause it to stop it for a while. Other apps you connected keep working, because each app acts as its own agent.

Command line

The command line needs Node.js 20 or later. Every command prints one JSON line.

npm install -g assent-cli

Give it the agent key. ASSENT_API_URL is optional and must use https.

export ASSENT_AGENT_KEY=<your agent key>
export ASSENT_API_URL=https://ordia-api.specvista.com/api/v1

Ask and wait up to ten minutes for the answer. --wait exits with code 6 if the time runs out. assent mcp runs a local stdio MCP server that forwards to the address above.

assent ask --kind approve --title "Try Assent" --why "So you can see how an agent ask reaches you" --item "a:First option" --wait --timeout 600

Connect a computer

Pair a Mac or Windows computer so Run now restarts an agent there as soon as you answer it. The helper needs macOS, or Windows 10 version 1809 or later, and Node.js 20 or later. The commands are the same in Terminal, PowerShell and Command Prompt.

npm install -g assent-helper
assent-helper pair

It shows a QR code and an 8 character code that lasts 10 minutes. Scan the QR code with your iPhone camera, or type the code at Pair a computer. Then allow an agent with assent-helper allow and start the background service with assent-helper install. See Connect a computer for every step and common problems. Agents can still ask you without a paired computer.