Plugin API Reference
REST API endpoints for plugin operations.
Overview
The Cursorist API provides REST endpoints for plugin discovery, installation tracking, favorites, and admin operations. All endpoints respect the api_enabled site configuration—when disabled, requests return 503 Service Unavailable.
Get Plugin (Latest Version)
Returns plugin data with the latest stable version and assets.
| Method | GET |
| Path | /api/plugins/\{org\}/\{team\}/\{plugin\} |
| Auth | None |
Response
{
"id": "uuid",
"name": "My Plugin",
"slug": "my-plugin",
"description": "Plugin description",
"organization": "acme",
"team": "engineering",
"author": {
"github": "username"
},
"type": "conventions",
"stack": ["typescript", "react"],
"latestVersion": "1.0.0",
"manifest": {
"name": "My Plugin",
"version": "1.0.0",
"description": "Plugin description",
"components": ["rules", "skills"]
},
"assets": [
{
"asset_type": "rules",
"path": "rules/project-standards.mdc",
"content_raw": "...",
"content_hash": "sha256...",
"size_bytes": 1024
}
],
"installCount": 42
}Errors
404— Plugin not found503— API access disabled
Get Plugin Version
Returns a specific version of a plugin with its assets.
| Method | GET |
| Path | /api/plugins/\{org\}/\{team\}/\{plugin\}/versions/\{version\} |
| Auth | None |
Response
{
"plugin": {
"id": "uuid",
"name": "My Plugin",
"slug": "my-plugin",
"description": "Plugin description",
"organization": "acme",
"team": "engineering"
},
"version": {
"id": "uuid",
"version": "1.0.0",
"changelog": "Initial release",
"manifest": { "name": "My Plugin", "version": "1.0.0", "components": ["rules"] },
"isPrerelease": false
},
"assets": [
{
"asset_type": "rules",
"path": "rules/project-standards.mdc",
"content_raw": "...",
"content_hash": "sha256...",
"size_bytes": 1024
}
]
}Errors
404— Plugin or version not found (yanked versions return 404)503— API access disabled
Track Plugin Installation
Increments the plugin's install count and records the install for authenticated users.
| Method | POST |
| Path | /api/plugins/install/\{id\} |
| Auth | Optional (anonymous installs are counted; user installs are recorded) |
Response
{
"success": true
}Errors
500— Failed to increment install count503— API access disabled
Toggle Plugin Favorite
Toggles favorite status for the authenticated user.
| Method | POST |
| Path | /api/plugins/by-id/\{id\}/favorite/toggle |
| Auth | Required |
Response
{
"success": true
}Errors
401— Unauthorized (not logged in)503— API access disabled
Publish Plugin (Admin)
Publishes a plugin to the OSS catalog. Admin only.
| Method | POST |
| Path | /api/admin/publish-plugin |
| Auth | Required (admin) |
Request Body
multipart/form-data or application/x-www-form-urlencoded:
| Field | Type | Required |
|---|---|---|
plugin_id | string (UUID) | Yes |
Response
{
"success": true
}Errors
400— Plugin ID required401— Unauthorized403— Admin access required500— Database error503— API access disabled
Search Docs
Full-text search across documentation content.
| Method | GET |
| Path | /api/search |
| Auth | None |
Query Parameters
Query parameters are defined by the fumadocs search implementation. Typically includes q for the search query.
Response
Returns search results in the format expected by the docs search UI (JSON array of matching pages/slugs).
MCP Deeplink
Generates an MCP install deeplink for Cursor, including API key provisioning for authenticated users.
| Method | GET |
| Path | /api/mcp/deeplink |
| Auth | Required |
Response
{
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=Cursorist&config=...",
"apiKey": "optional-api-key-if-newly-created"
}The deeplink encodes an MCP config that runs npx -y @cursorist/mcp-server@latest with CURSORIST_API_URL and optional CURSORIST_API_KEY environment variables.
Errors
401— Unauthorized503— API access disabled