From 00c454a35d42a2b71580cbaccf0031912ec5f0f5 Mon Sep 17 00:00:00 2001 From: Marc Glasser Date: Fri, 23 Oct 2026 14:01:06 -1000 Subject: [PATCH 1/2] Add plugin icon, privacyPolicyUrl, and marketplace install line - Add .claude-plugin/icon.png (1024x1024 Expensify iconmark avatar square) - Add privacyPolicyUrl to plugin.json - Add /plugin install one-liner to README for Claude Code 2.1.275+ --- .claude-plugin/icon.png | Bin 0 -> 19915 bytes .claude-plugin/plugin.json | 1 + README.md | 8 ++++++++ 3 files changed, 9 insertions(+) create mode 100644 .claude-plugin/icon.png diff --git a/.claude-plugin/icon.png b/.claude-plugin/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d68750a11084683ed92fb9bbf119565463c78ae0 GIT binary patch literal 19915 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 literal 0 HcmV?d00001 diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 915cdb0..fe2e6e6 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -9,5 +9,6 @@ "homepage": "https://expensify.com", "repository": "https://github.com/Expensify/expensify-plugin", "license": "MIT", + "privacyPolicyUrl": "https://www.expensify.com/privacy", "keywords": ["expensify", "expenses", "finance", "accounting", "mcp"] } diff --git a/README.md b/README.md index afacfd1..82a6444 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,14 @@ Compare spending across two periods to identify what changed and why. Claude sur ### Add this repo as a marketplace (available now) +Run this command in Claude Code (version 2.1.275 or later): + +``` +/plugin install expensify --marketplace Expensify/expensify-plugin +``` + +Or install manually: + 1. Open **Customize → Plugins → Add marketplace** in Claude Cowork. 2. Enter `Expensify/expensify-plugin` and confirm. 3. The plugin appears in your marketplace list — click **Install**. From 6dc878a1ccc4f3b5b4a945b9f65879b4659bec42 Mon Sep 17 00:00:00 2001 From: Marc Glasser Date: Fri, 23 Oct 2026 14:56:40 -1000 Subject: [PATCH 2/2] Fix MCP transport type and add marketplace manifest The Expensify MCP endpoint is streamable HTTP with OAuth, not legacy SSE, so .mcp.json now declares type http. Adding .claude-plugin/marketplace.json makes the README's marketplace install steps work. --- .claude-plugin/marketplace.json | 17 +++++++++++++++++ .mcp.json | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 .claude-plugin/marketplace.json diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json new file mode 100644 index 0000000..ce3ef8b --- /dev/null +++ b/.claude-plugin/marketplace.json @@ -0,0 +1,17 @@ +{ + "name": "expensify-plugin", + "owner": { + "name": "Expensify", + "email": "concierge@expensify.com" + }, + "metadata": { + "description": "Official Expensify plugins for Claude: connect to your Expensify account and analyze spending." + }, + "plugins": [ + { + "name": "expensify", + "source": "./", + "description": "Connect Claude to your Expensify account — analyze spending, run expense reports, and get plain-English summaries of your team's financial data." + } + ] +} diff --git a/.mcp.json b/.mcp.json index ecd0290..221e898 100644 --- a/.mcp.json +++ b/.mcp.json @@ -1,7 +1,7 @@ { "mcpServers": { "expensify": { - "type": "sse", + "type": "http", "url": "https://www.expensify.com/mcp" } }