← Blog

An AI support assistant that never guesses

Most AI support bots improvise. MyAISE's embedded assistant answers only from knowledge your team approved — mined from your own tickets, verified against your product, published on purpose. And your coding agent can do the reviewing.

Every SaaS team gets the same advice right now: put an AI assistant in your product. And every team that's tried the obvious version has met the obvious problem — a language model with a search index will answer anything, confidently, including things that aren't true about your product. Support is exactly the wrong place to improvise. One invented setting, one plausible-but-wrong limit, and the assistant costs more trust than it saves tickets.

MyAISE's embedded assistant makes the opposite bet. It only answers from a knowledge base your team explicitly approved. If there's no approved answer, it says so and falls back to your product's live data — it never wings it from training data. This post is about how that knowledge base fills itself from your support tickets, and how the review step — the part that used to be the bottleneck — can now be done by Claude Code or Codex, validated against your real codebase.

Meet the assistant

The assistant embeds in your product with a script tag plus a short-lived token your backend signs, so it always knows which customer it's talking to. Under the hood it's three things:

Where the knowledge comes from

You don't write those solutions by hand. Connect your helpdesk (Zendesk today) and the mining pipeline goes to work: it clusters closed tickets that rhyme, extracts the underlying question and the answer that actually resolved it, strips away everything customer-specific — names, IDs, one-off details — and runs a sanitization audit so nothing private can ship. The output is a draft solution: a clean, generic answer to a question your customers demonstrably ask.

Drafts are quarantined by design. The assistant never cites one. Publishing is a deliberate act, and that's the feature — it's what makes "never guesses" true. But it creates the honest cost of this architecture: somebody has to review the drafts, and the pipeline writes them faster than a support team reads them. At Retreaver, our sister company, the pile hit 299 before anyone flinched.

Worse, the right reviewer isn't who you'd think. Whether a draft is true — whether the cap really counts calls that never connected, whether that error really means what the ticket thread guessed — is a question about your product's actual behavior. The person who can answer it authoritatively has your codebase open.

So we made the backlog reviewable by the thing that already has your codebase open: your coding agent. The MyAISE MCP server exposes the whole review loop — list, read, fix, annotate, publish — as tools that Claude Code, Codex, or any MCP client can drive. The agent validates each draft against your real source, locally — MyAISE never ingests your repo; only the solution edits the agent saves come back to us.

Connect in one command

The MCP server lives on the same host as the REST API and takes the same keys. Issue a team API key from the dashboard (solutions are team-scoped, so a personal key won't see them), then:

terminal
claude mcp add --transport http myaise https://myaise.com/mcp \
--header "Authorization: Bearer capa_live_…"
+capartist: ✔ Connected

Scopes work the way you'd hope: a read_only key can list and read the backlog (triage is the low-risk place to start), while editing, publishing, and archiving need a full-scope key. The server introduces its own tools to the agent on connect, so you don't have to explain them in every prompt.

The review loop

The tools are built around the loop a careful engineer would run by hand:

A prompt that runs the whole loop:

prompt — backlog sweep
Work through our myaise solutions backlog in batches of ten
drafts, oldest first. Keep a log of every draft id you finish
(published / archived / kept + why). Loop until the only drafts
left in solutions.list are ones your log marks kept.
For each draft in a batch:
1. Read it with solutions.get. Skip ids already in the log.
2. Verify every claim against this repo — limits, defaults, error
messages, step sequences. Cite file:line evidence in the log.
3. Fix wrong or vague content with solutions.update, keeping the
writing generic — no customer names or one-off details. Add a
few phrasings for how users actually word the question.
4. On the same update, set the hints that apply — each is short
text the assistant reads whenever it answers with this solution:
- answer_hint: how to answer in chat, e.g. "a plain answer
is enough here — no tools needed"
- walkthrough_hint: what a UI walkthrough should show — the
screens and steps to walk through when showing beats telling
- workflow_hint: the sequence of OUR mcp tools that resolves
the issue — check each name against our tools/list first
5. Publish clean drafts with solutions.publish. Archive drafts
that duplicate a published solution or describe removed
behavior. Anything you can't verify in the code stays in
draft — log it as kept, with what's missing.
After each batch, give me a one-line tally (published / archived /
kept), then continue. When only kept drafts remain, show me the
full log.

For a first session, start smaller — triage only, with a read-only key:

prompt — triage
List our solutions backlog from the myaise MCP server. Give me a
table: title, one-line problem, sanitizer status, and your guess at
which recent feature each one touches. Don't change anything yet.

Hints: teach the assistant how to answer

Publishing a correct solution is half the job. The other half is telling the assistant what a good answer looks like when that solution matches — and that's context only your team has. So every solution now carries up to three hints, and all three can ride together:

There's also a team-level free-text guide — "how our MCP server works" — injected into every assistant answer for your team. Your agent is the ideal author for it, because it can read your server's tools/list and write from the source:

prompt — server guide
Read our own MCP server's tools/list. Write a short guide for the
support assistant: what the tools do, which reads are safe to chain,
which writes need care, and our naming conventions. Keep it under
4000 characters and save it with assist.mcp_hints.set.

"The drafts were already good. The hints are what made the assistant's answers feel like ours."

— What we noticed running this on our own sister company

The same loop in Codex

Nothing here is Claude-specific — it's plain MCP over Streamable HTTP. Codex reaches remote HTTP servers through the mcp-remote bridge:

~/.codex/config.toml
[mcp_servers.capartist]
command = "npx"
args = ["-y", "mcp-remote", "https://myaise.com/mcp",
"--header", "Authorization: Bearer capa_live_…"]

The prompts above work verbatim. So does any other MCP client — the server speaks protocol versions 2025-06-18 and 2025-03-26 and negotiates per the spec.

We ran it on Retreaver first

Back to that 299-draft pile. Retreaver is a call-routing platform with a Rails codebase and its own MCP server, and it was the first production test: we pointed Claude Code at the MyAISE MCP server on one side and the Retreaver repo on the other, and had it review drafts the way an engineer would:

session.log — condensed
[list] 299 drafts · counts by status attached
[get] "Do hard caps count calls that never connected?"
[verify] cappable.rb — provisional counting confirmed in source ✓
[verify] rtb_reservation.rb — reserved→confirmed→claimed lifecycle ✓
[get] RTB draft referencing an aim_<buyer-id>_number token
-verify: token appears NOWHERE in the codebase
+rewrite: it was an external dialer's artifact the miner absorbed
[update] hints attached — answer + walkthrough + workflow
[publish] 2/2 through the sanitization gate

The second draft is the story. It read plausibly — it had survived mining, genericizing, and sanitizing — but the token it was built around doesn't exist in Retreaver's product. It leaked in from a third-party dialer platform mentioned in the original tickets. Easy to miss without the source open; the agent caught it in one grep, rewrote the draft generically, and published a solution that's actually true.

Then the payoff: asked the hard-cap question, the widget followed the answer_hint — a direct, correct answer with zero tool calls in the server log — and closed by offering the workflow hint's follow-up. The hints don't just decorate the solution; the assistant demonstrably answers the way you told it to.

The gate stays closed

Giving an agent publish rights only works if the safety rails hold with no human in the loop, so the sanitization gate is unchanged — and now stricter. solutions.publish refuses any mined draft whose stored sanitization report doesn't pass. Any content edit atomically clears the old report before the audit re-runs, so there's no window where yesterday's clean report vouches for today's text. If a published solution is edited into something that fails a fresh audit, it's demoted back to draft. Archived solutions can't be resurrected by a confused agent. And your secret key is the operator authority here the same way it is on the REST API — hints and edits carry exactly the trust your team's key carries, while everything the assistant does with them stays subordinate to its hard rules and the write-confirm gate.


Getting started looks like this: embed the assistant in your product on the AI SE plan, connect your helpdesk and let the mining pipeline read your ticket history, then issue a team API key at /dashboard/api-keys and point the coding agent you already use at the backlog (the MCP integration docs cover the details). A week of tickets becomes a knowledge base your assistant can actually stand behind — because every entry was checked against the code that ships. The drafts were never the bottleneck. The review was.

Ready to try MyAISE?

Free for individuals. Mac app. 5-minute install. No account needed.

Download for Mac See pricing