From 787ff15f29a97150228c6178272391b5e8ae03f5 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 28 Oct 2026 22:43:34 +0000 Subject: [PATCH] Add GlassFrog plugin Co-authored-by: Danny Jiang --- .cursor-plugin/marketplace.json | 5 ++ README.md | 1 + .../glassfrog/.cursor-plugin/plugin.json | 31 +++++++++ third_party/glassfrog/CHANGELOG.md | 9 +++ third_party/glassfrog/LICENSE | 21 ++++++ third_party/glassfrog/README.md | 61 ++++++++++++++++++ third_party/glassfrog/assets/logo.png | Bin 0 -> 5364 bytes third_party/glassfrog/mcp.json | 8 +++ 8 files changed, 136 insertions(+) create mode 100644 third_party/glassfrog/.cursor-plugin/plugin.json create mode 100644 third_party/glassfrog/CHANGELOG.md create mode 100644 third_party/glassfrog/LICENSE create mode 100644 third_party/glassfrog/README.md create mode 100644 third_party/glassfrog/assets/logo.png create mode 100644 third_party/glassfrog/mcp.json diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index cdb0151b7..51ab36774 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -672,6 +672,11 @@ "grokbot": "0.49.0", "sand": "0.49.0" } + }, + { + "name": "glassfrog", + "source": "third_party/glassfrog", + "description": "Read and update GlassFrog roles, projects, next actions, policies, tensions, and role channels." } ] } diff --git a/README.md b/README.md index ab6550a25..cddb0bba0 100644 --- a/README.md +++ b/README.md @@ -123,6 +123,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc | `servicenow` | [ServiceNow](third_party/servicenow/) | Cursor | Integrations | Call the tools your admin publishes on a ServiceNow instance. | | `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. | +| `glassfrog` | [GlassFrog](third_party/glassfrog/) | GlassFrog | Integrations | Read and update GlassFrog roles, projects, next actions, policies, tensions, and role channels. | 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/glassfrog/.cursor-plugin/plugin.json b/third_party/glassfrog/.cursor-plugin/plugin.json new file mode 100644 index 000000000..705bce1da --- /dev/null +++ b/third_party/glassfrog/.cursor-plugin/plugin.json @@ -0,0 +1,31 @@ +{ + "name": "glassfrog", + "displayName": "GlassFrog", + "version": "1.0.0", + "description": "Read and update GlassFrog roles, projects, next actions, policies, tensions, and role channels.", + "author": { + "name": "GlassFrog", + "email": "lewis.hoffman@glassfrog.com" + }, + "homepage": "https://www.glassfrog.com", + "repository": "https://github.com/GlassFrog/glassfrog-mcp", + "license": "MIT", + "logo": "assets/logo.png", + "keywords": [ + "glassfrog", + "holacracy", + "roles", + "governance", + "projects", + "tensions", + "mcp" + ], + "category": "integrations", + "tags": [ + "glassfrog", + "holacracy", + "productivity", + "mcp" + ], + "mcpServers": "./mcp.json" +} diff --git a/third_party/glassfrog/CHANGELOG.md b/third_party/glassfrog/CHANGELOG.md new file mode 100644 index 000000000..5307fb3a9 --- /dev/null +++ b/third_party/glassfrog/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.0 — initial release + +- Added the `glassfrog` MCP server pointing at GlassFrog's hosted Streamable HTTP endpoint (`https://app.glassfrog.com/api/v5/mcp/core`). +- Auth uses OAuth 2.0 with GlassFrog user login and dynamic client registration — no API key or client ID to configure. +- Logo: GlassFrog's frog mark from the `GlassFrog` GitHub organization avatar. diff --git a/third_party/glassfrog/LICENSE b/third_party/glassfrog/LICENSE new file mode 100644 index 000000000..ca2bba771 --- /dev/null +++ b/third_party/glassfrog/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/glassfrog/README.md b/third_party/glassfrog/README.md new file mode 100644 index 000000000..bda71b6b5 --- /dev/null +++ b/third_party/glassfrog/README.md @@ -0,0 +1,61 @@ +# GlassFrog + +Cursor plugin that connects agents to [GlassFrog](https://www.glassfrog.com), the platform for Holacracy and role-based organizations, through GlassFrog's hosted [Model Context Protocol](https://modelcontextprotocol.io/) server. + +Read and update GlassFrog roles and accountabilities, projects and next actions, policies, tensions, and role channels. + +## Install + +1. Open **Cursor Settings → Plugins**. +2. Search for **GlassFrog**. +3. Click **Install**, then complete the GlassFrog sign-in prompt. + +Or run `/add-plugin glassfrog` in chat. + +## MCP + +```json +{ + "mcpServers": { + "glassfrog": { + "type": "http", + "url": "https://app.glassfrog.com/api/v5/mcp/core" + } + } +} +``` + +Auth is OAuth 2.0 with dynamic client registration, so Cursor prompts for GlassFrog sign-in when the plugin connects — there is no client ID or API key to configure. On the approval screen, pick the organization to work in and the permissions to grant (usually **Everything I can access**), then click **Approve**. + +## Before you connect + +- Your GlassFrog organization needs **AI Integration** turned on. An organization admin turns it on in the organization settings; otherwise the organization is not listed when you connect. +- You need a GlassFrog account in that organization. + +## What agents can do + +| Category | Capabilities | +| --- | --- | +| Roles | Look up roles, purpose, accountabilities, domains, and who fills them | +| Work | List, create, and update projects and next actions | +| Governance | Read policies and organization rules; raise tensions on roles | +| Communication | Read and post to role channels; read and write role notes | + +The hosted runtime is the source of truth for tool names and schemas. + +## Notes + +- The connector acts with the access of the account that connects it, sees and changes only what that account can, and every change is attributed to it. +- To disconnect, revoke the app in GlassFrog under your profile → **API** → **Connected apps**. + +## Docs + +- GlassFrog: https://www.glassfrog.com +- MCP server docs: https://github.com/GlassFrog/glassfrog-mcp +- Server URL: https://app.glassfrog.com/api/v5/mcp/core + +Logo is GlassFrog's frog mark from the `GlassFrog` GitHub organization. The submitted logo URL and glassfrog.com were unreachable when this plugin was added, so the file was not downloaded from the website. + +## License + +MIT diff --git a/third_party/glassfrog/assets/logo.png b/third_party/glassfrog/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a94b76ad1cb67e0aabe4b851faf10040ec509f55 GIT binary patch literal 5364 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