{
  "markdown": "# Markovo CLI and MCP server\n\n[Markovo](https://markovo.net) turns supported files and explicitly\nauthorized public HTTPS pages into clean, structured Markdown. For the\ndedicated web experience and product details, visit the\n[PDF to Markdown Converter](https://markovo.net/pdf-to-markdown).\n\nThis public repository is the distribution source for the customer-side\n`markovo` CLI and the `markovo-mcp` stdio MCP server. It contains no local\nconversion engine, backend service, deployment configuration, production\ncredentials, or billing implementation. Conversion runs through the\naccount-metered service at `https://markovo.net`.\n\n## Install\n\n```bash\npip install \"markovo==0.1.1\"\n```\n\nOr run it without a permanent installation:\n\n```bash\nuvx --from \"markovo==0.1.1\" markovo --help\nuvx --from \"markovo==0.1.1\" markovo-mcp\n```\n\n## API key and Credits\n\n1. Create an API key in the\n   [Developer portal](https://markovo.net/app#developer).\n2. Store it in your shell or MCP host secret store; do not paste it into\n   prompts or commit it to source control.\n3. Verify the setup:\n\n```bash\nexport MARKOVO_API_KEY=\"your-key\"\nmarkovo doctor --json\n```\n\nEvery conversion requires an explicit Credit ceiling. When a key is\nmissing, the client points to the Developer portal. When Credits are\ninsufficient, the service response points to the\n[billing page](https://markovo.net/app#billing) so the account can be\ntopped up before retrying.\n\n## MCP configuration\n\n### Remote MCP (recommended for hosted agents)\n\nConnect the Streamable HTTP endpoint:\n\n```text\nhttps://markovo.net/mcp\n```\n\nThe MCP host discovers Markovo's OAuth 2.1 metadata, opens the Markovo\naccount sign-in and consent screen, and stores its own scoped token. You\ndo not create, paste, or share an API key for this remote connection.\nRemote tools can inspect capabilities, Credits, and owned jobs; convert\none explicitly supplied public HTTPS page with a required\n`max_credit_units` ceiling; and create or revoke short-lived result-image\nlinks. Remote MCP cannot read local files. Use the stdio package below or\nREST multipart upload when a local file must be converted.\n\nMarkovo never tops up Credits or changes a plan automatically. A low\nbalance response points to https://markovo.net/app#billing and waits for\nthe account owner to act.\n\n### Local stdio MCP\n\n```json\n{\n  \"mcpServers\": {\n    \"markovo\": {\n      \"command\": \"uvx\",\n      \"args\": [\"--from\", \"markovo==0.1.1\", \"markovo-mcp\"],\n      \"env\": {\n        \"MARKOVO_API_KEY\": \"${MARKOVO_API_KEY}\",\n        \"MARKOVO_MCP_ROOT\": \"/path/to/safe/project\"\n      }\n    }\n  }\n}\n```\n\nMCP clients should inject `MARKOVO_API_KEY` through their secret or\nenvironment-variable settings. The key and service origin are never MCP\ntool arguments, so prompts cannot redirect the credential. The public\nclient accepts only `https://markovo.net` and does not follow authenticated\nredirects.\n\nThe MCP server can read and write only within the required\n`MARKOVO_MCP_ROOT`. Set it to the smallest dedicated project directory\nyour MCP host needs. If it is missing, the server refuses all file tools;\nparent-directory and symlink escapes are rejected.\n\n```bash\nexport MARKOVO_MCP_ROOT=\"/path/to/safe/project\"\n```\n\nStructured errors point to the Developer portal when a key is missing and\nto Billing when Credits are insufficient.\n\n## Links\n\n- [Markovo home](https://markovo.net)\n- [PDF to Markdown](https://markovo.net/pdf-to-markdown)\n- [Documentation](https://markovo.net/docs)\n- [Remote MCP guide](https://markovo.net/docs/mcp)\n- [Pricing and Credits](https://markovo.net/pricing)\n- [Developer portal and API keys](https://markovo.net/app#developer)\n- [Billing and top-up](https://markovo.net/app#billing)\n\n## Security\n\nReport security issues privately using the instructions in\n[SECURITY.md](https://github.com/fisher-byte/markovo/blob/main/SECURITY.md).\nDo not include API keys, customer documents,\nor private conversion results in a public issue.\n\n<!-- mcp-name: io.github.fisher-byte/markovo -->\n",
  "bytes": 3988,
  "sha": "49db09c0c2bf27495de0002afe97e90e3d6d5d6313b438ca595ba502ceb3f307",
  "repo_slug": "fisher-byte/markovo",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_fisher_byte_markovo_8f2ba24e/readme"
}