{
  "schemaVersion": "1.0",
  "item": {
    "slug": "readwise-mcp",
    "name": "Readwise",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/TristanH/readwise-mcp",
    "canonicalUrl": "https://clawhub.ai/TristanH/readwise-mcp",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/readwise-mcp",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=readwise-mcp",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "RECIPES.md",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/readwise-mcp"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/readwise-mcp",
    "agentPageUrl": "https://openagent3.xyz/skills/readwise-mcp/agent",
    "manifestUrl": "https://openagent3.xyz/skills/readwise-mcp/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/readwise-mcp/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Readwise MCP (mcporter)",
        "body": "This skill is intentionally kept short.\nHigh-level workflows live in: skills/readwise-mcp/RECIPES.md."
      },
      {
        "title": "Preflight",
        "body": "command -v mcporter && mcporter --version\n\nEnsure you’re in the Clawdbot workspace root where config/mcporter.json lives."
      },
      {
        "title": "Quick setup (first time)",
        "body": "# 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"
      },
      {
        "title": "Verify it works",
        "body": "mcporter list readwise --output json\nmcporter call readwise.reader_list_tags --args '{}' --output json"
      },
      {
        "title": "“Invalid OAuth state”",
        "body": "Cause: you approved in a stale browser tab (old auth attempt / old port).\n\nFix:\n\nClose old Readwise OAuth tabs.\nRe-run:\n\nmcporter auth readwise --reset"
      },
      {
        "title": "Redirecting to an old port even after reset",
        "body": "Cause: browser session reuse.\n\nFix:\n\nUse Incognito/Private window.\nOr copy the new authorize URL into a fresh profile."
      },
      {
        "title": "“Waiting for browser approval…” but you already approved",
        "body": "You must land on:\n\nhttp://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\ncat ~/.mcporter/credentials.json\n\nLook for redirect_uris and ensure the browser redirect matches exactly."
      },
      {
        "title": "Using the server",
        "body": "General pattern:\n\nmcporter call readwise.<tool_name> --args '{...}' --output json\n\nNotes:\n\n--args must be valid JSON (prefer single quotes in shell).\nFor Reader locations: new = inbox, later, shortlist, archive, feed (RSS only)."
      },
      {
        "title": "Tool index (what’s available)",
        "body": "readwise_search_highlights — search highlights (vector + optional field filters)\nreader_search_documents — search Reader documents (hybrid search)\nreader_create_document — save a URL or HTML into Reader\nreader_list_documents — list newest documents (and paginate)\nreader_get_document_details — fetch a document’s full Markdown content\nreader_get_document_highlights — fetch highlights for a document\nreader_list_tags — list tag names\nreader_add_tags_to_document / reader_remove_tags_from_document\nreader_add_tags_to_highlight / reader_remove_tags_from_highlight\nreader_set_document_notes / reader_set_highlight_notes\nreader_move_document — move between inbox/later/shortlist/archive\nreader_edit_document_metadata — edit metadata (including seen)\nreader_export_documents — export Reader docs as a ZIP"
      },
      {
        "title": "1) Search highlights (idea-first / semantic)",
        "body": "mcporter call readwise.readwise_search_highlights \\\n  --args '{\"vector_search_term\":\"incentives\", \"limit\": 10}' \\\n  --output json"
      },
      {
        "title": "2) Search Reader documents (hybrid)",
        "body": "mcporter call readwise.reader_search_documents \\\n  --args '{\"query\":\"MCP\", \"limit\": 10}' \\\n  --output json"
      },
      {
        "title": "3) List newest docs in inbox (thin fields)",
        "body": "mcporter 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"
      },
      {
        "title": "4) Get a document’s full content (markdown)",
        "body": "mcporter call readwise.reader_get_document_details \\\n  --args '{\"document_id\":\"<id>\"}' \\\n  --output json"
      },
      {
        "title": "Recipes",
        "body": "See: skills/readwise-mcp/RECIPES.md\n\nRecipe names:\n\nTriage inbox (or Later fallback)\nFeed digest (last day/week) + mark as seen\nQuiz the user on a recently read archived document\nRecommendations (build a reading profile → pick next best doc)\nLibrary organizer (tagging + inbox-zero)"
      },
      {
        "title": "Shortlist semantics (important)",
        "body": "Readwise supports a shortlist location, but many people use it differently.\n\nDefault assumption (most users): inbox / later / archive\n\n“Shortlisting” means: add a shortlist tag AND move the doc to later.\n\nAlternative setup: later / shortlist / archive\n\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)."
      },
      {
        "title": "Safety / defaults",
        "body": "When a workflow proposes writes (tagging, moving, setting notes/seen), default to:\n\nshow a read-only plan first (counts + which docs)\nask for approval before applying changes"
      }
    ],
    "body": "Readwise MCP (mcporter)\n\nThis skill is intentionally kept short. High-level workflows live in: skills/readwise-mcp/RECIPES.md.\n\nPreflight\ncommand -v mcporter && mcporter --version\n\n\nEnsure you’re in the Clawdbot workspace root where config/mcporter.json lives.\n\nQuick setup (first time)\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\nVerify it works\nmcporter list readwise --output json\nmcporter call readwise.reader_list_tags --args '{}' --output json\n\nTroubleshooting OAuth (common failure modes)\n“Invalid OAuth state”\n\nCause: you approved in a stale browser tab (old auth attempt / old port).\n\nFix:\n\nClose old Readwise OAuth tabs.\nRe-run:\nmcporter auth readwise --reset\n\nRedirecting to an old port even after reset\n\nCause: browser session reuse.\n\nFix:\n\nUse Incognito/Private window.\nOr copy the new authorize URL into a fresh profile.\n“Waiting for browser approval…” but you already approved\n\nYou must land on:\n\nhttp://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\ncat ~/.mcporter/credentials.json\n\n\nLook for redirect_uris and ensure the browser redirect matches exactly.\n\nUsing the server\n\nGeneral pattern:\n\nmcporter call readwise.<tool_name> --args '{...}' --output json\n\n\nNotes:\n\n--args must be valid JSON (prefer single quotes in shell).\nFor Reader locations: new = inbox, later, shortlist, archive, feed (RSS only).\nTool index (what’s available)\nreadwise_search_highlights — search highlights (vector + optional field filters)\nreader_search_documents — search Reader documents (hybrid search)\nreader_create_document — save a URL or HTML into Reader\nreader_list_documents — list newest documents (and paginate)\nreader_get_document_details — fetch a document’s full Markdown content\nreader_get_document_highlights — fetch highlights for a document\nreader_list_tags — list tag names\nreader_add_tags_to_document / reader_remove_tags_from_document\nreader_add_tags_to_highlight / reader_remove_tags_from_highlight\nreader_set_document_notes / reader_set_highlight_notes\nreader_move_document — move between inbox/later/shortlist/archive\nreader_edit_document_metadata — edit metadata (including seen)\nreader_export_documents — export Reader docs as a ZIP\nQuick examples (most-used)\n1) Search highlights (idea-first / semantic)\nmcporter call readwise.readwise_search_highlights \\\n  --args '{\"vector_search_term\":\"incentives\", \"limit\": 10}' \\\n  --output json\n\n2) Search Reader documents (hybrid)\nmcporter call readwise.reader_search_documents \\\n  --args '{\"query\":\"MCP\", \"limit\": 10}' \\\n  --output json\n\n3) List newest docs in inbox (thin fields)\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\n4) Get a document’s full content (markdown)\nmcporter call readwise.reader_get_document_details \\\n  --args '{\"document_id\":\"<id>\"}' \\\n  --output json\n\nRecipes\n\nSee: skills/readwise-mcp/RECIPES.md\n\nRecipe names:\n\nTriage inbox (or Later fallback)\nFeed digest (last day/week) + mark as seen\nQuiz the user on a recently read archived document\nRecommendations (build a reading profile → pick next best doc)\nLibrary organizer (tagging + inbox-zero)\nShortlist semantics (important)\n\nReadwise supports a shortlist location, but many people use it differently.\n\nDefault assumption (most users): inbox / later / archive\n\n“Shortlisting” means: add a shortlist tag AND move the doc to later.\n\nAlternative setup: later / shortlist / archive\n\n“Shortlisting” means: move the doc to location=shortlist.\n\nSo: before applying any shortlisting action, confirm which setup the user uses. If unknown, assume the default (tag + move to later).\n\nSafety / defaults\n\nWhen a workflow proposes writes (tagging, moving, setting notes/seen), default to:\n\nshow a read-only plan first (counts + which docs)\nask for approval before applying changes"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/TristanH/readwise-mcp",
    "publisherUrl": "https://clawhub.ai/TristanH/readwise-mcp",
    "owner": "TristanH",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/readwise-mcp",
    "downloadUrl": "https://openagent3.xyz/downloads/readwise-mcp",
    "agentUrl": "https://openagent3.xyz/skills/readwise-mcp/agent",
    "manifestUrl": "https://openagent3.xyz/skills/readwise-mcp/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/readwise-mcp/agent.md"
  }
}