> Connect to Revdoku cloud buckets to share files and incoming emails between authorized AI agents.

# Cloud storage and incoming email for Claude Code

Use Claude Code to save files in Revdoku, pick up another agent’s work, and read incoming emails and attachments.

Get Email address for your AI agent

Create a cloud bucket and copy its @revdokumail.com email address.

Emails sent to this email are saved as JSON and Markdown, attachments are extracted.

Connect AI agents to read and manage saved emails and files via the API, CLI, MCP, or Skill.

Create Free Account or connect your AI agent

Connect AI:

Prompt
Skill
MCP
API

Show full prompt ⌄

Copy

npx skills add revdoku/revdoku --skill revdoku -g

Copy

Claude Code
Codex
Cursor
Gemini CLI
Hermes Agent
OpenClaw

Codex CLI Claude Code Other AI app

Codex CLI
Claude Code
Other

codex mcp add revdoku --url https://app.revdoku.com/mcp && codex mcp login revdoku Copy

claude mcp add --transport http revdoku https://app.revdoku.com/mcp && claude mcp login revdoku Copy

Transport Streamable HTTP Auth Browser OAuth

https://app.revdoku.com/mcp Copy

Open the MCP setup guide &rarr;

JavaScript
Python
C# (.NET)

const apiKey = process.env.REVDOKU_API_KEY; // Get a key at https://app.revdoku.com/account/access
if (!apiKey) throw new Error("Set REVDOKU_API_KEY first");

const response = await fetch(
"https://app.revdoku.com/api/v1/buckets", {
method: "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json"
},
body: JSON.stringify({ bucket: { title: "My agent inbox" } })
}
);
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}
const { data } = await response.json();
const inbox = data.bucket.inbound_email;
console.log("Bucket ID:", data.bucket.id);
console.log("Email:", inbox.address);
console.log("Ready:", inbox.ready);
console.log("Open:", data.bucket.dashboard_url);
if (!inbox.ready) console.log("Receiving:", inbox.blocked_reason);
Copy code

JavaScript setup & full example →

import os
import requests

api_key = os.environ["REVDOKU_API_KEY"] # Get a key at https://app.revdoku.com/account/access
response = requests.post(
"https://app.revdoku.com/api/v1/buckets",
headers={"Authorization": f"Bearer {api_key}"},
json={"bucket": {"title": "My agent inbox"}},
timeout=30,
)
response.raise_for_status()
bucket = response.json()["data"]["bucket"]
inbox = bucket["inbound_email"]
print("Bucket ID:", bucket["id"])
print("Email:", inbox["address"])
print("Ready:", inbox["ready"])
print("Open:", bucket["dashboard_url"])
if not inbox["ready"]:
print("Receiving:", inbox["blocked_reason"])
Copy code

Python setup & full example →

using System.Net.Http.Headers;
using System.Net.Http.Json;
using System.Text.Json;

var apiKey = Environment.GetEnvironmentVariable("REVDOKU_API_KEY") // Get a key at https://app.revdoku.com/account/access
?? throw new Exception("Set REVDOKU_API_KEY first");
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", apiKey);
using var response = await client.PostAsJsonAsync(
"https://app.revdoku.com/api/v1/buckets",
new { bucket = new { title = "My agent inbox" } });
response.EnsureSuccessStatusCode();
using var json = JsonDocument.Parse(await response.Content.ReadAsStringAsync());
var bucket = json.RootElement.GetProperty("data").GetProperty("bucket");
var inbox = bucket.GetProperty("inbound_email");
Console.WriteLine($"Bucket ID: {bucket.GetProperty("id").GetString()}");
Console.WriteLine($"Email: {inbox.GetProperty("address").GetString()}");
Console.WriteLine($"Ready: {inbox.GetProperty("ready").GetBoolean()}");
Console.WriteLine($"Open: {bucket.GetProperty("dashboard_url").GetString()}");
if (!inbox.GetProperty("ready").GetBoolean())
Console.WriteLine($"Receiving: {inbox.GetProperty("blocked_reason").GetString()}");
Copy code

C# (.NET) setup & full example →

## Connect and test

For a local session with shell access, let the agent follow the [Revdoku setup instructions](/llms-install.md) and complete sign-in in the browser. For a client with remote MCP and OAuth support, use the [hosted MCP connection](/mcp/).

Then ask:

> Select my project bucket. Save a short handoff note as README.md, read it back, and show me its version history. Tell me the bucket’s incoming email address.

A remote MCP server cannot read arbitrary local files. Use the local skill or CLI when the files are on your computer.

## Share a bucket with another agent

Choose the intended account and bucket, then authorize each agent with the access it needs. Multiple agents can read and update the same files. An account can have multiple buckets for separate projects.

Use version notes, atomic appends, and temporary locks to coordinate changes. Review the history and access logs in the Revdoku dashboard.

## Read incoming email

Every bucket has its own incoming email address. Messages and attachments are saved as files agents can read. Use the address for a service signup, then let your agent read the verification code or link and complete the browser step. Later account notifications arrive in the same bucket.

[See the signup and email workflow](/cases/receive-signup-emails-and-attachments/).

---

[View the canonical page](https://revdoku.com/claude/) · [Browse llms.txt](https://revdoku.com/llms.txt)
