ru — showing the en original.Connecting an assistant
The server URL, what each client needs, and what to do when a client asks for a client ID
Everything on this page comes down to one address:
https://mcp.libretimes.io/mcpGive that to your assistant, sign in with your LibreTimes account, approve what it may do, and it is connected. There is nothing to install and no API key to generate or store.
Signing in
Connecting sends you to the ordinary LibreTimes sign-in page — the same one you use for the website, with the same password and the same two-factor step if you have one set up. You are then shown what the assistant is asking permission for and can approve or refuse.
You are not handing the assistant your password, and it never sees it. It receives a limited token that carries only the permissions you approved, and you can revoke it from your account at any time without changing your password.
Clients that need only the URL
Some clients can introduce themselves to us automatically. For these, adding the address above is the whole setup.
| Client | Where to add it |
|---|---|
| VS Code | Add an MCP server in settings, paste the URL |
| Zed | Add a context server, paste the URL |
Clients that also ask for a client ID
Other clients need to be told who they are before they can start. When a client asks for a client ID, use:
libretimes-agentLeave any "client secret" field empty — these clients are public and have no
secret. If you are asked for an authorization or token URL, the client will
normally discover both from the server address on its own; if it does not, it is
asking for our sign-in server, https://auth.libretimes.io.
This path works for Claude Code, Cursor, the Gemini CLI, and any other client that lets you fill in an OAuth client ID by hand.
Choosing what it may do
The first time you connect, the assistant asks only to read: searching,
reading a work, looking at a profile or a course, and reading your own profile
and CV back (profile:read). Nothing it can do with that changes anything.
Each kind of writing is a separate permission, and the assistant asks for it the first time it tries to write — you see the sign-in page again, now asking for that one permission, and can refuse it:
| Permission | Lets the assistant |
|---|---|
cv:write | Fill in and update your CV |
publications:write | Create and edit your drafts |
collections:write | Create a private course and order its lectures |
library:write | Save works to your library, and manage your citations |
attachments:write | Upload a file to one of your drafts |
An assistant you have connected to tidy your bibliography has no reason to
hold cv:write, and it will never ask for it unless it tries to edit your CV.
Refusing costs you nothing: the read tools keep working.
If it will not connect
"Client not found", or sign-in never appears. The client needs the client ID from the section above and has not been given one.
Reading works, but writing fails every time. The assistant should send you back to sign in for the permission the write needs. A client that does not do that cannot write here; reconnect it and approve the permission when asked.
Your assistant is not listed here. Any client that speaks MCP over HTTP and
signs in with OAuth will work. The two sections above are the only two shapes
there are: either it discovers who it is, or you paste libretimes-agent.
Revoking access
A connected assistant shows up under Settings -> Security in the active sessions list, alongside your browsers. Ending that session cuts the assistant off immediately; it does not wait for its token to expire. Nothing it drafted is deleted — drafts are yours.
Sessions are listed by IP address and last activity rather than by name, so if you have several connected and cannot tell which is which, "log out everywhere" ends all of them and you reconnect the one you meant to keep.