lucid.page

Publish Markdown from any agent: POST Markdown, get a gorgeous shareable URL.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
96%
Integridad del esquema
90%
Calidad de los nombres
100%
Riesgo de envenenamiento
60%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (4)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainen publish_doc
  • MEDIUMTool description contains URL to non-standard domainen create_binder
  • LOWTool 'add_to_binder' description lacks action verben add_to_binder

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~2,026Tokens (definiciones de herramientas)
~2.1 KBTamaño de respuesta típico
Impacto moderado en la atención (1.58% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "lucid-page": {
      "url": "https://lucid.page/mcp"
    }
  }
}

Puntos de conexión remotos

https://lucid.page/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (8)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟡publish_doc(markdown, title, visibility, ttl)

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).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "markdown": {
      "type": "string",
      "description": "The Markdown source to publish (max 1 MB)."
    },
    "title": {
      "type": "string",
      "description": "Optional display title."
    },
    "visibility": {
      "type": "string",
      "enum": [
        "private",
        "unlisted",
        "public"
      ],
      "description": "Defaults to unlisted. Private requires an lp_ API key."
    },
    "ttl": {
      "type": "integer",
      "description": "Lifetime in seconds (min 60). Omit for a page that never expires."
    }
  },
  "required": [
    "markdown"
  ]
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "url": {
      "type": "string",
      "description": "The live page URL."
    },
    "visibility": {
      "type": "string",
      "enum": [
        "private",
        "unlisted",
        "public"
      ]
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "ISO timestamp, or null when the page never expires"
    },
    "claim_token": {
      "type": "string",
      "description": "One-time ownership token (anonymous publishes only). A human claims the page at https://lucid.page/claim?slug=<slug>&token=<claim_token>; agents claim with POST /api/docs/<slug>/claim."
    }
  },
  "required": [
    "slug",
    "url",
    "visibility",
    "expires_at"
  ]
}
🟡update_doc(slug, markdown, title, expected_version)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "The document slug — the path part of its https://lucid.page/<slug> URL."
    },
    "markdown": {
      "type": "string",
      "description": "The new Markdown source (max 1 MB)."
    },
    "title": {
      "type": "string",
      "description": "Optional new title; omit to keep the current one."
    },
    "expected_version": {
      "type": "integer",
      "description": "Optional optimistic-lock guard: the version you last read. Saves only if it still matches."
    }
  },
  "required": [
    "slug",
    "markdown"
  ]
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "revision_hash": {
      "type": "string",
      "description": "Content hash of the new revision"
    },
    "visibility": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "version": {
      "type": "integer",
      "description": "Monotonic save counter; pass as expected_version next time"
    }
  },
  "required": [
    "slug",
    "revision_hash",
    "visibility",
    "url"
  ]
}
🟢get_doc(slug)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "The document slug — the path part of its https://lucid.page/<slug> URL."
    }
  },
  "required": [
    "slug"
  ]
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "markdown": {
      "type": "string",
      "description": "The canonical Markdown source of the page"
    },
    "version": {
      "type": "integer",
      "description": "Current version; pass as expected_version to update_doc"
    }
  },
  "required": [
    "slug",
    "markdown"
  ]
}
🟢list_docs(limit, cursor)

List the documents owned by the authenticated account (requires an lp_ API key), newest first, with cursor pagination.

Esquema de entrada

{
  "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."
    }
  }
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "docs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "visibility": {
            "type": "string"
          },
          "view_count": {
            "type": "integer"
          },
          "updated_at": {
            "type": "string"
          },
          "expires_at": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "slug"
        ]
      }
    },
    "nextCursor": {
      "type": [
        "string",
        "null"
      ],
      "description": "Pass as the cursor argument for the next page; null when the listing is exhausted"
    }
  },
  "required": [
    "docs",
    "nextCursor"
  ]
}
🔴delete_doc(slug)

Permanently delete a page you own (requires an lp_ API key). The URL stops serving immediately and cannot be recovered.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "The document slug — the path part of its https://lucid.page/<slug> URL."
    }
  },
  "required": [
    "slug"
  ]
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "deleted": {
      "type": "string",
      "description": "Slug of the deleted page"
    }
  },
  "required": [
    "deleted"
  ]
}
🟡create_binder(title, description, visibility, items)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "description": "The binder title (1-120 characters)."
    },
    "description": {
      "type": "string",
      "description": "Optional plain-text description; blank lines start a new paragraph."
    },
    "visibility": {
      "type": "string",
      "enum": [
        "private",
        "unlisted",
        "public"
      ],
      "description": "Defaults to unlisted."
    },
    "items": {
      "type": "array",
      "description": "Optional initial items, in order. Each needs exactly one of slug or url.",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "description": "A lucid.page page slug: one of your own pages, or anyone's public or unlisted page."
          },
          "url": {
            "type": "string",
            "description": "An http(s) link. Links to lucid.page pages are stored as those pages."
          },
          "title": {
            "type": "string",
            "description": "Optional display title for a link."
          },
          "note": {
            "type": "string",
            "description": "Optional note shown with the item."
          }
        }
      }
    }
  },
  "required": [
    "title"
  ]
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "url": {
      "type": "string",
      "description": "The binder page URL, https://lucid.page/b/<slug>"
    },
    "visibility": {
      "type": "string",
      "enum": [
        "private",
        "unlisted",
        "public"
      ]
    },
    "item_count": {
      "type": "integer"
    }
  },
  "required": [
    "slug",
    "url",
    "visibility",
    "item_count"
  ]
}
🟡add_to_binder(binder, slug, url, title, note)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "binder": {
      "type": "string",
      "description": "The binder slug."
    },
    "slug": {
      "type": "string",
      "description": "A lucid.page page slug: one of your own pages, or anyone's public or unlisted page."
    },
    "url": {
      "type": "string",
      "description": "An http(s) link. Links to lucid.page pages are stored as those pages."
    },
    "title": {
      "type": "string",
      "description": "Optional display title for a link."
    },
    "note": {
      "type": "string",
      "description": "Optional note shown with the item."
    }
  },
  "required": [
    "binder"
  ]
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "binder": {
      "type": "string",
      "description": "The binder slug"
    },
    "url": {
      "type": "string",
      "description": "The binder page URL"
    },
    "item_id": {
      "type": "string",
      "description": "Id of the added item"
    },
    "item_count": {
      "type": "integer"
    }
  },
  "required": [
    "binder",
    "url",
    "item_id",
    "item_count"
  ]
}
🟢get_limits

Show the lucid.page account matrix (anonymous vs lp_ API key) and, when a key is present, the caller's current plan status.

Esquema de entrada

{
  "type": "object",
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "plans": {
      "type": "object",
      "description": "Account matrix: anonymous, with_api_key, pro_team"
    },
    "account": {
      "type": "object",
      "properties": {
        "accountId": {
          "type": "string"
        },
        "plan": {
          "type": "string",
          "description": "free | pro | team"
        },
        "activeSubscription": {
          "type": "boolean"
        }
      },
      "required": [
        "accountId",
        "plan",
        "activeSubscription"
      ],
      "description": "Present when an lp_ API key was supplied"
    }
  },
  "required": [
    "plans"
  ]
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada8 herramientas
verificadoversión no registrada7 herramientas
verificadoversión no registrada7 herramientas