{
  "markdown": "# SalesBuildr MCP Server\n\nA [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server for integrating with the SalesBuildr quoting and sales platform. Built with a decision-tree architecture to expose domain-specific tools without overwhelming the LLM.\n\n## Architecture\n\nThe server uses a **decision tree** pattern:\n\n1. At root, only `salesbuildr_navigate` is exposed\n2. User selects a domain (companies, contacts, products, opportunities, quotes)\n3. Domain-specific tools become available along with `salesbuildr_back`\n4. Tool calls route to domain handlers that interact with the SalesBuildr API\n\n### Interactive Quote Card (MCP Apps)\n\n`salesbuildr_quotes_get` renders as an interactive, read-only quote card in\nMCP Apps hosts (Claude Desktop/web) — title, status, company/contact, dates,\nline items, and totals; plain-JSON behavior is unchanged in other hosts.\nThe card is neutral by default and brandable via `window.__BRAND__` injection\nor `MCP_BRAND_*` env vars (`MCP_BRAND_NAME`, `MCP_BRAND_LOGO_URL`,\n`MCP_BRAND_PRIMARY_COLOR`, `MCP_BRAND_ACCENT_COLOR`, `MCP_BRAND_BG`,\n`MCP_BRAND_TEXT`) — no rebuild needed.\n\n## Domains\n\n| Domain | Tools | Description |\n|--------|-------|-------------|\n| **companies** | 5 | Company/account management (list, get, create, update, delete) |\n| **contacts** | 5 | Contact management (list, get, create, update, delete) |\n| **products** | 2 | Product catalog (list, get) |\n| **opportunities** | 4 | Sales pipeline (list, get, create, update) |\n| **quotes** | 3 | Quote management with line items (list, get, create) |\n\n## One-Click Deployment\n\n> [!IMPORTANT]\n> **Before you click:** this server depends on `@wyre-technology/node-salesbuildr`,\n> which is hosted on the **GitHub Packages** npm registry. GitHub Packages has no\n> anonymous access — even though the package is public, every `npm install` needs a\n> token. The cloud builder runs `npm install` for you, so you must give it one, or\n> the build fails with `npm error 401 Unauthorized ... npm.pkg.github.com`.\n>\n> 1. Create a GitHub **Personal Access Token** with the `read:packages` scope\n>    ([classic token](https://github.com/settings/tokens/new?scopes=read:packages&description=salesbuildr-mcp%20deploy)).\n>    Any GitHub account works — you do **not** need to be a member of the\n>    `wyre-technology` org to read its public packages.\n> 2. Add it as a build variable when prompted by the deploy flow:\n>    - **Cloudflare Workers** → set a build variable named **`NODE_AUTH_TOKEN`** to your PAT\n>      (Workers → Settings → Build → Variables and Secrets).\n>    - **DigitalOcean App Platform** → set an encrypted env var named **`GITHUB_TOKEN`**\n>      with scope **Build Time** to your PAT (the Dockerfile reads it for the install).\n\n[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/WYRE-AI/salesbuildr-mcp/tree/main)\n\n[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/WYRE-AI/salesbuildr-mcp)\n\n## Installation\n\nThis package is published to the **GitHub Packages** npm registry, which requires a\ntoken even for public packages. Authenticate once, then install:\n\n```bash\n# Authenticate npm to GitHub Packages (token needs the read:packages scope)\nexport NODE_AUTH_TOKEN=$(gh auth token)   # or a PAT with read:packages\n\nnpm install @wyre-ai/salesbuildr-mcp\n```\n\nThe repo's `.npmrc` already points the `@wyre-technology` scope at GitHub Packages and\nreads the token from `NODE_AUTH_TOKEN`, so no further config is needed.\n\n## Configuration\n\n### Environment Variables\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `SALESBUILDR_API_KEY` | Yes (env mode) | - | Your SalesBuildr API key |\n| `SALESBUILDR_BASE_URL` | No | Library default | Tenant-specific base URL (e.g. `https://mytenant.salesbuildr.com`) |\n| `MCP_TRANSPORT` | No | `stdio` | Transport type: `stdio` or `http` |\n| `MCP_HTTP_PORT` | No | `8080` | HTTP server port |\n| `MCP_HTTP_HOST` | No | `0.0.0.0` | HTTP server host |\n| `AUTH_MODE` | No | `env` | Authentication mode: `env` or `gateway` |\n\n### Stdio Mode (Claude Desktop)\n\nAdd to your Claude Desktop config (`claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"salesbuildr\": {\n      \"command\": \"npx\",\n      \"args\": [\"@wyre-ai/salesbuildr-mcp\"],\n      \"env\": {\n        \"SALESBUILDR_API_KEY\": \"your-api-key\"\n      }\n    }\n  }\n}\n```\n\n### HTTP Mode (Gateway)\n\n```bash\nMCP_TRANSPORT=http AUTH_MODE=gateway node dist/index.js\n```\n\nIn gateway mode, pass credentials via request headers:\n\n```\nX-Salesbuildr-API-Key: your-api-key\n```\n\n### Docker\n\n```bash\ndocker run -d \\\n  -p 8080:8080 \\\n  -e SALESBUILDR_API_KEY=your-api-key \\\n  ghcr.io/wyre-ai/salesbuildr-mcp:latest\n```\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Run tests\nnpm test\n\n# Type check\nnpm run typecheck\n\n# Build\nnpm run build\n\n# Run locally (stdio)\nSALESBUILDR_API_KEY=your-key npm start\n\n# Run locally (HTTP)\nMCP_TRANSPORT=http SALESBUILDR_API_KEY=your-key npm start\n```\n\n## License\n\nApache-2.0\n",
  "bytes": 5136,
  "sha": "fc799bca55b8aa6cb7b68959f301a1a1b43ec0bcf0e5c560bec7ded8e40398af",
  "repo_slug": "wyre-technology/salesbuildr-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_wyre_technology_salesbuildr_mc_3fa5e024/readme"
}