Voice agent · Custom HTTP guide · Server URL events
Northsun + Vapi
Vapi's current Server URL documentation defines assistant-request for dynamic inbound assistant selection and end-of-call-report for completed-call artifacts. This guide maps those events to Mnemix through your server; it is not a native or certified adapter.
- What
- Mnemix is the memory and enrichment layer for AI agents. Governed context intelligence is the differentiator.
- Who
- For teams building voice, chat, coding, and workflow agents that need persistent, inspectable context.
- Price
- Hobby is $0. Paid access is Contact sales.
- How
- Use the frozen caller REST contract for recall, durable call write-back, and read-only caller lookup. Use authenticated MCP only for the broader beta context tools enabled and proven for your tenant.
- For agents
- On an inbound call your voice agent receives the caller profile, this tenant's prior-call memory, and available Trestle and Twilio Lookup enrichment as contextual evidence before its first sentence; after hangup the call is submitted and committed durably before the response returns, visible on the very next read.
What Northsun adds to Vapi
- Deadline-aware inbound recall. Vapi documents a fixed 7.5-second end-to-end response limit for assistant-request; your full handler must be tested inside it.
- Separated write-back. Normalize end-of-call-report only after verifying the current Vapi artifact and request-authentication contract.
- Honest outbound handling. For outbound calls, run recall in your own orchestration before creating the call and pass selected values through Vapi's current override mechanism.
How to connect Vapi to Northsun
- 1
Configure one Server URL
Follow Vapi's official Server URL documentation and enable only the events your handler processes.
- 2
Handle assistant-request
Read the current Call Object, perform a deadline-bounded Mnemix recall, and return the minimum assistant response Vapi requires.
- 3
Handle end-of-call-report
Verify the request and map the current artifact messages into Mnemix transcript roles and timestamps.
- 4
Test both directions
Inbound and outbound setup are different. Record a controlled proof for each direction you support.
Custom HTTP pattern
Adapt this boundary to the current vendor payload and verify it with controlled events before production.
async function callMnemix(path: string, body: unknown) {
const response = await fetch(`https://mcp.mnemix.ai${path}`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.MNEMIX_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify(body),
});
if (!response.ok) {
throw new Error(`Mnemix request failed: ${response.status}`);
}
return response.status === 204 ? undefined : response.json();
}
export async function POST(request: Request) {
const { message } = await request.json();
if (message.type === "assistant-request") {
const phoneNumber = message.call?.customer?.number;
if (!phoneNumber) return Response.json({});
const packet = await callMnemix("/v1/recall_and_enrich", {
phone_number: phoneNumber,
trigger: "ringing",
session_id: message.call?.id,
});
return Response.json({
assistantId: process.env.VAPI_ASSISTANT_ID,
assistantOverrides: {
variableValues: {
caller_name: packet.caller?.name ?? "there",
caller_summary: packet.memory?.summary ?? "",
},
},
});
}
if (message.type === "end-of-call-report") {
// Verify the Vapi request, then normalize the current artifact shape.
await callMnemix("/v1/calls/end", normalizedCallEnd(message));
}
return Response.json({ received: true });
}FAQ
- Is this a native Vapi integration?
- No. It is a custom Server URL mapping maintained in your application.
- What does the 7.5-second limit mean?
- It is Vapi's documented end-to-end assistant-request limit, not a Mnemix latency benchmark. Test your network and full handler.
- Does one successful webhook prove write-back?
- Yes for the interaction itself: a Mnemix 204 confirms it is already committed durably, and the next recall for that caller sees it immediately. It does not prove your Vapi mapping is correct — verify with a later recall in your own integration.
Last updated: .