diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index 7eb2de2f..ad6a65c4 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -332,6 +332,11 @@ "name": "x-ads", "source": "third_party/x-ads", "description": "Manage ad campaigns, create ads, track conversions, and pull performance stats." + }, + { + "name": "plaid", + "source": "third_party/plaid", + "description": "Debug Items, review Link conversion, and check usage metrics." } ] } diff --git a/README.md b/README.md index 5408d433..ceae4f42 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc | `similarweb` | [Similarweb](third_party/similarweb/) | Cursor | Integrations | Analyze website traffic, audiences, and competitors. | | `xero` | [Xero](third_party/xero/) | Cursor | Integrations | Read and write invoices, contacts, reports, and payroll. | | `x-ads` | [X Ads](third_party/x-ads/) | Cursor | Integrations | Manage ad campaigns, create ads, track conversions, and pull performance stats. | +| `plaid` | [Plaid](third_party/plaid/) | Cursor | Integrations | Debug Items, review Link conversion, and check usage metrics. | 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/plaid/.cursor-plugin/plugin.json b/third_party/plaid/.cursor-plugin/plugin.json new file mode 100644 index 00000000..56d26e8a --- /dev/null +++ b/third_party/plaid/.cursor-plugin/plugin.json @@ -0,0 +1,35 @@ +{ + "name": "plaid", + "displayName": "Plaid", + "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, + "description": "Debug Items, review Link conversion, and check usage metrics.", + "author": { + "name": "Cursor", + "email": "plugins@cursor.com" + }, + "homepage": "https://plaid.com/docs/resources/mcp/", + "repository": "https://github.com/cursor/plugins", + "license": "MIT", + "logo": "assets/logo.svg", + "keywords": [ + "plaid", + "fintech", + "finance", + "payments", + "banking", + "open-banking", + "link", + "mcp" + ], + "category": "integrations", + "tags": [ + "plaid", + "finance", + "payments", + "mcp" + ], + "mcpServers": "./mcp.json" +} diff --git a/third_party/plaid/CHANGELOG.md b/third_party/plaid/CHANGELOG.md new file mode 100644 index 00000000..cc383092 --- /dev/null +++ b/third_party/plaid/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.0 — initial release + +- Added the `plaid` MCP server pointing at `https://api.dashboard.plaid.com/mcp/` (Plaid's hosted Dashboard MCP server, Streamable HTTP). +- Auth is OAuth against the Plaid Dashboard — no API key or client ID is bundled with the plugin. +- Logo: Plaid's lattice mark, redrawn as vector geometry on a padded white tile. diff --git a/third_party/plaid/LICENSE b/third_party/plaid/LICENSE new file mode 100644 index 00000000..ca2bba77 --- /dev/null +++ b/third_party/plaid/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/plaid/README.md b/third_party/plaid/README.md new file mode 100644 index 00000000..fc4bd8ae --- /dev/null +++ b/third_party/plaid/README.md @@ -0,0 +1,72 @@ +# Plaid + +Cursor plugin that connects agents to [Plaid](https://plaid.com) through Plaid's official remote [Model Context Protocol](https://modelcontextprotocol.io/) server, the **Dashboard MCP server**. + +Debug Items and broken bank connections, review Link conversion data, and check API usage and product metrics for your Plaid integration — the same Production diagnostics and analytics that live in the Plaid Dashboard. + +## Install + +1. Open **Cursor Settings → Plugins**. +2. Search for **Plaid**. +3. Click **Install**, then complete the Plaid Dashboard sign-in prompt. + +Or run `/add-plugin plaid` in chat. + +## MCP + +```json +{ + "mcpServers": { + "plaid": { + "type": "http", + "url": "https://api.dashboard.plaid.com/mcp/" + } + } +} +``` + +The server speaks Streamable HTTP. Plaid also serves a legacy SSE endpoint at `https://api.dashboard.plaid.com/mcp/sse`; this plugin uses the Streamable HTTP URL from Plaid's current docs. + +## Auth + +Auth is OAuth 2.0 against the Plaid Dashboard. Every request to the server must carry `Authorization: Bearer `, and tool calls are scoped to what the signed-in Dashboard user can already see. Plaid documents two ways to get that token: + +- **Interactive (MCP clients and hosted assistants).** Add the server URL and sign in to the Plaid Dashboard when prompted. This is the flow this plugin is packaged for. +- **Machine-to-machine (backend / model-provider APIs).** Call `POST https://production.plaid.com/oauth/token` with `grant_type: client_credentials` and `scope: mcp:dashboard` using your Plaid `client_id` and Production secret, then pass the resulting short-lived access token (15-minute TTL, with refresh token) as the bearer header. This path is for servers, not for the plugin. + +> **Note on Cursor OAuth wiring.** This plugin only packages the server definition; it does not bundle an OAuth client ID or secret. Cursor attempts OAuth (including Dynamic Client Registration) when the server returns `401`. If Plaid requires a pre-registered OAuth client for third-party MCP clients, Cursor's static OAuth path (`auth.CLIENT_ID` / `auth.CLIENT_SECRET` on the server entry) or backend wiring will need to be set up separately with credentials issued by Plaid. Do not paste your Plaid API secret into `mcp.json`. + +## Before you connect + +- You need a Plaid account with **Production** access and at least one product approved for Production. The Dashboard MCP server does not operate on Sandbox data. +- Data access follows your Dashboard role and team permissions. + +## What agents can do + +| Category | Capabilities | +| --- | --- | +| Items | Diagnose Items and broken bank connections, look up Item status and error details | +| Link | Review Link conversion data and funnel drop-off | +| Usage | Check API request volumes, product usage, and usage trends | +| Teams | List the teams the signed-in user belongs to | + +The hosted runtime is the source of truth for tool names and schemas. + +## Notes + +- The Dashboard MCP server is read-only: it surfaces diagnostics and analytics and cannot move money, create Items, or change your integration. +- This is Plaid's **Dashboard** MCP server for operating an existing Plaid integration. Plaid separately ships a local, stdio-based Sandbox MCP server (`mcp-server-plaid`) in its AI coding toolkit for building integrations against Sandbox data; that server is not part of this plugin. +- Plaid may change the tool catalog; check the docs for the current list. + +## Docs + +- Dashboard MCP server: https://plaid.com/docs/resources/mcp/ +- OAuth token endpoint (`/oauth/token`): https://plaid.com/docs/api/oauth/ +- AI coding toolkit (local Sandbox MCP server): https://github.com/plaid/ai-coding-toolkit +- Server URL: https://api.dashboard.plaid.com/mcp/ + +Logo is Plaid's lattice mark, redrawn as vector geometry and placed on a white tile with padding so it reads well in the Cursor UI. + +## License + +MIT diff --git a/third_party/plaid/assets/logo.svg b/third_party/plaid/assets/logo.svg new file mode 100644 index 00000000..3cf4d4d5 --- /dev/null +++ b/third_party/plaid/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/third_party/plaid/mcp.json b/third_party/plaid/mcp.json new file mode 100644 index 00000000..aaa5ec33 --- /dev/null +++ b/third_party/plaid/mcp.json @@ -0,0 +1,8 @@ +{ + "mcpServers": { + "plaid": { + "type": "http", + "url": "https://api.dashboard.plaid.com/mcp/" + } + } +}