Docs

Onboard with an agent

Paste one short prompt into the agent you already use (Claude, Cursor, ChatGPT, Codex or Claude Code). It finds where your outbound drafts live, optimizes a few of them with the Message Optimizer and shows you before and after, then, once your conversations are synced, runs a search for real customer quotes and a graded eval.

The fastest first result is to let the agent you already use do it. It already knows your tools: the sequencer or SDR tool you connected to it, your CRM, your Drive or Notion, your repo. Paste one prompt, and it finds your real outbound drafts there, optimizes a few, and shows you each one before and after. The steps live in the onboarding skill, which the agent loads and follows.

The agent changes nothing in your tools on its own. It shows you the rewrites first and only writes them back to your sequencer, CRM, files or code after you approve that batch. It never sends anything.

Only want your emails optimized?

Paste one line instead: Load and follow https://docs.amdahl.ai/skills/amdahl-optimizer/SKILL.md. The optimizer skill is the shorter first run: it finds a few upcoming drafts, optimizes them and shows each before and after, with no data connected. This page's prompt does that too, then goes on to Search and Eval once your conversations are synced.

Before you paste

  • A workspace. Join your team's workspace, or ask an admin to add you. No workspace yet? Try the optimizer at console.amdahl.ai/try, which also puts you on the beta waitlist.
  • Amdahl connected to your client. For Claude Code, Codex or Cursor, run npx @amdahl/cli install <client> and sign in. For Claude on the web or desktop, ChatGPT and others, see Connect your agent. There is no key to copy. The first time the client calls an Amdahl tool, it may ask to allow it: choose Allow once or Always allow.
  • Your drafts, wherever they are. Nothing to export. If the agent can't find them, it asks you, and you can always paste one.
  • For the graded eval, synced conversations. The agent checks and only offers it when there is data to grade against. There is no shared demo workspace today.

To check the setup at any time, ask the agent to call connections with action: "setup_status". It names the workspace you connected and says whether optimizing will work, and if not, why. See Check your setup.

The prompt

For Claude (web, desktop or Code), Cursor, ChatGPT or any client where the Amdahl MCP server is connected:

text
I've connected the Amdahl MCP server. Load and follow https://docs.amdahl.ai/skills/amdahl-onboarding/SKILL.md
I want my outbound emails optimized. Use what you already have access to and figure out where my outbound drafts live. Ask me if you can't tell.
Then optimize a few of them. Show me what Amdahl chose first, exactly as it came back, then my original and each try in between.
Don't change anything in my tools or send anything without my OK.

That is the whole prompt. Once your conversations are synced, the agent also offers a search and a graded eval, and pastes the report card verbatim.

Where your drafts live

The agent looks at what it is already connected to before it asks you anything. What it does in each common setup:

Your drafts are inWhat the agent does
A sequencer or SDR tool with an MCP serverReads the next few unsent steps of the sequence or campaign you name, optimizes each, and shows before and after next to the step it came from. Writes approved rewrites back to the same step only when you say so.
HubSpot or SalesforceReads email templates or sequence steps through the CRM connection it has. Writes nothing back to the CRM without your approval.
A spreadsheet or Excel fileReads the newest rows of drafts, optimizes them, and offers the rewrites as a new column next to your originals.
A Google Drive or Notion folderFinds the drafts doc or page and optimizes a few. It can also use your style guide as rules and emails you liked as voice_examples, so the rewrite keeps your voice.
Code (Codex or Claude Code with your repo open)Finds where your code writes outbound copy, optimizes a few real outputs, then proposes a diff that calls POST /api/platform/v1/messages/optimize (or the MCP messages tool) before each email is queued. It does not commit or push without your OK.
Nowhere in particularAsks you to paste one draft and starts there.

It asks at most three short questions, only for what it couldn't find: where your drafts live, which campaign or sequence to start with, and how many to do first (3 to 5 by default).

The prompt: with an API key

For a headless agent, or a coding agent without the MCP server connected. Create a key with amdahl keys create --name "Onboarding" --preset agent (see Command line (CLI)) and put it in the agent's environment as AMDAHL_KEY. Do not paste the key into the chat: a key in a chat stays in its history.

text
Set me up on Amdahl and run my first use case end to end.
My Amdahl API key is in the AMDAHL_KEY environment variable.
Use case: grounded outbound. I sell to {persona, e.g. "VP of RevOps at mid-market SaaS"}.
Load and follow the onboarding skill at https://docs.amdahl.ai/skills/amdahl-onboarding/SKILL.md
First win: find a few of my outbound drafts with what you can access (or rewrite this one) with the Message Optimizer:
"""
{paste one outbound draft, or leave this out}
"""
Then check my data; if conversations are synced, offer one search and one graded eval, and paste the report card verbatim.
Explain as you go; do not build anything beyond these calls.

Leave the draft out and the agent looks for your drafts, then asks for one if it finds none. Leave the use case out and, once your data is synced, it offers you the two to choose from.

If your outbound runs in code

Open the repo that sends your emails. The agent optimizes a few real outputs first, then shows you where the optimize call goes and the diff it would make. Each call usually takes under 30 seconds and can take up to 170, so the call belongs in a background job before the send, with your original draft as the fallback when ok is false. Optimize before you send has the code. You review and commit the change yourself.

What the agent does

Connect

Uses the MCP tools if they are there, otherwise REST with your key.

Check your data (optional)

Reads GET /search/overview: rows per surface and the newest conversation date. This only decides what comes after the first win; an empty workspace does not stop it.

Find your drafts

Checks the tools it is connected to (a sequencer, a CRM, Drive or Notion, a spreadsheet, a repo) for your real unsent drafts, and asks you only what it can't find. Reads only.

Optimize a few

The first win, no data needed. Sends 3 to 5 drafts to POST /messages/optimize with "include_tries": true, one call each (usually under 30 seconds apiece). For each draft it shows the optimizer's choice first, exactly as returned, with its one-line summary, then the original and every try the optimizer scored on the way (its Optimizer score and Human tone, what it aimed at, and which one came back). Those scores are the optimizer's own grading during the search: they show the path, not proof (see Reading tries). It says what the rewrite was judged on, and says "we kept your version" when unchanged is true. It shows the returned version exactly as it came back and never rewrites it with its own model; to change it, it re-runs the optimizer with your wish as a rule. It writes approved rewrites back only after you say yes to that batch.

Pick a use case (once synced)

Only when the workspace has synced conversations. Grounded outbound (draft a first touch in your buyers' words) or positioning check (grade your copy against what customers say). On an empty workspace it stops here, tells you to connect a CRM or call recorder, and says to come back after the first sync, rather than returning empty results that look like answers.

Search

One semantic search for 5 to 10 verbatim customer quotes on the topic, with the company and date for each.

Grade and improve

Runs prompt-and-message-eval on your draft or copy, waits for it (a few minutes), and pastes the report card as written. The card leads with how many rubric lines your copy passed.

Close the loop

Asks what you did with the result and records it, then offers the next step: an A/B against the same quotes, or a send/hold gate in your pipeline.

If something goes wrong

You seeIt means
401The key is missing, wrong, revoked or expired. Create a new one.
403 forbidden, "Missing required scope(s): messages:execute" (over MCP: "optimize requires the messages:execute scope")The key is Read only or older than the optimizer. Create a Customer agent key. Over MCP, disconnect and reconnect Amdahl.
403 forbidden, "Missing required scope(s): evals:execute"The key is Read only. Create a Customer agent key.
429 quota_exceeded on the rewriteThe workspace used this month's 1,000 optimizer calls for API and OAuth keys. It resets next month.
The rewrite came back unchanged: trueNo rewrite beat your draft, so yours was kept. Not an error.
"Your workspace has no synced conversations yet"The rewrite still works. For the search and eval, connect a CRM or call recorder in the console, wait for the first sync, then run the prompt again.
The eval comes back not_applicableNothing was graded. The reason (for example not_outreach for a scheduling email) says why; it is not a failing grade.

Doing it yourself instead

The Quickstart makes the same calls with curl, one at a time. Which call when maps a job to the call that serves it.