Skip to main content
Glama
README.md
# @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

B3.4/5.0

Scored across 26 tools

Disambiguation4/5

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.

Naming Consistency3/5

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.

Tool Count2/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive