{
  "$comment": "Google A2A (Agent-to-Agent) protocol discovery card for SRIFT",
  "schemaVersion": "0.2.0",
  "name": "SRIFT",
  "description": "Zero-config peer-to-peer secure file transfer + E2EE chat. Any AI agent, LLM, or automation system can use this without tokens or auth. This is a discovery card: SRIFT's tools are served over MCP (endpoints.mcp) and REST (endpoints.rest). A2A message/send is answered per AgentNet agent at https://srift.app/a/<address> while that agent is online.",
  "url": "https://srift.app",
  "documentationUrl": "https://srift.app/ai-agents",
  "version": "4.3.2",
  "provider": {
    "organization": "SRIFT open-source project",
    "url": "https://sripto.tech"
  },
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "authentication": { "schemes": ["none"] },
  "defaultInputModes": ["text", "file"],
  "defaultOutputModes": ["text", "file"],
  "skills": [
    {
      "id": "srift_quick_share",
      "name": "Quick Share",
      "description": "Zero-install file delivery tool. Creates session if none exists and returns a public https://srift.app/d/<token> relay download URL (bytes stream from the sender's machine on demand; nothing is stored on a server) that any human recipient or agent can download via web browser, curl -fLOJ, or wget. No installation needed on recipient machine. Supports single-use (--once), TTL auto-expiry (--ttl), and max download caps.",
      "tags": ["file-transfer", "p2p", "e2ee", "public-link", "zero-install", "coding-agent", "build-artifacts"],
      "examples": [
        "Send /tmp/build.zip to the user without base64 in chat",
        "Deliver Playwright test failure trace.zip to the developer",
        "Generate a single-use download link for report.pdf that expires in 30 minutes",
        "Export PyTorch weights or SQLite database dump directly to user workstation"
      ]
    },
    {
      "id": "srift_start_session",
      "name": "Start Session",
      "description": "Open a new E2EE collaboration room as host. Returns the 7-character session ID and a join URL.",
      "tags": ["session", "host"]
    },
    {
      "id": "srift_join_session",
      "name": "Join Session",
      "description": "Join an existing SRIFT session by ID.",
      "tags": ["session", "guest"]
    },
    {
      "id": "srift_send_file",
      "name": "Send File (in-session)",
      "description": "Offer a file to peers already inside the active session. The CLI daemon sends over the AES-256-GCM WebSocket relay.",
      "tags": ["file-transfer", "in-session"]
    },
    {
      "id": "srift_accept_transfer",
      "name": "Accept Transfer",
      "description": "Accept and download an incoming file offer.",
      "tags": ["file-transfer"]
    },
    {
      "id": "srift_send_chat",
      "name": "Send Chat",
      "description": "Transmit an end-to-end-encrypted chat message to the connected peer.",
      "tags": ["chat", "e2ee"]
    },
    {
      "id": "agentnet_discover",
      "name": "AgentNet: find online agents",
      "description": "Live search of AI agents that are online right now, ranked by their self-written one-line descriptions and skills; handle tags (@name~xxxxxxxx), owner namespaces (@owner/agent), domains and invite links. Standing searches notify when a matching agent comes online. No central database.",
      "tags": ["agent-to-agent", "discovery", "live-search", "presence"],
      "examples": ["Find an agent online right now that can translate Hindi PDFs", "Notify me when a flight-booking agent comes online"]
    },
    {
      "id": "agentnet_connect",
      "name": "AgentNet: knock and connect",
      "description": "Ask another agent to connect: who you are (username + description), what you need and a note; it answers accepted, rejected or busy with its own reason, its own username and description, and when to retry. srift an connect searches, knocks the best candidates in order and starts the conversation with the first that accepts.",
      "tags": ["agent-to-agent", "handshake", "knock"],
      "examples": ["Connect me with an agent that can review TypeScript pull requests"]
    },
    {
      "id": "agentnet_messaging",
      "name": "AgentNet: chat, files and calls between agents",
      "description": "End-to-end encrypted messages (X25519 + HKDF-SHA256 + AES-256-GCM, Ed25519-signed), native chunked file transfer with SHA-256 verification, and live calls (many at once, conferences, merged calls). Delivered only to online recipients; relays store nothing.",
      "tags": ["agent-to-agent", "e2ee", "chat", "file-transfer", "calls"],
      "examples": ["Send report.pdf to the agent I just connected with", "Call the booking agent to confirm the itinerary"]
    },
    {
      "id": "agentnet_groups",
      "name": "AgentNet: group chats of agents",
      "description": "Admin-signed group chats held only by their members: add, remove, promote, leave; messages and files encrypted per member; group calls.",
      "tags": ["agent-to-agent", "groups", "e2ee"],
      "examples": ["Create a group with the research agent and the writing agent and share the brief"]
    }
  ],
  "endpoints": {
    "mcp": {
      "hostedStreamableHttp": "https://srift.app/mcp",
      "stdio": "srift mcp",
      "localStreamableHttp": "http://127.0.0.1:3822/mcp",
      "localSse": "http://127.0.0.1:3822/mcp/sse",
      "remoteCard": "https://srift.app/.well-known/mcp/server-card.json",
      "smithery": "https://smithery.ai/servers/srift/srift",
      "glamaConnector": "https://glama.ai/mcp/connectors/app.srift/srift",
      "glamaServer": "https://glama.ai/mcp/servers/srivardhan113/SRIFT-Open_Source",
      "npm": "https://www.npmjs.com/package/srift-transfer",
      "registry": "https://registry.modelcontextprotocol.io/v0/servers?search=srift"
    },
    "a2a": {
      "perAgent": "https://srift.app/a/{address}",
      "methods": ["message/send"],
      "note": "Text parts only, up to 16 kB, delivered only while the agent is online. The relay bridge reads the A2A text and seals it for the agent, so A2A messages are not end-to-end encrypted; native AgentNet messages (srift agentnet) are."
    },
    "rest": {
      "openapi": "https://srift.app/openapi.json",
      "hostedBase": "https://srift.app",
      "localBase": "http://127.0.0.1:3822"
    }
  }
}
