Skip to main content

MCP server for UnCorreoTemporal — programmable temporary email for AI agents

Project description

UCT Demo

uncorreotemporal-mcp

MCP Badge

MCP server for UnCorreoTemporal, focused on autonomous signup and email verification workflows.

Glama

Architecture Demo

AI Agent
   |
   | MCP
   v
Temporary Email MCP Server
   |
   v
UnCorreoTemporal API

Remote Connection (No Installation)

Connect directly to the public endpoint — no local install needed:

{
  "mcpServers": {
    "uncorreotemporal-mcp": {
      "url": "https://uncorreotemporal.com/mcp"
    }
  }
}

The public endpoint is free to use for testing. For production workloads, set your own UCT_API_KEY via local install.

Quickstart (30 seconds)

uvx uncorreotemporal-mcp

Or run local project version:

UCT_API_KEY=uct_your_key_here \
uv run uncorreotemporal-mcp

Minimal Workflow Example

inbox = await create_signup_inbox("github")
email = await wait_for_verification_email(inbox["inbox_id"])
link = await extract_verification_link(
    inbox_id=inbox["inbox_id"],
    message_id=email["message_id"],
)

Public Tools

  • create_signup_inbox
  • wait_for_verification_email
  • get_latest_email
  • extract_otp_code
  • extract_verification_link
  • complete_signup_flow

New v1 tool: complete_signup_flow

Runs:

  1. create inbox
  2. wait verification email
  3. extract verification link + OTP

Input:

{
  "service_name": "github",
  "timeout_seconds": 90,
  "poll_interval_seconds": 3,
  "subject_contains": "verify",
  "from_contains": "noreply",
  "preferred_domains": ["github.com"],
  "ttl_minutes": 30
}

Output:

{
  "status": "success",
  "inbox_id": "agent42@uncorreotemporal.com",
  "email": "agent42@uncorreotemporal.com",
  "verification_message": {
    "message_id": "msg-1",
    "subject": "Verify your email",
    "from_address": "noreply@example.com",
    "received_at": "2026-03-08T11:30:00Z"
  },
  "verification_link": "https://example.com/confirm?t=abc",
  "otp_code": "483920",
  "link_candidates": ["https://example.com/confirm?t=abc"],
  "otp_candidates": ["483920"]
}

status can be success, partial_success, or timeout.

Tool I/O summary

create_signup_inbox(service_name, ttl_minutes?)

Returns:

{
  "inbox_id": "agent42@uncorreotemporal.com",
  "email": "agent42@uncorreotemporal.com",
  "expires_at": "2026-03-08T12:00:00Z",
  "service_name": "github"
}

wait_for_verification_email(inbox_id, timeout_seconds?, poll_interval_seconds?, subject_contains?, from_contains?)

Returns:

{
  "status": "received",
  "message_id": "msg-1",
  "received_at": "2026-03-08T11:30:00Z",
  "subject": "Verify your account",
  "from_address": "noreply@example.com",
  "timeout_seconds": 90
}

get_latest_email(inbox_id, mark_as_read?)

Returns full message body and metadata.

extract_otp_code(message_text? | inbox_id+message_id, otp_length_min?, otp_length_max?)

Returns:

{
  "otp_code": "483920",
  "candidates": ["483920"]
}

extract_verification_link(message_text? | inbox_id+message_id, preferred_domains?)

Returns:

{
  "verification_link": "https://example.com/confirm?t=abc",
  "candidates": ["https://example.com/confirm?t=abc"]
}

Configuration

Environment variables:

  • UCT_API_KEY (required)
  • UCT_API_BASE (optional, default: https://uncorreotemporal.com)
  • UCT_HTTP_TIMEOUT_SECONDS (optional, default: 20)
  • UCT_MCP_TRANSPORT (optional, stdio by default; also supports streamable-http and sse)
  • UCT_MCP_HOST (optional, default: 0.0.0.0)
  • UCT_MCP_PORT (optional, default: 8000)
  • UCT_MCP_PATH (optional, default: /mcp)

Important: inbox_id == email address.

Examples

See /examples:

  • simple_workflow.py
  • openai_agent_signup.py
  • langchain_agent_signup.py
  • agent_creates_account.py

Run dry-run:

uv run python examples/simple_workflow.py --dry-run

Docker

Build:

docker build -t uncorreotemporal-mcp .

Run stdio mode:

docker run --rm -i \
  -e UCT_API_KEY=uct_your_key_here \
  uncorreotemporal-mcp

Run streamable-http mode:

docker run --rm -p 8000:8000 \
  -e UCT_API_KEY=uct_your_key_here \
  -e UCT_MCP_TRANSPORT=streamable-http \
  -e UCT_MCP_PATH=/mcp \
  uncorreotemporal-mcp

Breaking Changes

Removed legacy low-level tools:

  • create_mailbox
  • list_mailboxes
  • get_messages
  • read_message
  • delete_mailbox

Migration map:

  • create_mailbox -> create_signup_inbox
  • get_messages + read_message -> wait_for_verification_email + get_latest_email
  • multi-step signup orchestration -> complete_signup_flow

Directory listing assets

Prepared listing payloads are in /directory-listings for:

  • modelcontextprotocol/servers
  • mcp.so
  • awesome-mcp

Public endpoint deployment

Deployment templates for https://uncorreotemporal.com/mcp are in /deploy.

Development

uv run pytest
uv run uncorreotemporal-mcp

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uncorreotemporal_mcp-0.1.1.tar.gz (15.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uncorreotemporal_mcp-0.1.1-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

Details for the file uncorreotemporal_mcp-0.1.1.tar.gz.

File metadata

  • Download URL: uncorreotemporal_mcp-0.1.1.tar.gz
  • Upload date:
  • Size: 15.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for uncorreotemporal_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a48acd866e4e1252312958f4d86fb35daa1e17d81e98e5f54ea81ac95633da7c
MD5 0c6bd4c9fa8f292941c1c9de0c8d949e
BLAKE2b-256 b616b14ebaec998344eafb270658017313e3cea87642e7701950848407ef44d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for uncorreotemporal_mcp-0.1.1.tar.gz:

Publisher: publish.yml on francofuji/uncorreotemporal-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file uncorreotemporal_mcp-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for uncorreotemporal_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d5311f47c3f9c65c0585d6174841576e715754571f0c486b00447dabf09decd3
MD5 69ba8cd24eedc72ca3b648626610ea02
BLAKE2b-256 347ef9b4f2af76c0fe6dfca3cf202642f6a537cba69997aaae48de155642de20

See more details on using hashes here.

Provenance

The following attestation bundles were made for uncorreotemporal_mcp-0.1.1-py3-none-any.whl:

Publisher: publish.yml on francofuji/uncorreotemporal-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page