Never Ask Twice
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Never Ask TwiceRecall customer's SLA tier and latest issue status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Never Ask Twice
Enterprise Support MemoryAgent on Qwen Cloud
Never Ask Twice is a production-shaped B2B support memory agent that remembers customer context across sessions, retrieves only the memories that matter, forgets stale facts safely, and proves improvement with a live memory ON/OFF evaluation.
The demo agent is Nat — short for Never Ask Twice. Nat remembers what customers already told support: their SLA tier, product configuration, escalation preference, open issues, and promised follow-ups. When the customer returns days later, Nat does not restart from zero.
The result
Re-ask rate: 0.00 with memory
Re-ask rate: 1.00 without memory
The improvement is not asserted in the README. It is produced by the evaluation harness:
pnpm evalBuilt for the Qwen Cloud Global AI Hackathon — Track: MemoryAgent.
Related MCP server: BuildAutomata Memory MCP Server
What makes it a MemoryAgent
Never Ask Twice implements explicit memory tiers:
Working memory — current-session context.
Episodic memory — raw support events with Qwen embeddings and provenance.
Semantic memory — distilled customer facts with confidence, validity windows, and source links.
Forgetting policy — TTL expiry, supersession, stale-memory exclusion, and audit-safe provenance.
Budgeted recall — relevant memories only, capped to a strict context budget.
MCP surface — memory tools exposed for agent interoperability.
This is not transcript logging. It is structured memory with retrieval discipline, provenance, forgetting, and measurable cross-session improvement.
Architecture
┌─────────────┐ ┌─────────────┐ ┌─────────────────────────────┐
│ Customer │────▶│ Hono API │────▶│ Memory Service │
│ chat / MCP │ │ on FC │ │ (working, episodic, │
└─────────────┘ └─────────────┘ │ semantic, forgetting) │
└─────────────┬───────────────┘
│
┌───────────────────────┼───────────────────────┐
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ Qwen Cloud │ │ Postgres │ │ MCP stdio │
│ DashScope │ │ + pgvector │ │ 4 tools │
└───────────┘ └───────────┘ └───────────┘Getting started
1. Clone and install
git clone https://github.com/marcelle-labs/never-ask-twice.git
cd never-ask-twice
pnpm install2. Configure environment
cp .env.example .envEdit .env and set your DASHSCOPE_API_KEY from DashScope. The example is pre-filled for local Postgres on port 5433.
DATABASE_URL=postgresql://neverasktwice:neverasktwice@localhost:5433/neverasktwice
DASHSCOPE_API_KEY=your-key-here
QWEN_BASE_URL=https://dashscope-intl.aliyuncs.com/compatible-mode/v1
QWEN_CHAT_MODEL=qwen-plus
QWEN_EMBEDDING_MODEL=text-embedding-v3
QWEN_EMBEDDING_DIM=1024
MEMORY_TOKEN_BUDGET=12003. Start Postgres
docker compose up -dThe local database binds to localhost:5433 so it does not collide with other Postgres services on 5432.
4. Run migrations
pnpm migrate5. Run the eval harness
pnpm evalExpected output:
memory-on re-ask rate: 0.00
memory-on recall accuracy: 1.00
memory-on hallucination count: 0
memory-off re-ask rate: 1.00
memory-off recall accuracy: 0.00
memory-off hallucination count: 0
re-ask rate: 0.00 (memory) vs 1.00 (no-memory)6. Run the boundary scan
pnpm boundary-scan7. Start the local API
pnpm devThe API will be available at http://localhost:3000 with endpoints:
GET /health— health checkPOST /turn— append a customer/agent turnPOST /sessions/:id/close— close a session and distill episodic → semantic memoryPOST /recall— recall a bounded memory bundle
8. Run the MCP server
pnpm build
node dist/src/mcp/server.jsThe MCP server exposes four tools: recall_memory, write_memory, distill_session, and forget.
Project structure
apps/api— Hono API and demo surfacepackages/contracts— Zod schemas and shared typespackages/db— Drizzle schema and migrationspackages/memory— memory services and retrieval logicpackages/eval— eval harnesspackages/mcp— stdio MCP surfacesrc— canonical implementation shared by the API and MCPeval— frozen three-session scenario, ground truth, and expected outputscripts— boundary scan, migration, demo script check
Key commands
Command | Purpose |
| Install dependencies |
| Build the project |
| Run TypeScript type check |
| Run the test suite |
| Run the memory ON/OFF eval harness |
| Run database migrations |
| Run the clean-room boundary scan |
| List the MCP tools |
| Verify demo fixtures are aligned |
License
Apache-2.0
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Marcelle-Labs/never-ask-twice'
If you have feedback or need assistance with the MCP directory API, please join our Discord server