{
  "name": "ReTransfer",
  "description": "Encrypted agent-to-agent file transfer. AI agents address each other by DID and exchange files over signed webhooks; humans share via short-lived OTP-gated links. AES-256-GCM at rest by default (server-managed keys); optional end-to-end mode runs Argon2id + AES-GCM in the sender's browser so even ReTransfer can't decrypt the payload. OpenAPI 3.1 contract + stdio MCP server.",
  "url": "https://retransfer.one",
  "iconUrl": "https://retransfer.one/landing-bg.jpg",
  "documentationUrl": "https://retransfer.one/agents",
  "provider": {
    "organization": "ReTransfer",
    "url": "https://retransfer.one"
  },
  "version": "0.32.0",
  "capabilities": {
    "streaming": false,
    "pushNotifications": true,
    "stateTransitionHistory": false
  },
  "defaultInputModes": ["application/json"],
  "defaultOutputModes": ["application/json"],
  "skills": [
    {
      "id": "send_files",
      "name": "Send encrypted files",
      "description": "Send one or more files to a recipient (email or agent DID). Mints a short-lived, access-controlled link; recipients receive a signed webhook (agents) or an OTP-gated email (humans). Files encrypted at rest by default; pass an encryption block for end-to-end passphrase mode.",
      "tags": ["file-transfer", "encryption", "send"],
      "examples": [
        "Send report.pdf to alice@acme.com, expire in 7 days, email-gated access",
        "Send dataset.zip to agent:retransfer.one/u/abc-123 with passphrase encryption",
        "Forward this attachment to bob@example.com and revoke after 24h"
      ]
    },
    {
      "id": "list_transfers",
      "name": "List my transfers",
      "description": "Returns the caller's sent transfers, newest first, with status, recipients, expiry, and per-recipient download timestamps.",
      "tags": ["file-transfer", "list", "audit"],
      "examples": [
        "Show all my transfers from the last week",
        "List transfers that are about to expire",
        "Which transfers has alice@acme.com opened?"
      ]
    },
    {
      "id": "get_transfer",
      "name": "Get transfer detail",
      "description": "Returns a single transfer with owner, recipients (per-recipient delivery + open/download state), file metadata, lifecycle timestamps, and the active link.",
      "tags": ["file-transfer", "detail"],
      "examples": [
        "What's the status of transfer abc-123?",
        "Has alice downloaded the file I sent yesterday?"
      ]
    },
    {
      "id": "revoke_transfer",
      "name": "Revoke a transfer",
      "description": "Kills the link and smart-purges the underlying S3 objects (files still referenced by another active transfer are preserved). Recipients lose access immediately.",
      "tags": ["file-transfer", "revoke", "delete"],
      "examples": [
        "Revoke transfer abc-123 — I sent it to the wrong person",
        "Pull back the link I just emailed and delete the files"
      ]
    },
    {
      "id": "agent_register",
      "name": "Register an agent identity",
      "description": "Upgrades the caller to an autonomous agent identity (DID). Caller publishes a manifest at a URL they control; ReTransfer caches the Ed25519 signing key and routes future inbound transfers to the agent's inbox URL via signed HMAC-SHA256 webhooks.",
      "tags": ["agent-identity", "DID", "webhook"],
      "examples": [
        "Register my agent at https://acme.example/.well-known/agent.json",
        "Make me an autonomous agent with inbox https://acme.example/agent/inbox"
      ]
    },
    {
      "id": "agent_resolve",
      "name": "Resolve an agent DID",
      "description": "Returns the public profile (DID, name, capabilities, signing key) for a registered agent. Used by senders to validate a recipient identifier before finalizing a transfer.",
      "tags": ["agent-identity", "DID", "resolve"],
      "examples": [
        "Who is agent:retransfer.one/u/abc-123?",
        "Resolve the public key for the DID I'm about to send to"
      ]
    }
  ],
  "securitySchemes": {
    "BearerAuth": {
      "type": "http",
      "scheme": "bearer",
      "description": "Bearer access token obtained via the OTP-by-email flow at POST /v1/auth/otp/request → POST /v1/auth/otp/verify. Refresh with POST /v1/auth/refresh."
    }
  },
  "security": [
    { "BearerAuth": [] }
  ],
  "documentationUrls": {
    "openapi": "https://retransfer.one/.well-known/openapi.json",
    "agents_guide": "https://retransfer.one/agents"
  },
  "limits": {
    "max_file_size_bytes": 53687091200,
    "max_recipients": 10,
    "max_expiration_days": 7,
    "rate_limits_per_minute": {
      "files_init": 60,
      "transfers_init": 30,
      "transfers_finalize": 30
    }
  }
}
