diff --git a/agent-resources/mcp.mdx b/agent-resources/mcp.mdx
index 347ac4c1..206b6999 100644
--- a/agent-resources/mcp.mdx
+++ b/agent-resources/mcp.mdx
@@ -5,7 +5,7 @@ title: MCP Server
The Upstash MCP server lets your agent manage and debug your Upstash resources directly, across Redis, QStash, Workflow, and [Upstash Box](/box/overall/quickstart).
- Only running commands against a single Redis database? Use the dedicated [Redis MCP](/redis/integrations/mcp) with only your REST/TCP credentials.
+ Only running commands against a single Redis database? Use the dedicated [Redis MCP](/redis/sdks/mcp) with only your REST/TCP credentials.
Find the GitHub repository [here](https://github.com/upstash/mcp-server).
diff --git a/box/overall/quickstart.mdx b/box/overall/quickstart.mdx
index dff9846b..61230133 100644
--- a/box/overall/quickstart.mdx
+++ b/box/overall/quickstart.mdx
@@ -2,11 +2,13 @@
title: "Quickstart"
---
+import { Catalog } from "/snippets/catalog.jsx";
+
**Upstash Box lets you give your AI agents a computer.**
Every Upstash Box is a **secure, isolated cloud container with an AI Agent built-in**. Spin up as many as you want in parallel. Each one includes a full environment with a filesystem, shell, git, and a runtime. Your agent can read files, write code, and execute tasks inside it.
-Upstash Box is in developer preview — APIs and pricing may change.
+Upstash Box is in developer preview. APIs and pricing may change.
### 1. Get your API key
@@ -244,3 +246,7 @@ Great example use cases:
Boxes have Claude Code, Codex or OpenCode built-in.
+
+## SDKs
+
+
diff --git a/docs.json b/docs.json
index 2be1194b..177c5546 100644
--- a/docs.json
+++ b/docs.json
@@ -729,6 +729,7 @@
"redis/sdks/agentkit/eve"
]
},
+ "redis/sdks/mcp",
"redis/sdks/realtime",
"redis/sdks/agent-analytics",
"redis/sdks/redis-analytics"
@@ -863,7 +864,6 @@
"redis/integrations/replit-templates",
"redis/howto/emqxintegration",
"redis/integrations/celery",
- "redis/integrations/mcp",
"redis/integrations/n8n",
{
"group": "AgentKit",
@@ -2042,6 +2042,10 @@
"source": "/oss/sdks/py/redis/:slug*",
"destination": "/redis/sdks/py/:slug*"
},
+ {
+ "source": "/redis/integrations/mcp",
+ "destination": "/redis/sdks/mcp"
+ },
{
"source": "/oss/sdks/ts/qstash",
"destination": "/qstash/sdks/ts/overview"
diff --git a/img/icons/box.svg b/img/icons/box.svg
new file mode 100644
index 00000000..3bffb3c9
--- /dev/null
+++ b/img/icons/box.svg
@@ -0,0 +1,11 @@
+
diff --git a/img/icons/context7.svg b/img/icons/context7.svg
new file mode 100644
index 00000000..b0ae11ed
--- /dev/null
+++ b/img/icons/context7.svg
@@ -0,0 +1,7 @@
+
diff --git a/img/icons/lang/python.svg b/img/icons/lang/python.svg
new file mode 100644
index 00000000..3af725cf
--- /dev/null
+++ b/img/icons/lang/python.svg
@@ -0,0 +1,8 @@
+
diff --git a/img/icons/lang/ruby.png b/img/icons/lang/ruby.png
new file mode 100644
index 00000000..797167a7
Binary files /dev/null and b/img/icons/lang/ruby.png differ
diff --git a/img/icons/lang/typescript.svg b/img/icons/lang/typescript.svg
new file mode 100644
index 00000000..15985c42
--- /dev/null
+++ b/img/icons/lang/typescript.svg
@@ -0,0 +1,7 @@
+
diff --git a/img/icons/qstash.svg b/img/icons/qstash.svg
new file mode 100644
index 00000000..7dc08adf
--- /dev/null
+++ b/img/icons/qstash.svg
@@ -0,0 +1,4 @@
+
diff --git a/img/icons/redis.svg b/img/icons/redis.svg
new file mode 100644
index 00000000..04757d34
--- /dev/null
+++ b/img/icons/redis.svg
@@ -0,0 +1,7 @@
+
diff --git a/img/icons/search.svg b/img/icons/search.svg
new file mode 100644
index 00000000..c5849e3d
--- /dev/null
+++ b/img/icons/search.svg
@@ -0,0 +1,11 @@
+
diff --git a/img/icons/vector.svg b/img/icons/vector.svg
new file mode 100644
index 00000000..339ece55
--- /dev/null
+++ b/img/icons/vector.svg
@@ -0,0 +1,8 @@
+
diff --git a/img/icons/workflow.svg b/img/icons/workflow.svg
new file mode 100644
index 00000000..657ee0bd
--- /dev/null
+++ b/img/icons/workflow.svg
@@ -0,0 +1,4 @@
+
diff --git a/introduction.mdx b/introduction.mdx
index 41dc6bd4..0b3efe51 100644
--- a/introduction.mdx
+++ b/introduction.mdx
@@ -1,52 +1,24 @@
---
title: Get Started
+description: "Serverless data and messaging for developers: Redis, Vector, QStash, Workflow, Search, and Box, with SDKs, integrations, and a full-featured console."
+mode: frame
---
-
-
- Create a Redis Database within seconds
-
-
- Create a Vector Database for AI & LLMs
-
-
- Publish your first message
-
-
- Write durable serverless functions
-
-
- Run AI agents and code in secure sandboxes
-
-
+import { Hero, SectionHead, ProductGrid, AgentResources, Concepts, Community } from "/snippets/landing.jsx";
-## Concepts
+
-
-
- Upstash is serverless. You don't need to provision any infrastructure. Just
- create a database and start using it.
-
-
- Price scales to zero. You don't pay for idle or unused resources. You pay
- only for what you use.
-
-
- Upstash Redis replicates your data for the best latency all over the world.
-
-
- Upstash REST APIs enable access from all types of runtimes.
-
-
+
+
+ See pricing for each product's plans, billing, and limits.>} />
+
-## Get In touch
+
+
-
-
- Follow us on X for the latest news and updates.
-
-
- Join our Discord Community and ask your questions to the team and other
- developers.
-
-
+
+
+
+
+
+
diff --git a/llms-full.txt b/llms-full.txt
index 3de69788..ff13de6e 100644
--- a/llms-full.txt
+++ b/llms-full.txt
@@ -270,7 +270,7 @@ Source: https://upstash.com/docs/agent-resources/mcp
The Upstash MCP server lets your agent manage and debug your Upstash resources directly, across Redis, QStash, Workflow, and [Upstash Box](/docs/box/overall/quickstart).
- Only running commands against a single Redis database? Use the dedicated [Redis MCP](/docs/redis/integrations/mcp) with only your REST/TCP credentials.
+ Only running commands against a single Redis database? Use the dedicated [Redis MCP](/docs/redis/sdks/mcp) with only your REST/TCP credentials.
Find the GitHub repository [here](https://github.com/upstash/mcp-server).
@@ -5124,11 +5124,13 @@ Please check our [pricing page](https://upstash.com/pricing/box) for the most up
# Quickstart
Source: https://upstash.com/docs/box/overall/quickstart
+import { Catalog } from "/snippets/catalog.jsx";
+
**Upstash Box lets you give your AI agents a computer.**
Every Upstash Box is a **secure, isolated cloud container with an AI Agent built-in**. Spin up as many as you want in parallel. Each one includes a full environment with a filesystem, shell, git, and a runtime. Your agent can read files, write code, and execute tasks inside it.
-Upstash Box is in developer preview — APIs and pricing may change.
+Upstash Box is in developer preview. APIs and pricing may change.
### 1. Get your API key
@@ -5365,6 +5367,10 @@ Great example use cases:
+## SDKs
+
+
+
# Schedules
Source: https://upstash.com/docs/box/overall/schedules
@@ -8588,54 +8594,24 @@ Secondary: #00E9A3 (Cyan Green)
# Get Started
Source: https://upstash.com/docs/introduction
-
-
- Create a Redis Database within seconds
-
-
- Create a Vector Database for AI & LLMs
-
-
- Publish your first message
-
-
- Write durable serverless functions
-
-
- Run AI agents and code in secure sandboxes
-
-
+import { Hero, SectionHead, ProductGrid, AgentResources, Concepts, Community } from "/snippets/landing.jsx";
-## Concepts
+
-
-
- Upstash is serverless. You don't need to provision any infrastructure. Just
- create a database and start using it.
-
-
- Price scales to zero. You don't pay for idle or unused resources. You pay
- only for what you use.
-
-
- Upstash Redis replicates your data for the best latency all over the world.
-
-
- Upstash REST APIs enable access from all types of runtimes.
-
-
+
+
+ See pricing for each product's plans, billing, and limits.>} />
+
-## Get In touch
+
+
-
-
- Follow us on X for the latest news and updates.
-
-
- Join our Discord Community and ask your questions to the team and other
- developers.
-
-
+
+
+
+
+
+
# Bulk Delete DLQ messages
Source: https://upstash.com/docs/qstash/api-reference/dlq/bulk-delete-dlq-messages
@@ -13868,6 +13844,8 @@ Enterprise customers receive dedicated resources to ensure isolation and consist
# Getting Started
Source: https://upstash.com/docs/qstash/overall/getstarted
+import { Catalog } from "/snippets/catalog.jsx";
+
QStash is a **serverless messaging and scheduling solution**. It fits easily into your existing workflow and allows you to build reliable systems without managing infrastructure.
Instead of calling an endpoint directly, QStash acts as a middleman between you and an API to guarantee delivery, perform automatic retries on failure, and more.
@@ -14016,6 +13994,10 @@ Learn more about different states [here](/docs/qstash/howto/debug-logs).
+## SDKs
+
+
+
# llms.txt
Source: https://upstash.com/docs/qstash/overall/llms-txt
@@ -16147,6 +16129,7 @@ When enabled:
## What If You Lose Your Credentials
**Reset Credentials**: This function remains available and, when credential protection is enabled, will generate new protected credentials.
+Navigate to the settings tab of your database and click **Reset Credentials**. You will be prompted to save the new credentials.
@@ -16601,12 +16584,13 @@ Checkout [Read Your Writes](/docs/redis/howto/readyourwrites) for more details o
# REST API
Source: https://upstash.com/docs/redis/features/restapi
-REST API enables you to access your Upstash database using REST.
-
## Get Started
-If you do not have a database already, follow
-[these steps](../overall/getstarted) to create one.
+
+ Looking for the URL and token of your database? First [create a Redis
+ database](/docs/redis/overall/getstarted), then [find your
+ credentials](/docs/redis/howto/connect-client) in the console.
+
In the [Upstash Console](https://console.upstash.com/redis), select your database. Then, in the database page, you will see the section that includes the endpoint URL and token details. When you hover over the `Endpoint` or `Token / Readonly Token` fields, copy button will appear for each. You can click it to easily copy the values you need for your connection.
@@ -19565,102 +19549,6 @@ await db.$cache?.invalidate({ tags: ["custom_key"] })
For more details on this integration, refer to the [Drizzle ORM caching documentation](https://cache.drizzle-orm-fe.pages.dev/docs/cache).
-# Upstash Redis MCP
-Source: https://upstash.com/docs/redis/integrations/mcp
-
-The Upstash Redis MCP server connects your agent directly to a Redis database. It is lightweight and ships with just two tools:
-
-* **`redis_run_commands`**: run any Redis command (including the `SEARCH.*` family), as a pipeline or an atomic transaction.
-* **`redis_search_docs`**: search the Upstash Redis docs live, so the agent can look up commands and features on demand.
-
-Find the GitHub repository [here](https://github.com/upstash/redis-mcp).
-
-
- To manage your whole Upstash account (create databases, read QStash and Workflow logs, drive Upstash Box), use the [Upstash MCP server](/docs/agent-resources/mcp) instead.
-
-
-# Installation
-
-Grab your database's REST URL and token from the [Upstash Console](https://console.upstash.com) (open your Redis database and copy `UPSTASH_REDIS_REST_URL` and `UPSTASH_REDIS_REST_TOKEN` from the **REST API** section), then add the server to your MCP client.
-
-To connect over TCP instead, set `UPSTASH_REDIS_TCP_URL` to your `rediss://` connection string in place of the two REST variables.
-
-
-
- ```sh
- claude mcp add upstash-redis \
- -e UPSTASH_REDIS_REST_URL=https://YOUR_DB.upstash.io \
- -e UPSTASH_REDIS_REST_TOKEN=YOUR_REST_TOKEN \
- -- npx -y @upstash/redis-mcp
- ```
-
-
-
- [![Add to Cursor]()](https://cursor.com/install-mcp?name=upstash-redis&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkB1cHN0YXNoL3JlZGlzLW1jcCJdfQ==)
-
- ```json
- {
- "mcpServers": {
- "upstash-redis": {
- "command": "npx",
- "args": ["-y", "@upstash/redis-mcp"],
- "env": {
- "UPSTASH_REDIS_REST_URL": "https://YOUR_DB.upstash.io",
- "UPSTASH_REDIS_REST_TOKEN": "YOUR_REST_TOKEN"
- }
- }
- }
- }
- ```
-
-
-
- ```json
- {
- "servers": {
- "upstash-redis": {
- "type": "stdio",
- "command": "npx",
- "args": ["-y", "@upstash/redis-mcp"],
- "env": {
- "UPSTASH_REDIS_REST_URL": "https://YOUR_DB.upstash.io",
- "UPSTASH_REDIS_REST_TOKEN": "YOUR_REST_TOKEN"
- }
- }
- }
- }
- ```
-
-
-
- ```toml
- [mcp_servers.upstash-redis]
- command = "npx"
- args = ["-y", "@upstash/redis-mcp"]
- env = { UPSTASH_REDIS_REST_URL = "https://YOUR_DB.upstash.io", UPSTASH_REDIS_REST_TOKEN = "YOUR_REST_TOKEN" }
- ```
-
-
-
- ```json
- {
- "mcp": {
- "upstash-redis": {
- "type": "local",
- "command": ["npx", "-y", "@upstash/redis-mcp"],
- "environment": {
- "UPSTASH_REDIS_REST_URL": "https://YOUR_DB.upstash.io",
- "UPSTASH_REDIS_REST_TOKEN": "YOUR_REST_TOKEN"
- }
- }
- }
- }
- ```
-
-
-
-Any MCP-compatible client works. If yours isn't listed, add a stdio server that runs `npx -y @upstash/redis-mcp` with the two env vars above.
-
# n8n with Upstash Redis
Source: https://upstash.com/docs/redis/integrations/n8n
@@ -21058,6 +20946,8 @@ A Business Associate Agreement (BAA) and HIPAA compliance enablement is availabl
# Getting Started
Source: https://upstash.com/docs/redis/overall/getstarted
+import { Catalog } from "/snippets/catalog.jsx";
+
Upstash Redis is a **highly available, infinitely scalable** Redis-compatible database:
* 99.99% uptime guarantee with auto-scaling ([Prod Pack](/docs/redis/overall/enterprise#prod-pack-features))
@@ -21124,7 +21014,7 @@ Congratulations! You have created an ultra-fast Upstash Redis database! 🎉
**New: Manage Upstash Redis with your agent**
-Manage Upstash Redis databases from Claude and other AI tools by using our [MCP server](/docs/agent-resources/mcp). To let an agent run commands directly against a single database, use the dedicated [Redis MCP](/docs/redis/integrations/mcp).
+Manage Upstash Redis databases from Claude and other AI tools by using our [MCP server](/docs/agent-resources/mcp). To let an agent run commands directly against a single database, use the dedicated [Redis MCP](/docs/redis/sdks/mcp).
## Next steps
@@ -21135,6 +21025,10 @@ Manage Upstash Redis databases from Claude and other AI tools by using our [MCP
* [REST API](/docs/redis/features/restapi): connect from edge and serverless runtimes where TCP is restricted.
* [Pricing & Billing](/docs/redis/overall/billing): free tier, Pay-As-You-Go, and Fixed plan limits, plus how billing works.
+## SDKs
+
+
+
# llms.txt
Source: https://upstash.com/docs/redis/overall/llms-txt
@@ -22432,6 +22326,102 @@ with a chat UI that renders tool calls inline) lives in
+# Upstash Redis MCP
+Source: https://upstash.com/docs/redis/sdks/mcp
+
+The Upstash Redis MCP server connects your agent directly to a Redis database. It is lightweight and ships with just two tools:
+
+* **`redis_run_commands`**: run any Redis command (including the `SEARCH.*` family), as a pipeline or an atomic transaction.
+* **`redis_search_docs`**: search the Upstash Redis docs live, so the agent can look up commands and features on demand.
+
+Find the GitHub repository [here](https://github.com/upstash/redis-mcp).
+
+
+ To manage your whole Upstash account (create databases, read QStash and Workflow logs, drive Upstash Box), use the [Upstash MCP server](/docs/agent-resources/mcp) instead.
+
+
+# Installation
+
+Grab your database's REST URL and token from the [Upstash Console](https://console.upstash.com) (open your Redis database and copy `UPSTASH_REDIS_REST_URL` and `UPSTASH_REDIS_REST_TOKEN` from the **REST API** section), then add the server to your MCP client.
+
+To connect over TCP instead, set `UPSTASH_REDIS_TCP_URL` to your `rediss://` connection string in place of the two REST variables.
+
+
+
+ ```sh
+ claude mcp add upstash-redis \
+ -e UPSTASH_REDIS_REST_URL=https://YOUR_DB.upstash.io \
+ -e UPSTASH_REDIS_REST_TOKEN=YOUR_REST_TOKEN \
+ -- npx -y @upstash/redis-mcp
+ ```
+
+
+
+ [![Add to Cursor]()](https://cursor.com/install-mcp?name=upstash-redis&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkB1cHN0YXNoL3JlZGlzLW1jcCJdfQ==)
+
+ ```json
+ {
+ "mcpServers": {
+ "upstash-redis": {
+ "command": "npx",
+ "args": ["-y", "@upstash/redis-mcp"],
+ "env": {
+ "UPSTASH_REDIS_REST_URL": "https://YOUR_DB.upstash.io",
+ "UPSTASH_REDIS_REST_TOKEN": "YOUR_REST_TOKEN"
+ }
+ }
+ }
+ }
+ ```
+
+
+
+ ```json
+ {
+ "servers": {
+ "upstash-redis": {
+ "type": "stdio",
+ "command": "npx",
+ "args": ["-y", "@upstash/redis-mcp"],
+ "env": {
+ "UPSTASH_REDIS_REST_URL": "https://YOUR_DB.upstash.io",
+ "UPSTASH_REDIS_REST_TOKEN": "YOUR_REST_TOKEN"
+ }
+ }
+ }
+ }
+ ```
+
+
+
+ ```toml
+ [mcp_servers.upstash-redis]
+ command = "npx"
+ args = ["-y", "@upstash/redis-mcp"]
+ env = { UPSTASH_REDIS_REST_URL = "https://YOUR_DB.upstash.io", UPSTASH_REDIS_REST_TOKEN = "YOUR_REST_TOKEN" }
+ ```
+
+
+
+ ```json
+ {
+ "mcp": {
+ "upstash-redis": {
+ "type": "local",
+ "command": ["npx", "-y", "@upstash/redis-mcp"],
+ "environment": {
+ "UPSTASH_REDIS_REST_URL": "https://YOUR_DB.upstash.io",
+ "UPSTASH_REDIS_REST_TOKEN": "YOUR_REST_TOKEN"
+ }
+ }
+ }
+ }
+ ```
+
+
+
+Any MCP-compatible client works. If yours isn't listed, add a stdio server that runs `npx -y @upstash/redis-mcp` with the two env vars above.
+
- [ECHO](https://upstash.com/docs/redis/sdks/py/commands/auth/echo.md)
- [PING](https://upstash.com/docs/redis/sdks/py/commands/auth/ping.md): Send a ping to the server and get a response if the server is alive.
- [BITCOUNT](https://upstash.com/docs/redis/sdks/py/commands/bitmap/bitcount.md): Count the number of set bits.
@@ -28815,6 +28805,8 @@ SEARCH.QUERY products '{"name": "new"}'
# Introduction
Source: https://upstash.com/docs/redis/search/introduction
+import { Catalog } from "/snippets/catalog.jsx";
+
Upstash Redis Search is our first extension beyond the official Redis spec. Using the Rust-based Tantivy under the hood, we provide an extremely fast way to search through Redis data.
@@ -28858,6 +28850,10 @@ Upstash Redis Search is our first extension beyond the official Redis spec. Usin
+## Demos
+
+
+
# $boost
Source: https://upstash.com/docs/redis/search/query-operators/boolean-operators/boost
@@ -33297,6 +33293,8 @@ For more details on how this integration works, check out [the official reposito
# Getting Started
Source: https://upstash.com/docs/search/overall/getstarted
+import { Catalog } from "/snippets/catalog.jsx";
+
***
+
# Pricing & Limits
Source: https://upstash.com/docs/search/overall/pricing
@@ -41343,6 +41345,8 @@ Source: https://upstash.com/docs/vector/overall/compare
# Getting Started
Source: https://upstash.com/docs/vector/overall/getstarted
+import { Catalog } from "/snippets/catalog.jsx";
+
**Prerequisite**
@@ -41559,6 +41563,10 @@ You can also query your index with a simple UI:
+## SDKs
+
+
+
# llms.txt
Source: https://upstash.com/docs/vector/overall/llms-txt
@@ -48846,6 +48854,8 @@ Choose webhooks when integrating with external services that support callback UR
# Overview
Source: https://upstash.com/docs/workflow/getstarted
+import { Catalog } from "/snippets/catalog.jsx";
+
Upstash Workflow lets you write **durable, reliable and performant serverless functions**. Get delivery guarantees, automatic retries on failure, scheduling and more without managing any infrastructure.
+
# Cancel a Run
Source: https://upstash.com/docs/workflow/howto/cancel
diff --git a/llms.txt b/llms.txt
index 78adbe7e..0a2c13b1 100644
--- a/llms.txt
+++ b/llms.txt
@@ -140,7 +140,7 @@
- [upstash_redis_database](https://upstash.com/docs/devops/terraform/resources/upstash_redis_database.md): Create and manage Upstash Redis databases.
- [upstash_team](https://upstash.com/docs/devops/terraform/resources/upstash_team.md): Create and manage teams on Upstash.
- [Bg color codes](https://upstash.com/docs/img/bg-color-codes.md)
-- [Get Started](https://upstash.com/docs/introduction.md)
+- [Get Started](https://upstash.com/docs/introduction.md): Serverless data and messaging for developers: Redis, Vector, QStash, Workflow, Search, and Box, with SDKs, integrations, and a full-featured console.
- [Bulk Delete DLQ messages](https://upstash.com/docs/qstash/api-reference/dlq/bulk-delete-dlq-messages.md): Delete multiple messages from the DLQ
- [Bulk Retry DLQ messages](https://upstash.com/docs/qstash/api-reference/dlq/bulk-retry-dlq-messages.md): Retry delivery of multiple messages from the DLQ
- [Delete a DLQ message](https://upstash.com/docs/qstash/api-reference/dlq/delete-a-dlq-message.md): Manually remove a message from the DLQ
@@ -278,7 +278,7 @@
- [Global Database](https://upstash.com/docs/redis/features/globaldatabase.md)
- [Key-Based Locking](https://upstash.com/docs/redis/features/key-locking.md): Key-based locks for concurrent command execution
- [Replication](https://upstash.com/docs/redis/features/replication.md)
-- [REST API](https://upstash.com/docs/redis/features/restapi.md)
+- [REST API](https://upstash.com/docs/redis/features/restapi.md): Access your Upstash Redis database over HTTP, from serverless and edge runtimes where TCP connections are restricted.
- [Security](https://upstash.com/docs/redis/features/security.md)
- [Compliance](https://upstash.com/docs/redis/help/compliance.md)
- [Frequently Asked Questions](https://upstash.com/docs/redis/help/faq.md)
@@ -311,7 +311,6 @@
- [BullMQ with Upstash Redis](https://upstash.com/docs/redis/integrations/bullmq.md)
- [Celery with Upstash Redis](https://upstash.com/docs/redis/integrations/celery.md)
- [DrizzleORM with Upstash Redis](https://upstash.com/docs/redis/integrations/drizzle.md)
-- [Upstash Redis MCP](https://upstash.com/docs/redis/integrations/mcp.md)
- [n8n with Upstash Redis](https://upstash.com/docs/redis/integrations/n8n.md)
- [Prometheus - Upstash Redis Integration](https://upstash.com/docs/redis/integrations/prometheus.md)
- [Configure Upstash Ratelimit Strapi Plugin](https://upstash.com/docs/redis/integrations/ratelimit/strapi/configurations.md)
@@ -360,6 +359,7 @@
- [Vercel AI SDK Memory, RAG & Chat History with Redis](https://upstash.com/docs/redis/sdks/agentkit/ai-sdk.md): Add long-term memory, RAG, and chat history to the Vercel AI SDK with Upstash Redis — drop-in tools for generateText and streamText, no separate vector database.
- [Memory, RAG, Rate Limiting & Sandboxes for the Vercel Eve Agent Framework](https://upstash.com/docs/redis/sdks/agentkit/eve.md): Add long-term memory, RAG, rate limiting, tool caching, and sandboxes to Vercel's Eve agent framework with Upstash Redis — no separate vector database.
- [Memory, RAG, Rate Limiting & Sandboxes for the Vercel Eve Agent Framework](https://upstash.com/docs/redis/sdks/agentkit/eve.md): Add long-term memory, RAG, rate limiting, tool caching, and sandboxes to Vercel's Eve agent framework with Upstash Redis — no separate vector database.
+- [Upstash Redis MCP](https://upstash.com/docs/redis/sdks/mcp.md)
- [ECHO](https://upstash.com/docs/redis/sdks/py/commands/auth/echo.md)
- [PING](https://upstash.com/docs/redis/sdks/py/commands/auth/ping.md): Send a ping to the server and get a response if the server is alive.
- [BITCOUNT](https://upstash.com/docs/redis/sdks/py/commands/bitmap/bitcount.md): Count the number of set bits.
diff --git a/qstash/overall/getstarted.mdx b/qstash/overall/getstarted.mdx
index da759d35..a1c5ac05 100644
--- a/qstash/overall/getstarted.mdx
+++ b/qstash/overall/getstarted.mdx
@@ -2,6 +2,8 @@
title: "Getting Started"
---
+import { Catalog } from "/snippets/catalog.jsx";
+
QStash is a **serverless messaging and scheduling solution**. It fits easily into your existing workflow and allows you to build reliable systems without managing infrastructure.
Instead of calling an endpoint directly, QStash acts as a middleman between you and an API to guarantee delivery, perform automatic retries on failure, and more.
@@ -159,3 +161,7 @@ Learn more about different states [here](/qstash/howto/debug-logs).
+## SDKs
+
+
+
diff --git a/redis/features/credential-protection.mdx b/redis/features/credential-protection.mdx
index a86e4ce9..e2ec9b38 100644
--- a/redis/features/credential-protection.mdx
+++ b/redis/features/credential-protection.mdx
@@ -41,6 +41,7 @@ When enabled:
## What If You Lose Your Credentials
**Reset Credentials**: This function remains available and, when credential protection is enabled, will generate new protected credentials.
+Navigate to the settings tab of your database and click **Reset Credentials**. You will be prompted to save the new credentials.
diff --git a/redis/features/restapi.mdx b/redis/features/restapi.mdx
index 490e10f3..14d2aabc 100644
--- a/redis/features/restapi.mdx
+++ b/redis/features/restapi.mdx
@@ -1,13 +1,15 @@
---
title: REST API
+description: Access your Upstash Redis database over HTTP, from serverless and edge runtimes where TCP connections are restricted.
---
-REST API enables you to access your Upstash database using REST.
-
## Get Started
-If you do not have a database already, follow
-[these steps](../overall/getstarted) to create one.
+
+ Looking for the URL and token of your database? First [create a Redis
+ database](/redis/overall/getstarted), then [find your
+ credentials](/redis/howto/connect-client) in the console.
+
In the [Upstash Console](https://console.upstash.com/redis), select your database. Then, in the database page, you will see the section that includes the endpoint URL and token details. When you hover over the `Endpoint` or `Token / Readonly Token` fields, copy button will appear for each. You can click it to easily copy the values you need for your connection.
diff --git a/redis/overall/getstarted.mdx b/redis/overall/getstarted.mdx
index e4c38d63..6809bb4f 100755
--- a/redis/overall/getstarted.mdx
+++ b/redis/overall/getstarted.mdx
@@ -3,6 +3,8 @@ title: Getting Started
description: Create an Upstash Redis database in seconds
---
+import { Catalog } from "/snippets/catalog.jsx";
+
Upstash Redis is a **highly available, infinitely scalable** Redis-compatible database:
- 99.99% uptime guarantee with auto-scaling ([Prod Pack](/redis/overall/enterprise#prod-pack-features))
@@ -75,7 +77,7 @@ Congratulations! You have created an ultra-fast Upstash Redis database! 🎉
**New: Manage Upstash Redis with your agent**
-Manage Upstash Redis databases from Claude and other AI tools by using our [MCP server](/agent-resources/mcp). To let an agent run commands directly against a single database, use the dedicated [Redis MCP](/redis/integrations/mcp).
+Manage Upstash Redis databases from Claude and other AI tools by using our [MCP server](/agent-resources/mcp). To let an agent run commands directly against a single database, use the dedicated [Redis MCP](/redis/sdks/mcp).
## Next steps
@@ -85,3 +87,7 @@ Manage Upstash Redis databases from Claude and other AI tools by using our [MCP
- [Upstash Redis Search](/redis/search/introduction): full-text search built into Upstash Redis.
- [REST API](/redis/features/restapi): connect from edge and serverless runtimes where TCP is restricted.
- [Pricing & Billing](/redis/overall/billing): free tier, Pay-As-You-Go, and Fixed plan limits, plus how billing works.
+
+## SDKs
+
+
diff --git a/redis/integrations/mcp.mdx b/redis/sdks/mcp.mdx
similarity index 100%
rename from redis/integrations/mcp.mdx
rename to redis/sdks/mcp.mdx
diff --git a/redis/search/introduction.mdx b/redis/search/introduction.mdx
index 1a4619da..f0256bbe 100644
--- a/redis/search/introduction.mdx
+++ b/redis/search/introduction.mdx
@@ -2,6 +2,8 @@
title: Introduction
---
+import { Catalog } from "/snippets/catalog.jsx";
+
Upstash Redis Search is our first extension beyond the official Redis spec. Using the Rust-based Tantivy under the hood, we provide an extremely fast way to search through Redis data.
@@ -44,3 +46,7 @@ Upstash Redis Search is our first extension beyond the official Redis spec. Usin
Complete, real-world examples you can adapt to your own use cases
+
+## Demos
+
+
diff --git a/search/overall/getstarted.mdx b/search/overall/getstarted.mdx
index 269b93d9..c57ea167 100644
--- a/search/overall/getstarted.mdx
+++ b/search/overall/getstarted.mdx
@@ -3,6 +3,8 @@ title: Getting Started
description: Creating an Upstash Search Database
---
+import { Catalog } from "/snippets/catalog.jsx";
+
---
diff --git a/snippets/catalog.jsx b/snippets/catalog.jsx
new file mode 100644
index 00000000..3bea8f7c
--- /dev/null
+++ b/snippets/catalog.jsx
@@ -0,0 +1,113 @@
+// Single source of truth for SDKs, integrations, and demos across the docs.
+//
+// Renders custom-styled cards (see .u-card in style.css) with a programming-language
+// icon per card. Used on each product landing (filtered via the `product` prop).
+//
+// NOTE (Mintlify constraint, validated): an exported component CANNOT reference a
+// sibling module-level `export const`. Mintlify compiles each export in isolation,
+// so the data array MUST live inside the component's own function body.
+//
+// Fields: { title, description, href, product, type, lang, featured? }
+// product: "redis" | "vector" | "qstash" | "workflow" | "search" | "box" (or an array)
+// type: "sdk" | "integration" | "demo"
+// lang: "typescript" | "python" | "ruby" (icon in img/icons/lang/.svg)
+
+export const Catalog = ({ product, type, featured, search, cols = 3 }) => {
+ const catalog = [
+ // ---------- SDKs ----------
+ { title: "@upstash/redis", description: "HTTP-based Redis client for serverless and edge.", href: "/redis/sdks/ts/overview", product: "redis", type: "sdk", lang: "typescript", featured: true },
+ { title: "upstash-redis (Python)", description: "Serverless Redis client for Python.", href: "/redis/sdks/py/overview", product: "redis", type: "sdk", lang: "python" },
+ { title: "@upstash/ratelimit", description: "Rate limiting for serverless, built on Redis.", href: "/redis/sdks/ratelimit-ts/overview", product: "redis", type: "sdk", lang: "typescript", featured: true },
+ { title: "ratelimit (Python)", description: "Rate limiting SDK for Python.", href: "/redis/sdks/ratelimit-py/overview", product: "redis", type: "sdk", lang: "python" },
+ { title: "Realtime", description: "Add realtime features to any Next.js app.", href: "/realtime/overall/quickstart", product: "redis", type: "sdk", lang: "typescript" },
+ { title: "AgentKit", description: "Agent memory, RAG, and chat history on Redis.", href: "/redis/sdks/agentkit/ai-sdk", product: "redis", type: "sdk", lang: "typescript" },
+ { title: "Redis Analytics", description: "Event tracking, flags, and A/B testing, powered by Redis.", href: "https://github.com/upstash/redis-analytics", product: "redis", type: "sdk", lang: "typescript" },
+ { title: "Agent Analytics", description: "Track AI agent traffic hitting your website.", href: "https://github.com/upstash/agent-analytics", product: "redis", type: "sdk", lang: "typescript" },
+ { title: "MCP Server", description: "Manage Upstash Redis from AI agents via MCP.", href: "/redis/sdks/mcp", product: "redis", type: "sdk", lang: "typescript" },
+ { title: "@upstash/vector", description: "Vector database client for AI and LLM apps.", href: "/vector/sdks/ts/getting-started", product: "vector", type: "sdk", lang: "typescript", featured: true },
+ { title: "upstash-vector (Python)", description: "Vector database client for Python.", href: "/vector/sdks/py/gettingstarted", product: "vector", type: "sdk", lang: "python" },
+ { title: "@upstash/qstash", description: "Publish messages and schedule jobs over HTTP.", href: "/qstash/sdks/ts/overview", product: "qstash", type: "sdk", lang: "typescript", featured: true },
+ { title: "qstash-py", description: "QStash messaging and scheduling for Python.", href: "/qstash/sdks/py/overview", product: "qstash", type: "sdk", lang: "python" },
+ { title: "@upstash/workflow", description: "Durable serverless functions and workflows.", href: "https://github.com/upstash/workflow-js", product: "workflow", type: "sdk", lang: "typescript", featured: true },
+ { title: "workflow-py", description: "Durable workflows for Python.", href: "https://github.com/upstash/workflow-py", product: "workflow", type: "sdk", lang: "python" },
+ { title: "Workflow Agents", description: "Reliable single and multi-agent workflows.", href: "/workflow/agents/overview", product: "workflow", type: "sdk", lang: "typescript" },
+ { title: "@upstash/search", description: "Full-text and semantic search client.", href: "/search/sdks/ts/getting-started", product: "search", type: "sdk", lang: "typescript", featured: true },
+ { title: "upstash-search (Python)", description: "Search client for Python.", href: "/search/sdks/py/gettingstarted", product: "search", type: "sdk", lang: "python" },
+ { title: "@upstash/box", description: "TypeScript SDK for Upstash Box.", href: "https://github.com/upstash/box/tree/main/packages/sdk", product: "box", type: "sdk", lang: "typescript", featured: true },
+ { title: "box (Python)", description: "Python SDK for Upstash Box.", href: "https://github.com/upstash/box/tree/main/packages/python-sdk", product: "box", type: "sdk", lang: "python" },
+ { title: "Box CLI", description: "Create and manage boxes from your terminal.", href: "https://github.com/upstash/box/tree/main/packages/cli", product: "box", type: "sdk", lang: "typescript" },
+
+ // ---------- Integrations ----------
+ { title: "BullMQ", description: "Message queue built on Redis.", href: "/redis/integrations/bullmq", product: "redis", type: "integration", lang: "typescript", featured: true },
+ { title: "Drizzle", description: "Cache Drizzle ORM queries with Upstash Redis.", href: "/redis/integrations/drizzle", product: "redis", type: "integration", lang: "typescript", featured: true },
+ { title: "Celery", description: "Use Upstash Redis as a Celery broker.", href: "/redis/integrations/celery", product: "redis", type: "integration", lang: "python" },
+ { title: "Sidekiq", description: "Background jobs for Ruby on Upstash Redis.", href: "/redis/integrations/sidekiq", product: "redis", type: "integration", lang: "ruby" },
+ { title: "n8n (Redis)", description: "Automate workflows with Redis nodes in n8n.", href: "/redis/integrations/n8n", product: "redis", type: "integration", lang: "typescript" },
+ { title: "Prometheus (Redis)", description: "Scrape Upstash Redis metrics into Prometheus.", href: "/redis/integrations/prometheus", product: "redis", type: "integration", lang: "typescript" },
+ { title: "LangChain", description: "Vector store integration for LLM apps.", href: "/vector/integrations/langchain", product: "vector", type: "integration", lang: "python", featured: true },
+ { title: "Vercel AI SDK", description: "Back the AI SDK with Upstash Vector.", href: "/vector/integrations/ai-sdk", product: "vector", type: "integration", lang: "typescript", featured: true },
+ { title: "LlamaIndex", description: "Use Upstash Vector as a LlamaIndex store.", href: "/vector/integrations/llamaindex", product: "vector", type: "integration", lang: "python" },
+ { title: "Flowise", description: "Build LLM flows on Upstash Vector.", href: "/vector/integrations/flowise", product: "vector", type: "integration", lang: "typescript" },
+ { title: "Langflow", description: "Visual LLM apps backed by Upstash Vector.", href: "/vector/integrations/langflow", product: "vector", type: "integration", lang: "python" },
+ { title: "LlamaParse", description: "Parse and index documents into Upstash Vector.", href: "/vector/integrations/llamaparse", product: "vector", type: "integration", lang: "python" },
+ { title: "Resend", description: "Send emails from QStash workflows.", href: "/qstash/integrations/resend", product: "qstash", type: "integration", lang: "typescript", featured: true },
+ { title: "Anthropic", description: "Call Claude reliably through QStash.", href: "/qstash/integrations/anthropic", product: "qstash", type: "integration", lang: "typescript" },
+ { title: "LLM APIs", description: "Queue and retry LLM calls with QStash.", href: "/qstash/integrations/llm", product: "qstash", type: "integration", lang: "typescript" },
+ { title: "Datadog", description: "Monitor QStash with Datadog.", href: "/qstash/integrations/datadog", product: "qstash", type: "integration", lang: "typescript" },
+ { title: "Pipedream", description: "Trigger Pipedream workflows from QStash.", href: "/qstash/integrations/pipedream", product: "qstash", type: "integration", lang: "typescript" },
+ { title: "n8n (QStash)", description: "Publish QStash messages from n8n.", href: "/qstash/integrations/n8n", product: "qstash", type: "integration", lang: "typescript" },
+ { title: "Documentation Crawler", description: "Crawl docs and feed them into Upstash Search.", href: "/search/tools/documentationcrawler", product: "search", type: "integration", lang: "typescript" },
+ { title: "Database Migrator", description: "Migrate your data into Upstash Search.", href: "/search/tools/databasemigrator", product: "search", type: "integration", lang: "typescript" },
+ { title: "Docusaurus", description: "Add full-text search to a Docusaurus site.", href: "/search/integrations/docusaurus", product: "search", type: "integration", lang: "typescript" },
+
+ // ---------- Demos ----------
+ { title: "Hacker News Trends", description: "Trend search over Hacker News, built on Upstash.", href: "https://hackernewstrends.com", product: "redis", type: "demo", lang: "typescript", search: true, featured: true },
+ { title: "Eve: Hacker News Agent", description: "A Hacker News agent built with the Vercel Eve framework.", href: "https://upstash-hackernews-eve-agent.vercel.app", product: "redis", type: "demo", lang: "typescript", search: true, featured: true },
+ { title: "OpenClaw", description: "Run OpenClaw inside an Upstash Box.", href: "/box/guides/openclaw-setup", product: "box", type: "guide" },
+ { title: "Hermes", description: "Run the Hermes agent inside a Box.", href: "/box/guides/hermes-setup", product: "box", type: "guide" },
+ { title: "Crabbox", description: "Run your test suite in a Box from your local CLI.", href: "/box/guides/crabbox-setup", product: "box", type: "guide" },
+ { title: "Web Scraping with Playwright", description: "Scrape dynamic websites with Playwright.", href: "/box/guides/web-scraping-playwright", product: "box", type: "guide" },
+ { title: "E-commerce Order Fulfillment", description: "Durable order processing with Workflow.", href: "/workflow/examples/eCommerceOrderFulfillment", product: "workflow", type: "demo", lang: "typescript", featured: true },
+ { title: "Image Processing", description: "Fan-out image jobs with Workflow.", href: "/workflow/examples/imageProcessing", product: "workflow", type: "demo", lang: "typescript", featured: true },
+ { title: "Customer Onboarding", description: "Multi-step onboarding flow with delays.", href: "/workflow/examples/customerOnboarding", product: "workflow", type: "demo", lang: "typescript" },
+ { title: "Payment Retry", description: "Retry failed payments with backoff.", href: "/workflow/examples/paymentRetry", product: "workflow", type: "demo", lang: "typescript" },
+ { title: "Wait for Event", description: "Pause a workflow until an external event.", href: "/workflow/examples/waitForEvent", product: "workflow", type: "demo", lang: "typescript" },
+ { title: "Auth Webhook", description: "Handle auth webhooks durably.", href: "/workflow/examples/authWebhook", product: "workflow", type: "demo", lang: "typescript" },
+ ];
+
+ const matchesProduct = (entry) =>
+ !product ||
+ (Array.isArray(entry.product)
+ ? entry.product.includes(product)
+ : entry.product === product);
+
+ const items = catalog.filter(
+ (entry) =>
+ matchesProduct(entry) &&
+ (!type || entry.type === type) &&
+ (!featured || entry.featured) &&
+ (!search || entry.search),
+ );
+
+ const gridClass = "u-grid " + (cols >= 3 ? "u-grid--3" : "u-grid--2");
+
+ return (
+