Persistent memory layer for AI agents via Ensue Memory Network API. Use when users ask to remember, recall, search memories, manage permissions, subscribe to updates, or ask what they can do with Ensue. Triggers on "remember this", "recall", "search memories", "update memory", "list keys", "share", "subscribe to", "permissions", "what can I do with ensue", or any persistent storage request.
Inherits all available tools
Additional assets for this skill
This skill inherits all available tools. When active, it can use any tool Claude has access to.
Dynamic memory service accessed via curl.
NEVER use these for ANY Ensue query (including capability questions):
listMcpResourceslistMcpToolsmcp__* toolsONLY use curl as described below. This ensures consistent behavior and dynamic schema discovery.
Step 1: Get API key
Check for the ENSUE_API_KEY environment variable:
echo $ENSUE_API_KEY
If empty or not set, ask the user to provide their API key or set the environment variable:
"I need your Ensue API key to continue. You can either:
- Provide it now, or
- Set the environment variable:
export ENSUE_API_KEY=your_keyGet an API key from https://www.ensue-network.ai/dashboard"
Step 2: List available tools (REQUIRED before any tool call)
curl -X POST https://api.ensue-network.ai/ \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
This returns tool names, descriptions, and input schemas. Never skip this step.
Step 3: Call the appropriate tool
curl -X POST https://api.ensue-network.ai/ \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"<tool_name>","arguments":{<args>}},"id":1}'
Use the schema from Step 2 to construct correct arguments.
When performing multiple operations (e.g., creating several memories, searching multiple keys, or any repetitive task), write a bash script instead of executing curl commands one at a time. This is more efficient and reduces latency.
Example: Creating multiple memories in batch
#!/bin/bash
API_KEY="$ENSUE_API_KEY"
API_URL="https://api.ensue-network.ai/"
# Array of memories to create
declare -a memories=(
'{"key":"notes/meeting-jan","value":"Discussed Q1 roadmap"}'
'{"key":"notes/meeting-feb","value":"Budget review completed"}'
'{"key":"notes/meeting-mar","value":"Launched new feature"}'
)
for memory in "${memories[@]}"; do
key=$(echo "$memory" | jq -r '.key')
value=$(echo "$memory" | jq -r '.value')
curl -s -X POST "$API_URL" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d "{\"jsonrpc\":\"2.0\",\"method\":\"tools/call\",\"params\":{\"name\":\"create_memory\",\"arguments\":{\"key\":\"$key\",\"value\":\"$value\"}},\"id\":1}"
echo "Created: $key"
done
Example: Batch search across multiple keys
#!/bin/bash
API_KEY="$ENSUE_API_KEY"
API_URL="https://api.ensue-network.ai/"
keys=("notes/meeting-jan" "notes/meeting-feb" "preferences/theme")
for key in "${keys[@]}"; do
echo "=== $key ==="
curl -s -X POST "$API_URL" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d "{\"jsonrpc\":\"2.0\",\"method\":\"tools/call\",\"params\":{\"name\":\"get_memory\",\"arguments\":{\"key\":\"$key\"}},\"id\":1}" | jq '.result'
done
When to use batch scripts:
| User says | Action |
|---|---|
| "what can I do", "capabilities", "help" | Steps 1-2 only (summarize tools/list response) |
| "remember...", "save...", "store..." | create_memory |
| "what was...", "recall...", "get..." | get_memory or search_memories |
| "search for...", "find..." | search_memories |
| "update...", "change..." | update_memory |
| "delete...", "remove..." | delete_memory ⚠️ |
| "list keys", "show memories" | list_keys |
| "share with...", "give access..." | share |
| "revoke access...", "remove user..." | revoke_share ⚠️ |
| "who can access...", "permissions" | list_permissions |
| "notify when...", "subscribe..." | subscribe_to_memory |
Before executing operations marked with ⚠️, warn the user and request confirmation:
Before calling delete_memory (single or batch):
Example:
⚠️ Deleting 3 memories:
notes/jan,notes/feb,notes/mar. This cannot be undone. Proceed?
Before calling revoke_share:
Example:
⚠️ Revoking access for
alice@example.comtoproject/secrets. They will immediately lose access. Proceed?
Use hierarchical paths: category/subcategory/name
Examples: preferences/theme, project/api-keys, notes/meeting-2024-01