quillink-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| QUILLINK_TOKEN | No | A Personal Access Token — bypasses OAuth login entirely | |
| QUILLINK_API_BASE | No | Override the API base URL (default: production) | |
| QUILLINK_CLIENT_ID | No | Override the OAuth client id used by `login` |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_notesA | List the caller's notes. folder_id="" lists notes with no folder; omit it to list across all folders. status is "active" or "trashed". tags filters to notes with any of them, or every one of them with tag_match="all". Locked notes are included but their body is withheld (null). |
| get_noteA | Get a single note by id. Fails with 403 if it isn't owned by the caller, 404 if it doesn't exist. |
| search_notesA | Full-text search over the caller's active notes' titles and body
text, optionally only within notes carrying any of |
| get_note_statsA | Aggregate stats: total active notes, total storage bytes used, pinned-note count, and a created-at histogram by day. |
| get_note_backlinksA | List notes that link to note_id, each with an id/title/snippet. Fails with 403 if note_id isn't owned by the caller, 404 if it doesn't exist. |
| get_related_notesA | Tag/link-similarity "you might want to link these" suggestions for note_id: other notes/canvases ranked by a similarity score, with the tags they share. Requires a Pro plan, same gate as note_graph/ note_backlinks. Fails with 403 if note_id isn't owned by the caller, 404 if it doesn't exist. |
| get_note_graphA | Local link graph centered on note_id: nodes (id/title/locked) and edges (source -> target) for its direct links and backlinks. hops=1 is direct neighbors only; hops=2 also expands each neighbor's own neighbors one level further. |
| get_global_note_graphA | Whole-account link graph, paginated: nodes and edges across every note that has at least one link (in or out) or is locked. Pass the response's next_cursor back in to fetch the next page; None means the graph is exhausted. Requires a Pro plan, same gate as the web app's Global Graph feature. |
| get_graph_analysisA | Community detection + importance ranking over the caller's whole account graph. community_algo: "louvain" (default), "label_propagation", "greedy_modularity", or "connected_components". centrality_algo: "pagerank" (default), "betweenness", "degree", or "closeness". Requires a Pro plan, same gate as get_global_note_graph. On a very large graph the response may note that a cheaper approximation was substituted for the exact algorithm requested. |
| export_noteB | A single note rendered as a standalone Markdown file (title as an H1, followed by the body). A locked note's body can't be exported without its password -- returns just the title with a note explaining why. Fails with 403/404 same as get_note. |
| export_notesA | Bulk export of the caller's active notes -- for backups/scripting, not paged browsing (use list_notes for that). format="ndjson" (default) returns one full note object per line; format="markdown" returns one "# Title" block per note, concatenated into a single document. Locked notes are included with their body withheld, same as list_notes. |
| list_attachmentsA | List a note's file attachments. Fails with 403 if note_id isn't owned by the caller, 404 if it doesn't exist. |
| get_attachment_download_urlA | A short-lived signed URL to download one attachment's file bytes directly (not through this tool) -- expires_in seconds from now. A ZK/ Vault/lock-encrypted note's attachment is still opaque ciphertext at that URL; there's no decrypt path here, same as a locked note's body. |
| list_note_recipientsA | List who a note (owned by the caller) has been shared with. |
| list_shared_notesA | List notes that have been shared with the caller by someone else (received copies), most recently shared first. |
| list_foldersC | List the caller's notebooks/folders. |
| get_folderA | Get a single folder by id. |
| list_tagsA | List every tag used across the caller's active notes. |
| list_tag_countsA | Every tag with how many active notes and canvases carry it, most-used first. |
| get_organizationA | Get the caller's Team-plan organization: name, plan tier, seat allocations, member count, and any active alerts. 404s if the caller doesn't belong to a Team-plan organization. |
| list_organization_membersA | List the caller's organization's members. A plain member sees only their own entry -- other members' emails/names/roles are admin/owner- only information, scoped the same way the web app scopes it. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 21 tools
Most tools are clearly scoped by resource and operation, but the graph family (get_note_backlinks, get_related_notes, get_note_graph, get_global_note_graph, get_graph_analysis) and the tag pair (list_tags vs list_tag_counts) have overlapping boundaries that could cause misselection without careful reading. The descriptions mostly disambiguate them, so only minor confusion remains.
All names use snake_case with a consistent verb_noun shape (get_*, list_*, search_*, export_*). No mixed conventions or vague verbs; prefixes consistently signal the operation type.
21 tools is on the heavy side for a note-app integration, especially with separate local/global graph tools and overlapping tag-listing variants. The count is not extreme, but consolidation would improve scoping.
Read coverage is broad across notes, folders, tags, sharing, graphs, export, attachments, and organization data. However, there are no create, update, delete, move, or share operations, leaving common note lifecycle workflows as dead ends.