{
  "protocolVersion": "0.3",
  "name": "OceanDB",
  "description": "Sovereign, self-managing memory for AI agents. A deterministic memory agent: delegate 'remember' to capture and 'recall' to retrieve across the authorizing user's private memory. No LLM runs server-side — skills execute as de-fanged, row-level-security-scoped operations on the user's own store.",
  "version": "1.0.0",
  "supportedInterfaces": [
    {
      "url": "https://app.oceandb.ai/api/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "0.3"
    }
  ],
  "url": "https://app.oceandb.ai/api/a2a",
  "preferredTransport": "JSONRPC",
  "provider": {
    "organization": "Ocean Labs",
    "url": "https://oceandb.ai"
  },
  "documentationUrl": "https://oceandb.ai/docs",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "securitySchemes": {
    "oauth2": {
      "type": "oauth2",
      "description": "OAuth 2.1 authorization code + PKCE with anonymous dynamic client registration (see https://app.oceandb.ai/auth.md).",
      "flows": {
        "authorizationCode": {
          "authorizationUrl": "https://cbmwngfbdcuhlamrnknd.supabase.co/auth/v1/oauth/authorize",
          "tokenUrl": "https://cbmwngfbdcuhlamrnknd.supabase.co/auth/v1/oauth/token",
          "scopes": {
            "openid": "Identify the authorizing user",
            "profile": "Basic profile",
            "email": "Email address"
          }
        }
      }
    },
    "openIdConnect": {
      "type": "openIdConnect",
      "openIdConnectUrl": "https://cbmwngfbdcuhlamrnknd.supabase.co/auth/v1/.well-known/openid-configuration"
    }
  },
  "security": [
    {
      "oauth2": [
        "openid",
        "profile",
        "email"
      ]
    }
  ],
  "securityRequirements": [
    {
      "oauth2": [
        "openid",
        "profile",
        "email"
      ]
    }
  ],
  "defaultInputModes": [
    "text/plain"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "remember",
      "name": "Remember",
      "description": "Capture one memory into the authorizing user's log. Select explicitly with message metadata {\"skill\": \"remember\"} or by starting the message with 'remember:'. First line becomes the title. Optional metadata.tags (array of strings) applies labels.",
      "tags": [
        "memory",
        "capture",
        "notes"
      ],
      "examples": [
        "remember: The staging database password rotates every Friday."
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "recall",
      "name": "Recall",
      "description": "Hybrid semantic + keyword search over the authorizing user's memory (raw log, consolidated wiki, and reflections). The default skill for any message without a remember hint. Optional metadata.top_k (1–50, default 10).",
      "tags": [
        "memory",
        "retrieval",
        "search"
      ],
      "examples": [
        "What do we know about the pricing experiments?"
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    }
  ]
}
