{"id":"29c97b44-e1b5-4686-b070-fa90c0546811","entityType":"agent","slug":"clawhub-tristanh-readwise-mcp","name":"Readwise","canonicalUrl":"https://www.xpersona.co/agent/clawhub-tristanh-readwise-mcp","canonicalPath":"/agent/clawhub-tristanh-readwise-mcp","generatedAt":"2026-10-09T19:56:44.983Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"description":"Set up, OAuth-authenticate, and use the Readwise MCP server (mcp2.readwise.io/mcp) via the mcporter CLI. Use when a user asks to connect/auth Readwise MCP, reset or troubleshoot OAuth login (stale redirect ports, invalid state), verify the connection, or run Readwise tools through mcporter. Skill: Readwise Owner: TristanH Summary: Set up, OAuth-authenticate, and use the Readwise MCP server (mcp2.readwise.io/mcp) via the mcporter CLI. Use when a user asks to connect/auth Readwise MCP, reset or troubleshoot OAuth login (stale redirect ports, invalid state), verify the connection, or run Readwise tools through mcporter. Tags: latest:1.0.0 Version history: v1.0.0 | 2026-02-02T00:24:31.052Z | user Initial re","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 4/15/2026.","installCommand":"clawhub skill install kn7fxxmpkrq7ege5ee8j6vqvmd80ahks:readwise-mcp","sourceUrl":"https://clawhub.ai/TristanH/readwise-mcp","homepage":"https://clawhub.ai/TristanH/readwise-mcp","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/TristanH/readwise-mcp","kind":"source"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Set up, OAuth-authenticate, and use the Readwise MCP server (mcp2.readwise.io/mcp) via the mcporter CLI. Use when a user asks to connect/auth Readwise MCP, rese"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"stars":null,"forks":null,"downloads":1178,"packageName":null,"latestVersion":"1.0.0","tractionLabel":"1.2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-02-28T23:56:01.448Z","emptyReason":null},"lastUpdatedAt":"2026-04-15T00:45:39.800Z","lastCrawledAt":"2026-02-28T23:56:01.448Z","lastIndexedAt":null,"nextCrawlAt":"2026-03-01T23:56:01.448Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.0","createdAt":"2026-02-02T00:24:31.052Z","changelog":"Initial release of Readwise MCP (mcporter) skill. - Provides setup instructions for integrating Readwise MCP via the mcporter CLI, including OAuth authentication. - Documents troubleshooting steps for common OAuth login issues and connection verification. - Lists available Readwise and Reader tools accessible through mcporter, with usage patterns and JSON CLI examples. - Explains shortlist semantics and safety recommendations for workflows that perform write operations. - Points to recipes for common workflows like triaging, feed digests, recommendations, and tagging.","fileCount":3,"zipByteSize":5414}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install kn7fxxmpkrq7ege5ee8j6vqvmd80ahks:readwise-mcp","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tristanh-readwise-mcp/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tristanh-readwise-mcp/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tristanh-readwise-mcp/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tristanh-readwise-mcp/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tristanh-readwise-mcp/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tristanh-readwise-mcp/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T19:56:44.983Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tristanh-readwise-mcp/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tristanh-readwise-mcp/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tristanh-readwise-mcp/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tristanh-readwise-mcp/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"readme":"Skill: Readwise\n\nOwner: TristanH\n\nSummary: Set up, OAuth-authenticate, and use the Readwise MCP server (mcp2.readwise.io/mcp) via the mcporter CLI. Use when a user asks to connect/auth Readwise MCP, reset or troubleshoot OAuth login (stale redirect ports, invalid state), verify the connection, or run Readwise tools through mcporter.\n\nTags: latest:1.0.0\n\nVersion history:\n\nv1.0.0 | 2026-02-02T00:24:31.052Z | user\n\nInitial release of Readwise MCP (mcporter) skill.\n\n- Provides setup instructions for integrating Readwise MCP via the mcporter CLI, including OAuth authentication.\n- Documents troubleshooting steps for common OAuth login issues and connection verification.\n- Lists available Readwise and Reader tools accessible through mcporter, with usage patterns and JSON CLI examples.\n- Explains shortlist semantics and safety recommendations for workflows that perform write operations.\n- Points to recipes for common workflows like triaging, feed digests, recommendations, and tagging.\n\nArchive index:\n\nArchive v1.0.0: 3 files, 5414 bytes\n\nFiles: RECIPES.md (8541b), SKILL.md (4852b), _meta.json (131b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: readwise-mcp\ndescription: Set up, OAuth-authenticate, and use the Readwise MCP server (mcp2.readwise.io/mcp) via the mcporter CLI. Use when a user asks to connect/auth Readwise MCP, reset or troubleshoot OAuth login (stale redirect ports, invalid state), verify the connection, or run Readwise tools through mcporter.\n---\n\n# Readwise MCP (mcporter)\n\nThis skill is intentionally kept **short**.\nHigh-level workflows live in: `skills/readwise-mcp/RECIPES.md`.\n\n## Preflight\n\n```bash\ncommand -v mcporter && mcporter --version\n```\n\nEnsure you’re in the Clawdbot workspace root where `config/mcporter.json` lives.\n\n## Quick setup (first time)\n\n```bash\n# Add the server to the *project* config\nmcporter config add readwise https://mcp2.readwise.io/mcp \\\n  --auth oauth \\\n  --description \"Readwise MCP\"\n\n# Start OAuth login (will open a browser)\nmcporter auth readwise --reset\n```\n\n## Verify it works\n\n```bash\nmcporter list readwise --output json\nmcporter call readwise.reader_list_tags --args '{}' --output json\n```\n\n## Troubleshooting OAuth (common failure modes)\n\n### “Invalid OAuth state”\nCause: you approved in a stale browser tab (old auth attempt / old port).\n\nFix:\n- Close old Readwise OAuth tabs.\n- Re-run:\n\n```bash\nmcporter auth readwise --reset\n```\n\n### Redirecting to an old port even after reset\nCause: browser session reuse.\n\nFix:\n- Use Incognito/Private window.\n- Or copy the *new* authorize URL into a fresh profile.\n\n### “Waiting for browser approval…” but you already approved\nYou must land on:\n\n`http://127.0.0.1:<PORT>/callback?code=...&state=...`\n\nIf the redirect hits a different port, mcporter will keep waiting.\n\nTo find the expected port:\n\n```bash\ncat ~/.mcporter/credentials.json\n```\n\nLook for `redirect_uris` and ensure the browser redirect matches exactly.\n\n## Using the server\n\nGeneral pattern:\n\n```bash\nmcporter call readwise.<tool_name> --args '{...}' --output json\n```\n\nNotes:\n- `--args` must be valid JSON (prefer single quotes in shell).\n- For Reader locations: `new` = inbox, `later`, `shortlist`, `archive`, `feed` (RSS only).\n\n## Tool index (what’s available)\n- `readwise_search_highlights` — search **highlights** (vector + optional field filters)\n- `reader_search_documents` — search **Reader documents** (hybrid search)\n- `reader_create_document` — save a URL or HTML into Reader\n- `reader_list_documents` — list newest documents (and paginate)\n- `reader_get_document_details` — fetch a document’s full Markdown content\n- `reader_get_document_highlights` — fetch highlights for a document\n- `reader_list_tags` — list tag names\n- `reader_add_tags_to_document` / `reader_remove_tags_from_document`\n- `reader_add_tags_to_highlight` / `reader_remove_tags_from_highlight`\n- `reader_set_document_notes` / `reader_set_highlight_notes`\n- `reader_move_document` — move between inbox/later/shortlist/archive\n- `reader_edit_document_metadata` — edit metadata (including `seen`)\n- `reader_export_documents` — export Reader docs as a ZIP\n\n## Quick examples (most-used)\n\n### 1) Search highlights (idea-first / semantic)\n```bash\nmcporter call readwise.readwise_search_highlights \\\n  --args '{\"vector_search_term\":\"incentives\", \"limit\": 10}' \\\n  --output json\n```\n\n### 2) Search Reader documents (hybrid)\n```bash\nmcporter call readwise.reader_search_documents \\\n  --args '{\"query\":\"MCP\", \"limit\": 10}' \\\n  --output json\n```\n\n### 3) List newest docs in inbox (thin fields)\n```bash\nmcporter call readwise.reader_list_documents \\\n  --args '{\n    \"limit\": 10,\n    \"location\": \"new\",\n    \"response_fields\":[\"title\",\"author\",\"url\",\"category\",\"location\",\"created_at\",\"tags\"]\n  }' \\\n  --output json\n```\n\n### 4) Get a document’s full content (markdown)\n```bash\nmcporter call readwise.reader_get_document_details \\\n  --args '{\"document_id\":\"<id>\"}' \\\n  --output json\n```\n\n## Recipes\nSee: `skills/readwise-mcp/RECIPES.md`\n\nRecipe names:\n- Triage inbox (or Later fallback)\n- Feed digest (last day/week) + mark as seen\n- Quiz the user on a recently read archived document\n- Recommendations (build a reading profile → pick next best doc)\n- Library organizer (tagging + inbox-zero)\n\n## Shortlist semantics (important)\nReadwise supports a `shortlist` *location*, but many people use it differently.\n\nDefault assumption (most users): **inbox / later / archive**\n- “Shortlisting” means: add a `shortlist` tag AND move the doc to `later`.\n\nAlternative setup: **later / shortlist / archive**\n- “Shortlisting” means: move the doc to location=`shortlist`.\n\nSo: before applying any shortlisting action, confirm which setup the user uses.\nIf unknown, assume the default (tag + move to later).\n\n## Safety / defaults\nWhen a workflow proposes **writes** (tagging, moving, setting notes/seen), default to:\n- show a **read-only plan** first (counts + which docs)\n- ask for approval before applying changes\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7fxxmpkrq7ege5ee8j6vqvmd80ahks\",\n  \"slug\": \"readwise-mcp\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1769991871052\n}\n\nFile v1.0.0:RECIPES.md\n\n# Readwise MCP — Recipes (opinionated workflows)\n\nThese are higher-level workflows built from the Readwise MCP tools.\nUse them when you want to *do something useful* (triage, digest, quiz, recommend, organize), not when you’re just testing auth.\n\n---\n\n## 1) Triage inbox (or Later fallback)\nGoal: grab the newest 10 docs in **inbox** (location=`new`). If inbox is empty, fall back to **later**. Then present a punchy list: *worth reading now* vs *archive/ignore*.\n\nCommands:\n\n```bash\n# 1) Try inbox first\nmcporter call readwise.reader_list_documents \\\n  --args '{\n    \"limit\": 10,\n    \"location\": \"new\",\n    \"response_fields\":[\"title\",\"author\",\"url\",\"category\",\"location\",\"created_at\",\"tags\",\"summary\",\"reading_time\"]\n  }' --output json\n\n# 2) If results is empty (or count==0), fall back to later\nmcporter call readwise.reader_list_documents \\\n  --args '{\n    \"limit\": 10,\n    \"location\": \"later\",\n    \"response_fields\":[\"title\",\"author\",\"url\",\"category\",\"location\",\"created_at\",\"tags\",\"summary\",\"reading_time\"]\n  }' --output json\n```\n\nAssistant workflow:\n- For each doc: infer topic + expected value.\n- Output two buckets:\n  - **Read next (why + what to extract)**\n  - **Archive/skip (why)**\n- Offer actions:\n  - Move to `shortlist` or `later`\n  - Move to `archive`\n  - Add tags (if you have a tagging system)\n\nOptional actions:\n```bash\n# Move a doc\nmcporter call readwise.reader_move_document \\\n  --args '{\"document_id\":\"<id>\",\"location\":\"archive\"}' \\\n  --output json\n\n# Add tags\nmcporter call readwise.reader_add_tags_to_document \\\n  --args '{\"document_id\":\"<id>\",\"tag_names\":[\"to-read\",\"topic-ai\"]}' \\\n  --output json\n```\n\n---\n\n## 2) Feed digest (last day/week) + “mark as seen” option\nGoal: scan what landed recently, summarize the “news”, then let the user either (a) open/read, or (b) mark as **seen** (without archiving).\n\nNotes:\n- This is best for RSS/feed items, but can also work for *all* docs updated recently.\n- “Mark as seen” uses `reader_edit_document_metadata` with `seen: true`.\n\nCommands:\n\n```bash\n# Last 24h (use ISO datetime; pick your timezone and convert if needed)\nmcporter call readwise.reader_list_documents \\\n  --args '{\n    \"limit\": 50,\n    \"updated_after\": \"2026-02-01T00:00:00Z\",\n    \"response_fields\":[\"title\",\"author\",\"url\",\"category\",\"location\",\"updated_at\",\"created_at\",\"tags\",\"summary\"]\n  }' --output json\n\n# Alternative: restrict to RSS/feed items only\nmcporter call readwise.reader_list_documents \\\n  --args '{\n    \"limit\": 50,\n    \"updated_after\": \"2026-02-01T00:00:00Z\",\n    \"category\": \"rss\",\n    \"response_fields\":[\"title\",\"author\",\"url\",\"category\",\"location\",\"updated_at\",\"created_at\",\"tags\",\"summary\"]\n  }' --output json\n```\n\nAssistant workflow:\n- Cluster items into 5–10 themes.\n- Write a short digest: “what happened” + “why you might care”.\n- Offer per-item actions:\n  - **Read** (open URL)\n  - **Mark seen** (without moving/archiving)\n\nMark as seen:\n```bash\nmcporter call readwise.reader_edit_document_metadata \\\n  --args '{\"document_id\":\"<id>\",\"seen\":true}' \\\n  --output json\n```\n\n---\n\n## 3) Quiz the user on a recently read archived document\nGoal: pick a recent doc from `archive`, fetch full content, generate multiple-choice questions, and grade each answer.\n\nCommands:\n\n```bash\n# 1) List candidates (most recently added to archive)\nmcporter call readwise.reader_list_documents \\\n  --args '{\n    \"limit\": 10,\n    \"location\": \"archive\",\n    \"response_fields\":[\"title\",\"author\",\"url\",\"category\",\"created_at\",\"updated_at\"]\n  }' --output json\n\n# 2) Pull full content for the chosen doc\nmcporter call readwise.reader_get_document_details \\\n  --args '{\"document_id\":\"<id>\"}' \\\n  --output json\n```\n\nAssistant workflow:\n- Read the markdown content.\n- Generate 5–10 multiple-choice questions:\n  - 3 comprehension (what did it say)\n  - 2–3 application (what would you do with it)\n  - 1 “gotcha” (common misread)\n- Run an interactive loop:\n  - Ask Q1 → user answers (A/B/C/D)\n  - Grade immediately + explain\n  - Track score\n\nOptional: write a note back to the doc with the user’s score + missed concepts.\n```bash\nmcporter call readwise.reader_set_document_notes \\\n  --args '{\"document_id\":\"<id>\",\"notes\":\"Quiz score: 7/10. Missed: X, Y. Follow-up: Z.\"}' \\\n  --output json\n```\n\n---\n\n## 4) Recommendations (build a reading profile → pick next best doc)\nGoal: infer the user’s interests from highlights + documents, then recommend 1–3 items from their library that they’ll actually want *right now*.\n\nCommands (suggested building blocks):\n\n```bash\n# 1) Get a few recent docs across library for candidate recommendations\nmcporter call readwise.reader_list_documents \\\n  --args '{\n    \"limit\": 30,\n    \"response_fields\":[\"title\",\"author\",\"url\",\"category\",\"location\",\"created_at\",\"tags\",\"summary\",\"reading_time\"]\n  }' --output json\n\n# 2) Pull highlight signals by vector search across a few seed concepts\nmcporter call readwise.readwise_search_highlights \\\n  --args '{\"vector_search_term\":\"incentives\", \"limit\": 20}' \\\n  --output json\nmcporter call readwise.readwise_search_highlights \\\n  --args '{\"vector_search_term\":\"distribution\", \"limit\": 20}' \\\n  --output json\nmcporter call readwise.readwise_search_highlights \\\n  --args '{\"vector_search_term\":\"ai\", \"limit\": 20}' \\\n  --output json\n```\n\nAssistant workflow:\n- Build a lightweight profile:\n  - Top topics (5–10)\n  - Preferred formats (article/pdf/epub/video/podcast)\n  - “Energy level” (short vs deep)\n- Recommend items using constraints:\n  - If user has 10 minutes → short article\n  - If user wants deep work → epub/pdf\n  - If user is in skim mode → shortlist tweets/videos\n- Pitch each recommendation with:\n  - 1-line hook\n  - expected payoff\n  - suggested extraction question (what to highlight)\n\nOptional: move the winner to `shortlist`.\n```bash\nmcporter call readwise.reader_move_document \\\n  --args '{\"document_id\":\"<id>\",\"location\":\"shortlist\"}' \\\n  --output json\n```\n\n---\n\n## 5) Library organizer (tagging + inbox-zero + taxonomy enforcement)\nGoal: help the user organize their Reader library by tagging + moving items to `later` / `shortlist` / `archive` (and optionally marking items as seen).\n\nRecommended minimal taxonomy (keep it small):\n- **status**: `to-read`, `skim`, `reference`, `done`\n- **topic**: `topic-ai`, `topic-product`, `topic-marketing`, `topic-investing`, `topic-health`, …\n- **format** (optional): `format-podcast`, `format-video`, `format-epub`, `format-article`\n\nCommands (building blocks):\n\n```bash\n# 1) Pull a working set (start with inbox)\nmcporter call readwise.reader_list_documents \\\n  --args '{\n    \"limit\": 50,\n    \"location\": \"new\",\n    \"response_fields\":[\"title\",\"author\",\"url\",\"category\",\"location\",\"created_at\",\"tags\",\"summary\",\"reading_time\"]\n  }' --output json\n\n# 2) If inbox is empty, pull Later\nmcporter call readwise.reader_list_documents \\\n  --args '{\n    \"limit\": 50,\n    \"location\": \"later\",\n    \"response_fields\":[\"title\",\"author\",\"url\",\"category\",\"location\",\"created_at\",\"tags\",\"summary\",\"reading_time\"]\n  }' --output json\n\n# 3) Find untagged docs anywhere (tag=[\"\"] means documents with no tags)\nmcporter call readwise.reader_list_documents \\\n  --args '{\n    \"limit\": 50,\n    \"tag\": [\"\"],\n    \"response_fields\":[\"title\",\"author\",\"url\",\"category\",\"location\",\"created_at\",\"tags\",\"summary\"]\n  }' --output json\n```\n\nAssistant workflow (opinionated but effective):\n1) **Classify each doc quickly** (title/author/summary/category)\n   - **Read next** → move to `shortlist` + tag `to-read` + add 1–2 topic tags\n   - **Worth keeping, not now** → move to `later` + tag `reference` or `skim`\n   - **Low signal / already absorbed** → mark `seen:true` (optional) + move to `archive`\n2) **Enforce tag hygiene**\n   - kebab-case\n   - prefer a small controlled vocabulary; avoid inventing 20 near-duplicate tags\n3) **Batch proposal before writing**\n   - “I propose: shortlist 3, later 12, archive 20; add tags X/Y/Z. Approve?”\n\nWrite actions:\n```bash\n# Add tags\nmcporter call readwise.reader_add_tags_to_document \\\n  --args '{\"document_id\":\"<id>\",\"tag_names\":[\"to-read\",\"topic-ai\"]}' \\\n  --output json\n\n# Move between locations\nmcporter call readwise.reader_move_document \\\n  --args '{\"document_id\":\"<id>\",\"location\":\"later\"}' \\\n  --output json\n\n# Mark as seen (without moving)\nmcporter call readwise.reader_edit_document_metadata \\\n  --args '{\"document_id\":\"<id>\",\"seen\":true}' \\\n  --output json\n```\n\nOptional “inbox zero” loop:\n- Run organizer on `location:\"new\"` until empty.\n- When done, surface `shortlist` as the next reading queue.","readmeExcerpt":"Skill: Readwise Owner: TristanH Summary: Set up, OAuth-authenticate, and use the Readwise MCP server (mcp2.readwise.io/mcp) via the mcporter CLI. Use when a user asks to connect/auth Readwise MCP, reset or troubleshoot OAuth login (stale redirect ports, invalid state), verify the connection, or run Readwise tools through mcporter. Tags: latest:1.0.0 Version history: v1.0.0 | 2026-02-02T00:24:31.052Z | user Initial re","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"command -v mcporter && mcporter --version"},{"language":"bash","snippet":"# Add the server to the *project* config\nmcporter config add readwise https://mcp2.readwise.io/mcp \\\n  --auth oauth \\\n  --description \"Readwise MCP\"\n\n# Start OAuth login (will open a browser)\nmcporter auth readwise --reset"},{"language":"bash","snippet":"mcporter list readwise --output json\nmcporter call readwise.reader_list_tags --args '{}' --output json"},{"language":"bash","snippet":"mcporter auth readwise --reset"},{"language":"bash","snippet":"cat ~/.mcporter/credentials.json"},{"language":"bash","snippet":"mcporter call readwise.<tool_name> --args '{...}' --output json"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: readwise-mcp\ndescription: Set up, OAuth-authenticate, and use the Readwise MCP server (mcp2.readwise.io/mcp) via the mcporter CLI. Use when a user asks to connect/auth Readwise MCP, reset or troubleshoot OAuth login (stale redirect ports, invalid state), verify the connection, or run Readwise tools through mcporter.\n---\n\n# Readwise MCP (mcporter)\n\nThis skill is intentionally kept **short**.\nHigh-level workflows live in: `skills/readwise-mcp/RECIPES.md`.\n\n## Preflight\n\n```bash\ncommand -v mcporter && mcporter --version\n```\n\nEnsure you’re in the Clawdbot workspace root where `config/mcporter.json` lives.\n\n## Quick setup (first time)\n\n```bash\n# Add the server to the *project* config\nmcporter config add readwise https://mcp2.readwise.io/mcp \\\n  --auth oauth \\\n  --description \"Readwise MCP\"\n\n# Start OAuth login (will open a browser)\nmcporter auth readwise --reset\n```\n\n## Verify it works\n\n```bash\nmcporter list readwise --output json\nmcporter call readwise.reader_list_tags --args '{}' --output json\n```\n\n## Troubleshooting OAuth (common failure modes)\n\n### “Invalid OAuth state”\nCause: you approved in a stale browser tab (old auth attempt / old port).\n\nFix:\n- Close old Readwise OAuth tabs.\n- Re-run:\n\n```bash\nmcporter auth readwise --reset\n```\n\n### Redirecting to an old port even after reset\nCause: browser session reuse.\n\nFix:\n- Use Incognito/Private window.\n- Or copy the *new* authorize URL into a fresh profile.\n\n### “Waiting for browser approval…” but you already approved\nYou must land on:\n\n`http://127.0.0.1:<PORT>/callback?code=...&state=...`\n\nIf the redirect hits a different port, mcporter will keep waiting.\n\nTo find the expected port:\n\n```bash\ncat ~/.mcporter/credentials.json\n```\n\nLook for `redirect_uris` and ensure the browser redirect matches exactly.\n\n## Using the server\n\nGeneral pattern:\n\n```bash\nmcporter call readwise.<tool_name> --args '{...}' --output json\n```\n\nNotes:\n- `--args` must be valid JSON (prefer single quotes in shell).\n- For Reader locations: `new` = inbox, `later`, `shortlist`, `archive`, `feed` (RSS only).\n\n## Tool index (what’s available)\n- `readwise_search_highlights` — search **highlights** (vector + optional field filters)\n- `reader_search_documents` — search **Reader documents** (hybrid search)\n- `reader_create_document` — save a URL or HTML into Reader\n- `reader_list_documents` — list newest documents (and paginate)\n- `reader_get_document_details` — fetch a document’s full Markdown content\n- `reader_get_document_highlights` — fetch highlights for a document\n- `reader_list_tags` — list tag names\n- `reader_add_tags_to_document` / `reader_remove_tags_from_document`\n- `reader_add_tags_to_highlight` / `reader_remove_tags_from_highlight`\n- `reader_set_document_notes` / `reader_set_highlight_notes`\n- `reader_move_document` — move between inbox/later/shortlist/archive\n- `reader_edit_document_metadata` — edit metadata (including `seen`)\n- `reader_export_documents` — export Reader docs as a ZIP\n\n## Quick examples (most-used)\n\n"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7fxxmpkrq7ege5ee8j6vqvmd80ahks\",\n  \"slug\": \"readwise-mcp\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1769991871052\n}"},{"path":"RECIPES.md","content":"# Readwise MCP — Recipes (opinionated workflows)\n\nThese are higher-level workflows built from the Readwise MCP tools.\nUse them when you want to *do something useful* (triage, digest, quiz, recommend, organize), not when you’re just testing auth.\n\n---\n\n## 1) Triage inbox (or Later fallback)\nGoal: grab the newest 10 docs in **inbox** (location=`new`). If inbox is empty, fall back to **later**. Then present a punchy list: *worth reading now* vs *archive/ignore*.\n\nCommands:\n\n```bash\n# 1) Try inbox first\nmcporter call readwise.reader_list_documents \\\n  --args '{\n    \"limit\": 10,\n    \"location\": \"new\",\n    \"response_fields\":[\"title\",\"author\",\"url\",\"category\",\"location\",\"created_at\",\"tags\",\"summary\",\"reading_time\"]\n  }' --output json\n\n# 2) If results is empty (or count==0), fall back to later\nmcporter call readwise.reader_list_documents \\\n  --args '{\n    \"limit\": 10,\n    \"location\": \"later\",\n    \"response_fields\":[\"title\",\"author\",\"url\",\"category\",\"location\",\"created_at\",\"tags\",\"summary\",\"reading_time\"]\n  }' --output json\n```\n\nAssistant workflow:\n- For each doc: infer topic + expected value.\n- Output two buckets:\n  - **Read next (why + what to extract)**\n  - **Archive/skip (why)**\n- Offer actions:\n  - Move to `shortlist` or `later`\n  - Move to `archive`\n  - Add tags (if you have a tagging system)\n\nOptional actions:\n```bash\n# Move a doc\nmcporter call readwise.reader_move_document \\\n  --args '{\"document_id\":\"<id>\",\"location\":\"archive\"}' \\\n  --output json\n\n# Add tags\nmcporter call readwise.reader_add_tags_to_document \\\n  --args '{\"document_id\":\"<id>\",\"tag_names\":[\"to-read\",\"topic-ai\"]}' \\\n  --output json\n```\n\n---\n\n## 2) Feed digest (last day/week) + “mark as seen” option\nGoal: scan what landed recently, summarize the “news”, then let the user either (a) open/read, or (b) mark as **seen** (without archiving).\n\nNotes:\n- This is best for RSS/feed items, but can also work for *all* docs updated recently.\n- “Mark as seen” uses `reader_edit_document_metadata` with `seen: true`.\n\nCommands:\n\n```bash\n# Last 24h (use ISO datetime; pick your timezone and convert if needed)\nmcporter call readwise.reader_list_documents \\\n  --args '{\n    \"limit\": 50,\n    \"updated_after\": \"2026-02-01T00:00:00Z\",\n    \"response_fields\":[\"title\",\"author\",\"url\",\"category\",\"location\",\"updated_at\",\"created_at\",\"tags\",\"summary\"]\n  }' --output json\n\n# Alternative: restrict to RSS/feed items only\nmcporter call readwise.reader_list_documents \\\n  --args '{\n    \"limit\": 50,\n    \"updated_after\": \"2026-02-01T00:00:00Z\",\n    \"category\": \"rss\",\n    \"response_fields\":[\"title\",\"author\",\"url\",\"category\",\"location\",\"updated_at\",\"created_at\",\"tags\",\"summary\"]\n  }' --output json\n```\n\nAssistant workflow:\n- Cluster items into 5–10 themes.\n- Write a short digest: “what happened” + “why you might care”.\n- Offer per-item actions:\n  - **Read** (open URL)\n  - **Mark seen** (without moving/archiving)\n\nMark as seen:\n```bash\nmcporter call readwise.reader_edit_document_metadata \\\n  --args '{\"document_id\":\"<id>\",\"seen\":t"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Set up, OAuth-authenticate, and use the Readwise MCP server (mcp2.readwise.io/mcp) via the mcporter CLI. Use when a user asks to connect/auth Readwise MCP, reset or troubleshoot OAuth login (stale redirect ports, invalid state), verify the connection, or run Readwise tools through mcporter. Skill: Readwise Owner: TristanH Summary: Set up, OAuth-authenticate, and use the Readwise MCP server (mcp2.readwise.io/mcp) via the mcporter CLI. Use when a user asks to connect/auth Readwise MCP, reset or troubleshoot OAuth login (stale redirect ports, invalid state), verify the connection, or run Readwise tools through mcporter. Tags: latest:1.0.0 Version history: v1.0.0 | 2026-02-02T00:24:31.052Z | user Initial re","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1040,"uniquenessScore":52,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T19:56:44.983Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}