# How to integrate Sevdesk MCP with Claude Agent SDK

```json
{
  "title": "How to integrate Sevdesk MCP with Claude Agent SDK",
  "toolkit": "Sevdesk",
  "toolkit_slug": "sevdesk",
  "framework": "Claude Agent SDK",
  "framework_slug": "claude-agents-sdk",
  "url": "https://composio.dev/toolkits/sevdesk/framework/claude-agents-sdk",
  "markdown_url": "https://composio.dev/toolkits/sevdesk/framework/claude-agents-sdk.md",
  "updated_at": "2026-05-12T10:25:46.092Z"
}
```

## Introduction

This guide walks you through connecting Sevdesk to the Claude Agent SDK using the Composio tool router. By the end, you'll have a working Sevdesk agent that can generate and send a new invoice, list all unpaid customer invoices, add a new business expense entry through natural language commands.
This guide will help you understand how to give your Claude Agent SDK agent real control over a Sevdesk account through Composio's Sevdesk MCP server.
Before we dive in, let's take a quick look at the key ideas and tools involved.

## Also integrate Sevdesk with

- [OpenAI Agents SDK](https://composio.dev/toolkits/sevdesk/framework/open-ai-agents-sdk)
- [Claude Code](https://composio.dev/toolkits/sevdesk/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/sevdesk/framework/claude-cowork)
- [Codex](https://composio.dev/toolkits/sevdesk/framework/codex)
- [OpenClaw](https://composio.dev/toolkits/sevdesk/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/sevdesk/framework/hermes-agent)
- [CLI](https://composio.dev/toolkits/sevdesk/framework/cli)
- [Google ADK](https://composio.dev/toolkits/sevdesk/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/sevdesk/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/sevdesk/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/sevdesk/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/sevdesk/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/sevdesk/framework/crew-ai)

## TL;DR

Here's what you'll learn:
- Get and set up your Claude/Anthropic and Composio API keys
- Install the necessary dependencies
- Initialize Composio and create a Tool Router session for Sevdesk
- Configure an AI agent that can use Sevdesk as a tool
- Run a live chat session where you can ask the agent to perform Sevdesk operations

## What is Claude Agent SDK?

The Claude Agent SDK is Anthropic's official framework for building AI agents powered by Claude. It provides a streamlined interface for creating agents with MCP tool support and conversation management.
Key features include:
- Native MCP Support: Built-in support for Model Context Protocol servers
- Permission Modes: Control tool execution permissions
- Streaming Responses: Real-time response streaming for interactive applications
- Context Manager: Clean async context management for sessions

## What is the Sevdesk MCP server, and what's possible with it?

The Sevdesk MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Sevdesk account. It provides structured and secure access to your accounting workspace, so your agent can perform actions like managing invoices, tracking expenses, generating reports, organizing contacts, and handling payments on your behalf.
- Invoice creation and management: Instantly generate, send, and track invoices for your clients, keeping your business cash flow streamlined.
- Expense tracking and categorization: Let your agent record and organize expenses, ensuring your books are always up to date and categorized for tax time.
- Financial reporting and insights: Request detailed reports and summaries—like profit and loss or balance sheets—so you can make informed business decisions quickly.
- Contact and customer management: Effortlessly add, update, or retrieve customer details and supplier information to keep your records accurate.
- Payment and transaction handling: Enable your agent to log payments, match transactions, and help reconcile your accounts, reducing manual entry and errors.

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `SEVDESK_BOOK_INVOICE_AMOUNT` | Book Invoice Amount | Tool to book an invoice amount in SevDesk. Use when you need to record a payment for an invoice, either full or partial. This creates an invoice log entry and updates the invoice status accordingly. |
| `SEVDESK_CHECK_CUSTOMER_NUMBER_AVAILABILITY` | Check Customer Number Availability | Tool to check if a customer number is available in sevDesk. Use when you need to verify that a customer number can be assigned without conflicts. |
| `SEVDESK_CREATE_ACCOUNTING_CONTACT` | Create Accounting Contact | Tool to create a new accounting contact in sevDesk. Use when you need to assign debitor or creditor numbers to existing contacts for accounting purposes. |
| `SEVDESK_CREATE_CHECK_ACCOUNT_TRANSACTION` | Create Check Account Transaction | Tool to create a new check account transaction in SevDesk. Use when you need to manually record a transaction for a payment account, such as bank transfers, cash movements, or other financial transactions that need to be tracked in the accounting system. |
| `SEVDESK_CREATE_CLEARING_ACCOUNT` | Create Clearing Account | Tool to create a new clearing account in sevDesk. Use when you need to set up accounts for tracking intermediate transactions like coupons, gift cards, or prepayments. Clearing accounts are offline accounts used for booking purposes. |
| `SEVDESK_CREATE_COMMUNICATION_WAY` | Create Communication Way | Tool to create a new contact communication way (email, phone, website, etc.) in SevDesk. Use when you need to add contact information like email addresses, phone numbers, or website URLs to an existing contact. |
| `SEVDESK_CREATE_CONTACT` | Create Contact | Creates a new contact (person or company) in SevDesk accounting system. Required fields: - type: Must be 'PERSON' or 'COMPANY' - familyname: Required for PERSON type (last name) - name: Required for COMPANY type (company name) - category: Contact category reference (e.g., id=3 for Customer, id=2 for Supplier) Automatically generates customerNumber if not provided. Supports optional fields like email, phone, address, bank details, tax information, and more. |
| `SEVDESK_CREATE_CONTACT2` | Create Contact (REST API) | Tool to create a new contact in sevDesk using the standard REST API endpoint. Use when you need to create a person or organization contact with category assignment. |
| `SEVDESK_CREATE_CONTACT_ADDRESS` | Create Contact Address | Tool to create a new contact address in SevDesk. Use when you need to add a new address for an existing contact with street, city, postal code, and country information. |
| `SEVDESK_CREATE_CONTACT_CUSTOM_FIELD` | Create Contact Custom Field | Tool to create a custom field for a contact in sevDesk. Use when you need to add custom field values to a contact. Requires references to both the contact and the custom field setting that defines the field type. |
| `SEVDESK_CREATE_CONTACT_CUSTOM_FIELD_SETTING` | Create Contact Custom Field Setting | Creates a new contact custom field setting in sevDesk for tracking additional contact information. Use this tool when you need to add custom fields to contacts to store information beyond the standard fields provided by sevDesk (e.g., customer type, lead source, industry classification, or other custom attributes). Once created, these custom fields can be used when managing contacts. |
| `SEVDESK_CREATE_CREDIT_NOTE_FROM_INVOICE` | Create Credit Note from Invoice | Tool to create a new credit note from an existing invoice in SevDesk. Use when you need to issue a credit note based on an already created invoice. |
| `SEVDESK_CREATE_FILE_IMPORT_ACCOUNT` | Create File Import Account | Tool to create a new file import account (check account) in sevDesk. Use when you need to set up a new bank account that will receive transaction imports via CSV or MT940 files. The account will be created with type 'online' to support file imports. |
| `SEVDESK_CREATE_PART` | Create Part | Tool to create a new part (product or service) in SevDesk. Use when you need to add inventory items, products, or services to the system for use in invoices and orders. |
| `SEVDESK_CREATE_PAYMENT_METHOD` | Create Payment Method | Creates a new payment method in sevDesk for tracking different payment types. Use this tool when you need to add custom payment options (e.g., specific credit cards, digital wallets, or regional payment methods) that aren't already available in the system. The created payment method can then be used when creating invoices or recording payments. |
| `SEVDESK_CREATE_PRIVATE_TRANSACTION_RULE` | Create Private Transaction Rule | Tool to create a new private transaction rule in SevDesk. Use when you need to define rules that automatically mark transactions as private based on counterpart name or payment purpose. This is useful for separating personal transactions from business ones. |
| `SEVDESK_CREATE_TAG` | Create Tag | Tool to create a new tag and attach it to an object (Invoice, Order, Voucher, or CreditNote) in sevDesk. Use when you need to categorize or label objects for organization and filtering. If a tag with the same name already exists, it will be linked to the object instead of creating a duplicate. |
| `SEVDESK_DELETE_ACCOUNTING_CONTACT_BY_ID` | Delete Accounting Contact By ID | Permanently deletes an accounting contact from sevDesk by its unique identifier. This action removes the accounting contact and cannot be undone. Use this when you need to: - Remove outdated or duplicate accounting contacts - Clean up test data - Delete accounting contacts that are no longer needed The accounting contact ID must be valid and the contact must exist, otherwise a 404 error will be raised. Example: "Delete accounting contact with ID 90804710" |
| `SEVDESK_DELETE_CHECK_ACCOUNT_BY_ID` | Delete Check Account By ID | Permanently deletes a check account from sevDesk by its unique identifier. This action removes the check account (bank account) and cannot be undone. Use this when you need to: - Remove outdated or unused bank accounts - Clean up test data - Delete check accounts that are no longer needed The check account ID must be valid and the account must exist, otherwise a 404 error will be raised. Example: "Delete check account with ID 6158594" |
| `SEVDESK_DELETE_CHECK_ACCOUNT_TRANSACTION_BY_ID` | Delete Check Account Transaction | Permanently deletes a check account transaction from sevDesk by its unique identifier. Use when you need to remove a transaction that was created in error or is no longer needed. |
| `SEVDESK_DELETE_COMMUNICATION_WAY_BY_ID` | Delete Communication Way By ID | Permanently deletes a communication way from sevDesk by its unique identifier. Use when you need to remove phone numbers, email addresses, or other contact methods from contacts. The communication way ID must be valid and exist, otherwise a 404 error will be raised. |
| `SEVDESK_DELETE_CONTACT` | Delete Contact | Permanently deletes a contact from sevDesk by its unique identifier. This action removes the contact and cannot be undone. Use this when you need to: - Remove outdated or duplicate contacts - Clean up test data - Delete contacts that are no longer needed The contact ID must be valid and the contact must exist, otherwise a 404 error will be raised. Example: "Delete contact with ID 12345" |
| `SEVDESK_DELETE_CONTACT_ADDRESS_BY_ID` | Delete Contact Address By ID | Tool to delete a contact address from sevDesk by its unique identifier. Use when you need to permanently remove a contact address that is no longer needed or is outdated. |
| `SEVDESK_DELETE_CONTACT_CUSTOM_FIELD_BY_ID` | Delete Contact Custom Field By ID | Tool to permanently delete a contact custom field by its ID. Use when you need to remove a custom field value from a contact. |
| `SEVDESK_DELETE_CONTACT_CUSTOM_FIELD_SETTING_BY_ID` | Delete Contact Custom Field Setting By ID | Tool to permanently delete a contact custom field setting by its ID. Use when you need to remove a custom field configuration from contacts. |
| `SEVDESK_DELETE_CREDIT_NOTE_BY_ID` | Delete Credit Note By ID | Permanently deletes a credit note from sevDesk by its unique identifier. This action removes the credit note and cannot be undone. Use this when you need to: - Remove outdated or incorrect credit notes - Clean up draft credit notes that are no longer needed - Delete test data Note: The credit note must be in draft status to be deleted. Attempting to delete a non-draft credit note will result in a 409 Conflict error. The credit note ID must be valid and exist, otherwise a 404 error will be raised. Example: "Delete credit note with ID 2569269" |
| `SEVDESK_DELETE_ORDER_BY_ID` | Delete Order By ID | Permanently deletes an order from sevDesk by its unique identifier. Use this when you need to remove orders from the system. Note that only draft orders can be deleted - attempting to delete orders in other states will result in a 409 conflict error. |
| `SEVDESK_DELETE_ORDER_POS_BY_ID` | Delete Order Position By ID | Permanently deletes an order position from sevDesk by its unique identifier. Use this when you need to remove line items or positions from orders. Note that deletion may fail with a 409 conflict error if the order is not in draft status. |
| `SEVDESK_DELETE_PAYMENT_METHOD` | Delete Payment Method | Deletes a payment method in sevDesk by its ID. Use this when you need to permanently remove a payment method from the system. Requires the payment method ID which can be obtained from the Get Payment Methods or Create Payment Method actions. |
| `SEVDESK_DELETE_PRIVATE_TRANSACTION_RULE_BY_ID` | Delete Private Transaction Rule By ID | Permanently deletes a private transaction rule from sevDesk by its unique identifier. Use when you need to remove a rule that is no longer needed. |
| `SEVDESK_DELETE_TAG_BY_ID` | Delete Tag By ID | Permanently deletes a tag from sevDesk by its unique identifier. Use this when you need to remove tags that are no longer needed or to clean up tag data. The tag ID must be valid and the tag must exist, otherwise a 404 error will be raised. |
| `SEVDESK_ENSHRINE_CHECK_ACCOUNT_TRANSACTION` | Enshrine Check Account Transaction | Tool to enshrine a check account transaction by its ID. Use when you need to permanently lock or finalize a transaction to prevent further modifications. |
| `SEVDESK_EXPORT_CREDIT_NOTE_CSV` | Export Credit Note CSV | Tool to export credit notes as CSV from SevDesk. Use when you need to retrieve credit note data in CSV format for reporting or data analysis. The export returns CSV content (either base64-encoded or plain text) along with file metadata. |
| `SEVDESK_FETCH_DICTIONARY_ENTRIES_BY_TYPE` | Fetch Dictionary Entries By Type | Tool to retrieve placeholders (dictionary entries) for a specific object type in sevDesk. Use when you need to get available template placeholders for documents like invoices, emails, or letters. |
| `SEVDESK_FIND_CONTACTS_BY_CUSTOM_FIELD_VALUE` | Find Contacts By Custom Field Value | Tool to find contacts by custom field value. Use when you need to search for contacts that have a specific value in a custom field. |
| `SEVDESK_GENERATE_PROGRESS_DOWNLOAD_HASH` | Generate Progress Download Hash | Tool to generate a download hash for an export job progress. Use when you need to retrieve the progress status and download hash for an export job initiated through sevDesk's Export API. |
| `SEVDESK_GET_ACCOUNTING_CONTACT_BY_ID` | Get Accounting Contact By ID | Tool to retrieve accounting contact details by ID. Use when you need accounting information (debitor/creditor numbers) for a specific contact. |
| `SEVDESK_GET_ACCOUNTING_CONTACTS` | Get Accounting Contacts | Tool to retrieve accounting contacts from sevDesk. Use when you need to fetch accounting contact information including debitor and creditor numbers. |
| `SEVDESK_GET_ACCOUNT_INVOICES` | Get SevClient Account Invoices | Retrieves all sevDesk account invoices for the authenticated client. Returns a list of invoice objects or null if no invoices exist in the account. |
| `SEVDESK_GET_CHECK_ACCOUNT_BALANCE_AT_DATE` | Get Check Account Balance At Date | Tool to get the balance of a check account at a specific date. Use when you need to retrieve the historical balance of a bank account, considering only transactions up to the specified date at 23:59:59. |
| `SEVDESK_GET_CHECK_ACCOUNT_BY_ID` | Get Check Account By ID | Tool to retrieve details of a specific check account by ID. Use when you have a check account's ID and need its detailed information including balance, IBAN, currency, and status. |
| `SEVDESK_GET_CHECK_ACCOUNTS` | Get Check Accounts | Tool to retrieve a list of all check accounts. Use when you need to view or select available bank accounts in sevDesk. |
| `SEVDESK_GET_CHECK_ACCOUNT_TRANSACTION_BY_ID` | Get Check Account Transaction By ID | Tool to retrieve a specific check account transaction by its ID. Use when you need detailed information about a specific transaction. |
| `SEVDESK_GET_CHECK_ACCOUNT_TRANSACTIONS` | Get Check Account Transactions | Tool to retrieve list of check account transactions. Use when you need to fetch transactions with optional filters (e.g., account ID, date, status) after verifying the check account exists. |
| `SEVDESK_GET_COMMUNICATIONWAY_BY_ID` | Get CommunicationWay By ID | Tool to retrieve details of a specific communication way by ID. Use when you have a communication way's ID and need its detailed information. |
| `SEVDESK_GET_COMMUNICATION_WAY_KEYS` | Get Communication Way Keys | Retrieve a list of communication way keys from sevDesk. Communication way keys define the available types for contact communication methods (e.g., ID 1: Private, ID 2: Work, ID 3: Fax, ID 4: Mobile, ID 5: Empty, ID 6: Autobox, ID 7: Newsletter, ID 8: Invoicing). Use this to get the valid key IDs and names for creating or updating communication ways. |
| `SEVDESK_GET_COMMUNICATION_WAYS` | Get Communication Ways | Tool to retrieve communication ways from sevDesk. Use when you need to fetch contact information like phone numbers, emails, or web addresses for a contact. |
| `SEVDESK_GET_CONTACT_ADDRESS_BY_ID` | Get Contact Address By ID | Tool to retrieve details of a specific contact address by ID. Use when you have a contact address ID and need its detailed information. |
| `SEVDESK_GET_CONTACT_ADDRESSES` | Get Contact Addresses | Tool to retrieve contact addresses from sevdesk. Use when you need to fetch address information for contacts with optional pagination and embedded related objects. |
| `SEVDESK_GET_CONTACT_BY_ID` | Get Contact By ID | Tool to retrieve details of a specific contact by ID. Use when you have a contact's UUID and need its detailed information. |
| `SEVDESK_GET_CONTACT_CUSTOM_FIELD_BY_ID` | Get Contact Custom Field By ID | Tool to retrieve a contact custom field by its ID. Use when you need to fetch details about a specific custom field associated with a contact. |
| `SEVDESK_GET_CONTACT_CUSTOM_FIELDS` | Get Contact Custom Fields | Tool to retrieve contact custom fields from sevDesk. Contact custom fields store additional user-defined information about contacts beyond standard fields. Use this when you need to fetch custom field values for contacts or list all custom field data. |
| `SEVDESK_GET_CONTACT_CUSTOM_FIELD_SETTING_BY_ID` | Get Contact Custom Field Setting By ID | Tool to retrieve details of a specific contact custom field setting by ID. Use when you need information about a contact custom field configuration. |
| `SEVDESK_GET_CONTACT_CUSTOM_FIELD_SETTING_REFERENCE_COUNT` | Get Contact Custom Field Setting Reference Count | Tool to receive the count of references for a contact custom field setting. Use when you need to check how many times a contact custom field is referenced before deleting it. |
| `SEVDESK_GET_CONTACT_CUSTOM_FIELD_SETTINGS` | Get Contact Custom Field Settings | Tool to retrieve contact custom field settings from sevDesk. Contact custom field settings define the structure and configuration of custom fields that can be added to contacts. Use this when you need to fetch the list of available custom field configurations or understand what custom fields are defined for contacts. |
| `SEVDESK_GET_CONTACTS` | Get Contacts | Tool to retrieve a list of contacts. Use when you need to fetch contacts from sevdesk with optional filters. |
| `SEVDESK_GET_CONTACT_TABS_ITEM_COUNT` | Get Contact Tabs Item Count | Tool to get the count of items across all tabs for a specific contact. Use when you need to retrieve statistics about documents, invoices, orders, and other items related to a contact. |
| `SEVDESK_GET_CREDIT_NOTE_POSITIONS` | Get Credit Note Positions | Tool to retrieve credit note positions from SevDesk. Use when you need to fetch line items or positions associated with credit notes. |
| `SEVDESK_GET_CREDIT_NOTES` | Get Credit Notes | Tool to retrieve a list of credit notes. Use when you need to fetch multiple or filtered credit note records after confirming filters. |
| `SEVDESK_GET_EXPORT_INVOICECSV` | Get Export Invoice CSV | Tool to export invoices as CSV from sevDesk. Use when you need to get invoice data in CSV format. The response contains base64-encoded CSV content when download parameter is false. |
| `SEVDESK_GET_EXPORT_TRANSACTIONS_CSV` | Get Export Transactions CSV | Tool to export check account transactions as CSV file. Use when you need to download or retrieve transaction data in CSV format for reporting or analysis. |
| `SEVDESK_GET_INVOICE_IS_PARTIALLY_PAID` | Get Invoice Is Partially Paid | Tool to check if an invoice is already partially paid. Use when you need to determine the partial payment status of a specific invoice. |
| `SEVDESK_GET_INVOICE_POSITIONS` | Get Invoice Positions | Tool to retrieve all line items (positions) for a specific invoice. Use when you need detailed information about products, services, quantities, and prices on an invoice. |
| `SEVDESK_GET_INVOICE_POSS` | Get Invoice Positions | Tool to retrieve invoice positions from sevDesk. Use when you need to fetch line items or positions associated with invoices. |
| `SEVDESK_GET_INVOICES` | Get Invoices | Retrieves a list of invoices from sevDesk with optional filtering and pagination. Use this tool to: - Get all invoices or filter by status (DRAFT, CONFIRMED, PAID, CANCELLED) - Search invoices by contact, date range, or invoice number - Paginate through large invoice lists using limit and offset - Include related objects (contact, sevClient) using the embed parameter - Sort results by invoice date or other fields |
| `SEVDESK_GET_LETTERPAPERS_WITH_THUMB` | Get Letterpapers With Thumbnails | Tool to retrieve all available letterpapers with thumbnails from sevDesk. Use when you need to view or select letterpapers for documents. |
| `SEVDESK_GET_NEXT_CUSTOMER_NUMBER` | Get Next Customer Number | Tool to retrieve the next free customer number from sevDesk. Use when you need to get the next available customer number for creating a new contact. |
| `SEVDESK_GET_ORDER_BY_ID` | Get Order By ID | Tool to retrieve details of a specific order by ID. Use when you have an order's ID and need its detailed information including customer, amounts, status, and line items. |
| `SEVDESK_GET_ORDER_DISCOUNTS` | Get Order Discounts | Tool to retrieve discounts applied to a specific order in sevDesk. Use when you need to find all discount entries associated with an order. |
| `SEVDESK_GET_ORDER_POS_BY_ID` | Get Order Position By ID | Tool to retrieve details of a specific order position by ID. Use when you have an order position's ID and need its detailed information including quantity, price, tax rate, and discounts. |
| `SEVDESK_GET_ORDER_POSITIONS` | Get Order Positions | Tool to retrieve order positions from SevDesk. Use when you need to fetch line items or positions associated with orders. |
| `SEVDESK_GET_ORDERS` | Get Orders | Retrieve a paginated list of orders from sevDesk. This action fetches orders with support for filtering by status, customer, search text, and pagination. All parameters are optional - calling without parameters returns all orders. Use 'embed' to include related data like contact information or addresses in a single request. |
| `SEVDESK_GET_PART_BY_ID` | Get Part By ID | Tool to retrieve details of a specific part by ID. Use when you have a part's ID and need its detailed information including pricing, stock levels, and metadata. |
| `SEVDESK_GET_PART_CONTACT_PRICES` | Get Part Contact Prices | Tool to retrieve a list of part contact prices. Use when you need to fetch pricing details for parts linked to contacts, with optional filters, pagination, and embedding of related objects. |
| `SEVDESK_GET_PARTS` | Get Parts | Tool to retrieve a list of all parts. Use when you need to list available products or services for selection. |
| `SEVDESK_GET_PART_STOCK` | Get Part Stock | Tool to retrieve the current stock level of a specific part. Use when you need to check inventory availability for a product or service. |
| `SEVDESK_GET_PART_UNITIES` | Get Part Unities | Retrieves a list of part unities (units of measurement) from SevDesk. Part unities represent units of measurement used for products/parts in the system (e.g., pieces, meters, kilograms, hours). Use this action to list all available units, with optional pagination and filtering for deleted entries. |
| `SEVDESK_GET_PAYMENT_METHODS` | Get Payment Methods | Retrieves all available payment methods from sevDesk. Payment methods define how customers pay invoices (e.g., SEPA bank transfer, cash, check, online payment like PayPal). Use this to list payment methods before creating invoices or to display payment options. Supports pagination via limit and offset parameters. |
| `SEVDESK_GET_PLACES` | Get Places | Retrieve a list of places (cities/locations with geographic data) from sevDesk. Places contain location information including city names, coordinates (latitude/longitude), postal codes, and location IDs. Useful for address validation, geographic lookups, or populating location dropdowns in your application. Use pagination (limit/offset) to handle the large dataset efficiently (45,000+ places). |
| `SEVDESK_GET_PRIVATE_TRANSACTION_RULES` | Get Private Transaction Rules | Tool to list existing private transaction rules in SevDesk. Use when you need to retrieve all rules that automatically mark transactions as private based on counterpart name or payment purpose. This is useful for reviewing configured rules for separating personal transactions from business ones. |
| `SEVDESK_GET_PROGRESS` | Get Export Progress | Tool to retrieve the progress of an export operation. Use when you need to check the status of a running export by its hash identifier. |
| `SEVDESK_GET_RECEIPT_GUIDANCE_FOR_ACCOUNT_NUMBER` | Get Receipt Guidance For Account Number | Tool to retrieve receipt guidance for a specific Datev account number. Use when you need to understand what receipt types and tax rules are allowed for a particular account in the accounting system. |
| `SEVDESK_GET_RECEIPT_GUIDANCE_FOR_ALL_ACCOUNTS` | Get Receipt Guidance For All Accounts | Tool to retrieve receipt guidance for all accounts. Provides guidance on which booking accounts can be used with which tax rules and receipt types. Use when you need to determine compatible tax rates and tax rules for specific booking accounts in voucher processing. |
| `SEVDESK_GET_RECEIPT_GUIDANCE_FOR_EXPENSE` | Get Receipt Guidance For Expense | Tool to retrieve guidance for expense accounts from sevDesk. Use when you need to determine which expense accounts are available and which tax rules and receipt types are compatible with them. This helps ensure correct account selection based on client settings and tax requirements. |
| `SEVDESK_GET_RECEIPT_GUIDANCE_FOR_REVENUE` | Get Receipt Guidance For Revenue | Tool to retrieve guidance for revenue accounts from sevDesk. Use when you need to determine which revenue accounts are available and which tax rules and receipt types are compatible with them. This helps ensure correct account selection based on client settings and tax requirements. |
| `SEVDESK_GET_RECEIPT_GUIDANCE_FOR_TAX_RULE` | Get Receipt Guidance For Tax Rule | Tool to get guidance by tax rule from sevDesk. Use when you need to determine which booking accounts are compatible with a specific tax rule. This helps ensure proper account selection for vouchers and invoices, preventing validation errors. Returns a list of accounts with allowed receipt types and tax rules. |
| `SEVDESK_GET_REPORT_INVOICELIST` | Get Report Invoice List | Tool to export invoice list report from sevDesk. Use when you need to get an invoice list report, typically as a PDF. The response contains base64-encoded content when download parameter is false. |
| `SEVDESK_GET_REPORT_ORDERLIST` | Get Report Orderlist | Tool to export the order list report from sevDesk. Use when you need to generate a report of orders. The report is typically returned as a base64-encoded PDF file that can be decoded and saved. |
| `SEVDESK_GET_SEV_CLIENT_CONFIG` | Get SevClient Config | Retrieves the sevClient configuration settings from sevDesk. This endpoint returns comprehensive configuration information including taxation settings, decimal precision for prices/quantities, payment integrations (PayPal, Stripe), document printing preferences, and various system settings. Use this to understand the current configuration state of the sevDesk client. No parameters are required, but you can optionally use the 'embed' parameter to get additional embedded information like full sevClient details. |
| `SEVDESK_GET_TAG_BY_ID` | Get Tag By ID | Tool to retrieve details of a specific tag by ID. Use when you have a tag's ID and need its detailed information. |
| `SEVDESK_GET_TAG_RELATIONS` | Get Tag Relations | Tool to retrieve tag relations from sevDesk. Use when you need to fetch associations between tags and other objects like contacts, invoices, or orders. |
| `SEVDESK_GET_TAGS` | Get Tags | Tool to retrieve tags from sevdesk. Use when you need to fetch tags for categorization or filtering purposes. |
| `SEVDESK_GET_TAX_RULES` | Get Tax Rules | Retrieves tax rules from SevDesk. Tax rules define the tax treatment for different types of transactions (e.g., domestic sales, EU sales, reverse charge, exports). Each rule includes a name, description, code, and country information. Use this action to: - Get available tax rules for invoice line items - Understand tax treatment codes (e.g., 'USTPFL_UMS_EINN', 'AUSFUHREN', 'INNERGEM_LIEF') - Determine applicable tax rules based on country and transaction type - Support pagination with limit/offset for large result sets |
| `SEVDESK_GET_TOOLS_BOOKKEEPING_SYSTEM_VERSION` | Get Bookkeeping System Version | Tool to retrieve the bookkeeping system version from sevDesk. Use when you need to check which bookkeeping system version (1.0 or 2.0) is currently configured for the sevDesk client. This is useful for determining which features and endpoints are available based on the accounting system in use. |
| `SEVDESK_RENDER_INVOICE` | Render Invoice | Tool to render the PDF document of an invoice by its ID. Use when you need to generate or regenerate the PDF representation of an invoice. |
| `SEVDESK_RESET_CREDIT_NOTE_TO_OPEN` | Reset Credit Note To Open | Tool to reset a credit note status to open. Use when you need to revert a credit note from a higher status back to open status. |
| `SEVDESK_SAVE_INVOICE` | Save Invoice | Tool to create a new invoice in SevDesk using the Factory endpoint. Use when you need to create an invoice for a customer with line items, tax information, and optional discounts. This is the main endpoint for invoice creation in SevDesk API. |
| `SEVDESK_SEND_CREDIT_NOTE_BY` | Send Credit Note By | Tool to mark a credit note as sent by updating its send status and type. Use when you need to record that a credit note has been sent to the customer via print, postal, mail, or PDF download. Set sendDraft to false to actually mark it as sent. |
| `SEVDESK_SEND_CREDIT_NOTE_BY_WITH_RENDER` | Send Credit Note By Printing | Tool to send a credit note by printing and render it. Use when you need to print a credit note and get render information including document ID and page count. |
| `SEVDESK_SEND_INVOICE_BY` | Send Invoice By | Tool to mark an invoice as sent by specifying how it was sent to the customer. Use when you need to update an invoice's send status after it has been delivered via print, postal mail, email, or PDF download. |
| `SEVDESK_SEND_ORDER_BY` | Mark Order as Sent | Tool to mark an order as sent in sevDesk. Use when you need to update an order's send status after delivering it to the customer. Specify the send type (print, postal, mail, or PDF download) and whether to create a draft. |
| `SEVDESK_UPDATE_ACCOUNTING_CONTACT_BY_ID` | Update Accounting Contact | Tool to update an existing accounting contact in SevDesk. Use when you need to modify creditor or debitor numbers for a contact. |
| `SEVDESK_UPDATE_CHECK_ACCOUNT` | Update Check Account | Updates an existing check account (bank account) in sevDesk by ID. Use this tool to modify bank account details such as bank name, IBAN, BIC, account holder, account number, or status flags (active/default). All fields except 'id' are optional - only provide the fields you want to update. Returns the complete updated check account object. Common use cases: - Update banking information (IBAN, BIC, bank name) - Change account holder details - Set account as active/inactive or default/non-default - Add or modify account description |
| `SEVDESK_UPDATE_CHECK_ACCOUNT_TRANSACTION_BY_ID` | Update Check Account Transaction By ID | Tool to update an existing check account transaction in sevDesk. Use when you need to modify transaction details such as amount, payment purpose, payee/payer name, or status. Only provide the fields you want to update - all fields except checkAccountTransactionId are optional. Common use cases include correcting transaction amounts, updating payment descriptions, or changing transaction status. Returns the complete updated transaction object. |
| `SEVDESK_UPDATE_COMMUNICATION_WAY_BY_ID` | Update Communication Way By ID | Tool to update an existing communication way by ID in sevDesk. Use when you need to modify contact information such as email addresses, phone numbers, or websites. Only provide the fields you want to update. |
| `SEVDESK_UPDATE_CONTACT` | Update Contact | Tool to update an existing contact's details. Use after confirming the contact ID. Example: "Update contact with ID 123e4567-e89b-12d3-a456-426614174000". |
| `SEVDESK_UPDATE_CONTACT_ADDRESS_BY_ID` | Update Contact Address By ID | Tool to update an existing contact address by its unique identifier. Use when you need to modify street, city, zip code, name, or other address details of an existing contact address. |
| `SEVDESK_UPDATE_CONTACT_CUSTOM_FIELD_BY_ID` | Update Contact Custom Field | Tool to update a contact custom field in SevDesk. Use when you need to modify the value of an existing custom field for a contact. |
| `SEVDESK_UPDATE_CONTACT_CUSTOM_FIELD_SETTING_BY_ID` | Update Contact Custom Field Setting | Tool to update an existing contact custom field setting in SevDesk. Use when you need to modify the name or description of a custom field configuration for contacts. |
| `SEVDESK_UPDATE_INVOICE_PARAMETER` | Update Invoice Parameter | Tool to update an invoice parameter such as template, language, letterpaper, or PayPal settings. Use when you need to change the layout or configuration of an existing invoice. |
| `SEVDESK_UPDATE_ORDER_BY_ID` | Update Order By ID | Tool to update an existing order in sevDesk by ID. Use when you need to modify order details like header, customer notes, or text fields. |
| `SEVDESK_UPDATE_ORDER_TEMPLATE` | Update Order Template | Tool to update an order parameter such as template, language, letterpaper, or PayPal settings. Use when you need to change the layout or configuration of an existing order. |
| `SEVDESK_UPDATE_PART_BY_ID` | Update Part By ID | Tool to update an existing part (product/service) in sevDesk. Use when you need to modify part details like name, stock, price, tax rate, or status. |
| `SEVDESK_UPDATE_SEV_CLIENT_EXPORT_CONFIG` | Update SevClient Export Config | Tool to update the export configuration for a SevClient in sevDesk. Use when you need to configure export settings including accountant number, accountant client number, and accounting year begin timestamp. This endpoint requires the SevClient ID and all three configuration parameters. |
| `SEVDESK_UPDATE_TAG_BY_ID` | Update Tag By ID | Tool to update a tag's name in sevDesk by its ID. Use when you need to rename or modify an existing tag. |

## Supported Triggers

None listed.

## Creating MCP Server - Stand-alone vs Composio SDK

The Sevdesk MCP server is an implementation of the Model Context Protocol that connects your AI agent to Sevdesk. It provides structured and secure access so your agent can perform Sevdesk operations on your behalf through a secure, permission-based interface.
With Composio's managed implementation, you don't have to create your own developer app. For production, if you're building an end product, we recommend using your own credentials. The managed server helps you prototype fast and go from 0-1 faster.

## Step-by-step Guide

### 1. Prerequisites

Before starting, make sure you have:
- Composio API Key and Claude/Anthropic API Key
- Primary know-how of Claude Agents SDK
- A Sevdesk account
- Some knowledge of Python

### 1. Getting API Keys for Claude/Anthropic and Composio

Claude/Anthropic API Key
- Go to the [Anthropic Console](https://console.anthropic.com/settings/organization/api-keys) and create an API key. You'll need credits to use the models.
- Keep the API key safe.
Composio API Key
- Log in to the [Composio dashboard](https://dashboard.composio.dev?utm_source=toolkits&utm_medium=framework_docs).
- Navigate to your API settings and generate a new API key.
- Store this key securely as you'll need it for authentication.

### 2. Install dependencies

No description provided.
```python
pip install composio-anthropic claude-agent-sdk python-dotenv
```

```typescript
npm install @anthropic-ai/claude-agent-sdk @composio/core dotenv
```

### 3. Set up environment variables

Create a .env file in your project root.
What's happening:
- COMPOSIO_API_KEY authenticates with Composio
- USER_ID identifies the user for session management
- ANTHROPIC_API_KEY authenticates with Anthropic/Claude
```bash
COMPOSIO_API_KEY=your_composio_api_key_here
USER_ID=your_user_id_here
ANTHROPIC_API_KEY=your_anthropic_api_key_here
```

### 4. Import dependencies

No description provided.
```python
import asyncio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions
import os
from composio import Composio
from dotenv import load_dotenv

load_dotenv()
```

```typescript
import 'dotenv/config';
import readline from 'node:readline';
import { Composio } from '@composio/core';
import { query, type Options } from "@anthropic-ai/claude-agent-sdk";

dotenv.config();
```

### 5. Create a Composio instance and Tool Router session

No description provided.
```python
async def chat_with_remote_mcp():
    api_key = os.getenv("COMPOSIO_API_KEY")
    if not api_key:
        raise RuntimeError("COMPOSIO_API_KEY is not set")

    composio = Composio(api_key=api_key)

    # Create Tool Router session for Sevdesk
    mcp_server = composio.create(
        user_id=os.getenv("USER_ID"),
        toolkits=["sevdesk"]
    )

    url = mcp_server.mcp.url

    if not url:
        raise ValueError("Session URL not found")
```

```typescript
async function chat() {
  const { COMPOSIO_API_KEY, USER_ID } = process.env;
  if (!COMPOSIO_API_KEY || !USER_ID) {
    throw new Error('COMPOSIO_API_KEY and USER_ID required in .env');
  }

  const composio = new Composio({ apiKey: COMPOSIO_API_KEY });

  // Create Tool Router session for Sevdesk
  const session = await composio.create(USER_ID, {
    toolkits: ['sevdesk'],
  });
  const mcpUrl = session?.mcp.url;
```

### 6. Configure Claude Agent with MCP

No description provided.
```python
# Configure remote MCP server for Claude
options = ClaudeAgentOptions(
    permission_mode="bypassPermissions",
    mcp_servers={
        "composio": {
            "type": "http",
            "url": url,
            "headers": {
                "x-api-key": os.getenv("COMPOSIO_API_KEY")
            }
        }
    },
    system_prompt="You are a helpful assistant with access to Sevdesk tools via Composio.",
    max_turns=10
)
```

```typescript
const options: Options = {
  permissionMode: 'bypassPermissions',
  mcpServers: {
    composio: {
      type: 'http',
      url: mcpUrl,
      headers: { 'x-api-key': COMPOSIO_API_KEY }
    }
  },
  systemPrompt: 'You are a helpful assistant with access to Sevdesk tools via Composio.',
  maxTurns: 10,
};
```

### 7. Create client and start chat loop

No description provided.
```python
# Create client with context manager
async with ClaudeSDKClient(options=options) as client:
    print("\nChat started. Type 'exit' or 'quit' to end.\n")

    # Main chat loop
    while True:
        user_input = input("You: ").strip()
        if user_input.lower() in {"exit", "quit"}:
            print("Goodbye!")
            break

        # Send query
        await client.query(user_input)

        # Receive and print response
        print("Claude: ", end="", flush=True)
        async for message in client.receive_response():
            if hasattr(message, "content"):
                for block in message.content:
                    if hasattr(block, "text"):
                        print(block.text, end="", flush=True)
        print()
```

```typescript
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
    prompt: 'You: '
  });

  console.log('\nChat started. Type "exit" to quit.\n');

  let isProcessing = false;

  async function ask(prompt: string) {
    isProcessing = true;
    rl.pause();

    process.stdout.write('Claude is thinking...');
    const stream = query({ prompt, options });

    let firstChunk = true;
    for await (const msg of stream) {
      const content = (msg as any).message?.content || (msg as any).content;
      if (Array.isArray(content)) {
        for (const block of content) {
          if (block.type === 'text' && block.text) {
            if (firstChunk) {
              process.stdout.write('\r\x1b[K');
              process.stdout.write('Claude: ');
              firstChunk = false;
            }
            process.stdout.write(block.text);
          }
        }
      }
    }
    process.stdout.write('\n\n');

    isProcessing = false;
    rl.resume();
    rl.prompt();
  }

  rl.on('line', async (line) => {
    if (isProcessing) return;

    const input = line.trim();
    if (input === 'exit') {
      rl.close();
      process.exit(0);
    }
    if (input) await ask(input);
    else rl.prompt();
  });

  await ask('What can you help me with?');
}
```

### 8. Run the application

No description provided.
```python
if __name__ == "__main__":
    asyncio.run(chat_with_remote_mcp())
```

```typescript
try {
  await chat();
} catch (error) {
  console.error(error);
  process.exit(1);
}
```

## Complete Code

```python
import asyncio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions
import os
from composio import Composio
from dotenv import load_dotenv

load_dotenv()

async def chat_with_remote_mcp():
    api_key = os.getenv("COMPOSIO_API_KEY")
    if not api_key:
        raise RuntimeError("COMPOSIO_API_KEY is not set")

    composio = Composio(api_key=api_key)

    # Create Tool Router session for Sevdesk
    mcp_server = composio.create(
        user_id=os.getenv("USER_ID"),
        toolkits=["sevdesk"]
    )

    url = mcp_server.mcp.url

    if not url:
        raise ValueError("Session URL not found")

    # Configure remote MCP server for Claude
    options = ClaudeAgentOptions(
        permission_mode="bypassPermissions",
        mcp_servers={
            "composio": {
                "type": "http",
                "url": url,
                "headers": {
                    "x-api-key": os.getenv("COMPOSIO_API_KEY")
                }
            }
        },
        system_prompt="You are a helpful assistant with access to Sevdesk tools via Composio.",
        max_turns=10
    )

    # Create client with context manager
    async with ClaudeSDKClient(options=options) as client:
        print("\nChat started. Type 'exit' or 'quit' to end.\n")

        # Main chat loop
        while True:
            user_input = input("You: ").strip()
            if user_input.lower() in {"exit", "quit"}:
                print("Goodbye!")
                break

            # Send query
            await client.query(user_input)

            # Receive and print response
            print("Claude: ", end="", flush=True)
            async for message in client.receive_response():
                if hasattr(message, "content"):
                    for block in message.content:
                        if hasattr(block, "text"):
                            print(block.text, end="", flush=True)
            print()

if __name__ == "__main__":
    asyncio.run(chat_with_remote_mcp())
```

```typescript
import 'dotenv/config';
import readline from 'node:readline';
import { Composio } from '@composio/core';
import { query, type Options } from "@anthropic-ai/claude-agent-sdk";

async function chat() {
  const { COMPOSIO_API_KEY, USER_ID } = process.env;
  if (!COMPOSIO_API_KEY || !USER_ID) {
    throw new Error('COMPOSIO_API_KEY and USER_ID required in .env');
  }

  const composio = new Composio({ apiKey: COMPOSIO_API_KEY });
  const session = await composio.create(USER_ID, {
    toolkits: ['sevdesk']
  });
  const mcp_url = session?.mcp.url;

  const options: Options = {
    permissionMode: 'bypassPermissions',
    mcpServers: {
      composio: {
        type: 'http',
        url: mcp_url,
        headers: { 'x-api-key': COMPOSIO_API_KEY }
      }
    },
    systemPrompt: 'You are a helpful assistant with access to Sevdesk tools via Composio.',
    maxTurns: 10,
  };

  const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
    prompt: 'You: '
  });

  console.log('\nChat started. Type "exit" to quit.\n');

  let isProcessing = false;

  async function ask(prompt: string) {
    isProcessing = true;
    rl.pause();

    process.stdout.write('Claude is thinking...');
    const stream = query({ prompt, options });

    let firstChunk = true;
    for await (const msg of stream) {
      const content = (msg as any).message?.content || (msg as any).content;
      if (Array.isArray(content)) {
        for (const block of content) {
          if (block.type === 'text' && block.text) {
            if (firstChunk) {
              process.stdout.write('\r\x1b[K');
              process.stdout.write('Claude: ');
              firstChunk = false;
            }
            process.stdout.write(block.text);
          }
        }
      }
    }
    process.stdout.write('\n\n');

    isProcessing = false;
    rl.resume();
    rl.prompt();
  }

  rl.on('line', async (line) => {
    if (isProcessing) return;

    const input = line.trim();
    if (input === 'exit') {
      rl.close();
      process.exit(0);
    }
    if (input) await ask(input);
    else rl.prompt();
  });

  await ask('What can you help me with?');
}

try {
  await chat();
} catch (error) {
  console.error(error);
  process.exit(1);
}
```

## Conclusion

You've successfully built a Claude Agent SDK agent that can interact with Sevdesk through Composio's Tool Router.
Key features:
- Native MCP support through Claude's agent framework
- Streaming responses for real-time interaction
- Permission bypass for smooth automated workflows
You can extend this by adding more toolkits, implementing custom business logic, or building a web interface around the agent.

## How to build Sevdesk MCP Agent with another framework

- [OpenAI Agents SDK](https://composio.dev/toolkits/sevdesk/framework/open-ai-agents-sdk)
- [Claude Code](https://composio.dev/toolkits/sevdesk/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/sevdesk/framework/claude-cowork)
- [Codex](https://composio.dev/toolkits/sevdesk/framework/codex)
- [OpenClaw](https://composio.dev/toolkits/sevdesk/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/sevdesk/framework/hermes-agent)
- [CLI](https://composio.dev/toolkits/sevdesk/framework/cli)
- [Google ADK](https://composio.dev/toolkits/sevdesk/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/sevdesk/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/sevdesk/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/sevdesk/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/sevdesk/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/sevdesk/framework/crew-ai)

## Related Toolkits

- [Stripe](https://composio.dev/toolkits/stripe) - Stripe is a global online payments platform offering APIs for managing payments, customers, and subscriptions. Trusted by businesses for secure, efficient, and scalable payment processing worldwide.
- [Alpha vantage](https://composio.dev/toolkits/alpha_vantage) - Alpha Vantage is a financial data platform offering real-time and historical stock market APIs. Get instant, reliable access to equities, forex, and technical analysis data for smarter trading decisions.
- [Altoviz](https://composio.dev/toolkits/altoviz) - Altoviz is a cloud-based billing and invoicing platform for businesses. It streamlines online payments, expense tracking, and customizable invoice management.
- [Benzinga](https://composio.dev/toolkits/benzinga) - Benzinga provides real-time financial news and data APIs for market coverage. It helps you track breaking news and actionable market insights instantly.
- [Brex](https://composio.dev/toolkits/brex) - Brex provides corporate credit cards and spend management tailored for startups and tech businesses. It helps optimize company cash flow, streamline accounting, and accelerate business growth.
- [Chaser](https://composio.dev/toolkits/chaser) - Chaser is accounts receivable automation software that sends invoice reminders and helps businesses get paid faster. It streamlines the collections process to save time and improve cash flow.
- [Clientary](https://composio.dev/toolkits/clientary) - Clientary is a platform for managing clients, invoices, projects, proposals, and more. It streamlines client work and saves you serious admin time.
- [Coinbase](https://composio.dev/toolkits/coinbase) - Coinbase is a platform for buying, selling, and storing cryptocurrency. It makes exchanging and managing crypto simple and secure for everyone.
- [Coinranking](https://composio.dev/toolkits/coinranking) - Coinranking is a comprehensive cryptocurrency market data platform offering access to real-time coin prices, market caps, and historical data. Get accurate, up-to-date stats for thousands of digital assets in one place.
- [Coupa](https://composio.dev/toolkits/coupa) - Coupa is a business spend management platform for procurement, invoicing, and expenses. It helps organizations streamline purchasing, control costs, and gain complete visibility over financial operations.
- [CurrencyScoop](https://composio.dev/toolkits/currencyscoop) - CurrencyScoop is a developer-friendly API for real-time and historical currency exchange rates. Easily access fiat and crypto data for smart, up-to-date financial applications.
- [Daffy](https://composio.dev/toolkits/daffy) - Daffy is a modern charitable giving platform with a donor-advised fund. Easily set aside funds, grow them tax-free, and donate to over 1.7 million U.S. charities.
- [Eagle doc](https://composio.dev/toolkits/eagle_doc) - Eagle doc is an AI-powered OCR API for invoices and receipts. It delivers fast, reliable, and accurate document data extraction for seamless automation.
- [Elorus](https://composio.dev/toolkits/elorus) - Elorus is an online invoicing and time-tracking software for freelancers and small businesses. Easily manage finances, bill clients, and track work in one place.
- [Eodhd apis](https://composio.dev/toolkits/eodhd_apis) - Eodhd apis delivers comprehensive financial data, including live and historical stock prices, via robust APIs. Easily access reliable, up-to-date market insights to power your apps, dashboards, and analytics.
- [Fidel api](https://composio.dev/toolkits/fidel_api) - Fidel api is a secure platform for linking payment cards to web and mobile apps. It enables real-time card transaction monitoring and event-based automation for businesses.
- [Finage](https://composio.dev/toolkits/finage) - Finage is a secure API platform delivering real-time and historical financial data for stocks, forex, crypto, indices, and commodities. It empowers developers and businesses to access, analyze, and act on market data instantly.
- [Finmei](https://composio.dev/toolkits/finmei) - Finmei is an invoicing tool that simplifies billing, invoice management, and expense tracking. Ideal for automating and organizing your business finances in one place.
- [Fixer](https://composio.dev/toolkits/fixer) - Fixer is a currency data API offering real-time and historical exchange rates for 170 currencies. Instantly access accurate, up-to-date forex data for your applications and workflows.
- [Fixer io](https://composio.dev/toolkits/fixer_io) - Fixer.io is a lightweight API for real-time and historical foreign exchange rates. It makes global currency conversion fast, accurate, and hassle-free.

## Frequently Asked Questions

### What are the differences in Tool Router MCP and Sevdesk MCP?

With a standalone Sevdesk MCP server, the agents and LLMs can only access a fixed set of Sevdesk tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Sevdesk and many other apps based on the task at hand, all through a single MCP endpoint.

### Can I use Tool Router MCP with Claude Agent SDK?

Yes, you can. Claude Agent SDK fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Sevdesk tools.

### Can I manage the permissions and scopes for Sevdesk while using Tool Router?

Yes, absolutely. You can configure which Sevdesk scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

### How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Sevdesk data and credentials are handled as safely as possible.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
