From 36392841f16a1380163e46311b79be42e2c7578e Mon Sep 17 00:00:00 2001 From: Minu Palaniappan Date: Thu, 10 Sep 2026 13:14:47 -0700 Subject: [PATCH] feat(third_party): add Webull plugin --- .cursor-plugin/marketplace.json | 5 ++ README.md | 1 + third_party/webull/.cursor-plugin/plugin.json | 35 ++++++++++ third_party/webull/CHANGELOG.md | 9 +++ third_party/webull/LICENSE | 21 ++++++ third_party/webull/README.md | 60 ++++++++++++++++++ third_party/webull/assets/logo.png | Bin 0 -> 6600 bytes third_party/webull/mcp.json | 8 +++ 8 files changed, 139 insertions(+) create mode 100644 third_party/webull/.cursor-plugin/plugin.json create mode 100644 third_party/webull/CHANGELOG.md create mode 100644 third_party/webull/LICENSE create mode 100644 third_party/webull/README.md create mode 100644 third_party/webull/assets/logo.png create mode 100644 third_party/webull/mcp.json diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index 9ce7dd99b..01be4f893 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -367,6 +367,11 @@ "name": "gamma", "source": "third_party/gamma", "description": "Generate presentations, documents, and webpages." + }, + { + "name": "webull", + "source": "third_party/webull", + "description": "View accounts, positions, orders, watchlists, and market data." } ] } diff --git a/README.md b/README.md index 1e3394220..4bde54600 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc | `gamma` | [Gamma](third_party/gamma/) | Cursor | Integrations | Generate presentations, documents, and webpages. | | `teams` | [Teams](third_party/teams/) | Cursor | Productivity | Search, read, and send Microsoft Teams chats and channel messages. | | `finance` | [Finance](third_party/finance/) | Cursor | Integrations | Securely connect your accounts so Grok can help with questions about your spending, subscriptions, balances, and investments. | +| `webull` | [Webull](third_party/webull/) | Cursor | Integrations | View accounts, positions, orders, watchlists, and market data. | 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/webull/.cursor-plugin/plugin.json b/third_party/webull/.cursor-plugin/plugin.json new file mode 100644 index 000000000..59fa82fa4 --- /dev/null +++ b/third_party/webull/.cursor-plugin/plugin.json @@ -0,0 +1,35 @@ +{ + "name": "webull", + "displayName": "Webull", + "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, + "description": "View accounts, positions, orders, watchlists, and market data.", + "author": { + "name": "Cursor", + "email": "plugins@cursor.com" + }, + "homepage": "https://developer.webull.com/apis/docs/AI-friendly-Resources/mcp/", + "repository": "https://github.com/cursor/plugins", + "license": "MIT", + "logo": "assets/logo.png", + "keywords": [ + "webull", + "brokerage", + "trading", + "portfolio", + "quotes", + "watchlists", + "market data", + "mcp" + ], + "category": "integrations", + "tags": [ + "webull", + "finance", + "trading", + "mcp" + ], + "mcpServers": "./mcp.json" +} diff --git a/third_party/webull/CHANGELOG.md b/third_party/webull/CHANGELOG.md new file mode 100644 index 000000000..9997049a3 --- /dev/null +++ b/third_party/webull/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.0 — initial release + +- Added the `webull` MCP server pointing at Webull's hosted Streamable HTTP endpoint (`https://api.webull.com/mcp`). +- Auth uses OAuth with Webull user login — no API key or client ID to configure. +- Logo: Webull's official mark, from the icon Webull publishes for its connector, on a 192×192 tile. diff --git a/third_party/webull/LICENSE b/third_party/webull/LICENSE new file mode 100644 index 000000000..ca2bba771 --- /dev/null +++ b/third_party/webull/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/webull/README.md b/third_party/webull/README.md new file mode 100644 index 000000000..f63f4e144 --- /dev/null +++ b/third_party/webull/README.md @@ -0,0 +1,60 @@ +# Webull + +Cursor plugin that connects agents to [Webull](https://developer.webull.com/apis/docs/AI-friendly-Resources/mcp/) through Webull's official remote [Model Context Protocol](https://modelcontextprotocol.io/) server. + +View accounts, positions, orders, watchlists, and market data. + +## Install + +1. Open **Cursor Settings → Plugins**. +2. Search for **Webull**. +3. Click **Install**, then complete the Webull sign-in prompt. + +Or run `/add-plugin webull` in chat. + +## MCP + +```json +{ + "mcpServers": { + "webull": { + "type": "http", + "url": "https://api.webull.com/mcp" + } + } +} +``` + +Auth is OAuth. Cursor prompts for Webull sign-in when the plugin connects — there is no client ID or personal access token to configure. + +## Before you connect + +You need a Webull account. During sign-in you choose which accounts and capability groups (account info, order query, market data, security master) to expose. + +## What agents can do + +| Category | Capabilities | +| --- | --- | +| Accounts | Balances, account list, and positions | +| Orders | Open orders, order history, and order detail | +| Market data | Stocks, crypto, futures, and event contracts: quotes, bars, ticks, rankings | +| Research | Company profiles, analyst ratings, filings, financial statements, and fund data | +| Watchlists | Create and manage watchlists | + +The hosted runtime is the source of truth for tool names and schemas. + +## Notes + +- The hosted server is read-only for trading: order placement, modification, and cancellation are only in Webull's local MCP server. +- Hong Kong accounts use a separate regional endpoint that this plugin does not configure. + +## Docs + +- Webull Cloud MCP: https://developer.webull.com/apis/docs/AI-friendly-Resources/mcp/ +- Server URL: https://api.webull.com/mcp + +Logo is Webull's official mark. + +## License + +MIT diff --git a/third_party/webull/assets/logo.png b/third_party/webull/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2d28680c6add420fa3d8c3f4a09c42fa9f185735 GIT binary patch literal 6600 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 literal 0 HcmV?d00001 diff --git a/third_party/webull/mcp.json b/third_party/webull/mcp.json new file mode 100644 index 000000000..9c8d94418 --- /dev/null +++ b/third_party/webull/mcp.json @@ -0,0 +1,8 @@ +{ + "mcpServers": { + "webull": { + "type": "http", + "url": "https://api.webull.com/mcp" + } + } +}