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

  1. In Claude, open the connector settings and add a custom connector with the URL https://mcp.stunden.ch/mcp.
  2. Claude sends you to Stunden. Sign in with your Stunden account.
  3. If you belong to several businesses, choose the business this access applies to.
  4. Select the permissions to grant and approve. Stunden only offers permissions your role allows in this business.
  5. 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

  1. Your Claude client sends the tool call with your token to the bridge server at mcp.stunden.ch.
  2. The bridge checks the token against Stunden and calls the Stunden API with the same token.
  3. Stunden checks the token, your membership of the business and the permission, then answers.
  4. 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.