Documentation
Stunden MCP connector
This page describes the connector between Stunden and Claude: what it can do, how to connect it, what data it handles and how to end access.
What the connector does
The connector gives Claude access to one Stunden business through the Model Context Protocol (MCP). It exposes 104 tools. Depending on the permissions you grant, Claude can read data and create or change records, for example create an invoice or record hours. Changes made through a tool take effect in Stunden immediately.
| Server URL | https://mcp.stunden.ch/mcp |
|---|---|
| Transport | Streamable HTTP |
| Authentication | OAuth 2.0 authorization code flow with PKCE (S256), scope mcp:tools |
| Scope of access | One Stunden business per connection |
| Requirements | A Stunden account that is a member of the business, and a Claude client that can add a remote MCP connector |
Connect it in Claude
- In Claude, open the connector settings and add a custom connector with the URL https://mcp.stunden.ch/mcp.
- Claude sends you to Stunden. Sign in with your Stunden account.
- If you belong to several businesses, choose the business this access applies to.
- Select the permissions to grant and approve. Stunden only offers permissions your role allows in this business.
- Stunden returns you to Claude and the tools are ready to use.
Each person has one connector token per business. Connecting again for the same business replaces its secret and its permissions, so the previous token stops working.
Permissions
You choose the permissions on the Stunden consent page. A tool only works if the token holds the permission behind it. A tool without its permission stays visible in Claude and answers with an error.
Stunden checks your membership of the business on every API request, and checks the permissions against your current role at every token refresh. Permissions your role no longer allows are removed from the token. If none remain, the token is deleted.
Modules with a license also need an active license in the business. Grant only what you want Claude to use: for reporting, read permissions are enough.
Invoicing (license: Invoicing)
| Permission | Access |
|---|---|
| Read customers and addresses, search the Swiss company register | Read |
| Create and update customers | Write |
| Read invoices, statuses and PDFs | Read |
| Create, update and send invoices | Write |
| Read credit notes and PDFs | Read |
| Read dunning notices and PDFs | Read |
| Read offers and PDFs | Read |
| Create, update and send offers | Write |
| Read products and categories | Read |
| Create and update products | Write |
| Read the inventory valuation | Read |
| Read VAT entries | Read |
| Read unbilled hours and expenses | Read |
Recurring invoices (license: Subscription invoices)
| Permission | Access |
|---|---|
| Read recurring invoices | Read |
| Create, update, pause and resume recurring invoices | Write |
Expenses (license: Expense management)
| Permission | Access |
|---|---|
| Read expenses, receipts and categories | Read |
| Create expenses | Write |
| Read payables | Read |
Projects (license: Projects)
| Permission | Access |
|---|---|
| Read projects | Read |
| Create and update projects | Write |
| Read tasks | Read |
| Create and update tasks | Write |
Time tracking (license: Time tracking)
| Permission | Access |
|---|---|
| Read time entries | Read |
| Create time entries | Write |
Shift planning (license: Shift planning)
| Permission | Access |
|---|---|
| Read shifts | Read |
| Create shifts | Write |
Leave and absence (license: Leave & absence)
| Permission | Access |
|---|---|
| Read leave requests and vacation balances | Read |
| Create, approve, reject, withdraw and cancel leave requests | Write |
| Read sick leaves | Read |
| Create and close sick leaves | Write |
Inventory (license: Inventory)
| Permission | Access |
|---|---|
| Read assets and assignments | Read |
| Create, update, assign and delete assets | Write |
Platform (no license required)
| Permission | Access |
|---|---|
| Read employee data, including AHV number, date of birth and address | Read |
| Create and update employees (IBAN, AHV number and password cannot be set) | Write |
| Read business analytics and reports | Read |
| Read wiki pages | Read |
| Create, update and delete wiki pages | Write |
| Read webhook subscriptions (no connector tool uses this) | Read |
| Create and delete webhook subscriptions (no connector tool uses this) | Write |
| Read Help Center articles | Read |
Payroll (license: Payroll)
| Permission | Access |
|---|---|
| Read completed payroll runs and payslips | Read |
| Calculate payroll (no connector tool uses this) | Write |
Point of sale (license: POS)
| Permission | Access |
|---|---|
| Read POS transactions, daily closings, receipts and cash registers | Read |
Tools
Every tool carries MCP annotations that mark it as read-only, writing or destructive. How a client uses them, for example to ask before a tool runs, is up to the client.
| Area | Tools |
|---|---|
| Account and Help Center (4) | whoami, list_kb_categories, search_kb_articles, get_kb_article |
| Customers (5) | list_clients, get_client, create_client, update_client, search_company |
| Invoices and unbilled work (9) | list_invoices, list_open_invoices, get_invoice, get_invoice_pdf, create_invoice, update_invoice, send_invoice, get_unbilled_overview, get_unbilled_by_client |
| Recurring invoices (6) | list_recurring_invoices, get_recurring_invoice, create_recurring_invoice, update_recurring_invoice, pause_recurring_invoice, resume_recurring_invoice |
| Offers (6) | list_offers, get_offer, get_offer_pdf, create_offer, update_offer, send_offer |
| Credit notes and dunning (5) | list_credit_notes, get_credit_note, get_credit_note_pdf, list_dunning, get_dunning_pdf |
| Products (5) | list_products, get_product, list_product_categories, create_product, update_product |
| Expenses and payables (6) | list_expenses, get_expense, get_expense_receipt, list_expense_categories, create_expense, list_payables |
| VAT (1) | list_vat_entries |
| Employees (4) | list_employees, get_employee, create_employee, update_employee |
| Projects and tasks (9) | list_projects, get_project, create_project, update_project, add_project_member, remove_project_member, list_tasks, create_task, update_task |
| Time tracking (5) | list_time_entries, create_time_entry, create_time_entries, update_time_entry, get_missing_time |
| Leave and sick leave (11) | list_leave_requests, list_absence_types, get_vacation_balance, get_vacation_history, create_leave_request, approve_leave_request, withdraw_leave_request, request_leave_cancellation, list_sick_leaves, create_sick_leave, close_sick_leave |
| Shifts (2) | list_shifts, create_shift |
| Payroll (2) | list_completed_payrolls, get_payslips |
| Point of sale (3) | list_pos_transactions, list_pos_checks, list_cash_registers |
| Assets (9) | list_assets, get_asset, create_asset, update_asset, delete_asset, assign_asset, unassign_asset, change_asset_status, get_inventory_valuation |
| Wiki (5) | list_wiki_pages, get_wiki_page, create_wiki_page, update_wiki_page, delete_wiki_page |
| Analytics (7) | get_business_health, get_employee_productivity, get_revenue_summary, get_project_profitability, get_utilization_report, get_overdue_overview, get_time_report |
These tools have an effect that cannot be taken back: data is deleted, an email leaves the system, or an external integration has to be updated afterwards.
send_invoice, send_offer, delete_asset, delete_wiki_page, remove_project_member
Example prompts
- Give me an overview of my business.
- Show me all unpaid invoices.
- Create an invoice for Müller AG: 10 hours of consulting at CHF 180.
- Which projects are profitable this year?
- How is my team's utilization this month?
- Create a task for Tom: finish the logo redesign by Friday.
- Record 3 hours on project Alpha for today.
- Is Sarah on leave next week?
Data flow and logging
- Your Claude client sends the tool call with your token to the bridge server at mcp.stunden.ch.
- The bridge checks the token against Stunden and calls the Stunden API with the same token.
- Stunden checks the token, your membership of the business and the permission, then answers.
- The bridge removes a few internal fields and returns the result to your Claude client.
Tool results leave Stunden. They go to the Claude client of the person who connected, and so to Anthropic in the USA, which processes them under that person's Claude account and terms. Stunden has no influence on that processing. Do not assume that it takes place in Switzerland.
Results can contain personal data. get_employee returns one person's full record, including AHV number, date of birth and address, and pay and tax data where your role may see them. list_employees returns a reduced record. IBANs are not part of the employee API. Grant employee and payroll permissions only if this data may go to Claude.
The bridge has no database. It stores neither tokens nor tool results, and it handles every request with a new server instance.
What the bridge logs
The bridge writes these entries to its service log:
| Event | Logged |
|---|---|
| Successful tool call | No entry. |
| Failed tool call | Tool name and error text. Tool arguments are not logged as such, but the error text can repeat validation details. |
| Rejected or failed Stunden API call | Additionally the request URL, the HTTP status and the first 1000 characters of the response. The URL contains the path and query string, so IDs and filter values of a failed read appear in the log, and the response can contain business data. |
| Unexpected error in the bridge | The error message with technical details. |
| Sign-in and token checks | The token's record number, and on failure the HTTP status and the response from Stunden. The token secret is never logged. |
This describes the application logging of the bridge. Access logs of the web servers in front of it are not covered here. Stunden itself logs the technical parameters of each OAuth request, such as client ID and redirect URL, but no tokens or authorization codes.
Token lifetime
| Authorization code | Valid for 10 minutes, single use. |
|---|---|
| Access token | Valid for one year. Every refresh issues a new token with a new year; an expired token stops working. |
| Refresh token | Valid for 30 days and replaced at every use. Each refresh also issues a new access token and deletes the old one. |
| Leaving a business | When a person leaves a business or is archived, their tokens for that business are deleted. |
Revoking access
- Your own connections: in Stunden, open Me > My connections and revoke the connection.
- Administrators: Organization > Integrations lists all API tokens of the business, and anyone with the organization.manage permission can revoke them.
- Clients: the OAuth revocation endpoint accepts the access token or the refresh token.
Revoking deletes the token. The bridge checks the token on every request, so the next tool call fails, and the refresh token is rejected as well. To use the connector again, connect it again.
Removing the connector in Claude only changes Claude. To be sure that access has ended, revoke the connection in Stunden too.
Troubleshooting
| Problem | Solution |
|---|---|
| A tool fails with a permission error | The token lacks the permission. Connect again and select it. If it is not offered, your role does not allow it, or it is one of the tools listed under Tools that the consent page does not offer. |
| This endpoint requires a license for: … | The business, or your user, has no license for this module. An administrator can assign it in Stunden. |
| Your membership in this business has ended | The person who connected no longer belongs to the business. Connect with an active account. |
| Claude asks you to connect again | The token was revoked, replaced or removed, or the refresh token expired after 30 days without use. Connect again. |
| The consent page shows few permissions | Only permissions your role allows in the selected business are shown. Ask an administrator to change your role, or have someone with the right role connect. |
| Claude works in the wrong business | A connection applies to one business. Connect again and choose the other business. |
| The consent page answers with invalid_client or invalid_request | The client is not registered with Stunden. Connections work from clients whose redirect URL is registered, such as claude.ai. |
Support
For questions about the connector, contact Stunden support. Tell us the tool name and the time of the failure. Never send your token.
- Email: [email protected]
- Phone: +41 31 511 51 71
- Contact page
- Privacy policy