From 382e5ec3ee564dbaf2d9b7f5a8a64561482e716f Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 29 Oct 2026 01:02:02 -0700 Subject: [PATCH] Add Redo plugin (third_party/redo) Co-authored-by: Rohan Shah --- .cursor-plugin/marketplace.json | 10 ++++ README.md | 1 + third_party/redo/.cursor-plugin/plugin.json | 38 +++++++++++++ third_party/redo/CHANGELOG.md | 11 ++++ third_party/redo/LICENSE | 21 ++++++++ third_party/redo/README.md | 56 ++++++++++++++++++++ third_party/redo/assets/logo.png | Bin 0 -> 7696 bytes third_party/redo/mcp.json | 9 ++++ 8 files changed, 146 insertions(+) create mode 100644 third_party/redo/.cursor-plugin/plugin.json create mode 100644 third_party/redo/CHANGELOG.md create mode 100644 third_party/redo/LICENSE create mode 100644 third_party/redo/README.md create mode 100644 third_party/redo/assets/logo.png create mode 100644 third_party/redo/mcp.json diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index 74bf22bdd..5abd4cfa8 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -682,6 +682,16 @@ "grokbot": "0.49.0", "sand": "0.49.0" } + }, + { + "name": "redo", + "source": "third_party/redo", + "description": "Redo is a commerce platform for returns, order management, and post-purchase. The Redo MCP server connects AI assistants to a merchant's Redo account so they can manage returns, look up order details, update return statuses, process returned items, and ask Redo's AI questions about their store's data, all from chat.", + "minClientVersions": { + "cursor": "3.13.0", + "grokbot": "0.49.0", + "sand": "0.49.0" + } } ] } diff --git a/README.md b/README.md index bec1cbfd3..95472b568 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc | `rippling` | [Rippling](third_party/rippling/) | Cursor | Integrations | Look up people, time off, and company policy in Rippling, and file time-off requests and draft hires. | | `onepay` | [OnePay](third_party/onepay/) | Cursor | Integrations | Access your OnePay accounts: balances, transactions, credit, Pay Later, investments, crypto, and rewards. | | `questrade` | [Questrade](third_party/questrade/) | Cursor | Integrations | Read your Questrade portfolio, get live market data, and discuss potential trades. | +| `redo` | [Redo](third_party/redo/) | Cursor | Integrations | Redo is a commerce platform for returns, order management, and post-purchase. The Redo MCP server connects AI assistants to a merchant's Redo account so they can manage returns, look up order details, update return statuses, process returned items, and ask Redo's AI questions about their store's data, all from chat. | Author values match each plugin’s `plugin.json` `author.name` (Cursor lists `plugins@cursor.com` in the manifest). ## Repository structure diff --git a/third_party/redo/.cursor-plugin/plugin.json b/third_party/redo/.cursor-plugin/plugin.json new file mode 100644 index 000000000..8209e72d7 --- /dev/null +++ b/third_party/redo/.cursor-plugin/plugin.json @@ -0,0 +1,38 @@ +{ + "name": "redo", + "displayName": "Redo", + "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0", + "grokbot": "0.49.0", + "sand": "0.49.0" + }, + "description": "Redo is a commerce platform for returns, order management, and post-purchase. The Redo MCP server connects AI assistants to a merchant's Redo account so they can manage returns, look up order details, update return statuses, process returned items, and ask Redo's AI questions about their store's data, all from chat.", + "author": { + "name": "Cursor", + "email": "plugins@cursor.com" + }, + "homepage": "https://redo.com/", + "repository": "https://github.com/cursor/plugins", + "license": "MIT", + "logo": "assets/logo.png", + "keywords": [ + "redo", + "returns", + "exchanges", + "order management", + "post-purchase", + "ecommerce", + "merchants", + "customer service", + "mcp" + ], + "category": "integrations", + "tags": [ + "redo", + "ecommerce", + "returns", + "mcp" + ], + "mcpServers": "./mcp.json" +} diff --git a/third_party/redo/CHANGELOG.md b/third_party/redo/CHANGELOG.md new file mode 100644 index 000000000..9ddc74947 --- /dev/null +++ b/third_party/redo/CHANGELOG.md @@ -0,0 +1,11 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.0 — initial release + +- Added the `redo` MCP server pointing at Redo's hosted Streamable HTTP endpoint (`https://mcp.getredo.com/mcp`). +- Declares `"placement": "server"` so Grok Bot (desktop and mobile) dials it through the hosted MCP path and shows a connect / sign-in card. +- Auth uses OAuth 2.1 with PKCE, dynamic client registration and Redo user login — no API key or client ID to configure. +- Listed in Cursor (`3.13.0`) and Grok Bot (`0.49.0`). +- Logo: Redo's official mark, from the logo URL Redo submitted, resized to 192×192. diff --git a/third_party/redo/LICENSE b/third_party/redo/LICENSE new file mode 100644 index 000000000..ca2bba771 --- /dev/null +++ b/third_party/redo/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Cursor + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/third_party/redo/README.md b/third_party/redo/README.md new file mode 100644 index 000000000..92a98408a --- /dev/null +++ b/third_party/redo/README.md @@ -0,0 +1,56 @@ +# Redo + +Plugin that connects agents to [Redo](https://redo.com/) through Redo's official remote [Model Context Protocol](https://modelcontextprotocol.io/) server. + +Redo is a commerce platform for returns, order management, and post-purchase. The Redo MCP server connects AI assistants to a merchant's Redo account so they can manage returns, look up order details, update return statuses, process returned items, and ask Redo's AI questions about their store's data, all from chat. + +## Install + +1. Open **Cursor Settings → Plugins**. +2. Search for **Redo**. +3. Click **Install**, then complete the Redo sign-in prompt. + +Or run `/add-plugin redo` in chat. In Grok Bot (0.49 or newer), connect **Redo** from the connector list. + +## MCP + +```json +{ + "mcpServers": { + "redo": { + "type": "http", + "url": "https://mcp.getredo.com/mcp", + "placement": "server" + } + } +} +``` + +`"placement": "server"` tells Grok Bot (desktop and mobile) to dial Redo through the hosted MCP path, so it shows a connect / sign-in card. Cursor ignores it. + +Auth is OAuth 2.1 with PKCE and dynamic client registration. An unauthenticated request returns `401` with `resource_metadata` pointing at `https://mcp.getredo.com/.well-known/oauth-protected-resource/mcp`, and the authorization server is `https://mcp.getredo.com/`. The client prompts for Redo sign-in when the plugin connects — there is no client ID or API key to configure. + +## Before you connect + +You need a Redo merchant account. You approve the access requested on Redo's sign-in and consent screens. + +## What agents can do + +| Category | Capabilities | +| --- | --- | +| Returns | List and look up returns, update return statuses, process returned items, and read return tags | +| Orders | Look up order details | +| Store insights | Ask Redo's AI questions about your store's data | + +Some of these tools change data in your Redo account (return statuses and processing), so review what the agent proposes before approving it. The hosted runtime is the source of truth for tool names and schemas. + +## Docs + +- Redo: https://redo.com/ +- Server URL: https://mcp.getredo.com/mcp + +Logo is Redo's official mark. + +## License + +MIT diff --git a/third_party/redo/assets/logo.png b/third_party/redo/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a721b23503995036b74d17caa1697d7479fc1c95 GIT binary patch literal 7696 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 G(EkD38+p+H literal 0 HcmV?d00001 diff --git a/third_party/redo/mcp.json b/third_party/redo/mcp.json new file mode 100644 index 000000000..b846df58b --- /dev/null +++ b/third_party/redo/mcp.json @@ -0,0 +1,9 @@ +{ + "mcpServers": { + "redo": { + "type": "http", + "url": "https://mcp.getredo.com/mcp", + "placement": "server" + } + } +}