SolidInvoice
Create and send invoices and quotes, manage clients, and track payments in SolidInvoice.
MCP server for Syncro MSP — customers, tickets, assets, invoices, and more.
Pick the AI app you use, then copy the settings.
Passed 3/3 checks · Runs on your computer · ✓ Commands checked Nov 14, 2026
First: which AI do you use?
Pick your app and the steps appear below.
Works with Claude, with some setup first
You need a Syncro key (create it on the maker’s site) · 1 setting(s) to fill in (SYNCRO_SUBDOMAIN) · Install Docker on your computer first (one time) · Only the Claude desktop app (Windows or Mac), not the web or phone
Copy this message into a Claude chat. The AI checks your computer, tells you which file it will change, and waits for your OK every time.
Please install the MCP server Syncro for Claude on this computer, in this order: 1) Check Docker with docker --version. If it is missing, tell me to install it from https://www.docker.com/products/docker-desktop/; do not install it yourself. 2) Use only this config (already checked by PopNx MCP): { "mcpServers": { "syncro": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "SYNCRO_SUBDOMAIN", "-e", "SYNCRO_API_KEY", "-e", "AUTH_MODE", "ghcr.io/wyre-technology/syncro-mcp:v1.4.7" ], "env": { "SYNCRO_SUBDOMAIN": "your-value", "SYNCRO_API_KEY": "your-value", "AUTH_MODE": "your-value" } } } } 3) Tell me the full path of the file you will change, or the command you will run, and wait for my OK. 4) For SYNCRO_API_KEY, AUTH_MODE, SYNCRO_SUBDOMAIN, leave "your-value" in place and tell me to paste the real value myself into the file or the app’s field. Never ask me to type a key in chat. 5) Do what we agreed, then check that the Syncro tools really show up.This message has no key in it. If a key is needed, the AI will ask you to paste it yourself into the file or the app’s field.
Already installed? Check first · Open Terminal, type this command and press Enter
docker --versionMac: press ⌘ + Space, type Terminal, press Enter
Windows: open Start, type Windows PowerShell, then Open
Not installed: Install Docker Desktop: on Mac open Docker.dmg and drag the icon to Applications (pick Apple silicon or Intel to match your Mac) · on Windows double-click Docker Desktop Installer.exe · then open the Docker Desktop app and leave it running. No curl command needed
Open the Docker download page ↗
When it’s done, close Terminal, open it again and run the same command. You should see a version number: docker --version
Install once; it works for everything that needs Docker
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
These are program settings, not keys. No sign-up needed; fill them in as the maker describes.
SYNCRO_SUBDOMAIN Syncro account subdomain (e.g. 'acme' for acme.syncromsp.com)Descriptions are as written by the maker.
SettingsDeveloperEdit Config
{
"mcpServers": {
"syncro": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SYNCRO_SUBDOMAIN",
"-e",
"SYNCRO_API_KEY",
"-e",
"AUTH_MODE",
"ghcr.io/wyre-technology/syncro-mcp:v1.4.7"
],
"env": {
"SYNCRO_SUBDOMAIN": "your-value",
"SYNCRO_API_KEY": "your-value",
"AUTH_MODE": "your-value"
}
}
}
}Paste the key only into the app’s field, never into a chat or to anyone
Use Syncro and tell me what you can do for me, then show me one thing✓ If Claude says it is using Syncro or shows a Syncro tool in the answer, you are connected
The command above works without these. Add them only if you want to change something, following the maker’s description.
MCP_TRANSPORT Transport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting. · default stdioLOG_LEVEL Log verbosity: debug, info, warn, error · default infoDescriptions are as written by the maker.
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
ChatGPT cannot connect Syncro yet
Syncro runs on your computer, but ChatGPT can only connect servers that run on the web
A · Use an app that can connect Syncro
B · Others in Accounting, finance & tax that work with ChatGPT
Picked from the most used in the same category, only ones that connect by address with no key
Works with Claude Code, with some setup first
You need a Syncro key (create it on the maker’s site) · 1 setting(s) to fill in (SYNCRO_SUBDOMAIN) · Install Docker on your computer first (one time)
Copy this message into a Claude Code chat. The AI checks your computer, tells you which file it will change, and waits for your OK every time.
Please install the MCP server Syncro for Claude Code on this computer, in this order: 1) Check Docker with docker --version. If it is missing, tell me to install it from https://www.docker.com/products/docker-desktop/; do not install it yourself. 2) Use only this config (already checked by PopNx MCP): claude mcp add --scope user syncro --env SYNCRO_SUBDOMAIN=your-value --env SYNCRO_API_KEY=your-value --env AUTH_MODE=your-value -- docker run -i --rm -e SYNCRO_SUBDOMAIN -e SYNCRO_API_KEY -e AUTH_MODE ghcr.io/wyre-technology/syncro-mcp:v1.4.7 3) Tell me the full path of the file you will change, or the command you will run, and wait for my OK. 4) For SYNCRO_API_KEY, AUTH_MODE, SYNCRO_SUBDOMAIN, leave "your-value" in place and tell me to paste the real value myself into the file or the app’s field. Never ask me to type a key in chat. 5) Do what we agreed, then check that the Syncro tools really show up.This message has no key in it. If a key is needed, the AI will ask you to paste it yourself into the file or the app’s field.
Already installed? Check first · Open Terminal, type this command and press Enter
docker --versionMac: press ⌘ + Space, type Terminal, press Enter
Windows: open Start, type Windows PowerShell, then Open
Not installed: Install Docker Desktop: on Mac open Docker.dmg and drag the icon to Applications (pick Apple silicon or Intel to match your Mac) · on Windows double-click Docker Desktop Installer.exe · then open the Docker Desktop app and leave it running. No curl command needed
Open the Docker download page ↗
When it’s done, close Terminal, open it again and run the same command. You should see a version number: docker --version
Install once; it works for everything that needs Docker
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
These are program settings, not keys. No sign-up needed; fill them in as the maker describes.
SYNCRO_SUBDOMAIN Syncro account subdomain (e.g. 'acme' for acme.syncromsp.com)Descriptions are as written by the maker.
Mac: press Command+Space and type Terminal · Windows: open PowerShell
claude mcp add --scope user syncro --env SYNCRO_SUBDOMAIN=your-value --env SYNCRO_API_KEY=your-value --env AUTH_MODE=your-value -- docker run -i --rm -e SYNCRO_SUBDOMAIN -e SYNCRO_API_KEY -e AUTH_MODE ghcr.io/wyre-technology/syncro-mcp:v1.4.7Replace “your-value” with your key before pressing Enter
Paste the key only into the app’s field, never into a chat or to anyone
You should see Syncro listed as connected
Use Syncro and tell me what you can do for me, then show me one thing✓ If Claude Code says it is using Syncro or shows a Syncro tool in the answer, you are connected
The command above works without these. Add them only if you want to change something, following the maker’s description.
MCP_TRANSPORT Transport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting. · default stdioLOG_LEVEL Log verbosity: debug, info, warn, error · default infoDescriptions are as written by the maker.
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with Cursor, with some setup first
You need a Syncro key (create it on the maker’s site) · 1 setting(s) to fill in (SYNCRO_SUBDOMAIN) · Install Docker on your computer first (one time)
Copy this message into a Cursor chat. The AI checks your computer, tells you which file it will change, and waits for your OK every time.
Please install the MCP server Syncro for Cursor on this computer, in this order: 1) Check Docker with docker --version. If it is missing, tell me to install it from https://www.docker.com/products/docker-desktop/; do not install it yourself. 2) Use only this config (already checked by PopNx MCP): { "mcpServers": { "syncro": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "SYNCRO_SUBDOMAIN", "-e", "SYNCRO_API_KEY", "-e", "AUTH_MODE", "ghcr.io/wyre-technology/syncro-mcp:v1.4.7" ], "env": { "SYNCRO_SUBDOMAIN": "your-value", "SYNCRO_API_KEY": "your-value", "AUTH_MODE": "your-value" } } } } 3) Tell me the full path of the file you will change, or the command you will run, and wait for my OK. 4) For SYNCRO_API_KEY, AUTH_MODE, SYNCRO_SUBDOMAIN, leave "your-value" in place and tell me to paste the real value myself into the file or the app’s field. Never ask me to type a key in chat. 5) Do what we agreed, then check that the Syncro tools really show up.This message has no key in it. If a key is needed, the AI will ask you to paste it yourself into the file or the app’s field.
Already installed? Check first · Open Terminal, type this command and press Enter
docker --versionMac: press ⌘ + Space, type Terminal, press Enter
Windows: open Start, type Windows PowerShell, then Open
Not installed: Install Docker Desktop: on Mac open Docker.dmg and drag the icon to Applications (pick Apple silicon or Intel to match your Mac) · on Windows double-click Docker Desktop Installer.exe · then open the Docker Desktop app and leave it running. No curl command needed
Open the Docker download page ↗
When it’s done, close Terminal, open it again and run the same command. You should see a version number: docker --version
Install once; it works for everything that needs Docker
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
These are program settings, not keys. No sign-up needed; fill them in as the maker describes.
SYNCRO_SUBDOMAIN Syncro account subdomain (e.g. 'acme' for acme.syncromsp.com)Descriptions are as written by the maker.
In the Syncro settings, SYNCRO_API_KEY, AUTH_MODE, SYNCRO_SUBDOMAIN is empty; add your key and save
Paste the key only into the app’s field, never into a chat or to anyone
Use Syncro and tell me what you can do for me, then show me one thing✓ If Cursor says it is using Syncro or shows a Syncro tool in the answer, you are connected
The command above works without these. Add them only if you want to change something, following the maker’s description.
MCP_TRANSPORT Transport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting. · default stdioLOG_LEVEL Log verbosity: debug, info, warn, error · default infoDescriptions are as written by the maker.
Menu names checked against Cursor’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with VS Code, with some setup first
You need a Syncro key (create it on the maker’s site) · 1 setting(s) to fill in (SYNCRO_SUBDOMAIN) · Install Docker on your computer first (one time)
Copy this message into a VS Code chat. The AI checks your computer, tells you which file it will change, and waits for your OK every time.
Please install the MCP server Syncro for VS Code on this computer, in this order: 1) Check Docker with docker --version. If it is missing, tell me to install it from https://www.docker.com/products/docker-desktop/; do not install it yourself. 2) Use only this config (already checked by PopNx MCP): { "servers": { "syncro": { "type": "stdio", "command": "docker", "args": [ "run", "-i", "--rm", "-e", "SYNCRO_SUBDOMAIN", "-e", "SYNCRO_API_KEY", "-e", "AUTH_MODE", "ghcr.io/wyre-technology/syncro-mcp:v1.4.7" ], "env": { "SYNCRO_SUBDOMAIN": "your-value", "SYNCRO_API_KEY": "your-value", "AUTH_MODE": "your-value" } } } } 3) Tell me the full path of the file you will change, or the command you will run, and wait for my OK. 4) For SYNCRO_API_KEY, AUTH_MODE, SYNCRO_SUBDOMAIN, leave "your-value" in place and tell me to paste the real value myself into the file or the app’s field. Never ask me to type a key in chat. 5) Do what we agreed, then check that the Syncro tools really show up.This message has no key in it. If a key is needed, the AI will ask you to paste it yourself into the file or the app’s field.
Already installed? Check first · Open Terminal, type this command and press Enter
docker --versionMac: press ⌘ + Space, type Terminal, press Enter
Windows: open Start, type Windows PowerShell, then Open
Not installed: Install Docker Desktop: on Mac open Docker.dmg and drag the icon to Applications (pick Apple silicon or Intel to match your Mac) · on Windows double-click Docker Desktop Installer.exe · then open the Docker Desktop app and leave it running. No curl command needed
Open the Docker download page ↗
When it’s done, close Terminal, open it again and run the same command. You should see a version number: docker --version
Install once; it works for everything that needs Docker
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
These are program settings, not keys. No sign-up needed; fill them in as the maker describes.
SYNCRO_SUBDOMAIN Syncro account subdomain (e.g. 'acme' for acme.syncromsp.com)Descriptions are as written by the maker.
In the Syncro settings, SYNCRO_API_KEY, AUTH_MODE, SYNCRO_SUBDOMAIN is empty; add your key and save
Paste the key only into the app’s field, never into a chat or to anyone
Use Syncro and tell me what you can do for me, then show me one thing✓ If VS Code says it is using Syncro or shows a Syncro tool in the answer, you are connected
The command above works without these. Add them only if you want to change something, following the maker’s description.
MCP_TRANSPORT Transport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting. · default stdioLOG_LEVEL Log verbosity: debug, info, warn, error · default infoDescriptions are as written by the maker.
Menu names checked against VS Code’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Other apps that use MCP, such as Windsurf, Zed or Gemini CLI, each add servers differently. See how in the app list.
JSON settings are under “For developers” below
Claude Code
claude mcp add --scope user syncro --env SYNCRO_SUBDOMAIN=your-value --env SYNCRO_API_KEY=your-value --env AUTH_MODE=your-value -- docker run -i --rm -e SYNCRO_SUBDOMAIN -e SYNCRO_API_KEY -e AUTH_MODE ghcr.io/wyre-technology/syncro-mcp:v1.4.7Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"syncro": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SYNCRO_SUBDOMAIN",
"-e",
"SYNCRO_API_KEY",
"-e",
"AUTH_MODE",
"ghcr.io/wyre-technology/syncro-mcp:v1.4.7"
],
"env": {
"SYNCRO_SUBDOMAIN": "your-value",
"SYNCRO_API_KEY": "your-value",
"AUTH_MODE": "your-value"
}
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"syncro": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SYNCRO_SUBDOMAIN",
"-e",
"SYNCRO_API_KEY",
"-e",
"AUTH_MODE",
"ghcr.io/wyre-technology/syncro-mcp:v1.4.7"
],
"env": {
"SYNCRO_SUBDOMAIN": "your-value",
"SYNCRO_API_KEY": "your-value",
"AUTH_MODE": "your-value"
}
}
}
}VS Code (mcp.json)
{
"servers": {
"syncro": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SYNCRO_SUBDOMAIN",
"-e",
"SYNCRO_API_KEY",
"-e",
"AUTH_MODE",
"ghcr.io/wyre-technology/syncro-mcp:v1.4.7"
],
"env": {
"SYNCRO_SUBDOMAIN": "your-value",
"SYNCRO_API_KEY": "your-value",
"AUTH_MODE": "your-value"
}
}
}
}SYNCRO_SUBDOMAIN required envSYNCRO_API_KEY secret required envMCP_TRANSPORT envAUTH_MODE secret required envLOG_LEVEL envDescriptions are as written by the maker.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
oci: ghcr.io/wyre-technology/syncro-mcp:v1.4.7Based 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 15, 2026
The registry name was verified with the GitHub account WYRE-AI, which owns the repo
Code last changed 3 days ago
Uses Apache-2.0
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
Not checked: only npm and PyPI packages with a version can be checked
Ask, share a tip or report that it does not work. Sorted by what people marked helpful.
No posts yet. Be the first to ask or share.
Posts here are written by users, not the PopNx team.
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 3 of 3 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: SYNCRO_API_KEY, AUTH_MODE
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 3 days ago, and the latest version (1.4.7) reached the registry 3 months 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: SolidInvoice, Signal8, Journalit, Tapetide - Indian Stock Market MCP, Twelve Data
Same category, other makers, commands already checked. Official ones first, then by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Create and send invoices and quotes, manage clients, and track payments in SolidInvoice.
Trading journal in Obsidian. Ask Claude or ChatGPT about your trades; edits are previewed first.
48 tools for ~8,000 NSE & BSE stocks: quotes, screener, financials, filings, FII/DII, options
Real-time and historical market data: stocks, forex, crypto, ETFs, fundamentals and 60+ indicators.
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.
A Model Context Protocol (MCP) server for Syncro MSP, implementing a decision tree architecture for efficient tool navigation.
Operator note — GitHub Packages authentication (required for one-click deploys).
This server depends on the private
@wyre-ai/node-syncroSDK, which is
hosted on GitHub Packages. GitHub Packages requires an authentication token
on every install (no anonymous reads, even for public packages), so the cloud
builders fail during
npm installwith401 Unauthorizedunless you supply a
token. Create a GitHub Personal Access Token with the
read:packagesscope
and provide it to the builder:
- Cloudflare Workers — set a build/environment variable named
NODE_AUTH_TOKENto your PAT.
- DigitalOcean App Platform — set a build-time secret named
GITHUB_TOKENto your PAT.
For local
npm install, runexport NODE_AUTH_TOKEN=$(gh auth token)first.
syncro_tickets_get renders as an interactive card in MCP Apps hosts (Claude Desktop/web) with an in-card "Add comment" round-trip via syncro_tickets_add_comment (internal-only by default); plain-JSON behavior is unchanged in other hosts. The card is neutral by default, 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.WYRE MCP servers are distributed via OCI/GHCR images and (where available) MCPB bundles. The npm package
@wyre-ai/syncro-mcpis also published to GitHub Packages (npm.pkg.github.com); installing it requires an authenticated.npmrcwithread:packagesscope (runexport NODE_AUTH_TOKEN=$(gh auth token)locally).
Use the hosted gateway at mcp.wyre.ai — paste your Syncro API key into the gateway UI and you're done.
{
"mcpServers": { "syncro": { "type": "http", "url": "https://mcp.wyre.ai/v1/syncro/mcp", "headers": { "X-Syncro-Api-Key": "${SYNCRO_API_KEY}" } } } }
claude mcp add syncro \
-e SYNCRO_API_KEY=your-api-key \ -e SYNCRO_SUBDOMAIN=your-subdomain \ -- npx -y github:WYRE-AI/syncro-mcp
The image listens on 0.0.0.0 inside the container and defaults to AUTH_MODE=gateway. Publish the port on loopback and pass the service-to-service secret. In gateway mode, Syncro credentials arrive on each request as headers; they are not read from the environment.
docker run --rm \
-e CONDUIT_S2S_SECRET=your-s2s-secret \ -p 127.0.0.1:8080:8080 \ ghcr.io/wyre-ai/syncro-mcp:latest
Compose refuses to start when CONDUIT_S2S_SECRET is unset, runs AUTH_MODE=gateway with no static SYNCRO_* credentials, and publishes 127.0.0.1:8080:8080:
CONDUIT_S2S_SECRET=your-s2s-secret docker compose up
Single-tenant HTTP (AUTH_MODE=env) still requires the S2S secret, then uses SYNCRO_API_KEY:
docker run --rm \
-e CONDUIT_S2S_SECRET=your-s2s-secret \ -e AUTH_MODE=env \ -e SYNCRO_API_KEY=your-api-key \ -e SYNCRO_SUBDOMAIN=your-subdomain \ -p 127.0.0.1:8080:8080 \ ghcr.io/wyre-ai/syncro-mcp:latest
git clone https://github.com/WYRE-AI/syncro-mcp.git
cd syncro-mcp npm ci npm run build node dist/index.js
Copy .env.example and set the variables below.
| Variable | Required | Description |
|---|---|---|
SYNCRO_API_KEY | For stdio and AUTH_MODE=env | Your Syncro API key |
SYNCRO_SUBDOMAIN | No | Your Syncro subdomain, for example acme for acme.syncromsp.com. Letters, digits and hyphens only; a host name or URL is rejected before any request is sent. |
MCP_TRANSPORT | No | stdio (default) or http |
AUTH_MODE | No | gateway (Docker image and Compose default) or env. Gateway mode requires X-Syncro-API-Key on each /mcp request and never falls back to SYNCRO_*. env uses those variables only after S2S auth succeeds. |
CONDUIT_S2S_SECRET | Yes for HTTP | Service-to-service secret. The HTTP server logs an error and exits non-zero when this is empty or a known placeholder (changeme, your-s2s-secret, replace-with-a-real-secret, secret, an unresolved ${...} value, and the other example strings). Compose will not start without it. Never commit a real value. Generate one with openssl rand -hex 32. |
MCP_ALLOW_INSECURE_DEV | No | Set to exactly 1 only for local development to start HTTP without CONDUIT_S2S_SECRET. The process logs a warning, does not enforce X-Gateway-S2S, and binds 127.0.0.1 only. A wider MCP_HTTP_HOST (including 0.0.0.0) is ignored and the override is logged. A known placeholder secret still refuses to start. |
MCP_HTTP_HOST | No | Bind address when MCP_TRANSPORT=http and CONDUIT_S2S_SECRET is set. Defaults to 127.0.0.1 when unset. The container image sets 0.0.0.0. |
MCP_HTTP_PORT | No | HTTP port. Defaults to 8080. |
/health stays unauthenticated and does not read credentials. The stdio transport does not use CONDUIT_S2S_SECRET.
With MCP_TRANSPORT=http and CONDUIT_S2S_SECRET set, every /mcp request must include X-Gateway-S2S. 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 returns 401 before vendor credentials are read. The secret is never logged.
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/mcp \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -H "X-Gateway-S2S: t=${TS},v1=${SIG}" \ -H "X-Syncro-API-Key: $SYNCRO_API_KEY" \ -H "X-Syncro-Subdomain: $SYNCRO_SUBDOMAIN" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
In AUTH_MODE=gateway, /mcp also requires X-Syncro-API-Key (X-Syncro-Subdomain is optional). Those headers are the only credential source for that request. A request missing the API key returns 401 and does not fall back to SYNCRO_API_KEY in the process environment.
In AUTH_MODE=env, /mcp still requires a valid X-Gateway-S2S header. Vendor credentials come from SYNCRO_API_KEY and SYNCRO_SUBDOMAIN when the request does not carry X-Syncro-API-Key.
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
The server uses a hierarchical approach to tool discovery:
This reduces cognitive load and improves LLM tool selection accuracy.
| Domain | Description | Tools |
|---|---|---|
customers | Manage customer accounts | list, get, create, search |
tickets | Manage support tickets | list, get, create, update, add_comment, add_line_item |
assets | Manage assets and RMM actions | list, get, search, get_patches, list_installed_applications, list_policy_folders, set_policy_folder, run_script |
contacts | Manage customer contacts | list, get, create |
invoices | View and manage billing | list, get, create, email |
time | Ticket time entries | list_entries, log_entry, set_billable |
Four writes deserve particular care:
| Tool | What it does that you may not expect | Confirmation |
|---|---|---|
syncro_tickets_add_comment | Unless hidden: true, the comment is public and Syncro emails it to the customer. do_not_email: true stops the email but a public comment stays visible. | Not confirm-gated: no prompt and no confirm flag on any transport. |
syncro_tickets_create | With comment_body, creates a comment that may be visible to the customer and emailed to them; this tool cannot mark it hidden. | Not confirm-gated, as above. |
syncro_assets_set_policy_folder | Changes which RMM policies (patch schedule, monitoring, automation, scripts) apply to a managed device. | Prompts over stdio with an elicitation-capable client; otherwise runs with no confirmation. |
syncro_invoices_email | Emails the invoice to the customer and cannot be undone. | Destructive: requires confirm: true when there is no prompt. |
Every tool carries MCP annotations (readOnlyHint, destructiveHint, idempotentHint) that classify it as read, write, or destructive. The annotations are hints for MCP clients, not enforcement. See docs/WYREAI-464-capability-diff.md for how this server and the official Syncro MCP split coverage.
How a write is confirmed depends on the transport.
syncro_time_log_entry, syncro_time_set_billable, syncro_tickets_add_line_item, syncro_assets_set_policy_folder, syncro_assets_run_script) and syncro_invoices_email ask the user through MCP elicitation. A client that declares an empty elicitation capability counts as supporting it, because the MCP specification defines that as form support. A declined or cancelled prompt stops the call, and a prompt that fails stops it too.syncro_assets_run_script and syncro_invoices_email, require confirm: true.syncro_assets_run_script and syncro_invoices_email require confirm: true, but the calling model supplies that flag itself, so it is a convention the model is asked to honour after asking the user, not an enforcement boundary. This server has no other confirmation step.On the gateway, the enforcement boundary is the gateway's per-tool tier policy (read, write, admin). Restrict syncro_assets_run_script, which runs code on a managed device, to the gateway's admin tier.
What a prompt shows. The same text is returned in the "Confirmation required" message when confirm: true is needed.
ticket_id, customer_id, contact_id, asset_id, invoice_id, script_id, policy_folder_id and timer_id, and the id of a time entry that Syncro returns, must be positive integers. Anything else is