linklore
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| doc_flowC | [read-only] doc_flow(id) — renders a doc's flowLink chain in order (journey view). |
| doc_mapC | [read-only] doc_map(oneline) — overview of the full doc link network. |
| briefB | [read-only] project dashboard — call at the start of every session. external source 🔔 = a new push has arrived. receive it with import(openbox=). options: dismiss(turn off a nudge), undismiss(restore it), help. |
| initB | init(blueprint='') — set up .linklore in this directory (starts local footprint memory).
project_dir: set up .linklore in another folder (creating a boundary is init-only). setting up there doesn't change this session's base project — to keep working there, config(action='pin'). |
| configC | Project settings (openbox source options) + identity + session pin. Sharing lives in separate tools: send/import (openbox) - member (members/subscriptions). actions: sources/option/sync/forget/whoami/version/pin/unpin/sessions/projects/delete_project. help=true for details. |
| statusA | status() — detects code↔doc sync drift (git-diff based). Not for reading lore/doc content → use show()/brief(). since, action(''|'ack'|'reset'), ack, reset, help. (2026-07-09: the dead params auto=/sync= and ack_all= were removed — ack='all' does the same job, matching the reset='all' convention) |
| linkA | link(a, b, action=) — connect two items (dc↔dc / lr↔lr / dc↔lr auto-detected, prefix matching OK). a/b may also be a file path or an existing title — non-id-shaped values are auto-classified (same as links= in add/edit). Undo (inverse) = unlink(a, b) — same arguments. action has 3 modes (extends the member/config(action=) convention):
|
| unlinkB | unlink(a, b, action=) — disconnect two items. Symmetric with link() (action='' default|'flow', also accepts file paths the same way). |
| doc_rollupB | [read-only] doc_rollup(id) — collects lore linked to a doc into an AI-summary draft. |
| cleanupC | [read-only] cleanup(type='lore'|'doc') threshold(=0.85), status(=open), help - duplicate candidates. |
| doctorA | doctor() - checks project data integrity (oldId/newId, files[] paths, link targets). doctor() read-only diagnostics (default) doctor(action='fix') automatically repairs any issues found |
| showB | [read-only] show() — target/scope: query·type·openbox / filters: tag·level·status·file·period('Nh' hours|'Nd' days|'YYYY-MM-DD' UTC)·source_id / result shape: sort·max·oneline·superseded / mode: action / plumbing: help |
| logD | [read-only] log() id, period('Nh' hours|'Nd' days|'YYYY-MM-DD' UTC), sort=oldest, max, plumbing: help |
| localA | local(action, id, to='workspace-path', from_dir='') — directly operate on another LinkLore project on the same disk (works on both lore and doc). action='move' move to another workspace (source deleted; createdAt/files/tags/level/status/body/items preserved) action='copy' copy to another workspace (source kept, same id retained — rejected if the target already has it) action='show' view another workspace's content (read-only, from_dir required — query/tag/type/status passed through) ⚠️ For 2+ items, the default is preview only — use confirm=True to execute (a single item runs immediately). cf. sharing across a server/team is the openbox (send/import) — local() never talks to a backend, it only works within your own disk. ⚠️ only between projects you own — if the target is genuinely someone else's/another team's, don't use local() just because you have filesystem access; go through send() (the recipient must import() — a review gate). |
| memberA | member(action) — openbox (shared space) members and permissions. An openbox is a project's shared space (invite-only, not 'public').
|
| pushA | push(id) — upload the home base to my server (visible to me only). Like git push: local → server. Not for sharing — to share with others use send (push has no target argument by design, so it cannot share).
|
| pullA | pull(id) — restore the home base from my server (works across devices too). Like git pull: server → local. To bring things from an openbox use import — pull is for my server only. If local is newer/same it's skipped; a real conflict (both sides changed) is shown separately (local kept).
|
| sendA | send(id, openbox) — share a footprint to an openbox (visible to others). Both id and openbox are required.
|
| importA | import(id, openbox) — bring an openbox's footprints into the home base (the receiver picks what).
|
| reportB | report(msg) — send feedback/a bug straight to the team. Works whether or not you're logged in (if logged in, your identity is attached automatically — never forced). |
| addB | add(type='lore'|'doc', title, msg=) — lore=journal entry/decision, doc=spec/plan. 2 linking args: links=unified (code files·dc/lr id·title auto-classified, flow=True for a doc chain) · push_to=send to a box (not a link). items=['a','b']→checklist(0/N, doc only) · items=[{...}]→batch creation(both lore·doc — use this for bulk, quieter nudges than N single calls). level 1~4(lore): 1=note 2=verified 3=pinned(shown in brief) 4=global(all projects). details help=True |
| editA | edit(id, action=, ...) — 4 write modes (action). If action is omitted, defaults to append (msg alone works too). Write modes (action, tool option = behavior match):
(action= is one of append|section|overwrite|supersede. Unspecified('') means append.) Other:
|
| rmA | rm — unified delete. Target is chosen by argument (action= is an explicit alternative, auto-detected by which argument is present when omitted). Deleting items (lore/doc) — id is a single value or a list (batch)
Taking down something you sent (reverse of push/send, doesn't touch the source of truth)
Removing a member (openbox owner only)
Deleting an entire openbox (shared space) (owner, unrecoverable → always asks to confirm)
|
| restoreB | restore(id) — recover trashed lore/doc. no id lists the trash. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/linklore/linklore-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server