A QA layer your AI sales agent runs before it sends.
ChatGPT rewrites. Sales Message QA judges. One message in — a structured verdict out: score, confidence, failure modes, risk flags, a rewrite, and a machine-readable send / no-send decision.
1 credit = 1 successful audit · from $5.63 per audit · down to $0.48 per audit at Scale volume · Enterprise: Custom pricing
https://api.agentmessageqa.com/mcp- 1.In Claude: Settings → Connectors → Add custom connector.
- 2.Paste the MCP URL (no authentication needed).
- 3.Ask your agent to run outbound drafts through Sales Message QA before sending.
Free evaluations to try it. Tools: audit_message and report_outcome.
Try it now
Score a message free
Paste a real outbound draft and get the same structured verdict your agent would receive — score, failure modes, and the top fixes to apply before sending.
Submit a message and the structured verdict lands here — score, failure modes, and the top fixes to apply before sending.
The problem
Agents write outbound faster than anyone can review it.
The failures that kill replies aren't typos. They're sales-logic defects — no trigger, fake personalization, a CTA that doesn't fit the relationship. A grammar pass never catches them.
What it checks
Ten dimensions of message quality
Every submission is scored across the things that actually determine whether a buyer replies.
Does the message map to this persona's real priorities?
Is there a timely reason to reach out — or none?
Is the problem concrete, or vague 'efficiency' filler?
Is the outcome quantified, or a restated feature?
Is there a proof point, or an unbacked claim?
Is the ask sized to the relationship and easy to act on?
Real signal, or surface-level name-dropping?
Does the register match the channel and the buyer?
Does every sentence earn its place?
Any phrasing that creates exposure?
Input & output
One message in. Structured QA out.
Agents need to know exactly what they submit and exactly what they get back. No prose blob — a typed object your code can branch on.
Example input
{
"message_text": "Hi Jordan — saw you're scaling the SDR team at Northwind. We help RevOps teams cut manual list-building. Open to a 15-min call Thursday?",
"channel": "email",
"target_persona": "VP of Sales / RevOps lead",
"product_context": "Outbound data enrichment for B2B sales teams",
"desired_outcome": "book_meeting"
}Example output
{
"evaluation_id": "9ee4c670-c09c-4b50-a3b6-09d5071856cf",
"score": 41,
"confidence": "high",
"verdict": "revise_before_sending",
"primary_diagnosis": "The message is clear but gives the buyer no reason to act now.",
"failure_modes": [
{
"code": "triggerless_outreach",
"severity": "high",
"explanation": "No context for why this outreach is happening now."
},
{
"code": "soft_cta",
"severity": "medium",
"explanation": "The call to action is too vague to drive a next step."
}
],
"top_fixes": [
"Lead with a specific, recent, verifiable trigger.",
"Replace the passive CTA with one concrete low-friction question."
],
"rewrite": null,
"agent_next_action": "Apply the top fixes, then resubmit for audit before sending."
}Differentiation
Why not just ask ChatGPT?
Because a rewrite is not a decision. A general model hands you new copy and no way to know if it's better. This service returns a judgment your agent can act on automatically.
Returns new copy, every time.
No score, no verdict, no confidence.
No way to gate a send programmatically.
You still don't know if it's good enough.
Judges: score + confidence + verdict.
Names failure modes and risk flags separately.
Returns a rewrite and an agent instruction.
Emits agent_next_action for send / no-send.
What it catches
The failure modes behind dead outbound
Reads fine, says nothing, gives no reason to reply.
No event or insight justifies the message today.
A scraped fact dressed up as research.
The ask is too big, too vague, or wrong for the stage.
A generic pain reworded to sound specific.
Bold claims with nothing to back them up.
Patterns and phrasing that read as machine-generated.
Tone or claims that create exposure for the sender.
Pricing
Credits, not seats.
One credit is consumed per successful audit — a failed audit costs nothing. The more messages your agent puts through QA, the lower the price per audit: $5.63 per audit at the entry point, down to $0.48 per audit on Scale. Enterprise is custom pricing — talk to us.
$5.63 per audit
No commitment and no API key — buy one credit and audit one message through the one-time token path.
Request access$0.48 per audit
Automation that personalises every message and wants the QA layer to review all of them.
Request access- ·A credit is consumed only by a successful audit. Failed audits (AI or schema failure) do not consume a credit.
- ·Prepaid pack credits do not expire monthly; unused credits persist until the pack expires 12 months from purchase.
- ·Enterprise annual contracts may define their own rollover terms as part of the custom agreement.
- ·Overage bills at the next published tier's per-credit rate, never at a penalty rate; beyond the top published tier (Scale, $0.48 per audit) overage is handled under a custom Enterprise agreement.
- ·Buying more credits at any time re-rates the account to the best tier its cumulative 30-day volume qualifies for.
- ·A per-key monthly spend cap is supported; exceeding it returns 402 with agent_next_action "spend_cap_reached".
Scope
What this is not
Honest boundaries so agents and evaluators can route correctly.
- ×Not a legal or compliance review
- ×Not deliverability or spam-placement testing
- ×No guaranteed reply, open, or conversion rate
- ×Not suitable for regulated claims requiring formal sign-off
For machines
Built to be read by agents, not just people
The full service definition — schemas, limitations, purchase flow — is published as structured data.
Give your sales agent a QA layer before it touches pipeline.
We're onboarding a small set of beta users. Request access and we'll evaluate your messages manually while the service is in static beta preview — no instant delivery yet.
spec_version 0.4.0 · private_beta · beta@salesmessageqa.dev
