# Bexio MCP connector

The Bexio connector brings your Bexio contacts, contact groups, sectors, relations and payroll employee records into Claude, ChatGPT, Cursor and the Elaichi Agent, so each person works with them as themselves and every action is logged.

Source: https://elaichi.ai/connectors/bexio/

## Facts

| | |
| --- | --- |
| Application | Bexio |
| Category | Accounting |
| AI tools | 309 |
| Authentication | Connects with an API key |
| Needs your own OAuth app | Yes |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 309 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Bexio is connected

- Find every contact in the construction sector we added this month.
- Which payroll employees have absences recorded for next week?
- Add Müller AG as a new customer contact with their Zurich address.

## Connect Bexio in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Bexio.
2. Optionally set Share with, then press Connect.
3. Supply your own Bexio app, then approve. Bexio needs an OAuth app you register yourself, so bring its client ID and secret. One person does this once for the organization.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Bexio tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Bexio to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Bexio to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Bexio to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Bexio to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Bexio tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Bexio through Elaichi

### Catch a contact up after a call

Sales. Ask for the Bexio contact by name, then have the agent update the phone number, address or notes you just confirmed on the phone.

### Keep customer and supplier records clean

Finance. Find duplicate or incomplete Bexio contacts, fill in missing details, and restore a contact that was removed by mistake before month end.

### Check who is out next week

HR. Pull the list of Bexio payroll employees and their recorded absences to see who is away before planning payroll or a team meeting.

### Build a list by sector

Marketing. Ask which Bexio contacts sit in a given sector or contact group, and add new leads from an event into the right group in one go.

### Look up a customer while they wait

Support. Find the Bexio contact for the person on the line, see which company they belong to through contact relations, and answer without switching windows.

### Map how companies and people connect

Operations. Create and update Bexio contact relations so every person is linked to the right company, and group contacts the way your office actually works.

## Frequently asked questions

### How do I connect Bexio to Claude?

First connect Bexio in Elaichi. Bexio asks you to register an OAuth application inside your Bexio account, so one person brings a client ID and secret once, and nobody else ever needs them. Then open Claude, go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. Sign in as yourself and Bexio is available in your next conversation.

### Does Bexio work with ChatGPT and Cursor as well as Claude?

Yes. Bexio is connected once in Elaichi, and the same endpoint, https://api.elaichi.ai/mcp, is added to Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. There is nothing to set up separately for each one.

### What can an AI agent actually do with my Bexio data?

It can find a Bexio contact by name or sector, create or update contacts and contact groups, link people to companies through contact relations, and list payroll employees and their absences. Because Bexio exposes a lot of actions, short concrete asks such as "find the contact for Müller AG" work better than long paragraphs.

### Does connecting Bexio give the AI access to everything in my account?

No. Every call to Bexio runs under the Bexio account of the person who signed in, so the agent sees only what that person can already see. Elaichi can narrow that access further with restrictions, and it can never widen it beyond what Bexio itself allows.

### Can my team share one Bexio connection?

Yes. One person connects Bexio and shares the connection with a team in Elaichi, and nobody else handles the client ID or secret. Each teammate still signs in to Elaichi as themselves, so the audit log names the real person behind every Bexio action.

### Can I stop an agent from deleting or changing things in Bexio?

Yes. Restrictions in Elaichi work per action, so you can allow reading Bexio contacts while blocking updates or deletions. A blocked action is never shown to Claude, ChatGPT or any other client, so no prompt can reach it.

### What happens to a Bexio connection when someone leaves?

Offboarding that person in Elaichi ends their access to Bexio at once, across every client they used. A shared Bexio connection keeps working for everyone else on the team. If you disconnect Bexio in Elaichi, it disappears from every client in one step.

## All 309 Bexio tools

Every tool below is callable through https://api.elaichi.ai/mcp once Bexio is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Bexio payroll employees** (List). List all active payroll employees in bexio. Returns a list of employee records, including the address fields street_name and house_number (the legacy street field is deprecated but still present in responses).
- **List all Bexio payroll absences** (List). List payroll absences of a specific employee in bexio. Returns a list of absence records including id, reason, start_date, end_date, half_day, and paid_hours.
- **List all Bexio contacts** (List). List all contacts in bexio. Returns contacts with their id, nr, contact_type_id, name_1, mail, city, and updated_at.
- **Create a Bexio contact** (Create). Create a contact in bexio. Returns the created contact with id, name_1, contact_type_id, city, and updated_at. The address request field is deprecated.
- **Bexio contacts search** (Search). Search contacts in bexio by posting filter criteria in the request body (e.g. field name_1, value Meyer, criteria =). Returns matching contacts: id, nr, name_1, contact_type_id, mail, updated_at. Required per criterion: field and value.
- **Get single Bexio contact by ID** (Get). Get a single bexio contact by id. Returns the contact object including id, name_1, nr, mail, city, and country_id. Required: id.
- **Update a Bexio contact by ID** (Update). Edit a bexio contact by id. Returns the updated contact object including id, name_1, nr, mail, and updated_at. Required: id. The address request field is deprecated.
- **Delete a Bexio contact by ID** (Delete). Delete a contact in bexio by id. The contact is only marked as deleted and can still be accessed via the show-deleted filter or brought back with the restore action. Returns an empty 204 response on success. Required: id.
- **Bexio contacts bulk create** (Create). Bulk create contacts in bexio, creating multiple contacts in one request. Returns the created contact objects including id, nr, name_1, contact_type_id, mail, and updated_at. Requires an array of contact payloads; the address request field is deprecated.
- **Bexio contacts restore** (Restore). Restore an archived contact in bexio. Returns the restored contact object including id, name_1, contact_type_id, mail, and updated_at. Required: contact_id.
- **List all Bexio contact relations** (List). List all contact relations in bexio. Returns each relation with id, description, contact_id, contact_sub_id, and updated_at.
- **Create a Bexio contact relation** (Create). Create a new contact relation in bexio. Returns the created relation with id, description, contact_id, contact_sub_id, and updated_at. Required: contact_id, contact_sub_id.
- **Bexio contact relations search** (Search). Search bexio contact relations by query, posting one or more search criteria to filter the results. Returns matching contact relations including id, contact_id, contact_sub_id, and updated_at. Required: field and value for each criteria; criteria defaults to "like" when omitted. Supported search fields: contact_id, contact_sub_id, updated_at.
- **Get single Bexio contact relation by ID** (Get). Fetch a single contact relation in bexio by id. Returns: id, contact_id, contact_sub_id, description, updated_at, name, value. Required: id.
- **Update a Bexio contact relation by ID** (Update). Edit a single contact relation in bexio by id. Returns the updated relation with id, contact_id, contact_sub_id, description, and updated_at. Required: id, contact_id.
- **Delete a Bexio contact relation by ID** (Delete). Permanently delete a contact relation in bexio by id. This action cannot be undone. Returns an empty 204 response on success. Required: id.
- **List all Bexio contact groups** (List). List all contact groups in bexio. Returns each group's id, created_at, and updated_at.
- **Create a Bexio contact group** (Create). Create a new contact group in bexio. Returns the created group with id, created_at, and updated_at.
- **Bexio contact groups search** (Search). Search contact groups in bexio by posting one or more criteria (field, value, criteria) in the request body; 'like' partial matching applies by default. Returns matching groups with id, created_at, and updated_at. Required: field, value.
- **Get single Bexio contact group by ID** (Get). Fetch a single contact group in bexio by its id. Returns: id, created_at, updated_at, name, value. Required: id.
- **Update a Bexio contact group by ID** (Update). Edit a single contact group in bexio by its id. Returns the updated contact group including id, created_at, and updated_at. Required: id.
- **Delete a Bexio contact group by ID** (Delete). Delete a contact group in bexio by id. This action permanently deletes the contact group and cannot be undone. Returns an empty 204 response on success. Required: id.
- **List all Bexio contact sectors** (List). List all contact sectors in bexio. Returns: id, name, value.
- **Bexio contact sectors search** (Search). Search bexio contact sectors by posting filter criteria. Returns: id, name, value. Required: field, value; criteria defaults to like when omitted.
- **List all Bexio additional addresses** (List). List all additional addresses of a contact in bexio. Returns: id, name, value. Required: contact_id.
- **Create a Bexio additional address** (Create). Create a new additional address for a contact in bexio. Returns: id, name, value. Required: contact_id; the structured street fields require street_name when house_number or address_addition is set.
- **Bexio additional addresses search** (Search). Search additional addresses of a contact in bexio by posting a criteria array. Returns: id, name, value. Required: contact_id and an array of search criteria (field, value, optional criteria operator).
- **Get single Bexio additional address by ID** (Get). Fetch a single additional address of a contact in bexio. Returns: id, name, value. Required: contact_id and id.
- **Update a Bexio additional address by ID** (Update). Edit an additional address of a contact in bexio. Returns: id, name, value. Required: contact_id and id.
- **Delete a Bexio additional address by ID** (Delete). Permanently delete an additional address in bexio; the deletion cannot be undone. Returns an empty 204 response on success. Required: id, contact_id.
- **List all Bexio salutations** (List). List all salutations in bexio. Returns salutation records with their id and name.
- **Create a Bexio salutation** (Create). Create a new salutation in bexio. Returns the created salutation record including its id and name. Required: name.
- **Bexio salutations search** (Search). Search salutations in bexio by posting an array of criteria objects; the only supported search field is name. Returns matching salutation records with their id and name. Required: field, value.
- **Get single Bexio salutation by ID** (Get). Fetch a single salutation in bexio by id. Returns the salutation record including its id and name. Required: id.
- **Update a Bexio salutation by ID** (Update). Edit a single salutation in bexio by id. Returns the updated salutation record including its id and name. Required: id, name.
- **Delete a Bexio salutation by ID** (Delete). Delete a salutation in bexio permanently by id. This action cannot be undone. Returns an empty 204 response on success. Required: id.
- **List all Bexio titles** (List). List all titles in bexio. Returns: id, name, value.
- **Create a Bexio title** (Create). Create a new title in bexio. Returns the created title with its id and name. Required: name.
- **Bexio titles search** (Search). Search titles in bexio by sending a JSON array of filters; only the name field is searchable, and criteria defaults to like when omitted. Returns matching titles with id, name, and value. Required: field and value in each filter object.
- **Get single Bexio title by ID** (Get). Get a single title in bexio by id. Returns: id, name, value. Required: id.
- **Update a Bexio title by ID** (Update). Edit a single title in bexio by id. Returns the updated title with its id and name. Required: id, name.
- **Delete a Bexio title by ID** (Delete). Permanently delete a title in bexio by id. This action cannot be undone. Returns an empty 204 response on success. Required: id.
- **List all Bexio quotes** (List). Fetch a list of all quotes in bexio. Returns quote records with fields such as id, document_nr, title, contact_id, kb_item_status_id, total_gross, total_net, total, is_valid_from, is_valid_until, and updated_at.
- **Create a Bexio quote** (Create). Create a new quote in bexio. Returns the created quote record including id, document_nr, title, contact_id, kb_item_status_id, total_gross, total_net, total, and validity dates.
- **Bexio quotes search** (Search). Search bexio quotes via query filters (supported fields include title, contact_id, document_nr, kb_item_status_id, total_gross, and updated_at). Returns matching quote records with id, document_nr, title, contact_id, kb_item_status_id, total_gross, total_net, and total.
- **Get single Bexio quote by ID** (Get). Fetch a single quote by id in bexio. Returns the quote record including id, document_nr, title, contact_id, kb_item_status_id, total_gross, total_net, total, is_valid_from, and updated_at. Required: id.
- **Update a Bexio quote by ID** (Update). Edit a single quote by id in bexio. Returns the updated quote record including id, document_nr, title, contact_id, kb_item_status_id, total_gross, total_net, total, and updated_at. Required: id.
- **Delete a Bexio quote by ID** (Delete). Delete a quote in bexio permanently by id. This action cannot be undone. Returns an empty 204 response on success. Required: id.
- **Bexio quotes issue** (Action). Issue a quote in bexio, moving it out of the draft status. Returns: id, created_at, updated_at, name, value. Required: quote_id. The quote must be in the draft status.
- **Bexio quotes revert issue** (Action). Revert an issued quote in bexio back to the draft status. Returns: id, created_at, updated_at, name, value. Required: quote_id.
- ...and 259 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
