{"openapi":"3.1.0","info":{"title":"Upstash (BYOK) API","version":"0.1.0","description":"Upstash (BYOK) lets an AI assistant read your own Upstash data through the Upstash API with a key you supply (Upstash account email address). Read-only: 7 tools (list_redis_databases, get_redis_database, get_redis_database_stats, list_redis_backups, list_teams, get_team_members, list_audit_logs). The BYOK key travels with each request, is used for that one call only and is never stored, logged or...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-upstash.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-upstash/docs"},"termsOfService":"https://connectorbay.com/byok-upstash/terms"},"servers":[{"url":"https://byok-upstash.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-upstash/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_redis_databases":{"post":{"operationId":"list_redis_databases","summary":"List the Upstash Redis databases of the account with region, state, plan type, endpoint, limits and creation time. Passw","description":"List the Upstash Redis databases of the account with region, state, plan type, endpoint, limits and creation time. Passwords and REST tokens are never returned. Use for \"Which Upstash Redis databases do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_redis_databasesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_redis_database":{"post":{"operationId":"get_redis_database","summary":"Get one Upstash Redis database: region, state, plan type, endpoint, TLS, eviction, auto upgrade, budget, limits and back","description":"Get one Upstash Redis database: region, state, plan type, endpoint, TLS, eviction, auto upgrade, budget, limits and backup settings. Credentials are requested hidden and never returned. Use for \"Show details of my Upstash Redis database\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"database_id":{"description":"Upstash Redis database id (a UUID), as returned by list_redis_databases.","maxLength":80,"title":"Database Id","type":"string"},"credentials":{"anyOf":[{"const":"hide","type":"string"},{"type":"null"}],"default":"hide","description":"Always 'hide' so that Upstash leaves the database password and REST tokens out of the answer.","title":"Credentials"}},"required":["database_id"],"title":"get_redis_databaseArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_redis_database_stats":{"post":{"operationId":"get_redis_database_stats","summary":"Get usage statistics of an Upstash Redis database for a period: today's command, read and write counts, monthly request ","description":"Get usage statistics of an Upstash Redis database for a period: today's command, read and write counts, monthly request totals, bandwidth, storage and billing, and time series such as keyspace, throughput and latency. Use for \"How many requests did my Upstash Redis database get this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"database_id":{"description":"Upstash Redis database id (a UUID), as returned by list_redis_databases.","maxLength":80,"title":"Database Id","type":"string"},"period":{"anyOf":[{"enum":["1h","3h","12h","1d","3d","7d","30d"],"type":"string"},{"type":"null"}],"default":"1h","description":"Period the time series cover: 1h, 3h, 12h, 1d, 3d, 7d or 30d (30d needs a Pro plan or the Production Pack).","title":"Period"}},"required":["database_id"],"title":"get_redis_database_statsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_redis_backups":{"post":{"operationId":"list_redis_backups","summary":"List the backups of an Upstash Redis database with name, state, size, creation time and whether it is a daily or hourly ","description":"List the backups of an Upstash Redis database with name, state, size, creation time and whether it is a daily or hourly backup. Use for \"When was my Upstash Redis database last backed up\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"database_id":{"description":"Upstash Redis database id (a UUID), as returned by list_redis_databases.","maxLength":80,"title":"Database Id","type":"string"}},"required":["database_id"],"title":"list_redis_backupsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_teams":{"post":{"operationId":"list_teams","summary":"List the Upstash teams the account belongs to with team id and name. Use for \"Which Upstash teams am I in\".","description":"List the Upstash teams the account belongs to with team id and name. Use for \"Which Upstash teams am I in\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_teamsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_team_members":{"post":{"operationId":"get_team_members","summary":"List the members of an Upstash team with email and role (owner, admin, dev, finance). Use for \"Who is in my Upstash team","description":"List the members of an Upstash team with email and role (owner, admin, dev, finance). Use for \"Who is in my Upstash team\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"team_id":{"description":"Upstash team id, as returned by list_teams.","maxLength":80,"title":"Team Id","type":"string"}},"required":["team_id"],"title":"get_team_membersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_audit_logs":{"post":{"operationId":"list_audit_logs","summary":"List the account's Upstash audit log entries with time, actor, action, affected entity, source and IP address. Use for \"","description":"List the account's Upstash audit log entries with time, actor, action, affected entity, source and IP address. Use for \"What changes were made in my Upstash account recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_audit_logsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}