Appearance
MCP Server
Manage your PackEdge store from any AI agent — Claude Desktop, Claude Code, Cursor, and other Model Context Protocol clients. Ask in plain language; the agent calls PackEdge for you.
"List my products." · "Issue a license for
prd_…to [email protected]." · "Upload my new release and publish it." · "How are sales trending this month?"
There are two ways to connect, and they expose the same tools:
| Remote connector | Local server | |
|---|---|---|
| Setup | Paste one URL | Install nothing (npx), paste an API key |
| Auth | Sign in and approve, per organization | API key (pk_…) |
| Runs | On PackEdge's servers | On your machine |
| Best for | Claude web / Desktop / mobile, teams | Local file work (release uploads, saving CSVs) |
Remote connector (Claude and other hosted clients)
Add PackEdge as a custom connector. Nothing to install and no API key to manage — you sign in and approve access, and you can disconnect it later from the console.
In Claude, go to Settings → Connectors → Add custom connector.
Paste the server URL:
https://api.packedge.dev/mcpLeave OAuth Client ID and OAuth Client Secret empty. PackEdge supports dynamic client registration, so Claude registers itself.
Click Connect. You'll land on a PackEdge approval screen: sign in, choose the organization the agent may act on, decide whether it may make changes, and click Allow access.
That's it — the tools appear in Claude.
Read-only by default
The "make changes" checkbox is where you choose read vs write, and it starts off. Leave it off and the agent gets the 37 read tools only — the 42 tools that create, update or delete are never shown to it, so it cannot issue a license or delete a product even if asked to.
The agent acts as you, and can never exceed your own role in the organization you picked. Change your mind later by disconnecting and reconnecting with a different answer.
Managing a connection
Settings → Connections in the console lists every connected application, who authorized it, and when it was last active. Disconnect revokes its tokens immediately; the agent loses access on its very next request.
For other MCP clients
Anything that speaks MCP authorization works the same way. The endpoint is a standard OAuth 2.1 protected resource:
| MCP endpoint | https://api.packedge.dev/mcp (Streamable HTTP, POST) |
| Protected resource metadata | https://api.packedge.dev/.well-known/oauth-protected-resource |
| Authorization server metadata | https://api.packedge.dev/.well-known/oauth-authorization-server |
| Registration | Dynamic (RFC 7591) at /oauth/register, or bring your own client id/secret |
| Grant | Authorization code + PKCE (S256 required) |
| Scopes | mcp:read, mcp:write, offline_access |
| Challenge scope | mcp:read — write is granted on the approval screen, not requested by the client |
If your client needs a pre-registered client, enter your own OAuth Client ID (and secret, if it is a confidential client) in the connector's advanced settings — PackEdge accepts static client credentials as well as dynamic registration.
Local server (npx)
The local server runs on your machine and talks to the Developer API using your API key. Your data flows between your machine and PackEdge only — nothing extra is stored. Use this one when you want the agent to touch local files — uploading a release zip or saving a CSV export to disk.
Install
1. Create an API key
- Open the PackEdge Console
- Go to Settings → API Keys → Create API Key
- Copy the key (shown once) — it looks like
pk_…
2. Add the server to your agent
The server runs via npx, so there's nothing to install globally. Add this to your agent's MCP configuration:
json
{
"mcpServers": {
"packedge": {
"command": "npx",
"args": ["-y", "@packedgedev/mcp"],
"env": {
"PACKEDGE_API_KEY": "pk_your_key_here"
}
}
}
}json
{
"mcpServers": {
"packedge": {
"command": "npx",
"args": ["-y", "@packedgedev/mcp"],
"env": {
"PACKEDGE_API_KEY": "pk_your_key_here"
}
}
}
}Restart your agent. You should see the PackEdge tools become available.
Configuration
| Variable | Required | Default | Description |
|---|---|---|---|
PACKEDGE_API_KEY | ✅ | — | Your pk_… API key. |
PACKEDGE_BASE_URL | https://api.packedge.dev | API base URL (override for self-hosted/dev). | |
PACKEDGE_READONLY | off | Set to 1 to expose only read tools — no create/update/delete. |
Safer by default
If you mostly want lookups and reports, set PACKEDGE_READONLY=1. The agent will then only be able to read your data, never change it. Read-only mode exposes 37 of the 81 tools.
What it can do
The server registers 81 tools across 16 areas. Everything the Developer API can do, your agent can do.
Read (always available — these 37 tools are the full surface in read-only mode)
- Products — list, get
- Licenses — list, get
- Customers — list, get
- Sites — list, get
- Dashboard & analytics — account stats, revenue summary, revenue/license charts, sales reports (summary, trend, breakdown), usage analytics (downloads, domains, activations), per-product reports, feature-usage analytics, SDK connection status
- Releases — list, signed download URLs
- Plans — list
- Webhooks — list, get, delivery log (incl. full request/response capture)
- Payments — list, get
- Subscriptions — list
- Exports — CSV export of licenses, customers, payments, sales, and per-product data (preview inline or save to a local file)
- Events & logs — SDK/event feed, event analytics, audit logs
- Feedback — list, stats, tags
- Notifications — list with unread count
- Tickets — list, get with full thread
- Portal — settings, blocked-customer list
Write (hidden when PACKEDGE_READONLY is set)
- Products — create, update, archive
- Licenses — issue, update, revoke, bulk actions (revoke / suspend / activate / extend), delete
- Customers — create, update, delete, bulk delete
- Sites — deactivate, bulk deactivate
- Releases — inspect a local zip, upload + create, update, publish, set stable / roll back, delete
- Plans — create, update, sync to Stripe/Polar, delete
- Webhooks — create, update, regenerate secret, test, redeliver, delete
- Payments — record manual orders (issues the license too)
- Subscriptions — record manual subscriptions, cancel, bulk cancel
- Feedback — create/update/delete tags, assign/unassign tags
- Notifications — mark read
- Tickets — open, reply, close
- Portal — update settings, block/unblock customers
Write actions are marked so well-behaved agents ask you to confirm before running them. Destructive ones (deletes, revokes, secret regeneration) are flagged extra-loudly. To revoke a license, prefer the dedicated revoke tool — it also busts the edge validation cache and fires the license.revoked webhook.
Example prompts
- "Upload
~/dist/my-plugin-1.4.0.zipas version 1.4.0 and publish it." - "Test my Slack webhook and show its recent deliveries."
- "Export all licenses to CSV and save them to
/tmp/licenses.csv." - "How are sales trending this month? Who are my top customers?"
- "Issue a 3-seat license for product
prd_abcto [email protected] expiring next year." - "Which features of my plugin were used most in the last 30 days?"
Notes & limits
- The Developer API is rate-limited (see Rate Limits); the server retries transient
429s automatically. - Some operations are plan-gated on the PackEdge side (releases/webhooks need a paid plan; advanced analytics and product exports need Pro+; audit logs need Business). Gated calls return a clear upgrade message.
- Release uploads accept local
.zipfiles up to 100 MB. - The package is open source in the PackEdge repository under
packages/mcp. - Over a remote connector, the two local-file tools (release upload and zip inspection) are not available — the server has no access to your filesystem. CSV exports still work; the data comes back inline instead of being written to a file. Use the local server for those.
- A remote connection's access token is short-lived and refreshed automatically. Revoking the connection in the console invalidates it at once.
