{
  "markdown": "# Obsideo MCP server\n\nGive any MCP-capable agent (Claude Desktop, Claude Code, Cursor, Cline, ...)\ndurable storage that is encrypted on your machine before it is uploaded and\nthat you can independently prove is still held. Zero setup: the first\n`put`/`get`/`ls` auto-creates a free no-email trial account (100 MB, proof-of-work\ninstead of identity), so storage just works with nothing to configure. Want more?\nSelf-serve signup from inside the conversation upgrades to 12 GB free, no card,\nno CAPTCHA, no expiry.\n\n[Obsideo](https://obsideo.io) is S3-compatible object storage where every\nstored object is replicated to 3 providers and challenged with chunk-level\nmerkle proofs on a continuous cycle; providers are paid only for proofs\nthey pass. Paid tier: $15/TB-month, egress included.\n\n## Privacy posture (read this first)\n\n- **This server runs on YOUR machine.** Obsideo never hosts it. Credentials,\n  the account signing key, and the encryption key live in `~/.obsideo/` and are\n  sent nowhere except the endpoints they authenticate against.\n- **The account signing key is generated locally**; only the public half is\n  ever sent. Keep `~/.obsideo/signing.pem` private. Re-running signup rotates\n  credentials and the keypair with no overlap, so do not re-run casually.\n- **Encrypted by default.** `put` encrypts client-side (AES-256-GCM) with a\n  locally generated, user-held key before anything leaves the machine, so the\n  platform stores ciphertext it is architecturally incapable of reading. Pass\n  `encrypt: false` only when another tool must read the stored bytes directly\n  (S3 interop).\n\n### Back up your key\n\nThe encryption key is generated on your machine on first use and written to\n`~/.obsideo/mcp.json`. **Obsideo does not have a copy and cannot recover it.**\nIf that file is lost, every encrypted object is permanently unreadable, no\nmatter how many providers still hold it and how many proofs it passes.\nReplication protects against providers losing your bytes; it does not protect\nagainst you losing your key. Back up `~/.obsideo/mcp.json` somewhere you would\nstill have after losing this machine.\n\n`~/.obsideo/roots.json` is written alongside it: the merkle root of each object\nas committed at upload time. It holds no secrets, and it is what lets `verify`\nprove providers hold *your* bytes without re-uploading them. Encryption uses a\nfresh IV per upload, so ciphertext cannot be recomputed from a plaintext file\nlater; this record is what keeps the strong proof available for encrypted\nobjects. Losing it costs you strength of proof, not data.\n\n## Install\n\n**Claude Desktop, one click:** download\n[`obsideo-mcp.mcpb`](https://github.com/Regan-Milne/obsideo-mcp/releases/latest/download/obsideo-mcp.mcpb)\nfrom the [latest release](https://github.com/Regan-Milne/obsideo-mcp/releases/latest),\nthen Settings -> Extensions and drag the file in. No Node or npm setup needed.\n\n**Everything else, via npx:**\n\n```json\n{\n  \"mcpServers\": {\n    \"obsideo\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"obsideo-mcp\"]\n    }\n  }\n}\n```\n\n(Claude Desktop: `claude_desktop_config.json`. Claude Code:\n`claude mcp add obsideo -- npx -y obsideo-mcp`. Cursor/Cline: their MCP\nsettings, same command.)\n\n## Tools\n\n| Tool | What it does |\n|---|---|\n| `trial` | Create an instant no-email account (100 MB, ~7 days, proof-of-work, no human needed). Usually unnecessary: storage tools auto-create one on first use |\n| `signup_start` | Email a 6-digit code (12 GB free tier; real inboxes only, refusals are labeled) |\n| `signup_verify` | Complete signup; generates the signing keypair locally, stores credentials |\n| `put` | Store a file or inline content, encrypted client-side by default (`encrypt: false` opts out). Auto-creates a trial account if none is configured |\n| `get` | Retrieve an object (auto-decrypts with the local key) |\n| `ls` | List objects, optionally by prefix |\n| `rm` | Delete an object |\n| `verify` | Prove the network still holds an object, without downloading it |\n| `usage` | Storage used vs quota |\n\n### `verify`\n\nChallenges every provider holding the object directly, recomputes the merkle\nroot, and checks each provider's Ed25519 signature. It asks the coordinator only\n*where* to go; nothing the coordinator asserts is trusted for the verdict. For\nobjects this server uploaded, it verifies against the commitment recorded\nlocally at upload time, so the answer is \"they hold *my* bytes\" rather than\n\"they agree with each other\". Objects uploaded elsewhere can be verified by\npassing `local_path`.\n\n## What it is good for\n\nApp file storage, automated backups (databases, snapshots, state), agent\nartifacts and memory that must survive sessions and machines, provable offsite\ncopies. Not a CDN, not a queryable database, not sub-millisecond storage;\nObsideo stores objects and backup artifacts.\n\nFull integration contract (per-step postconditions, error table):\n[obsideo.io/agents.md](https://obsideo.io/agents.md)\n\n## Verified\n\nEvery tool in this server was exercised end to end against the production\ngateway before release, including an encrypted put/get roundtrip verified\nhash-exact (sha256) and labeled-error passthrough from the signup service.\n\n## License\n\nMIT\n\n## Privacy Policy\n\nThis extension runs entirely on your machine. Credentials, your account signing\nkey, and any client-side encryption key are stored locally in\n`~/.obsideo/mcp.json` and are never sent to or hosted by Obsideo. Conversation\ncontent from your AI assistant is not collected; only the tool calls you make\n(for example an upload) reach the storage service.\n\nFull policy: https://obsideo.io/privacy/\n",
  "bytes": 5607,
  "sha": "e2cb70cc268d50fdfe136e78f350cb49ea16e2ca85850ac98a5c85324ce70e5e",
  "repo_slug": "regan-milne/obsideo-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_obsideo_mcp_98b227e1/readme"
}