All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 55s
- tools.js: expose type enum ['text','markdown','richtext','checklist'] in create_note & update_note - default changed from 'text' to 'richtext' (matches Prisma schema) - isMarkdown marked as deprecated in favour of type='markdown' - N8N-CONFIG.md: full French → English translation - N8N-WORKFLOWS.md: full French → English translation - N8N-EXAMPLES.md: new comprehensive examples for all 22 MCP tools + workflow patterns - n8n-workflow-mcp-reminder-bot.json: cron → get_due_reminders → Telegram → mark done - n8n-workflow-mcp-email-to-note.json: IMAP → create_note → urgent Slack alert - n8n-workflow-mcp-daily-digest.json: 8AM cron → notes + reminders digest → save + Slack - n8n-workflow-mcp-webhook-to-note.json: universal webhook → create_note → respond - notebooks-list.tsx: fix truncated notebook names (pe-24→pe-14), replace hover overlay with Tooltip
138 lines
6.1 KiB
JSON
138 lines
6.1 KiB
JSON
{
|
|
"name": "Memento MCP — Daily Digest",
|
|
"nodes": [
|
|
{
|
|
"parameters": {
|
|
"rule": {
|
|
"interval": [
|
|
{
|
|
"field": "cronExpression",
|
|
"expression": "0 0 8 * * 1-5"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"id": "schedule-trigger",
|
|
"name": "Daily 8AM (Mon-Fri)",
|
|
"type": "n8n-nodes-base.scheduleTrigger",
|
|
"typeVersion": 1.2,
|
|
"position": [240, 300]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"method": "POST",
|
|
"url": "http://memento-mcp:3001/mcp",
|
|
"sendHeaders": true,
|
|
"headerParameters": {
|
|
"parameters": [
|
|
{ "name": "Content-Type", "value": "application/json" },
|
|
{ "name": "x-api-key", "value": "={{ $vars.MEMENTO_API_KEY }}" }
|
|
]
|
|
},
|
|
"sendBody": true,
|
|
"specifyBody": "json",
|
|
"jsonBody": "{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"tools/call\",\n \"params\": {\n \"name\": \"get_notes\",\n \"arguments\": {\n \"limit\": 30,\n \"includeArchived\": false\n }\n }\n}"
|
|
},
|
|
"id": "mcp-get-notes",
|
|
"name": "MCP — Get Recent Notes",
|
|
"type": "n8n-nodes-base.httpRequest",
|
|
"typeVersion": 4.2,
|
|
"position": [480, 300]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"method": "POST",
|
|
"url": "http://memento-mcp:3001/mcp",
|
|
"sendHeaders": true,
|
|
"headerParameters": {
|
|
"parameters": [
|
|
{ "name": "Content-Type", "value": "application/json" },
|
|
{ "name": "x-api-key", "value": "={{ $vars.MEMENTO_API_KEY }}" }
|
|
]
|
|
},
|
|
"sendBody": true,
|
|
"specifyBody": "json",
|
|
"jsonBody": "{\n \"jsonrpc\": \"2.0\",\n \"id\": 2,\n \"method\": \"tools/call\",\n \"params\": {\n \"name\": \"get_due_reminders\",\n \"arguments\": {}\n }\n}"
|
|
},
|
|
"id": "mcp-get-reminders",
|
|
"name": "MCP — Get Due Reminders",
|
|
"type": "n8n-nodes-base.httpRequest",
|
|
"typeVersion": 4.2,
|
|
"position": [480, 480]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"jsCode": "const notesResponse = $('MCP — Get Recent Notes').item.json;\nconst remindersResponse = $('MCP — Get Due Reminders').item.json;\n\nconst notes = JSON.parse(notesResponse.result?.content?.[0]?.text || '[]');\nconst reminders = JSON.parse(remindersResponse.result?.content?.[0]?.text || '[]');\n\nconst today = new Date().toLocaleDateString('en-GB', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });\n\nconst pinnedNotes = notes.filter(n => n.isPinned).slice(0, 5);\nconst recentNotes = notes.filter(n => !n.isPinned).slice(0, 10);\n\nlet digest = `# 📋 Daily Digest — ${today}\\n\\n`;\n\nif (reminders.length > 0) {\n digest += `## ⏰ Reminders Due (${reminders.length})\\n\\n`;\n reminders.forEach(r => {\n const time = new Date(r.reminder).toLocaleTimeString('en-GB', { hour: '2-digit', minute: '2-digit' });\n digest += `- **${r.title || 'Untitled'}** @ ${time}\\n`;\n });\n digest += '\\n';\n}\n\nif (pinnedNotes.length > 0) {\n digest += `## 📌 Pinned Notes (${pinnedNotes.length})\\n\\n`;\n pinnedNotes.forEach(n => {\n digest += `- **${n.title || 'Untitled'}**\\n`;\n });\n digest += '\\n';\n}\n\ndigest += `## 📝 Recent Notes (${recentNotes.length})\\n\\n`;\nrecentNotes.forEach(n => {\n const date = new Date(n.updatedAt).toLocaleDateString('en-GB');\n digest += `- ${n.title || 'Untitled'} *(${date})*\\n`;\n});\n\nreturn [{ json: { digest, noteCount: notes.length, reminderCount: reminders.length, today } }];"
|
|
},
|
|
"id": "build-digest",
|
|
"name": "Build Digest",
|
|
"type": "n8n-nodes-base.code",
|
|
"typeVersion": 2,
|
|
"position": [720, 390]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"method": "POST",
|
|
"url": "http://memento-mcp:3001/mcp",
|
|
"sendHeaders": true,
|
|
"headerParameters": {
|
|
"parameters": [
|
|
{ "name": "Content-Type", "value": "application/json" },
|
|
{ "name": "x-api-key", "value": "={{ $vars.MEMENTO_API_KEY }}" }
|
|
]
|
|
},
|
|
"sendBody": true,
|
|
"specifyBody": "json",
|
|
"jsonBody": "={\n \"jsonrpc\": \"2.0\",\n \"id\": 3,\n \"method\": \"tools/call\",\n \"params\": {\n \"name\": \"create_note\",\n \"arguments\": {\n \"title\": \"Daily Digest — {{ $json.today }}\",\n \"content\": {{ JSON.stringify($json.digest) }},\n \"isMarkdown\": true,\n \"color\": \"teal\",\n \"isPinned\": false,\n \"labels\": [\"digest\", \"auto\"]\n }\n }\n}"
|
|
},
|
|
"id": "mcp-save-digest",
|
|
"name": "MCP — Save Digest as Note",
|
|
"type": "n8n-nodes-base.httpRequest",
|
|
"typeVersion": 4.2,
|
|
"position": [960, 390]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"channel": "general",
|
|
"text": "📋 *Daily Digest ready!*\n\n📝 {{ $('Build Digest').item.json.noteCount }} notes · ⏰ {{ $('Build Digest').item.json.reminderCount }} reminders\n\nView in Memento: http://memento:3000",
|
|
"additionalFields": { "parse_mode": "Markdown" }
|
|
},
|
|
"id": "slack-digest",
|
|
"name": "Slack — Share Digest",
|
|
"type": "n8n-nodes-base.slack",
|
|
"typeVersion": 2.1,
|
|
"position": [1200, 390],
|
|
"continueOnFail": true
|
|
}
|
|
],
|
|
"connections": {
|
|
"Daily 8AM (Mon-Fri)": {
|
|
"main": [
|
|
[
|
|
{ "node": "MCP — Get Recent Notes", "type": "main", "index": 0 },
|
|
{ "node": "MCP — Get Due Reminders", "type": "main", "index": 0 }
|
|
]
|
|
]
|
|
},
|
|
"MCP — Get Recent Notes": {
|
|
"main": [[{ "node": "Build Digest", "type": "main", "index": 0 }]]
|
|
},
|
|
"MCP — Get Due Reminders": {
|
|
"main": [[{ "node": "Build Digest", "type": "main", "index": 0 }]]
|
|
},
|
|
"Build Digest": {
|
|
"main": [[{ "node": "MCP — Save Digest as Note", "type": "main", "index": 0 }]]
|
|
},
|
|
"MCP — Save Digest as Note": {
|
|
"main": [[{ "node": "Slack — Share Digest", "type": "main", "index": 0 }]]
|
|
}
|
|
},
|
|
"pinData": {},
|
|
"settings": { "executionOrder": "v1" },
|
|
"staticData": null,
|
|
"tags": [{ "id": "memento-mcp", "name": "Memento MCP" }],
|
|
"triggerCount": 1,
|
|
"updatedAt": "2026-05-03T00:00:00.000Z",
|
|
"versionId": "1"
|
|
}
|