Spree Commerce developer docs for AI agents
Spree Commerce docs for AI coding agents: build headless B2B and marketplace ecommerce on its APIs.
Description from the maker (original English)
Action1 MCP server — endpoint inventory, patch visibility, and policy automation via REST API.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
ACTION1_API_KEY, ACTION1_SECRET, ACTION1_REGION, ACTION1_DEFAULT_ORG_ID, MCP_TRANSPORT, AUTH_MODE, LOG_LEVELValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"action1": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ACTION1_API_KEY",
"-e",
"ACTION1_SECRET",
"-e",
"ACTION1_REGION",
"-e",
"ACTION1_DEFAULT_ORG_ID",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-ai/action1-mcp:v1.1.9"
],
"env": {
"ACTION1_API_KEY": "your-value",
"ACTION1_SECRET": "your-value",
"ACTION1_REGION": "your-value",
"ACTION1_DEFAULT_ORG_ID": "your-value",
"MCP_TRANSPORT": "your-value",
"AUTH_MODE": "your-value",
"LOG_LEVEL": "your-value"
}
}
}
}Run this in your terminal
claude mcp add action1 --env ACTION1_API_KEY=your-value --env ACTION1_SECRET=your-value --env ACTION1_REGION=your-value --env ACTION1_DEFAULT_ORG_ID=your-value --env MCP_TRANSPORT=your-value --env AUTH_MODE=your-value --env LOG_LEVEL=your-value -- docker run -i --rm -e ACTION1_API_KEY -e ACTION1_SECRET -e ACTION1_REGION -e ACTION1_DEFAULT_ORG_ID -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/action1-mcp:v1.1.9Fill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"action1": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ACTION1_API_KEY",
"-e",
"ACTION1_SECRET",
"-e",
"ACTION1_REGION",
"-e",
"ACTION1_DEFAULT_ORG_ID",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-ai/action1-mcp:v1.1.9"
],
"env": {
"ACTION1_API_KEY": "your-value",
"ACTION1_SECRET": "your-value",
"ACTION1_REGION": "your-value",
"ACTION1_DEFAULT_ORG_ID": "your-value",
"MCP_TRANSPORT": "your-value",
"AUTH_MODE": "your-value",
"LOG_LEVEL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"action1": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ACTION1_API_KEY",
"-e",
"ACTION1_SECRET",
"-e",
"ACTION1_REGION",
"-e",
"ACTION1_DEFAULT_ORG_ID",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-ai/action1-mcp:v1.1.9"
],
"env": {
"ACTION1_API_KEY": "your-value",
"ACTION1_SECRET": "your-value",
"ACTION1_REGION": "your-value",
"ACTION1_DEFAULT_ORG_ID": "your-value",
"MCP_TRANSPORT": "your-value",
"AUTH_MODE": "your-value",
"LOG_LEVEL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
ACTION1_REGION envACTION1_DEFAULT_ORG_ID envMCP_TRANSPORT envAUTH_MODE envLOG_LEVEL envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Based on how this server connects and on each app’s own docs, checked Nov 10, 2026.
Run on your computer in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 11, 2026
The registry name was verified with the GitHub account WYRE-AI, which owns the repo
Code last changed 8 days ago
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
No reviews yet
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 2 of 2 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: ACTION1_API_KEY, ACTION1_SECRET
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed 8 days ago, and the latest version (1.1.9) reached the registry 27 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Docker on your computer.
In the same category: Spree Commerce developer docs for AI agents, Stripe MCP, Sessy — Amazon SES observability
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Spree Commerce docs for AI coding agents: build headless B2B and marketplace ecommerce on its APIs.
Stripe’s official server lets AI view and manage customers, products, payments and invoices. Connect to Stripe’s cloud and sign in with OAuth.
Read-only Amazon SES observability: search events, inspect bounces, pull delivery stats.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
MCP server for Action1 — endpoint inventory, patch visibility, and policy automation via the Model Context Protocol.
Read-only in v1. Deploy / automation surface is intentionally separated to a later release for blast-radius reasons (a bad policy push can brick endpoint fleets).
| Tool | Description |
|---|---|
action1_navigate | Discover available tools by domain (organizations / endpoints / policies / updates) |
action1_list_organizations | List Action1 tenants accessible to the configured credentials |
action1_list_endpoints | List managed devices in an organization |
action1_get_endpoint | Get a single endpoint by id |
action1_list_missing_updates | List missing OS/application patches across endpoints — Action1's headline value-prop |
action1_list_policies | List automation / policy / remediation rules |
API surface maps to PSAction1 (Action1's MIT-licensed PowerShell module). When the v1 surface earns its keep, write tools (deploy, requery, package upload) come in v2 behind separate review.
action1_get_endpoint renders as an interactive device-summary card in MCP Apps hosts (Claude Desktop/web) — status, OS, user, IP, agent version, reboot-required, and missing-update counts at a glance; plain-JSON behavior is unchanged in other hosts. The card is read-only (matching the v1 tool surface), neutral by default, and brandable via window.__BRAND__ injection or MCP_BRAND_* env vars (MCP_BRAND_NAME, MCP_BRAND_LOGO_URL, MCP_BRAND_PRIMARY_COLOR, MCP_BRAND_ACCENT_COLOR, MCP_BRAND_BG, MCP_BRAND_TEXT) — no rebuild needed.
Install via the MCPB bundle from the latest release.
Required credentials (created in Action1 → Settings → API Credentials, non-recoverable on creation — copy immediately):
NorthAmerica default; also NorthAmerica-2, Europe, Australia)ACTION1_API_KEY=... \
ACTION1_SECRET=... \ ACTION1_REGION=NorthAmerica \ ACTION1_DEFAULT_ORG_ID=org-... \ npx -y github:WYRE-AI/action1-mcp
CONDUIT_S2S_SECRET is required. If it is empty or a known placeholder (changeme, replace-with-a-real-secret, and similar), the HTTP server logs an error and exits non-zero. It never prints the secret. Generate one with openssl rand -hex 32.
MCP_HTTP_HOST defaults to 127.0.0.1 when unset. Set 0.0.0.0 only when CONDUIT_S2S_SECRET is set. The container image does that and sets AUTH_MODE=gateway. MCP_HTTP_PORT (or PORT) selects the port and defaults to 8080.
MCP_ALLOW_INSECURE_DEV=1 starts HTTP without CONDUIT_S2S_SECRET, logs a warning, skips X-Gateway-S2S, and binds 127.0.0.1 only. A non-loopback MCP_HTTP_HOST (including 0.0.0.0) refuses to start. A placeholder secret is still rejected. Local development only.
/health stays unauthenticated and does not read credentials. The stdio transport does not use CONDUIT_S2S_SECRET.
Every HTTP request except /health must include X-Gateway-S2S when a secret is configured. The value is t= ,v1= , where the hex is HMAC-SHA256 of the literal string t= keyed with CONDUIT_S2S_SECRET (64 lowercase hex characters). The timestamp must be within 300 seconds of the server clock. A missing or invalid header is HTTP 401, before vendor credentials are read.
TS=$(date +%s)
SIG=$(printf 't=%s' "$TS" | openssl dgst -sha256 -hmac "$CONDUIT_S2S_SECRET" -hex | awk '{print $NF}') curl -sS http://127.0.0.1:8080/ \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -H "X-Gateway-S2S: t=${TS},v1=${SIG}" \ -H "X-Action1-API-Key: $ACTION1_API_KEY" \ -H "X-Action1-Secret: $ACTION1_SECRET" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
AUTH_MODE=gateway)The Docker image and Compose file default to gateway mode. Every request must include:
X-Action1-API-KeyX-Action1-SecretX-Action1-Region (optional)X-Action1-Default-Org-Id (optional)A request missing the API key or secret gets 401 and does not fall back to ACTION1_API_KEY / ACTION1_SECRET in the process environment. Those headers are the only credential source for that request.
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \ -p 127.0.0.1:8080:8080 \ ghcr.io/wyre-ai/action1-mcp:latest
Compose refuses to start when CONDUIT_S2S_SECRET is unset, publishes 127.0.0.1:8080:8080, and does not pass static Action1 credentials into the container:
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up
AUTH_MODE=env)Requests still require a valid X-Gateway-S2S header. Vendor credentials come from ACTION1_API_KEY and ACTION1_SECRET when the request does not carry those headers.
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \ -e AUTH_MODE=env \ -e ACTION1_API_KEY="$ACTION1_API_KEY" \ -e ACTION1_SECRET="$ACTION1_SECRET" \ -e ACTION1_REGION=NorthAmerica \ -p 127.0.0.1:8080:8080 \ ghcr.io/wyre-ai/action1-mcp:latest
Local HTTP without a secret is development-only. It binds 127.0.0.1 and logs a warning:
MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm start
src/
├── index.ts # stdio + HTTP transports, tool dispatch, S2S startup ├── s2s-verify.ts # X-Gateway-S2S HMAC-SHA256 check ├── card.builder.ts # MCP Apps device-card normalization + brand injection ├── resources.ts # resources/list + resources/read (ui:// device card) ├── generated/ │ └── device-card-html.ts # committed vite single-file bundle (npm run build:ui) ├── sdk/ │ └── action1-client.ts # embedded REST + OAuth client (factor-out candidate │ # if surface crosses ~20 tools / 2+ domains) ├── utils/ │ ├── client.ts # credential resolution (env vs gateway headers) │ └── types.ts # DomainHandler interface ├── domains/ # one file per resource type │ ├── organizations.ts │ ├── endpoints.ts │ ├── policies.ts │ └── updates.ts └── tests/ # domain tests + MCP Apps contract tests ui/ # device-card source (index.html + device-card.ts)
Per-request credential isolation via AsyncLocalStorage — concurrent requests in HTTP mode never share credentials through process.env.
npm install
npm run build npm test npm run dev # tsc --watch npm run lint # eslint npm run typecheck
Apache-2.0. See LICENSE.