API-first communication infrastructure for AI agents — email, phone, identities, and encrypted vault (login credentials, API keys, key pairs, SSH keys, OTP, etc.).
| Package | Language | Install |
|---|---|---|
inkbox |
Python ≥ 3.11 | pip install inkbox |
@inkbox/sdk |
TypeScript / Node ≥ 18 | npm install @inkbox/sdk |
@inkbox/cli |
CLI / Node ≥ 18 | npm install -g @inkbox/cli |
Get an API key from the Inkbox Console, then:
from inkbox import Inkbox
with Inkbox(api_key="ApiKey_...") as inkbox:
# Create an agent identity with a linked mailbox
identity = inkbox.create_identity("my-agent", display_name="My Agent")
identity.provision_phone_number(type="toll_free")
# Send an email
identity.send_email(
to=["user@example.com"],
subject="Hello",
body_text="Hi from my agent!",
)
# List recent emails
for msg in identity.iter_emails():
print(msg.subject, msg.from_address)
# Place a phone call
call = identity.place_call(to_number="+15551234567")
# Read text messages (SMS/MMS)
for t in identity.list_texts():
print(t.remote_phone_number, t.text)import { Inkbox } from "@inkbox/sdk";
const inkbox = new Inkbox({ apiKey: "ApiKey_..." });
// Create an agent identity with a linked mailbox
const identity = await inkbox.createIdentity("my-agent", { displayName: "My Agent" });
const phone = await identity.provisionPhoneNumber({ type: "toll_free" });
// Send an email
await identity.sendEmail({
to: ["user@example.com"],
subject: "Hello",
bodyText: "Hi from my agent!",
});
// List recent emails
for await (const msg of identity.iterEmails()) {
console.log(msg.subject, msg.fromAddress);
}
// Place a phone call
const call = await identity.placeCall({ toNumber: "+15551234567" });
// Read text messages (SMS/MMS)
const texts = await identity.listTexts();
for (const t of texts) {
console.log(t.remotePhoneNumber, t.text);
}# Create an agent identity (mailbox is created automatically)
inkbox identity create my-agent
# Send an email
inkbox email send -i my-agent \
--to user@example.com \
--subject "Hello" \
--body-text "Hi from my agent!"
# List recent emails
inkbox email list -i my-agent --limit 10
# Place a phone call
inkbox phone call -i my-agent --to +15551234567
# Read text messages
inkbox text list -i my-agent
# Initialize vault (first time only — requires INKBOX_VAULT_KEY)
inkbox vault init --vault-key "my-vault-key"
# Manage vault secrets
inkbox vault create --name "CRM Login" --type login --username bot@crm.com --password s3cret
inkbox vault secrets
inkbox vault get <secret-id>Agents can self-register without a pre-existing API key. The flow provisions a mailbox, identity, and API key in one call:
from inkbox import Inkbox
# 1. Sign up (no API key needed)
result = Inkbox.signup(
human_email="john@example.com",
display_name="My Agent",
note_to_human="Hey John, this is your agent signing up!",
)
api_key = result.api_key # save this — shown only once
# 2. Verify (after human shares the 6-digit code)
Inkbox.verify_signup(api_key, verification_code="483921")
# 3. Use the API key
with Inkbox(api_key=api_key) as inkbox:
identity = inkbox.get_identity(result.agent_handle)
identity.send_email(to=["john@example.com"], subject="Hello!", body_text="I'm set up.")import { Inkbox } from "@inkbox/sdk";
// 1. Sign up (no API key needed)
const result = await Inkbox.signup({
humanEmail: "john@example.com",
displayName: "My Agent",
noteToHuman: "Hey John, this is your agent signing up!",
});
const apiKey = result.apiKey; // save this — shown only once
// 2. Verify (after human shares the 6-digit code)
await Inkbox.verifySignup(apiKey, { verificationCode: "483921" });
// 3. Use the API key
const inkbox = new Inkbox({ apiKey });
const identity = await inkbox.getIdentity(result.agentHandle);
await identity.sendEmail({ to: ["john@example.com"], subject: "Hello!", bodyText: "I'm set up." });# 1. Sign up (no --api-key needed)
inkbox signup create --human-email john@example.com --display-name "My Agent" \
--note-to-human "Hey John, this is your agent signing up!"
# 2. Verify (after human shares the 6-digit code)
inkbox signup verify --code 483921
# 3. Check status
inkbox signup status| Directory | Description |
|---|---|
sdk/python/ |
Python SDK (inkbox) |
sdk/typescript/ |
TypeScript SDK (@inkbox/sdk) |
cli/ |
CLI (@inkbox/cli) |
skills/inkbox-python/ |
Python agent skill for Claude Code and other coding agents |
skills/inkbox-ts/ |
TypeScript agent skill for Claude Code and other coding agents |
skills/inkbox-openclaw/ |
Inkbox OpenClaw skill — email and phone for your OpenClaw agent |
examples/use-inkbox-browser-use/ |
Inkbox + Browser Use — give your agent an email, phone, and vault |
examples/use-inkbox-kernel/ |
Inkbox + Kernel — give your agent an email and browser |
examples/use-inkbox-cli/ |
Shell script examples for CLI automation and CI pipelines |
examples/use-inkbox-vault/ |
Vault TOTP example — create credentials with one-time codes |
Load the Inkbox skills into your coding agent so it automatically knows how to use the SDK:
npx skills add inkbox-ai/inkbox/skillsSee skills/README.md for details.
MIT