Skip to content
This repository was archived by the owner on Oct 16, 2026. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions .cursor-mcp.json

This file was deleted.

18 changes: 0 additions & 18 deletions .cursor-plugin/plugin.json

This file was deleted.

21 changes: 21 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Validate plugin

on:
push:
pull_request:

permissions:
contents: read

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
- run: npm run validate
- run: npm test
10 changes: 8 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
# Contributing

Thanks for helping improve the Close plugin for Cursor.
Thanks for helping improve the Close Agent Plugin.

1. Open an issue describing the bug or proposed improvement.
2. Make a focused change on a branch.
3. Run `npm run validate`.
3. Install development dependencies with `npm ci`, then run `npm run validate` and `npm test`.
4. Open a pull request with testing notes.

Never commit Close API keys, OAuth tokens, customer data, or other credentials. By contributing, you agree that your contribution is licensed under the MIT License.

Keep the portable package aligned with [Agent Plugins 1.0.0](https://agent-plugins.org/specification): metadata belongs in root `plugin.json`, MCP configuration in root `mcp.json`, and skills in `skills/<name>/SKILL.md`. Follow the [Agent Skills specification](https://agentskills.io/specification) for skill frontmatter and layout. Client-specific behavior, if needed, belongs in a documented reverse-domain extension namespace rather than the portable core.

The validator uses vendored, versioned schemas in `scripts/schemas/1.0.0/` so validation does not fetch remote schemas. See [schema provenance](scripts/schemas/README.md) before updating them. A specification upgrade must update both schema identifiers and both vendored schemas together.

Before a marketplace submission, load the plugin in the target client, verify that all four skills are discovered, authenticate to Close, and test a read-only request. Record the client and version in the pull request. Marketplace listings and client-specific installation flows are managed separately from this base package.
74 changes: 55 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,87 @@
# Close for Cursor
# Close Agent Plugin

The official Close plugin for Cursor connects Cursor to your Close CRM through Close's hosted Model Context Protocol (MCP) server.
The official Close plugin connects AI agents to your Close CRM through Close's hosted Model Context Protocol (MCP) server. It follows the [Agent Plugins 1.0.0 standard](https://agent-plugins.org/specification) so the same package can be used by compatible clients and marketplaces.

Use natural language to research leads, prepare account briefs, review sales activity and pipeline, find tasks, answer Close product questions, and—with the permission scope you choose—create or update CRM records.

## Install
## Install and connect

Install **Close** from the Cursor Plugin Marketplace. When Cursor shows that Close needs authentication, select **Connect**, choose your Close organization and access scope, and approve the connection.
Use a client that supports Agent Plugins 1.0.0, skills, Streamable HTTP MCP servers, and MCP OAuth authorization. See the standard's [compatible clients](https://agent-plugins.org/compatible-clients) and your client's documentation for installation instructions.

Close supports three OAuth scopes:
For clients that accept local plugins, clone this repository and select its root directory in the client's plugin installation flow:

```sh
git clone https://github.com/closeio/agent-plugin.git
```

For clients or marketplaces that accept a Git repository, use `https://github.com/closeio/agent-plugin`. Installation, marketplace approval, and skill invocation are client-specific; this repository does not imply a listing in every marketplace.

After installation, connect the `close` MCP server when your client prompts for authentication. Choose your Close organization and access scope, then approve the connection. Close supports three OAuth scopes:

- `mcp.read` — search and read Close data;
- `mcp.write_safe` — read plus create and update records;
- `mcp.write_destructive` — read, create, update, and delete records.

Choose the least-privileged scope that covers your work. You can revoke the connection from Close at any time.
Choose the least-privileged scope that covers your work. You can revoke the connection from Close at any time. Available tools depend on the scope you approve.

## Included workflows
## Included skills

- `/close:account-brief <lead>` — prepare a brief from contacts, opportunities, activities, and tasks.
- `/close:pipeline-review [filter]` — identify pipeline risk, stale deals, and next actions.
- `/close:follow-up-plan <lead>` — build a follow-up plan from recent conversations and open work.
- `close-crm` skill — helps Cursor choose appropriate Close tools and handle CRM writes safely.
| Skill | Purpose |
| --- | --- |
| `close-crm` | Choose appropriate Close tools, research records, answer product questions, and handle CRM writes safely. |
| `account-brief` | Prepare a lead brief from contacts, opportunities, recent activity, and tasks. |
| `pipeline-review` | Identify pipeline risk, stale deals, and next actions. |
| `follow-up-plan` | Prepare a follow-up plan from recent conversations and open work. |

You can also ask Cursor directly:
Ask your agent directly, or select a skill using your client's interface:

- “Which active opportunities need attention this week?”
- “Brief me on Acme before my call.”
- “Which active opportunities need attention this week?”
- “Prepare a follow-up plan for Acme.”
- “Find my overdue Close tasks and prioritize them.”
- “How many calls did our team make last week?”
- “Create a follow-up task for Friday on this lead.”

Available tools depend on the OAuth scope you approve. Cursor should ask before ambiguous or destructive changes.
The brief, pipeline review, and follow-up plan skills produce read-only analysis. CRM changes require a user request; OAuth access alone does not authorize an action.

## Package structure

```text
plugin.json
mcp.json
skills/
close-crm/SKILL.md
account-brief/SKILL.md
pipeline-review/SKILL.md
follow-up-plan/SKILL.md
assets/
mark.png
mark.svg
```

`plugin.json` contains portable metadata. Compatible clients discover skills from `skills/` and the Close MCP server from `mcp.json`. The server uses `type: "streamable-http"` and connects directly to `https://mcp.close.com/mcp`. OAuth discovery and credential storage are managed by the client; the package contains no API keys, local server process, or additional data proxy.

## How it works
The brand assets are available for marketplace listings. Agent Plugins 1.0.0 does not define a portable logo field. Future client-specific behavior can use the standard's reverse-domain extension namespaces.

The plugin configures Cursor to connect directly to `https://mcp.close.com/mcp` using Streamable HTTP and Close OAuth 2.0. It does not contain API keys, run a local process, or send Close data through an additional service.
## Migration from the Cursor plugin

This repository continues `closeio/cursor-plugin` as `closeio/agent-plugin`, preserving its Git history. The Cursor manifest and MCP file have been replaced by the standard root files. The three Cursor commands are now portable skills; their selection and invocation depend on the client. The old `/close:...` command names are not part of the portable format.

Cursor marketplace registration is handled separately using this repository. The old listing is not maintained by this package.

## Development

Requirements: Node.js 18 or newer.
Requirements: Node.js 22 or newer. Node.js and npm dependencies are only needed for development validation; the installed plugin connects to the hosted MCP server directly.

```sh
npm ci
npm run validate
npm test
```

To test before marketplace publication, clone this repository and load it as a local Cursor plugin, then authenticate when prompted.
Validation checks the manifest and MCP configuration against vendored official 1.0.0 schemas, the Close endpoint and transport, version consistency, and skill frontmatter. GitHub Actions runs the same checks. Before a marketplace submission, also verify skill discovery, OAuth connection, and a read-only request in the target client; schema validation does not exercise those client flows.

See [CONTRIBUTING.md](CONTRIBUTING.md) for development and marketplace verification guidance.

## Support and documentation

Expand All @@ -58,4 +94,4 @@ Security issues should be reported privately as described in [SECURITY.md](SECUR

## License

MIT
MIT. Vendored Agent Plugins schemas retain their upstream Apache-2.0 license; see [schema provenance](scripts/schemas/README.md).
2 changes: 1 addition & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

Please report suspected vulnerabilities privately to security@close.com. Do not open a public issue for a security vulnerability.

This plugin contains no credentials and does not proxy Close data. Cursor connects directly to Close's hosted MCP server over HTTPS and authenticates through Close OAuth. Users choose the Close organization and permission scope during authorization and can revoke access from their Close account.
This plugin contains no credentials and does not proxy Close data. The agent client connects directly to Close's hosted MCP server over HTTPS and manages OAuth discovery, authorization, and credential storage. Users choose the Close organization and permission scope during authorization and can revoke access from their Close account.
9 changes: 9 additions & 0 deletions mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
"mcpServers": {
"close": {
"type": "streamable-http",
"url": "https://mcp.close.com/mcp"
}
}
}
94 changes: 94 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 13 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
{
"name": "cursor-plugin",
"version": "0.1.0",
"name": "close-agent-plugin",
"version": "0.2.0",
"private": true,
"description": "Official Close plugin for Cursor",
"description": "Official Close plugin for clients supporting the Agent Plugins standard",
"engines": {
"node": ">=22"
},
"scripts": {
"validate": "node scripts/validate.mjs"
"validate": "node scripts/validate.mjs",
"test": "node --test scripts/validate.test.mjs"
},
"license": "MIT"
"license": "MIT",
"devDependencies": {
"ajv": "8.20.0",
"yaml": "2.9.1"
}
}
14 changes: 14 additions & 0 deletions plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "close",
"version": "0.2.0",
"description": "Connect your AI agent to Close CRM to research leads, review pipeline, analyze sales activity, and safely update CRM records.",
"author": {
"name": "Close",
"email": "support@close.com"
},
"homepage": "https://developer.close.com/mcp",
"repository": "https://github.com/closeio/agent-plugin",
"license": "MIT",
"keywords": ["close", "crm", "sales", "mcp", "leads", "pipeline"]
}
Loading
Loading