{"_id":"@bossforce.ai/mcp-wave","name":"@bossforce.ai/mcp-wave","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@bossforce.ai/mcp-wave","version":"0.1.0","type":"module","repository":{"type":"git","url":"git+https://github.com/bossforce-ai/bossforce-tools.git","directory":"mcps/accounting-finance/wave"},"publishConfig":{"access":"public"},"bin":{"bossforce-mcp-wave":"dist/bin.js"},"dependencies":{"zod":"^4.4.3","@bossforce.ai/mcp-core":"0.3.0"},"devDependencies":{"@bossforce.ai/mcp-testkit":"0.0.0"},"scripts":{"build":"tsc -p tsconfig.json","test":"node --test \"dist/*.test.js\""},"_id":"@bossforce.ai/mcp-wave@0.1.0","description":"MCP server for the [Wave](https://www.waveapps.com/) **GraphQL API**. List businesses and invoices and create customers and invoices in a Wave account. Authenticated with OAuth2 using the refresh-token grant; the server exchanges a refresh token for short","bugs":{"url":"https://github.com/bossforce-ai/bossforce-tools/issues"},"homepage":"https://github.com/bossforce-ai/bossforce-tools#readme","_integrity":"sha512-OoHe8i5Xv77hfo3MJdDP9BSCVhEvb7p3W/wkTbelCr8LjDusplgdFzPP9b0fSKR79F7r3xGj+p+tmtfBTWxyWA==","_resolved":"C:\\Users\\user\\AppData\\Local\\Temp\\99ddbc736a596dd895f417c0e49dde12\\bossforce.ai-mcp-wave-0.1.0.tgz","_from":"file:bossforce.ai-mcp-wave-0.1.0.tgz","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-OoHe8i5Xv77hfo3MJdDP9BSCVhEvb7p3W/wkTbelCr8LjDusplgdFzPP9b0fSKR79F7r3xGj+p+tmtfBTWxyWA==","shasum":"cff471a4d1480a3a1bac0d16747b1db7303007f1","tarball":"https://registry.npmjs.org/@bossforce.ai/mcp-wave/-/mcp-wave-0.1.0.tgz","fileCount":26,"unpackedSize":31823,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFl6FJpe+XLV1eGrJlwxA8aY/bHCHQmSt4F4VSi6RcTyAiA2XVsjEGf4t7SSwDtcPy/8EtU9GX8T5nHg/S4+FXKN5A=="}]},"_npmUser":{"name":"bossforce.ai","email":"bossforce.ai@gmail.com"},"directories":{},"maintainers":[{"name":"bossforce.ai","email":"bossforce.ai@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-wave_0.1.0_1781069204446_0.028076331946641497"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-10T05:26:44.317Z","0.1.0":"2026-06-10T05:26:44.587Z","modified":"2026-06-10T05:26:44.757Z"},"maintainers":[{"name":"bossforce.ai","email":"bossforce.ai@gmail.com"}],"description":"MCP server for the [Wave](https://www.waveapps.com/) **GraphQL API**. List businesses and invoices and create customers and invoices in a Wave account. Authenticated with OAuth2 using the refresh-token grant; the server exchanges a refresh token for short","homepage":"https://github.com/bossforce-ai/bossforce-tools#readme","repository":{"type":"git","url":"git+https://github.com/bossforce-ai/bossforce-tools.git","directory":"mcps/accounting-finance/wave"},"bugs":{"url":"https://github.com/bossforce-ai/bossforce-tools/issues"},"readme":"# @bossforce.ai/mcp-wave\n\nMCP server for the [Wave](https://www.waveapps.com/) **GraphQL API**. List\nbusinesses and invoices and create customers and invoices in a Wave account.\nAuthenticated with OAuth2 using the refresh-token grant; the server exchanges a\nrefresh token for short-lived access tokens itself.\n\n## Credentials\n\n| Env                  | How to obtain                                                                  |\n| -------------------- | ------------------------------------------------------------------------------ |\n| `WAVE_CLIENT_ID`     | Client id of the Wave app (provided by the platform as the OAuth `client_id`). |\n| `WAVE_CLIENT_SECRET` | Client secret of the Wave app (the OAuth `client_secret`).                     |\n| `WAVE_REFRESH_TOKEN` | Obtained automatically when you authorize access. Exchanged for access tokens. |\n\nThe credentials are read lazily, so the server boots and answers `tools/list`\nwithout them; calls fail with an `auth` error until they are set. On the first\ncall the client POSTs the refresh token to\n`https://api.waveapps.com/oauth2/token/` (`grant_type=refresh_token`, with\n`client_id`, `client_secret` and `refresh_token` form-encoded), caches the\nreturned `access_token`, and re-fetches once on a `401`. The GraphQL API is at\n`https://gql.waveapps.com/graphql/public` and, like most GraphQL APIs, reports\nfailures in an `errors[]` array even on HTTP `200`.\n\n## Tools\n\n| Tool              | Arguments                                                                                                              | Returns                       |\n| ----------------- | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------- |\n| `list_businesses` | —                                                                                                                      | the businesses on the account |\n| `list_invoices`   | `business_id`, `page?`, `page_size?`                                                                                   | a business's invoices         |\n| `create_customer` | `business_id`, `name`, `first_name?`, `last_name?`, `email?`, `currency?`                                              | the `customerCreate` result   |\n| `create_invoice`  | `business_id`, `customer_id`, `items[]`, `status?`, `title?`, `invoice_number?`, `invoice_date?`, `due_date?`, `memo?` | the `invoiceCreate` result    |\n\nUse `list_businesses` to resolve the `business_id` the other tools need.\n`create_invoice` references the customer by id and each line item by\n`product_id`, and creates the invoice as a `DRAFT` or `SAVED` invoice; approving\nand sending an invoice are separate Wave operations. Mutations return Wave's\n`didSucceed` flag plus any `inputErrors`, surfaced as `structuredContent`.\n\n## Develop\n\n```bash\npnpm --filter @bossforce.ai/mcp-wave build\npnpm --filter @bossforce.ai/mcp-wave test\n```\n","readmeFilename":"README.md","_rev":"1-090e591609d8c496d11a5d7a76560534"}