Syncro Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Syncro Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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-technology/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 duringnpm installwith401 Unauthorizedunless you supply a token. Create a GitHub Personal Access Token with theread:packagesscope and provide it to the builder:
>
- Cloudflare Workers — set a build/environment variable namedNODE_AUTH_TOKENto your PAT. - DigitalOcean App Platform — set a build-time secret namedGITHUB_TOKENto your PAT.
>
For localnpm install, runexport NODE_AUTH_TOKEN=$(gh auth token)first.
WYRE MCP servers are distributed via OCI/GHCR images and (where available) MCPB bundles. The npm package@wyre-technology/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-technology/syncro-mcpdocker run --rm \
-e SYNCRO_API_KEY=your-api-key \
-e SYNCRO_SUBDOMAIN=your-subdomain \
ghcr.io/wyre-technology/syncro-mcp:latestgit clone https://github.com/wyre-technology/syncro-mcp.git
cd syncro-mcp
npm ci
npm run build
node dist/index.jsSet the following environment variables:
| Variable | Required | Description |
|---|---|---|
SYNCRO_API_KEY | Yes | Your Syncro API key |
SYNCRO_SUBDOMAIN | No | Your Syncro subdomain (if applicable) |
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 |
assets | Manage configuration items | list, get, search |
contacts | Manage customer contacts | list, get, create |
invoices | View and manage billing | list, get, create, email |
#### syncro_navigate Navigate to a domain to access its tools.
{
"domain": "customers" | "tickets" | "assets" | "contacts" | "invoices"
}#### syncro_back Return to the main menu from any domain.
#### syncro_status Show current navigation state and credential status.
#### syncro_customers_list List customers with optional filters.
{
"query": "search term",
"business_name": "Company Inc",
"email": "[email protected]",
"include_disabled": false,
"page": 1,
"per_page": 25
}#### syncro_customers_get Get a specific customer by ID.
{
"customer_id": 123
}#### syncro_customers_create Create a new customer.
{
"business_name": "Acme Corp",
"firstname": "John",
"lastname": "Doe",
"email": "[email protected]"
}#### syncro_customers_search Search customers by query string.
{
"query": "acme",
"limit": 25
}#### syncro_tickets_list List tickets with optional filters.
{
"customer_id": 123,
"status": "Open",
"user_id": 456,
"resolved": false
}#### syncro_tickets_get Get a specific ticket by ID.
{
"ticket_id": 789
}#### syncro_tickets_create Create a new ticket.
{
"customer_id": 123,
"subject": "Network Issue",
"problem_type": "Network",
"comment_body": "Initial description"
}#### syncro_tickets_update Update an existing ticket.
{
"ticket_id": 789,
"status": "Resolved",
"user_id": 456
}#### syncro_tickets_add_comment Add a comment to a ticket.
{
"ticket_id": 789,
"body": "Comment text",
"hidden": false
}#### syncro_assets_list List assets with optional filters.
{
"customer_id": 123,
"asset_type": "Desktop"
}#### syncro_assets_get Get a specific asset by ID.
{
"asset_id": 456
}#### syncro_assets_search Search assets by query or serial number.
{
"query": "workstation",
"asset_serial": "SN12345"
}#### syncro_contacts_list List contacts with optional filters.
{
"customer_id": 123,
"query": "john"
}#### syncro_contacts_get Get a specific contact by ID.
{
"contact_id": 789
}#### syncro_contacts_create Create a new contact.
{
"customer_id": 123,
"name": "Jane Smith",
"email": "[email protected]"
}#### syncro_invoices_list List invoices with optional filters.
{
"customer_id": 123,
"status": "sent",
"since_date": "2024-01-01"
}#### syncro_invoices_get Get a specific invoice by ID.
{
"invoice_id": 456
}#### syncro_invoices_create Create a new invoice.
{
"customer_id": 123,
"due_date": "2024-02-01"
}#### syncro_invoices_email Email an invoice to the customer.
{
"invoice_id": 456,
"subject": "Your Invoice"
}Syncro API has a rate limit of 180 requests per minute. The underlying @wyre-technology/node-syncro library handles rate limiting automatically.
# Install dependencies. The @wyre-technology/node-syncro SDK lives on GitHub
# Packages, so authenticate first:
export NODE_AUTH_TOKEN=$(gh auth token)
npm install
# Build
npm run build
# Run in development
npm run dev
# Type check
npm run typecheck
# Lint
npm run lintApache-2.0
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.