Beaconed MCP Server
Official# @beaconed/mcp
MCP server exposing the Beaconed v1 API to Claude Desktop, Cursor, and any MCP-compatible client. Ask Claude to list your products, queue optimizations, approve AI-generated copy, and manage webhooks — all via natural language.
Requires Node.js 22 or later.
## Install
```bash
npm install -g @beaconed/mcp
```
## Setup
Add to your Claude Desktop `claude_desktop_config.json`:
```json
{
"mcpServers": {
"beaconed": {
"command": "beaconed-mcp",
"env": {
"BEACONED_API_KEY": "your-api-key"
}
}
}
}
```
Get your API key at [beaconed.ai](https://beaconed.ai) under Settings > API Keys.
Set `BEACONED_BASE_URL` to override the default `https://beaconed.ai` (useful for local dev or staging).
## Tools
### Read tools
- `beaconed_products_list` — list products with filters for status, score, grade, and title search
- `beaconed_products_get` — full product detail including images, score history, and latest optimization
- `beaconed_products_scores` — score history for a specific product
- `beaconed_products_optimizations` — list optimizations scoped to a product
- `beaconed_optimizations_list` — list all AI-generated optimizations across all products
- `beaconed_optimizations_get` — full optimization detail (original vs. suggested content)
- `beaconed_scores_list` — readiness scores across all products
- `beaconed_scores_latest` — latest score per product
- `beaconed_settings_get` — account optimization settings (brand voice, keywords, auto-push config)
- `beaconed_webhooks_list` — list webhook subscriptions
- `beaconed_webhooks_get` — webhook detail including last error info
- `beaconed_webhooks_events` — global catalog of all available webhook event types
### Mutation tools
- `beaconed_products_create` — create a product from external (non-Shopify) data
- `beaconed_products_update` — update product fields (partial update)
- `beaconed_products_sync` — refresh all products in the selected product’s shop from Shopify (rate limit: 10 requests/min)
- `beaconed_products_optimize` — queue AI optimization for one or more product fields (rate limit: 10 requests/min)
- `beaconed_products_calculate_score` — recalculate readiness score for a product (rate limit: 10 requests/min)
- `beaconed_optimizations_approve` — approve a pending optimization; can publish live content when auto-push is enabled (rate limit: 10 requests/min)
- `beaconed_optimizations_reject` — reject a pending optimization with an optional reason
- `beaconed_optimizations_apply` — request application of an approved optimization to the live product (DESTRUCTIVE, rate limit: 10 requests/min)
- `beaconed_optimizations_revert` — request reversion of an applied optimization to original content (DESTRUCTIVE, rate limit: 10 requests/min)
- `beaconed_webhooks_create` — create a webhook subscription (signing secret returned once only)
- `beaconed_webhooks_update` — update a webhook URL, events, or status
- `beaconed_webhooks_delete` — permanently remove a webhook subscription (DESTRUCTIVE)
- `beaconed_webhooks_test` — send a test event to verify delivery
- `beaconed_bulk_optimize` — queue AI optimization for multiple products in one request (rate limit: 10 requests/min)
This package uses stdio and requires Node.js 20+. Tools operate on the account associated with `BEACONED_API_KEY`.
Optimization uses account credits; the request limit above is a rate limit, not a price. Queue acceptance does not confirm completion. Read product or optimization details to check the result. Approval can publish immediately or queue a Shopify write when `auto_push_on_approve` is enabled; inspect account settings and the proposed content before approving. Applying or reverting can replace live content.
Tool annotations describe read-only, replacement, repeat-call, and external-system effects. Clients may use these hints when asking for confirmation; the annotations do not enforce confirmation.
Hosted deployments must rate-limit `POST /register` at a trusted edge using the verified client address. The Node service deliberately ignores forwarded client-address headers because accepting them without an authenticated proxy boundary would let callers spoof the rate-limit identity.
The production container and required settings are documented in [docs/deployment.md](docs/deployment.md).
## License
MIT — see [LICENSE](LICENSE).
## Registry publishing
`server.json` describes the stdio npm package. Its name matches `mcpName` in `package.json`; both versions must match the release being submitted. Publish and verify that exact npm version before running `mcp-publisher publish`. Registry acceptance and directory approval are separate from an npm release.
TDQS
Scored across 26 tools
Most tools map cleanly to a resource and action, but a few boundaries are blurry: beaconed_products_optimizations and beaconed_optimizations_list both return optimizations (one filtered by product), and beaconed_products_get includes score history alongside beaconed_products_scores. These are workable but could cause occasional misselection.
All names share the beaconed_ prefix and use snake_case, which helps, but the action pattern is inconsistent: most list operations use '_list' except beaconed_products_optimizations and beaconed_scores_latest, and noun/subresource ordering varies (products_scores vs scores_list). The naming is readable but not uniform.
At 26 tools, the server is above the 25+ threshold and feels heavy for a single product-optimization domain. The webhook sub-surface alone accounts for 7 tools, and several product/optimization/score listing endpoints could be consolidated.
The optimization lifecycle (list/get/approve/reject/apply/revert) and webhook lifecycle (CRUD/test/events) are well covered, and score history plus latest scores are available. Obvious gaps are a settings update endpoint (only settings_get exists) and product deletion, but agents can still complete core workflows.