{"id":"24313951-d034-4aed-8bab-21b3e8bd2f35","slug":"gl-importer-plugin","kind":"mcp","name":"gl-importer-plugin","summary":"","owner":"SynderAccounting","repoUrl":"https://github.com/SynderAccounting/gl-importer-plugin","license":"MIT","licenseTier":"permissive","trust":"community","stars":0,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-06-19T21:53:07.000Z","addedAt":"2026-10-13T22:12:23.515Z","logoUrl":"https://avatars.githubusercontent.com/u/92920740?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["utilities"],"tags":[],"runtime":"node","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":true,"reviewed":false,"syncedAt":"2026-10-17T12:27:56.070Z","sample":false,"url":"https://conduits.dev/tools/gl-importer-plugin","language":"TypeScript","transports":["stdio"],"install":{"npm":"@cloudbusiness/gl-importer-mcp"},"requirements":{"env":[{"name":"IMPORTER_API_TOKEN","secret":true,"required":true,"description":"Bearer token for the Synder Importer API. Generate at importer.synder.com -> Account -> API Keys."},{"name":"IMPORTER_BASE_URL","secret":false,"required":false,"description":"Override API base URL (for staging/test). Defaults to https://importer.synder.com/api/v1."}],"upstreamMayCharge":false},"tools":null,"readme":"# gl-importer (Claude Code plugin)\n\nImport CSV/XLSX accounting data into QuickBooks Online or Xero from inside Claude Code,\nusing the [Synder Importer API](https://importer.synder.com/apidocs).\n\nThis plugin bundles:\n\n- An **MCP server** wrapping the Synder Importer REST API (`/api/v1`) — full read + write,\n  19 tools covering account, companies, settings, entities, fields, mappings, imports,\n  status polling, results, cancel, revert, plus two composite \"happy path\" tools.\n- The `gl-importer` **agent skill** with natural-language guidance for the two-step\n  import flow (dry-run → confirm).\n\n## Requirements\n\n- Node.js 18 or newer\n- Claude Code with plugin support (`/plugin` command available)\n- A Synder Importer API token — set as `IMPORTER_API_TOKEN` in your shell env.\n  Generate at [importer.synder.com](https://importer.synder.com) → **Account → API Keys**.\n\n## Install\n\n### From the Claude Code marketplace (recommended)\n\n```\n/plugin marketplace add SynderAccounting/gl-importer-plugin\n/plugin install gl-importer\n```\n\nThen set your token in the shell that launches Claude Code:\n\n```bash\nexport IMPORTER_API_TOKEN=\"your_token_here\"\n```\n\n### Claude Desktop (one-click MCP install)\n\nDownload the latest `.mcpb` bundle from [Releases](https://github.com/SynderAccounting/gl-importer-plugin/releases) and double-click it. Claude Desktop will prompt you for the API token.\n\n### From source (development)\n\n```bash\ngit clone https://github.com/SynderAccounting/gl-importer-plugin\ncd gl-importer-plugin\nnpm install\nnpm run build\n# Point Claude Code at this directory:\nclaude --plugin-dir .\n```\n\n## Configuration\n\n| Env var | Required | Default | Purpose |\n|---|---|---|---|\n| `IMPORTER_API_TOKEN` | yes | — | Bearer token for the Synder Importer API |\n| `IMPORTER_BASE_URL` | no | `https://importer.synder.com/api/v1` | Override for staging/test |\n\n## Example prompts\n\nOnce installed, talk to Claude Code naturally:\n\n- *\"Import `~/Downloads/march-bills.csv` as Bills into my QuickBooks company.\"*\n- *\"What entities can I import into Xero?\"*\n- *\"Show me the saved mapping called 'Stripe payouts' and update it to map Date → TxnDate.\"*\n- *\"List my last 10 imports and tell me which ones failed.\"*\n- *\"Revert import 12345 — I uploaded the wrong file.\"*\n- *\"What's the status of import 12345? Wait for it to finish and tell me how many warnings.\"*\n\nThe skill will walk Claude Code through a safe two-step flow: a **dry-run** that\nshows the proposed field mapping, then a **confirmed** call that actually creates\nthe import and polls until it terminates.\n\n## Tools\n\nThe MCP server exposes 19 tools. The ones an LLM will hit most often:\n\n| Tool | Purpose |\n|---|---|\n| `import_csv` | **Happy path.** Auto-resolves company, uploads file, runs dry-run, then (on confirm) executes + waits. |\n| `wait_for_import` | Polls a running import to a terminal state with exponential backoff (2s → 1.5× → 30s cap). |\n| `list_companies` / `list_entities` / `get_fields` | Discover what you can import where. |\n| `list_mappings` / `create_mapping` / `update_mapping` / `delete_mapping` | Saved-mapping CRUD. |\n| `auto_import` / `execute_import` | Lower-level: create an import with auto-mapping or an explicit mapping. |\n| `get_import_status` / `get_import_results` / `cancel_import` / `revert_import` | Lifecycle. |\n| `get_settings` / `update_settings` | Per-company import settings. |\n| `get_account` | Whoami / token check. |\n\nFull schemas are emitted at MCP startup — the agent skill (`skills/gl-importer/SKILL.md`)\nalso documents the conventions.\n\n## Development\n\n```bash\nnpm install\nnpm run build       # tsc → dist/\nnpm test            # vitest, 60+ unit tests, virtual-clock polling tests\nnpm run watch       # tsc --watch for iterative dev\n```\n\nCI runs on every push and PR (`.github/workflows/ci.yml`).\n\n## Release process\n\n1. Bump `version` in `package.json` and `.claude-plugin/plugin.json` (keep them in sync).\n2. Commit and tag: `git tag v0.x.y && git push --tags`.\n3. The `publish.yml` workflow publishes to npm on the tag push (uses `NPM_TOKEN` secret).\n4. The marketplace install path resolves through this GitHub repo, so the tag is the release.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\n## Support\n\n- Issues: https://github.com/SynderAccounting/gl-importer-plugin/issues\n- Email: help@synder.com\n"}