MCP server reference
Endpoint, authentication, scopes, tools and limits for ReadingTrack's remote MCP server.
#Endpoint
https://www.readingtrack.com/api/mcp
- Transport: Streamable HTTP (stateless, JSON responses).
- Protocol versions:
2025-03-26,2025-06-18,2025-11-25.
#Authentication
OAuth 2.1 authorization code flow with PKCE. Clients are pre-registered public clients: no client secret and no dynamic client registration.
| Item | Value |
|---|---|
| Authorization server metadata | /.well-known/oauth-authorization-server |
| Protected resource metadata | /.well-known/oauth-protected-resource/api/mcp |
| Authorize | /api/oauth/authorize |
| Token | /api/oauth/token |
| Revoke | /api/oauth/revoke |
| Access token lifetime | 1 hour |
| Refresh token | 30 days, rotated on each use |
#Registered clients
| Client ID | For |
|---|---|
readingtrack-claude | Claude (claude.ai and apps) and Claude Code (callback on localhost:8765) |
readingtrack-chatgpt | ChatGPT |
#Scopes
| Scope | Allows |
|---|---|
reading:write | Save articles and snippets. |
lists:read | List your reading lists (names and metadata only). |
lists:write | Create lists and add items to lists you own. |
#Tools
#save_article
Saves Markdown supplied by the user as a private AI article. Returns the reader URL. Scope: reading:write.
| Field | Required | Notes |
|---|---|---|
title | Yes | |
content_markdown | Yes | Saved exactly as given. |
source_platform | No | chatgpt, claude, mcp or manual |
source_url | No | |
tags | No | Up to 20 |
idempotency_key | No | Makes retries safe. |
#save_snippet
Saves an excerpt or code snippet. Same fields as save_article, but title is optional. Scope: reading:write.
#create_reading_list
Creates a private, ordered list of up to 100 items. Each item has exactly one of item_id (something already in the library), url, or content_markdown. Supports idempotency_key; if some items fail, the result says which, and the call can be resumed. Scope: lists:write.
#add_to_reading_list
Appends items to a list the user owns, by list_id. Items already in the list aren't duplicated. Scope: lists:write.
#get_reading_lists
Read-only. Returns the user's lists with pagination (limit 1–50, cursor). Never returns article bodies. Scope: lists:read.
#Limits
- About 250 KB of Markdown per item (hard maximum 1 MB).
- 60 requests per user per minute.
- Tools can't change list visibility; everything created through MCP is private.