Skip to content

Commit aef1685

Browse files
committed
v0.6.0 Framework Integration
- 3 live MCP tools: updateItemWebhook, getLiabilities, verifyWebhookSignature - Production skill: plaid-react-integration (usePlaidLink, PlaidContext, error boundaries, update mode) - Production skill: plaid-nextjs-integration (App Router routes, server-only client, middleware auth, webhook handler, server actions) - Re-tagged getTransferIntent and inspectAccessToken stubs to v0.7.0 - Version bumps across plugin.json, package.json, index.ts, README, CLAUDE, CHANGELOG, ROADMAP - 454 tests passing Made-with: Cursor
1 parent 1750682 commit aef1685

15 files changed

Lines changed: 678 additions & 97 deletions

File tree

.cursor-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "plaid-developer-tools",
33
"displayName": "Plaid Developer Tools",
4-
"version": "0.5.0",
4+
"version": "0.6.0",
55
"description": "Plaid API integration for fintech developers using Cursor, Claude Code, and MCP-compatible editors. 17 skills covering Link setup, transaction sync, webhooks, sandbox testing, category mapping, error handling, API reference, institution search, account verification, investments, identity, recurring detection, migration, security, React integration, Next.js integration, and production readiness - plus 7 rules. Companion MCP server provides 30 tools for live Plaid sandbox interaction.",
66
"author": {
77
"name": "TMHSDigital",

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,20 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [0.6.0] - 2026-04-02
6+
7+
### Added
8+
9+
- 3 live MCP tools: `plaid_updateItemWebhook`, `plaid_getLiabilities`, `plaid_verifyWebhookSignature`
10+
- Production skill: `plaid-react-integration` - usePlaidLink hook, PlaidContext provider, error boundaries, reconnection UI, TypeScript types
11+
- Production skill: `plaid-nextjs-integration` - App Router API routes, server-only Plaid client, middleware auth, webhook handler, server actions
12+
13+
### Changed
14+
15+
- Re-tagged 2 MCP tool stubs (`getTransferIntent`, `inspectAccessToken`) from v0.6.0 to v0.7.0
16+
- `plaid_verifyWebhookSignature` verifies body hash against JWT claims and fetches the verification key from Plaid
17+
- `plaid_getLiabilities` supports optional `account_ids` filter for scoping to specific liability accounts
18+
519
## [0.5.0] - 2026-04-01
620

721
### Added

CLAUDE.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
44

55
## Project Overview
66

7-
The **Plaid Developer Tools** Cursor plugin is at **v0.5.0**. It accelerates Plaid integration work with **17 skills**, **7 rules**, and a companion MCP server exposing **30 tools** for Link, transactions, webhooks, sandbox flows, and API discovery. Skills encode workflows; rules enforce secrets handling, errors, webhook safety, sync cursor persistence, Link best practices, and token storage; the MCP server has 25 live tools (reference data, institutions, sandbox, Link tokens, accounts, balances, transactions, investments, identity, auth, item management) and 5 stubs for future releases.
7+
The **Plaid Developer Tools** Cursor plugin is at **v0.6.0**. It accelerates Plaid integration work with **17 skills**, **7 rules**, and a companion MCP server exposing **30 tools** for Link, transactions, webhooks, sandbox flows, and API discovery. Skills encode workflows; rules enforce secrets handling, errors, webhook safety, sync cursor persistence, Link best practices, and token storage; the MCP server has 28 live tools (reference data, institutions, sandbox, Link tokens, accounts, balances, transactions, investments, identity, auth, item management, liabilities, webhook verification) and 2 stubs for future releases.
88

99
## Plugin Architecture
1010

@@ -33,8 +33,8 @@ mcp-server/ - MCP server with 30 tools
3333
| plaid-recurring-detection | Recurring transaction streams, subscription detection, income recognition |
3434
| plaid-migration-guide | Migration from other aggregators (coming v0.7.0) |
3535
| plaid-security-best-practices | Token encryption, RLS, audit logging (coming v0.7.0) |
36-
| plaid-react-integration | React hooks and components (coming v0.6.0) |
37-
| plaid-nextjs-integration | Next.js App Router patterns (coming v0.6.0) |
36+
| plaid-react-integration | React hooks, context providers, error boundaries, update mode |
37+
| plaid-nextjs-integration | Next.js App Router routes, server actions, middleware auth, webhook handlers |
3838
| plaid-production-readiness | Production access checklist (coming v0.7.0) |
3939

4040
## Rules (7 total)

README.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
**Cursor plugin and MCP companion for building on Plaid**
88

9-
[![Version](https://img.shields.io/badge/version-0.5.0-3B5CFF?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAyTDIyIDEyTDEyIDIyTDIgMTJaIi8+PC9zdmc+)](https://github.com/TMHSDigital/Plaid-Developer-Tools)
9+
[![Version](https://img.shields.io/badge/version-0.6.0-3B5CFF?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAyTDIyIDEyTDEyIDIyTDIgMTJaIi8+PC9zdmc+)](https://github.com/TMHSDigital/Plaid-Developer-Tools)
1010
[![License: CC BY-NC-ND 4.0](https://img.shields.io/badge/License-CC%20BY--NC--ND%204.0-lightgrey?style=for-the-badge)](https://creativecommons.org/licenses/by-nc-nd/4.0/)
1111
[![CI](https://img.shields.io/github/actions/workflow/status/TMHSDigital/Plaid-Developer-Tools/ci.yml?branch=main&label=CI&logo=githubactions&style=for-the-badge)](https://github.com/TMHSDigital/Plaid-Developer-Tools/actions/workflows/ci.yml)
1212
[![Validate](https://img.shields.io/github/actions/workflow/status/TMHSDigital/Plaid-Developer-Tools/validate.yml?branch=main&label=Validate&logo=githubactions&style=for-the-badge)](https://github.com/TMHSDigital/Plaid-Developer-Tools/actions/workflows/validate.yml)
@@ -22,7 +22,7 @@
2222

2323
## Overview
2424

25-
Plaid Developer Tools is a **Cursor** plugin by **TMHSDigital** that packages agent skills, editor rules, and a TypeScript **MCP server** (`mcp-server/`) so you can design, debug, and ship Plaid integrations without leaving the IDE. Production coverage today is **v0.5.0** with twelve skills, seven rules, and twenty-five live MCP tools; the rest are staged stubs with version targets on the [roadmap](ROADMAP.md).
25+
Plaid Developer Tools is a **Cursor** plugin by **TMHSDigital** that packages agent skills, editor rules, and a TypeScript **MCP server** (`mcp-server/`) so you can design, debug, and ship Plaid integrations without leaving the IDE. Production coverage today is **v0.6.0** with fourteen skills, seven rules, and twenty-eight live MCP tools; the rest are staged stubs with version targets on the [roadmap](ROADMAP.md).
2626

2727
<table>
2828
<tr>
@@ -34,7 +34,7 @@ Plaid Developer Tools is a **Cursor** plugin by **TMHSDigital** that packages ag
3434
| --- | --- |
3535
| **Skills** | Guided workflows: Link, `/transactions/sync`, webhooks, sandbox, categories, errors, and future topics |
3636
| **Rules** | Guardrails: `plaid-secrets`, `plaid-error-handling`, `plaid-env-safety`, and upcoming checks |
37-
| **MCP** | Thirty tools (25 live, 5 stubs) for institutions, items, balances, sync, investments, identity, webhooks, and more |
37+
| **MCP** | Thirty tools (28 live, 2 stubs) for institutions, items, balances, sync, investments, identity, webhooks, and more |
3838

3939
</td>
4040
<td width="50%">
@@ -138,7 +138,7 @@ Ask the agent to follow **`plaid-webhook-handling`** when implementing webhook r
138138

139139
## Skills
140140

141-
12 of 17 skills are production-ready. Names match the folder under `skills/`.
141+
14 of 17 skills are production-ready. Names match the folder under `skills/`.
142142

143143
<details>
144144
<summary><strong>All 17 skills</strong></summary>
@@ -157,8 +157,8 @@ Ask the agent to follow **`plaid-webhook-handling`** when implementing webhook r
157157
| `plaid-investment-tracking` | :white_check_mark: Live | Holdings, securities, portfolio aggregation |
158158
| `plaid-identity-verification` | :white_check_mark: Live | KYC flows, identity data, match scoring |
159159
| `plaid-recurring-detection` | :white_check_mark: Live | Recurring transaction detection |
160-
| `plaid-react-integration` | :construction: v0.6.0 | React hooks and patterns |
161-
| `plaid-nextjs-integration` | :construction: v0.6.0 | Next.js App Router patterns |
160+
| `plaid-react-integration` | :white_check_mark: Live | React hooks, context, error boundaries |
161+
| `plaid-nextjs-integration` | :white_check_mark: Live | Next.js App Router, API routes, server actions |
162162
| `plaid-migration-guide` | :construction: v0.7.0 | Migrate from other aggregators |
163163
| `plaid-security-best-practices` | :construction: v0.7.0 | Token encryption, RLS, audit logging |
164164
| `plaid-production-readiness` | :construction: v0.7.0 | Production access checklist |
@@ -192,7 +192,7 @@ All 7 rules are production-ready.
192192

193193
## MCP tools
194194

195-
30 tools total (25 live, 5 stubs). Build with `cd mcp-server && npm run build`.
195+
30 tools total (28 live, 2 stubs). Build with `cd mcp-server && npm run build`.
196196

197197
<details>
198198
<summary><strong>Read-only (no auth) - 8 tools</strong></summary>
@@ -240,11 +240,11 @@ All 7 rules are production-ready.
240240
| `refreshTransactions` | :white_check_mark: | Refresh transactions |
241241
| `removeItem` | :white_check_mark: | Remove Item |
242242
| `getItemStatus` | :white_check_mark: | Item status |
243-
| `updateItemWebhook` | :construction: v0.6.0 | Update Item webhook URL |
244-
| `getLiabilities` | :construction: v0.6.0 | Liabilities |
245-
| `getTransferIntent` | :construction: v0.6.0 | Transfer intent |
246-
| `verifyWebhookSignature` | :construction: v0.6.0 | Verify webhook signature |
247-
| `inspectAccessToken` | :construction: v0.6.0 | Inspect token metadata (debug) |
243+
| `updateItemWebhook` | :white_check_mark: | Update Item webhook URL |
244+
| `getLiabilities` | :white_check_mark: | Liabilities |
245+
| `getTransferIntent` | :construction: v0.7.0 | Transfer intent |
246+
| `verifyWebhookSignature` | :white_check_mark: | Verify webhook signature |
247+
| `inspectAccessToken` | :construction: v0.7.0 | Inspect token metadata (debug) |
248248

249249
</details>
250250

@@ -285,8 +285,8 @@ Summary aligned with [ROADMAP.md](ROADMAP.md):
285285
| **v0.2.0** | Read-only MCP tools, `plaid-api-reference`, `plaid-institution-search`, `plaid-webhook-security` |
286286
| **v0.3.0** | Sandbox MCP tools, `plaid-sync-cursor`, `plaid-sandbox-testing` enhancements |
287287
| **v0.4.0** | Full API tools, `plaid-account-verification`, `plaid-investment-tracking`, `plaid-link-best-practices` |
288-
| **v0.5.0** (current) | Identity, recurring detection, `plaid-token-storage`, 5 advanced MCP tools |
289-
| **v0.6.0** | `plaid-react-integration`, `plaid-nextjs-integration` |
288+
| **v0.5.0** | Identity, recurring detection, `plaid-token-storage`, 5 advanced MCP tools |
289+
| **v0.6.0** (current) | `plaid-react-integration`, `plaid-nextjs-integration`, 3 MCP tools |
290290
| **v0.7.0** | `plaid-migration-guide`, `plaid-security-best-practices`, `plaid-production-readiness` |
291291
| **v1.0.0** | Full polish, 17 skills, 7 rules, 30 MCP tools stable |
292292

ROADMAP.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
# Roadmap
22

3-
**Current:** v0.5.0
3+
**Current:** v0.6.0
44

55
| Version | Theme | Skills | Rules | MCP Tools | Highlights | Status |
66
| --- | --- | --- | --- | --- | --- | --- |
77
| v0.1.0 | Foundation | 6 | 3 | 0 | Core skills, secret/env/error rules, plugin scaffold, CI, docs | Done |
88
| v0.2.0 | Live Data | +2 | +1 | 8 | MCP server read-only tools, API reference skill, institution search skill, webhook security rule | Done |
99
| v0.3.0 | Sandbox Power | +0 (enhanced 1) | +1 | +6 | 6 sandbox MCP tools, sandbox testing enhancements, sync cursor rule | Done |
1010
| v0.4.0 | Full API | +2 | +1 | +6 | Account verification, investment tracking, link best practices rule | Done |
11-
| v0.5.0 (current) | Advanced | +2 | +1 | +5 | Identity verification, recurring detection, token storage rule | **Current** |
12-
| v0.6.0 | Framework Integration | +2 | 0 | +3 | React integration, Next.js integration, webhook tools | Planned |
11+
| v0.5.0 | Advanced | +2 | +1 | +5 | Identity verification, recurring detection, token storage rule | Done |
12+
| v0.6.0 (current) | Framework Integration | +2 | 0 | +3 | React integration, Next.js integration, webhook tools | **Current** |
1313
| v0.7.0 | Ship It | +2 | 0 | +2 | Migration guide, production readiness, utility tools | Planned |
1414
| v1.0.0 | Stable | 17 | 7 | 30 | Final polish, all docs, comprehensive test suite, npm publish | Planned |
1515

@@ -39,3 +39,6 @@
3939
- [x] `plaid-recurring-detection` added in v0.5.0
4040
- [x] `plaid-token-storage` rule added in v0.5.0
4141
- [x] 5 advanced MCP tools implemented in v0.5.0 (sandboxSetVerificationStatus, simulateTransactions, refreshTransactions, removeItem, getItemStatus)
42+
- [x] `plaid-react-integration` added in v0.6.0
43+
- [x] `plaid-nextjs-integration` added in v0.6.0
44+
- [x] 3 framework MCP tools implemented in v0.6.0 (updateItemWebhook, getLiabilities, verifyWebhookSignature)

mcp-server/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mcp-server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@tmhs/plaid-mcp",
3-
"version": "0.5.0",
3+
"version": "0.6.0",
44
"description": "MCP server for Plaid API integration - 30 tools for sandbox testing, transactions, accounts, institutions, categories, investments, identity, webhooks, and more.",
55
"type": "module",
66
"main": "dist/index.js",

mcp-server/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import { register as registerInspectAccessToken } from "./tools/inspectAccessTok
3636

3737
const server = new McpServer({
3838
name: "plaid-mcp",
39-
version: "0.5.0",
39+
version: "0.6.0",
4040
});
4141

4242
registerListCategories(server);
Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
import { z } from "zod";
22
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3-
import { stubResponse } from "../types.js";
3+
import { textResponse, errorResponse } from "../types.js";
4+
import { getPlaidClient } from "./utils.js";
45

56
const inputSchema = {
67
access_token: z.string().describe("Plaid access token for the item"),
7-
account_ids: z.array(z.string()).optional().describe("Subset of liability account IDs"),
8+
account_ids: z
9+
.array(z.string())
10+
.optional()
11+
.describe("Subset of liability account IDs"),
812
};
913

1014
export function register(server: McpServer): void {
@@ -13,7 +17,35 @@ export function register(server: McpServer): void {
1317
"Get liability accounts including credit cards, student loans, and mortgages",
1418
inputSchema,
1519
async (args) => {
16-
return stubResponse("plaid_getLiabilities", "v0.6.0");
20+
try {
21+
const client = getPlaidClient();
22+
const request: Record<string, unknown> = {
23+
access_token: args.access_token,
24+
};
25+
if (args.account_ids?.length) {
26+
request.options = { account_ids: args.account_ids };
27+
}
28+
29+
const response = await client.liabilitiesGet(request as any);
30+
31+
return textResponse(
32+
JSON.stringify(
33+
{
34+
accounts: response.data.accounts,
35+
liabilities: {
36+
credit: response.data.liabilities.credit,
37+
mortgage: response.data.liabilities.mortgage,
38+
student: response.data.liabilities.student,
39+
},
40+
request_id: response.data.request_id,
41+
},
42+
null,
43+
2,
44+
),
45+
);
46+
} catch (error) {
47+
return errorResponse(error);
48+
}
1749
},
1850
);
1951
}

mcp-server/src/tools/getTransferIntent.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export function register(server: McpServer): void {
1515
"Create a transfer intent for payment initiation",
1616
inputSchema,
1717
async (args) => {
18-
return stubResponse("plaid_getTransferIntent", "v0.6.0");
18+
return stubResponse("plaid_getTransferIntent", "v0.7.0");
1919
},
2020
);
2121
}

0 commit comments

Comments
 (0)