| name | dml |
| description | Use DML (Deterministic Memory Layer) to track facts, constraints, and decisions. Invoke when helping with planning tasks, or when the user wants to track information with audit trails. |
Deterministic Memory Layer
You have DML MCP tools available. Use them to track facts, constraints, and decisions.
Tools Available
- memory.add_fact: Record raw data (numbers, names, attributes)
- memory.add_constraint: Record rules and requirements
- memory.record_decision: Record choices, commitments, and confirmations
- memory.query: Search memory before making recommendations
- memory.get_context: Get full memory state
- memory.trace_provenance: Trace where a fact came from
- memory.time_travel: View memory at a past point
- memory.simulate_timeline: "What if" counterfactual analysis
Facts vs Decisions
Facts = raw data, attributes, values
- "My budget is $4000" → fact (budget=4000)
- "I live in Tucson" → fact (location=Tucson)
- "I use a wheelchair" → fact (mobility=wheelchair)
Decisions = choices, confirmations, commitments
- "Let's go with April 10-20" → decision (user chose dates)
- "I'll take option 2" → decision (user selected)
- "Book the Hakone hotel" → decision (user committed)
- "Yes, that itinerary looks good" → decision (user confirmed)
Key rule: When the user CHOOSES or CONFIRMS something, record it as a decision, not just a fact update.
When to Record
Record facts for raw information:
- Amounts, budgets, prices, counts
- Places, destinations, locations
- Attributes (wheelchair type, dietary needs)
- Preferences as data points
Update facts when values change:
- "Actually, make that 8 people" → update guest_count fact
- "My budget changed to $3000" → update budget fact
- Any correction or change to previously recorded data
Record constraints for rules:
- "must have", "need", "require" → required constraint
- "can't", "won't", "avoid", "never" → prohibition constraint
- "prefer", "would like" → preferred constraint
Record decisions for choices:
- User confirms a date, option, or plan
- User says "yes", "let's do it", "go with that"
- User commits to booking/reserving something
- You make a recommendation they accept
Example Flow
User: "My budget is $5000"
→ add_fact(key="budget", value="5000")
User: "Actually, my budget is only $3000 now"
→ add_fact(key="budget", value="3000") # Updates existing fact
User: "Planning for 6 guests"
→ add_fact(key="guest_count", value="6")
User: "Two more people are coming, so 8 total"
→ add_fact(key="guest_count", value="8") # Updates existing fact
User: "I need wheelchair accessible places"
→ add_constraint(text="wheelchair accessible required", priority="required")
User: "Let's do April 12-19"
→ record_decision(text="Travel dates: April 12-19, 2026", rationale="User confirmed dates", topic="dates")
Important
- Be proactive: Record facts immediately when the user mentions them, don't wait to be asked
- Update facts when values change - call add_fact again with the same key
- Record decisions for ANY user confirmation or choice
- Check constraints before recording decisions (violations will be blocked)
- Use query to refresh your memory before recommendations