Notes Studio
notes_studioMake Notes in QVN: the knowledge bank, note formulas and AI generation. Writes QVN only, never Substack, except legacy_create with planned_date, which also makes a Substack draft. To publish, use substack_write.
Actions: search_knowledge_bank, formula_recommendations, generate (typical order), posting_formats (how to compose and post a note), hooks (opening lines, 10 per call); legacy_create, legacy_update, legacy_mark_published, legacy_dashboard, legacy_list_unscheduled (QVN draft database; being phased out; use the QVN note ID, not a Substack ID).
Call action help for parameters.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"action": "<action>"
},
"name": "notes_studio"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | search_knowledge_bank: max results, default 20, max 50. legacy_list_unscheduled: default 30, max 100. Checked per action, server side. | |
| query | No | search_knowledge_bank: keyword search across extracted content. Omit to browse all. | |
| action | Yes | The operation to perform. Current actions: search_knowledge_bank, formula_recommendations, generate, posting_formats, hooks, legacy_create, legacy_update, legacy_mark_published, legacy_dashboard, legacy_list_unscheduled. Pass "help" for the live list with parameters; actions added after you connected appear there and work without reconnecting. | |
| offset | No | hooks: pagination offset. Returns 10 hooks per call; for more, call again with offset += 10. | |
| content | No | legacy_create, legacy_update: HTML content. Supported tags: <p>, <strong>, <em>, <code>, <pre>, <blockquote>, <ul>, <ol>, <a>. @mentions in text are matched automatically. Do NOT use markdown. | |
| note_id | No | QVN note ID (NOT a Substack note ID). Required for legacy_update, legacy_mark_published. | |
| options | No | Extra parameters for an action whose params are not listed in this schema (see action "help"). Parameters that ARE listed in this schema must be passed at top level; here they are ignored. | |
| category | No | legacy_create, legacy_update: note category, one of Educational, Personal, Provoking, Question, Data, Entertaining, Useful Notes. hooks: filter the hook library by category (partial match); omit for all. | |
| mentions | No | legacy_create, legacy_update: people to @mention. Put @Label in the HTML content and the matching {id, label} here. | |
| note_url | No | legacy_mark_published: Substack URL of the published note (e.g. "https://substack.com/@handle/note/c-123456"). | |
| formula_id | No | generate: optional formula ID (from formula_recommendations). Auto-selected if omitted. | |
| content_type | No | legacy_create: "thought", "story", "data", or null. search_knowledge_bank, formula_recommendations: filter by content type (diagnostic, wisdom, contrarian, conditional_advice, metaphor, data_insight, framework, personal_story). | |
| formula_used | No | legacy_create: formula template name used (e.g. "pattern_reveal", "resource_list"). | |
| planned_date | No | legacy_create only: ISO datetime in UTC, e.g. "2026-02-15T15:23:00". Must be in the future. Also auto-creates a native Substack draft. | |
| planned_days | No | legacy_dashboard: days forward to look for planned notes. Default 30. | |
| article_title | No | legacy_create, legacy_update: source article title. | |
| attachment_url | No | legacy_create, legacy_update: article URL(s) to attach. Comma-separated, max 6, max 1000 chars. Pass empty string to clear. | |
| extraction_ids | No | generate: IDs of extracted content items to use (1–5, from search_knowledge_bank results). | |
| published_days | No | legacy_dashboard: days back to look for published notes. Default 30. |