A vendor bot does its work in the vendor’s own product, on your subscription. Allternit hands it work as a ticket and gets the answer back through a connector, so the vendor’s chat only has to carry one short line.

Tickets

A ticket is a task your bot gives a vendor bot: what to do, which Allternit tools it may use, and a deadline. Tickets are numbered T-1, T-2 and so on. The ticket’s instructions travel through the connector; the vendor’s chat only sees Run Allternit ticket T-3. When the vendor finishes it posts the result back. The result shows up in the thread as a result card with a summary, any data, and any links. If the vendor never posts a result by the deadline, Allternit reads the vendor’s reply instead and marks the card as read from the reply. With neither, the ticket expires, and nothing is made up.

Lanes

Allternit picks the best way to reach each vendor account, highest first. It shows the one it picked on the account. A lane only counts when it is available and healthy: a signed-out account, a removed connector or a broken local app drops to the next lane down.

Which vendors support which lane

Vendors set their own terms for using a consumer subscription from automated tools, and those terms change. Check each vendor’s current terms before you turn on a lane that drives a website or runs a subscription app unattended. Allternit never works around a vendor’s check or restriction.

Connect Allternit to an app

On the account’s Account tab choose Connect Allternit to the app. Allternit:
  1. Makes a key that works for that one vendor bot’s connector and nothing else.
  2. Adds Allternit’s local server to the app’s own settings, next to what is already there. It never touches your other entries.
  3. Saves a copy of the settings file first, named <file>.allternit-backup-<time>, in the same folder.
  4. Checks that the app’s settings list the connector and that Allternit answers on it. If the check fails, the change is undone.
Undo removes only the Allternit entry and turns the key off. The backup copy stays where it is. Claude Desktop only takes local programs in its settings, so Allternit adds a small bridge (npx mcp-remote), which needs Node.js.

For developers

Endpoints

All under /api/v1, for the signed-in owner. Anything that isn’t yours answers 404. The deploy call PUT /bots/:botId/execution-binding takes directingBotId. It is stored on the binding and also sets the connector’s directing bot. A ticket goes open → sent → done | expired | failed | cancelled. resultVia is connector or reply.

Connector tools

The vendor-bot connector (/mcp/bots/:vendorBotId) gained three tools:
  • get_ticket {id} returns the ticket for that vendor bot only.
  • post_result {id, summary, data?, attachments?} finishes it once. Summary up to 4,000 characters, data up to 64 KB, up to 10 attachments, attachment URLs must be https.
  • list_open_tickets {}.

Lane choice and the nudge

Lane 1 needs a connected runnable local app and an account hosted on this device. Lane 2 needs a healthy browser account and a live remote connector client. Lane 3 needs a healthy browser account. Lane 4 needs a healthy API-key account with a key. Lanes 1, 2 and 4 send Run Allternit ticket T-n. plus the connector address; lane 3 sends the full task.

The scoped key

The local connector’s key is an access token whose only scope is vendor-bot:<vendorBotId>. It opens POST /mcp/bots/<vendorBotId> and nothing else. Its calls show up in the connector’s audit under local-key:<id>, and revoking the key stops them.

Signing in from Claude, ChatGPT or Claude Code

When a vendor app connects to the public connector URL it signs you in with Allternit (Clerk) and registers itself. The first call is then refused with approval_required and a link, because you have to approve that app for that bot once. After that it works until you revoke it. Details and routes are in Use your vendor bots on the phone.

App settings that Allternit writes

The entry name is allternit-<bot id>. Headless runs can’t answer a prompt, so each entry pre-approves only Allternit’s own tools: Codex’s default_tools_approval_mode = "approve" and Gemini CLI’s trust: true sit inside the Allternit entry, and Claude Code is run with --allowedTools mcp__<name>. Nothing global is changed (no “approve everything”, no sandbox or approval-policy edits), other servers keep their own settings, and Undo removes the approval with the entry. Hermes has no per-tool approval prompt for MCP tools, so it needs nothing. Hermes’ YAML file is rewritten as a whole, so its comments are not kept (the backup copy has them).