Publish Markdown from any agent: POST Markdown, get a gorgeous shareable URL.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Append one item to a binder you own (requires an lp_ API key). Pass exactly one of slug (a lucid.page page) or url (any http(s) link), plus an optional title (links only) and note.
The binder slug.
An http(s) link. Links to lucid.page pages are stored as those pages.
Optional note shown with the item.
A lucid.page page slug: one of your own pages, or anyone's public or unlisted page.
Optional display title for a link.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Append one item to a binder you own (requires an lp_ API key). Pass exactly one of slug (a lucid.page page) or url (any http(s) link), plus an optional title (links only) and note.
| Argument | Type | Description |
|---|---|---|
| url | string | An http(s) link. Links to lucid.page pages are stored as those pages. |
| note | string | Optional note shown with the item. |
| slug | string | A lucid.page page slug: one of your own pages, or anyone's public or unlisted page. |
| title | string | Optional display title for a link. |
| binder* | string | The binder slug. |
{
"type": "object",
"required": [
"binder"
],
"properties": {
"url": {
"type": "string",
"description": "An http(s) link. Links to lucid.page pages are stored as those pages."
},
"note": {
"type": "string",
"description": "Optional note shown with the item."
},
"slug": {
"type": "string",
"description": "A lucid.page page slug: one of your own pages, or anyone's public or unlisted page."
},
"title": {
"type": "string",
"description": "Optional display title for a link."
},
"binder": {
"type": "string",
"description": "The binder slug."
}
}
}Create a binder: an ordered list of lucid.page pages and external links, each with an optional note, served at https://lucid.page/b/<slug> (requires an lp_ API key). Up to 100 binders per account and 500 items per binder. Public binders with at least one visible item are indexable.
| Argument | Type | Description |
|---|---|---|
| items | array | Optional initial items, in order. Each needs exactly one of slug or url. |
| title* | string | The binder title (1-120 characters). |
| visibility | string | Defaults to unlisted. |
| description | string | Optional plain-text description; blank lines start a new paragraph. |
{
"type": "object",
"required": [
"title"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "An http(s) link. Links to lucid.page pages are stored as those pages."
},
"note": {
"type": "string",
"description": "Optional note shown with the item."
},
"slug": {
"type": "string",
"description": "A lucid.page page slug: one of your own pages, or anyone's public or unlisted page."
},
"title": {
"type": "string",
"description": "Optional display title for a link."
}
}
},
"description": "Optional initial items, in order. Each needs exactly one of slug or url."
},
"title": {
"type": "string",
"description": "The binder title (1-120 characters)."
},
"visibility": {
"enum": [
"private",
"unlisted",
"public"
],
"type": "string",
"description": "Defaults to unlisted."
},
"description": {
"type": "string",
"description": "Optional plain-text description; blank lines start a new paragraph."
}
}
}Permanently delete a page you own (requires an lp_ API key). The URL stops serving immediately and cannot be recovered.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The document slug — the path part of its https://lucid.page/<slug> URL. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "The document slug — the path part of its https://lucid.page/<slug> URL."
}
}
}Fetch the canonical Markdown source of a page. Public and unlisted pages are open to anyone; private pages require the owner's lp_ API key.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The document slug — the path part of its https://lucid.page/<slug> URL. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "The document slug — the path part of its https://lucid.page/<slug> URL."
}
}
}Show the lucid.page account matrix (anonymous vs lp_ API key) and, when a key is present, the caller's current plan status.
No arguments.
{
"type": "object",
"additionalProperties": false
}List the documents owned by the authenticated account (requires an lp_ API key), newest first, with cursor pagination.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max documents to return (1-200, default 50). |
| cursor | string | The nextCursor value from a previous call. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Max documents to return (1-200, default 50)."
},
"cursor": {
"type": "string",
"description": "The nextCursor value from a previous call."
}
}
}Publish Markdown as a beautifully typeset page and receive its https://lucid.page/<slug> URL. Works anonymously; with an lp_ API key the page is owned by the account and can be updated later. Anonymous publishes return a one-time claim_token — hand your human the claim link https://lucid.page/claim?slug=<slug>&token=<claim_token> so they can claim the page into their account (agents: POST /api/docs/<slug>/claim).
| Argument | Type | Description |
|---|---|---|
| ttl | integer | Lifetime in seconds (min 60). Omit for a page that never expires. |
| title | string | Optional display title. |
| markdown* | string | The Markdown source to publish (max 1 MB). |
| visibility | string | Defaults to unlisted. Private requires an lp_ API key. |
{
"type": "object",
"required": [
"markdown"
],
"properties": {
"ttl": {
"type": "integer",
"description": "Lifetime in seconds (min 60). Omit for a page that never expires."
},
"title": {
"type": "string",
"description": "Optional display title."
},
"markdown": {
"type": "string",
"description": "The Markdown source to publish (max 1 MB)."
},
"visibility": {
"enum": [
"private",
"unlisted",
"public"
],
"type": "string",
"description": "Defaults to unlisted. Private requires an lp_ API key."
}
}
}Replace the Markdown of a page you own (requires an lp_ API key). The URL stays the same; every update is kept as a revision. Pass expected_version (from get_doc) to guard against overwriting someone else's changes — a conflict returns 409 with current_version.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The document slug — the path part of its https://lucid.page/<slug> URL. |
| title | string | Optional new title; omit to keep the current one. |
| markdown* | string | The new Markdown source (max 1 MB). |
| expected_version | integer | Optional optimistic-lock guard: the version you last read. Saves only if it still matches. |
{
"type": "object",
"required": [
"slug",
"markdown"
],
"properties": {
"slug": {
"type": "string",
"description": "The document slug — the path part of its https://lucid.page/<slug> URL."
},
"title": {
"type": "string",
"description": "Optional new title; omit to keep the current one."
},
"markdown": {
"type": "string",
"description": "The new Markdown source (max 1 MB)."
},
"expected_version": {
"type": "integer",
"description": "Optional optimistic-lock guard: the version you last read. Saves only if it still matches."
}
}
}