{"_id":"@athenanetworks/pracbill-mcp","name":"@athenanetworks/pracbill-mcp","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@athenanetworks/pracbill-mcp","version":"1.0.0","description":"MCP Server for the Pracbill Billing API","type":"module","main":"dist/index.js","bin":{"pracbill-mcp":"dist/index.js"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc","prepublishOnly":"npm run build","start":"node dist/index.js","dev":"tsx src/index.ts","parse-swagger":"tsx src/swagger-parser.ts"},"keywords":["mcp","pracbill","billing","api"],"license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"^1.12.1"},"devDependencies":{"@types/node":"^22.15.3","tsx":"^4.19.4","typescript":"^5.8.3"},"gitHead":"9e99b32e2cba5189680737c5c19a7025961151c7","types":"./dist/index.d.ts","_id":"@athenanetworks/pracbill-mcp@1.0.0","_nodeVersion":"25.8.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-RjitR/ccuGzxrtgR37gBF2r0oGhF0Lm+yJpAosnzg6QxL75KJdlu4eF52ApHag/lT2u/BggZxuefBv+6Nse4cA==","shasum":"bb575cbaec143dfbdb436443f4076aa461c4f3e2","tarball":"https://registry.npmjs.org/@athenanetworks/pracbill-mcp/-/pracbill-mcp-1.0.0.tgz","fileCount":22,"unpackedSize":192907,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCFPZoR2ZH10CvTlTwmIRAKR4Nm+k7hcgI8Do2SbnW29gIhAJ4T394YPyEJ+XoquHbI9S85qvEM9FYlz/NV6r3FyBGY"}]},"_npmUser":{"name":"athenanetworks","email":"josh@athenanetworks.com.au"},"directories":{},"maintainers":[{"name":"athenanetworks","email":"josh@athenanetworks.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pracbill-mcp_1.0.0_1775789197789_0.40643475727820433"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-10T02:46:37.675Z","1.0.0":"2026-04-10T02:46:37.934Z","modified":"2026-04-10T02:46:38.169Z"},"maintainers":[{"name":"athenanetworks","email":"josh@athenanetworks.com.au"}],"description":"MCP Server for the Pracbill Billing API","keywords":["mcp","pracbill","billing","api"],"license":"MIT","readme":"# Pracbill MCP Server\n\nA [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that exposes the full **Pracbill Billing API** as tools for AI assistants. Supports **100+ tools** across all API domains including customers, invoices, services, leads, helpdesk, CDR, reporting, and more.\n\n## Features\n\n- **Comprehensive coverage** — every endpoint in the Pracbill OpenAPI spec is available as an MCP tool\n- **Environment-based config** — API URL and key via environment variables (no hardcoded credentials)\n- **Structured logging** — JSON logs to stderr, configurable log levels\n- **Robust error handling** — retries with exponential backoff, timeouts, detailed error messages\n- **Swagger parser utility** — CLI tool to inspect and summarise the API spec\n\n## Prerequisites\n\n- **Node.js** >= 18\n- A **Pracbill API key** (obtain from your Pracbill instance)\n\n## Quick Start\n\nNo build required — just use `npx`:\n\n```bash\nPRACBILL_URL=https://billing.pracbill.com.au/api \\\nPRACBILL_API_KEY=your_key \\\nnpx @athenanetworks/pracbill-mcp\n```\n\nOr install globally:\n\n```bash\nnpm install -g @athenanetworks/pracbill-mcp\npracbill-mcp\n```\n\nOr clone and build from source:\n\n```bash\ngit clone <repo-url> pracbill-mcp\ncd pracbill-mcp\nnpm install\nnpm run build\n```\n\n## Environment Variables\n\n| Variable | Required | Default | Description |\n|---|---|---|---|\n| `PRACBILL_URL` | Yes | — | Base URL for the Pracbill API (e.g. `https://billing.pracbill.com.au/api`) |\n| `PRACBILL_API_KEY` | Yes | — | Your API authentication key |\n| `PRACBILL_TIMEOUT` | No | `30000` | Request timeout in milliseconds |\n| `PRACBILL_RETRIES` | No | `2` | Max retry attempts for failed requests |\n| `LOG_LEVEL` | No | `INFO` | Logging level: `DEBUG`, `INFO`, `WARN`, `ERROR` |\n\n## IDE Installation\n\n### Windsurf\n\nAdd to your MCP config file (`~/.codeium/windsurf/mcp_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"pracbill\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@athenanetworks/pracbill-mcp\"],\n      \"env\": {\n        \"PRACBILL_URL\": \"https://billing.pracbill.com.au/api\",\n        \"PRACBILL_API_KEY\": \"your_api_key_here\"\n      }\n    }\n  }\n}\n```\n\n### Cursor\n\nAdd to your Cursor MCP settings (`~/.cursor/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"pracbill\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@athenanetworks/pracbill-mcp\"],\n      \"env\": {\n        \"PRACBILL_URL\": \"https://billing.pracbill.com.au/api\",\n        \"PRACBILL_API_KEY\": \"your_api_key_here\"\n      }\n    }\n  }\n}\n```\n\n### Claude Desktop\n\nAdd to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS, `%APPDATA%\\Claude\\claude_desktop_config.json` on Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"pracbill\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@athenanetworks/pracbill-mcp\"],\n      \"env\": {\n        \"PRACBILL_URL\": \"https://billing.pracbill.com.au/api\",\n        \"PRACBILL_API_KEY\": \"your_api_key_here\"\n      }\n    }\n  }\n}\n```\n\n### VS Code (Copilot MCP)\n\nAdd to `.vscode/mcp.json` in your project or global settings:\n\n```json\n{\n  \"servers\": {\n    \"pracbill\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@athenanetworks/pracbill-mcp\"],\n      \"env\": {\n        \"PRACBILL_URL\": \"https://billing.pracbill.com.au/api\",\n        \"PRACBILL_API_KEY\": \"your_api_key_here\"\n      }\n    }\n  }\n}\n```\n\n## Available Tools\n\n### Sales & Qualification (5 tools)\n- `qualify_address` — Qualify an address for available services\n- `qualify_address_ndf` — NDF address qualification\n- `avc_transfer_check` — AVC transfer verification\n- `add_order` — Create an order\n- `add_external_sale` — Process external e-commerce sales\n\n### Customers (20 tools)\n- `get_customers_paginated`, `get_all_customers`, `get_customer`, `search_customers`\n- `add_customer`, `update_customer`\n- `get_customer_balance`, `get_customer_payment_details`\n- `make_customer_payment`, `log_external_payment`\n- `add_customer_item`, `update_customer_item`\n- `get_customer_services`, `get_customer_service_pricing`\n- `get_credit_management_status`, `set_credit_management_status`\n- `get_customer_management_status`, `set_customer_management_status`\n- `authenticate_customer`, `get_customer_statement`\n\n### Customer Contacts (7 tools)\n- `get_customer_contacts`, `create_customer_contact`, `get_customer_contact`\n- `update_customer_contact`, `delete_customer_contact`\n- `add_customer_contact_legacy`, `get_customer_contacts_legacy`\n\n### Payment Methods (6 tools)\n- `list_payment_methods`, `filter_payment_methods`, `add_payment_method`\n- `get_payment_method`, `set_payment_method_status`, `set_payment_method_nickname`\n\n### Leads (5 tools)\n- `get_leads_paginated`, `filter_leads`, `get_lead`, `add_lead`, `update_lead`\n\n### Products (3 tools)\n- `get_products_by_category`, `get_product`, `get_all_products`\n\n### Service Types (6 tools)\n- `get_service_types_paginated`, `get_service_type`, `filter_service_types`\n- `add_service_type`, `update_service_type`, `delete_service_type`\n\n### Services / Engineering (11 tools)\n- `get_service`, `add_service`, `update_service`, `search_services`\n- `calculate_etf`, `execute_etf`\n- `add_service_item`, `update_service_item`\n- `get_monthly_cost`, `get_pro_rata_cost`, `get_daily_cost`\n\n### Invoices (8 tools)\n- `get_invoices`, `get_invoice`, `get_customer_invoices`\n- `get_filtered_invoices_paginated`, `get_invoice_pdf`, `get_invoice_statement`\n- `void_invoice`, `mark_invoice_bad_debt`\n\n### CDR (5 tools)\n- `add_cdr`, `add_multiple_cdrs`, `get_cdr_price`, `get_multiple_cdr_prices`, `get_cdr_status`\n\n### Call Management (13 tools)\n- `get_call_types_paginated`, `get_call_type`\n- `get_all_call_packs`, `get_call_pack`, `get_customer_call_packs`\n- `add_call_pack`, `upgrade_call_pack`, `downgrade_call_pack`, `cancel_call_pack`\n- `get_all_call_pack_types`, `get_call_pack_type`, `add_call_pack_type`, `update_call_pack_type`\n\n### Call Rates (3 tools)\n- `get_call_rates_paginated`, `get_call_rate_group`, `save_call_rate_group`\n\n### Reporting (1 tool)\n- `run_report`\n\n### Timeline (2 tools)\n- `get_timeline`, `add_timeline_entry`\n\n### Price Books (3 tools)\n- `get_price_books_paginated`, `get_price_book`, `save_price_book`\n\n### Service Bundles (2 tools)\n- `get_service_bundle`, `get_customer_service_bundles`\n\n### Orders (4 tools)\n- `get_orders`, `get_order`, `update_order`, `update_order_data`\n\n### Helpdesk (17 tools)\n- `get_helpdesk_tickets`, `get_outstanding_tickets`, `search_helpdesk_tickets`\n- `create_helpdesk_ticket`, `get_helpdesk_ticket`, `update_helpdesk_ticket`\n- `assign_helpdesk_ticket`, `close_helpdesk_ticket`, `reopen_helpdesk_ticket`\n- `void_helpdesk_ticket`, `set_ticket_priority`\n- `get_ticket_notes`, `add_ticket_note`, `get_helpdesk_note`\n- `update_helpdesk_note`, `delete_helpdesk_note`\n- `get_customer_helpdesk_tickets`\n\n### Calendar (3 tools)\n- `get_calendar`, `get_calendar_events`, `get_calendar_events_url`\n\n### Authentication (1 tool)\n- `get_api_key`\n\n## Swagger Parser\n\nA standalone CLI utility for inspecting the Pracbill OpenAPI spec:\n\n```bash\n# Full summary with endpoints\nnpm run parse-swagger\n\n# Endpoints only\nnpx tsx src/swagger-parser.ts --endpoints\n\n# Schemas only\nnpx tsx src/swagger-parser.ts --schemas\n```\n\n## Development\n\n```bash\n# Run in development mode (no build needed)\nPRACBILL_URL=https://billing.pracbill.com.au/api PRACBILL_API_KEY=your_key npm run dev\n\n# Build for production\nnpm run build\n\n# Run built version\nPRACBILL_URL=https://billing.pracbill.com.au/api PRACBILL_API_KEY=your_key npm start\n```\n\n## Publishing\n\n```bash\n# Login to npm (first time only)\nnpm login\n\n# Publish (builds automatically via prepublishOnly)\nnpm publish\n```\n\nAfter publishing, anyone can use it with:\n\n```bash\nnpx @athenanetworks/pracbill-mcp\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-d7721f38f3dd86463b74270aed88eb56"}