Voice agent integration · 6 minutes quickstart

Mnemix + Bland

Bland.ai builds production voice pathways. Mnemix slots in as the memory + identity layer behind those pathways: every inbound call resolves the caller through Twilio Lookup + Trestle + Baylio before the first audio packet, and every completed call writes back a structured summary that Bland can route on next time.

What
Mnemix is a memory + real-world enrichment API for AI voice agents.
Who
For developers building AI voice agents on Vapi, Retell, Bland, LiveKit, or Twilio.
Price
Hobby $0 (free tier). Starter, Pro, and Elite tiers — contact sales for pricing while billing is in private beta.
How
For cold voice callers, call POST /v1/recall_and_enrich before the first turn; it creates the contact on miss and starts Trestle, Twilio, and Baylio enrichment. Use POST /v1/context for known callers, chat, and workflow context. Sub-300ms voice recall is a design target at the Cloudflare edge.

What Mnemix adds to a Bland pathway

Code sample

SDK form with @mnemix-ai/client.

import { Mnemix } from "@mnemix-ai/client";
const mx = new Mnemix({ apiKey: process.env.MNEMIX_KEY! });

// Bland webhook — fired before pathway starts
export async function POST(req: Request) {
  const { phone_number } = await req.json();
  const packet = await mx.recallAndEnrich({
    phone_number,
    trigger: "ringing",
  });
  return Response.json({
    variables: {
      caller_name: packet.caller.name ?? "there",
      caller_context: packet.memory.summary,
      recent_calls: packet.memory.recent_calls,
      enrichment: packet.enrichment,
    },
  });
}

Works today — call the REST API directly:

// REST form — same pre-call enrichment + memory packet:
export async function POST(req: Request) {
  const { phone_number } = await req.json();
  const r = await fetch(
    "https://mcp.mnemix.ai/v1/recall_and_enrich",
    {
      method: "POST",
      headers: {
        "content-type": "application/json",
        authorization: `Bearer ${process.env.MNEMIX_KEY}`,
      },
      body: JSON.stringify({
        phone_number,
        trigger: "ringing",
      }),
    }
  );
  const packet = await r.json();
  return Response.json({
    variables: {
      caller_name: packet.caller.name ?? "there",
      caller_context: packet.memory.summary,
      recent_calls: packet.memory.recent_calls,
      enrichment: packet.enrichment,
    },
  });
}

FAQ

How long does the Bland integration take?
About 6 minutes. Drop the Mnemix middleware into your Bland pathway's pre-call webhook with POST /v1/recall_and_enrich. Then add post-call memory write-back with POST /v1/observe. No SDK install required if you call the REST API directly.
Does it work with both inbound and outbound Bland calls?
Yes. The pre-call webhook fires for both directions. For outbound calls Bland already has the phone number; Mnemix returns the enriched caller object the same way.
What if Twilio Lookup misses?
Mnemix gracefully degrades. If Twilio Lookup returns no carrier metadata, the caller object still contains whatever Trestle and Baylio resolved, plus any prior memory. Your Bland pathway gets a partial enrichment envelope rather than failing.
Can I bring my own enrichment vendors?
Trestle, Twilio Lookup, and Baylio are the bundled providers in Wave 1. Bring-your-own enrichment vendors land at Pro+ tier — contact hello@mnemix.ai if you need a specific vendor today.
What happens to memory if Mnemix is down?
Your Bland pathway continues running. The pre-call webhook returns whatever defaults you set (e.g. caller_name: 'there'); the post-call write-back retries on its own queue. Mnemix is non-blocking by design — voice agents can't wait.

Last updated: .