bexio MCP by usefulapi

Read bexio contacts, invoices, quotes, bills, projects and journal; log time, draft invoices.

Should I use this

Quality & Safety

B
Description quality
92%
Schema completeness
89%
Naming quality
80%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (8)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'bexio_list_bills' description contains placeholder textin bexio_list_bills
  • LOWTool 'bexio_list_users' description lacks action verbin bexio_list_users
  • LOWTool 'bexio_get_quote' description lacks action verbin bexio_get_quote
  • LOWTool 'bexio_get_order' description lacks action verbin bexio_get_order
  • LOWTool 'bexio_list_taxes' description lacks action verbin bexio_list_taxes
  • LOWTool 'bexio_list_bills' description lacks action verbin bexio_list_bills
  • INFOTool description contains placeholder or incomplete textin bexio_list_bills

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~8,140Tokens (tool definitions)
~2.6 KBTypical response size
Significant attention impact (6.36% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "bexio": {
      "url": "https://bexio.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://bexio.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (28)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒bexio_get_company_profile

The bexio company's profile: name, address, legal form, VAT (MWST) and UID numbers, contact details. Each bexio account has one profile.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_get_current_user

The signed-in bexio user (id, name, email, superadmin/accountant flags). Its id is the default user_id of new records.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_users(limit, offset)

The company's bexio users (id, name, email). Use an id as user_id or owner of contacts, documents and timesheets.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Results per page, 1-2000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_contacts(name, first_name, email, nr, city, ...)

List or search contacts (customers, suppliers, persons, companies). Without filters it pages through all contacts; with filters it uses bexio's contact search (all filters must match). name_1 is the company name or a person's last name, name_2 a person's first name.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "description": "name_1 (company name or last name) contains this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "first_name": {
      "description": "name_2 (a person's first name or a company's name addition) contains this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "email": {
      "description": "Main email contains this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "nr": {
      "description": "Contact number equals this.",
      "type": "string",
      "minLength": 1,
      "maxLength": 50
    },
    "city": {
      "description": "City contains this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "postcode": {
      "description": "Postcode equals this.",
      "type": "string",
      "minLength": 1,
      "maxLength": 20
    },
    "contact_type": {
      "description": "Only companies or only persons.",
      "type": "string",
      "enum": [
        "company",
        "person"
      ]
    },
    "updated_since": {
      "description": "Changed on or after this date, yyyy-mm-dd.",
      "type": "string"
    },
    "archived": {
      "description": "true = archived contacts only (default: active contacts).",
      "type": "boolean"
    },
    "order_by": {
      "description": "Sort field (default id).",
      "type": "string",
      "enum": [
        "id",
        "nr",
        "name_1",
        "updated_at"
      ]
    },
    "descending": {
      "description": "Sort descending (default ascending).",
      "type": "boolean"
    },
    "limit": {
      "description": "Results per page, 1-2000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_get_contact(contact_id, archived)

One contact with its address, emails, phones, language, groups and remarks.

Input Schema

{
  "type": "object",
  "properties": {
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "The contact id (from bexio_list_contacts)."
    },
    "archived": {
      "description": "true when the contact is archived.",
      "type": "boolean"
    }
  },
  "required": [
    "contact_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_invoices(status, contact_id, user_id, document_nr, title, ...)

List or search sales invoices (number, contact, totals, open amount, dates, status). Statuses: draft, pending (issued, open), paid, partial (partially paid), canceled, unpaid (overdue reminder state). Without filters it pages through all invoices; with filters all must match.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "description": "Only invoices with one of these statuses.",
      "minItems": 1,
      "maxItems": 6,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "draft",
          "pending",
          "paid",
          "partial",
          "canceled",
          "unpaid"
        ]
      }
    },
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Only documents for this contact (from bexio_list_contacts)."
    },
    "user_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Only documents owned by this bexio user (from bexio_list_users)."
    },
    "document_nr": {
      "description": "Document number contains this text (e.g. RE-00012).",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "title": {
      "description": "Title contains this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "valid_from_after": {
      "description": "Document date (is_valid_from) on or after this date, yyyy-mm-dd.",
      "type": "string"
    },
    "valid_from_before": {
      "description": "Document date (is_valid_from) on or before this date, yyyy-mm-dd.",
      "type": "string"
    },
    "updated_since": {
      "description": "Changed on or after this date, yyyy-mm-dd.",
      "type": "string"
    },
    "order_by": {
      "description": "Sort field (default id).",
      "type": "string",
      "enum": [
        "id",
        "total",
        "total_net",
        "total_gross",
        "updated_at"
      ]
    },
    "descending": {
      "description": "Sort descending (default ascending).",
      "type": "boolean"
    },
    "limit": {
      "description": "Results per page, 1-2000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_get_invoice(invoice_id)

One invoice with its positions (line items), taxes, totals, received payments and remaining amount.

Input Schema

{
  "type": "object",
  "properties": {
    "invoice_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "The invoice id (from bexio_list_invoices)."
    }
  },
  "required": [
    "invoice_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_invoice_payments(invoice_id, limit, offset)

The payments recorded on one invoice (date, amount, bank account, cash discount).

Input Schema

{
  "type": "object",
  "properties": {
    "invoice_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "The invoice id (from bexio_list_invoices)."
    },
    "limit": {
      "description": "Results per page, 1-2000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "required": [
    "invoice_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_quotes(status, contact_id, user_id, document_nr, title, ...)

List or search quotes (Offerten): number, contact, totals, validity, status (draft, pending, confirmed, declined). With filters all must match.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "description": "Only quotes with one of these statuses.",
      "minItems": 1,
      "maxItems": 4,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "draft",
          "pending",
          "confirmed",
          "declined"
        ]
      }
    },
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Only documents for this contact (from bexio_list_contacts)."
    },
    "user_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Only documents owned by this bexio user (from bexio_list_users)."
    },
    "document_nr": {
      "description": "Document number contains this text (e.g. RE-00012).",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "title": {
      "description": "Title contains this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "valid_from_after": {
      "description": "Document date (is_valid_from) on or after this date, yyyy-mm-dd.",
      "type": "string"
    },
    "valid_from_before": {
      "description": "Document date (is_valid_from) on or before this date, yyyy-mm-dd.",
      "type": "string"
    },
    "updated_since": {
      "description": "Changed on or after this date, yyyy-mm-dd.",
      "type": "string"
    },
    "order_by": {
      "description": "Sort field (default id).",
      "type": "string",
      "enum": [
        "id",
        "total",
        "total_net",
        "total_gross",
        "updated_at"
      ]
    },
    "descending": {
      "description": "Sort descending (default ascending).",
      "type": "boolean"
    },
    "limit": {
      "description": "Results per page, 1-2000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_get_quote(quote_id)

One quote with its positions, taxes and totals.

Input Schema

{
  "type": "object",
  "properties": {
    "quote_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "The quote id (from bexio_list_quotes)."
    }
  },
  "required": [
    "quote_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_orders(status, contact_id, user_id, document_nr, title, ...)

List or search sales orders (AuftrΓ€ge): number, contact, totals, recurring flag, status (pending, done, partial, canceled). With filters all must match.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "description": "Only orders with one of these statuses.",
      "minItems": 1,
      "maxItems": 4,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "pending",
          "done",
          "partial",
          "canceled"
        ]
      }
    },
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Only documents for this contact (from bexio_list_contacts)."
    },
    "user_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Only documents owned by this bexio user (from bexio_list_users)."
    },
    "document_nr": {
      "description": "Document number contains this text (e.g. RE-00012).",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "title": {
      "description": "Title contains this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "valid_from_after": {
      "description": "Document date (is_valid_from) on or after this date, yyyy-mm-dd.",
      "type": "string"
    },
    "valid_from_before": {
      "description": "Document date (is_valid_from) on or before this date, yyyy-mm-dd.",
      "type": "string"
    },
    "updated_since": {
      "description": "Changed on or after this date, yyyy-mm-dd.",
      "type": "string"
    },
    "order_by": {
      "description": "Sort field (default id).",
      "type": "string",
      "enum": [
        "id",
        "total",
        "total_net",
        "total_gross",
        "updated_at"
      ]
    },
    "descending": {
      "description": "Sort descending (default ascending).",
      "type": "boolean"
    },
    "limit": {
      "description": "Results per page, 1-2000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_get_order(order_id)

One sales order with its positions, taxes and totals.

Input Schema

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "The order id (from bexio_list_orders)."
    }
  },
  "required": [
    "order_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_articles(name, code, order_by, descending, limit, ...)

List or search items / products (Artikel): code, name, sale and purchase price, tax, unit, stock levels. Use an id as article_id in a draft invoice.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Item name (intern_name) contains this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "code": {
      "description": "Item code (intern_code) contains this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "order_by": {
      "description": "Sort field (default id).",
      "type": "string",
      "enum": [
        "id",
        "intern_name"
      ]
    },
    "descending": {
      "description": "Sort descending (default ascending).",
      "type": "boolean"
    },
    "limit": {
      "description": "Results per page, 1-2000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_projects(name, contact_id, state_id, order_by, descending, ...)

List or search projects: number, name, contact, state, type, dates, budget. With filters all must match.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Project name contains this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Only projects of this contact."
    },
    "state_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Only projects in this state (pr_state_id as returned on a project)."
    },
    "order_by": {
      "description": "Sort field (default id).",
      "type": "string",
      "enum": [
        "id",
        "name"
      ]
    },
    "descending": {
      "description": "Sort descending (default ascending).",
      "type": "boolean"
    },
    "limit": {
      "description": "Results per page, 1-2000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_get_project(project_id)

One project with its contact, state, type, dates, invoicing and budget settings.

Input Schema

{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "The project id (from bexio_list_projects)."
    }
  },
  "required": [
    "project_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_timesheets(user_id, contact_id, project_id, business_activity_id, status_id, ...)

List or search time tracking entries: date, duration, text, user, contact, project, business activity, billable flag. With filters all must match.

Input Schema

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Only entries of this bexio user."
    },
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Only entries for this contact."
    },
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Only entries on this project."
    },
    "business_activity_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Only entries of this business activity (client_service_id, from bexio_list_business_activities)."
    },
    "status_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Only entries with this timesheet status id."
    },
    "order_by": {
      "description": "Sort field (default id).",
      "type": "string",
      "enum": [
        "id",
        "date"
      ]
    },
    "descending": {
      "description": "Sort descending (default ascending).",
      "type": "boolean"
    },
    "limit": {
      "description": "Results per page, 1-2000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_business_activities(order_by, descending, limit, offset)

Business activities (TΓ€tigkeiten) for time tracking: id, name, billable default, hourly rate. A timesheet needs one.

Input Schema

{
  "type": "object",
  "properties": {
    "order_by": {
      "description": "Sort field (default id).",
      "type": "string",
      "enum": [
        "id",
        "name"
      ]
    },
    "descending": {
      "description": "Sort descending (default ascending).",
      "type": "boolean"
    },
    "limit": {
      "description": "Results per page, 1-2000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_accounts(limit, offset)

The chart of accounts: account number, name, type (1 earning, 2 expenditure, 3 active/asset, 4 passive/liability, 5 complete/closing), default tax, active/locked flags.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Results per page, 1-2000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_journal(from, to, account_uuid, limit, offset)

Accounting journal bookings: date, debit and credit account ids, description, amount, currency, base-currency amount, and the source document (ref_class, ref_id).

Input Schema

{
  "type": "object",
  "properties": {
    "from": {
      "description": "Bookings on or after this date, yyyy-mm-dd.",
      "type": "string"
    },
    "to": {
      "description": "Bookings up to this date, yyyy-mm-dd.",
      "type": "string"
    },
    "account_uuid": {
      "description": "Only bookings on this account (its uuid from bexio_list_accounts).",
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "limit": {
      "description": "Results per page, 1-2000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_taxes(scope, types, date, limit, offset)

VAT (MWST) tax codes: id, code, rate, type (sales_tax, pre_tax, ...), validity. For a draft invoice use an active sales tax (types sales_tax, scope active).

Input Schema

{
  "type": "object",
  "properties": {
    "scope": {
      "description": "Only active or inactive taxes.",
      "type": "string",
      "enum": [
        "active",
        "inactive"
      ]
    },
    "types": {
      "description": "Only sales taxes or input (pre) taxes.",
      "type": "string",
      "enum": [
        "sales_tax",
        "pre_tax"
      ]
    },
    "date": {
      "description": "Only taxes active on this date, yyyy-mm-dd.",
      "type": "string"
    },
    "limit": {
      "description": "Results per page, 1-2000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_bank_accounts(limit, offset)

The company's bank accounts shown in bexio banking: name, bank, IBAN / QR-IBAN, currency, linked ledger account, QR-invoice mode.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Results per page, 1-2000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_currencies(with_exchange_rate, date, limit, offset)

Currencies set up in bexio (id, code such as CHF or EUR, rounding), optionally with the exchange rate valid on a date. Use an id as currency_id.

Input Schema

{
  "type": "object",
  "properties": {
    "with_exchange_rate": {
      "description": "Embed each currency's exchange rate.",
      "type": "boolean"
    },
    "date": {
      "description": "Validity date of the embedded exchange rate, yyyy-mm-dd.",
      "type": "string"
    },
    "limit": {
      "description": "Results per page, 1-2000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_business_years(limit, offset)

Accounting business (fiscal) years: start, end, status (open, locked, closed).

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Results per page, 1-2000 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟒bexio_list_bills(status, search, vendor, supplier_id, bill_date_from, ...)

Supplier bills (Kreditoren / purchase bills): document number, vendor, title, status, gross/net, pending amount, bill and due date, overdue flag. status: DRAFTS, TODO (booked, not fully paid), PAID, OVERDUE.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "description": "Bill status filter.",
      "type": "string",
      "enum": [
        "DRAFTS",
        "TODO",
        "PAID",
        "OVERDUE"
      ]
    },
    "search": {
      "description": "Free-text search over vendor, vendor reference, currency, document number and title (3-255 characters).",
      "type": "string",
      "minLength": 3,
      "maxLength": 255
    },
    "vendor": {
      "description": "Vendor name contains this text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "supplier_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Only bills of this supplier contact."
    },
    "bill_date_from": {
      "description": "Bill date on or after, yyyy-mm-dd.",
      "type": "string"
    },
    "bill_date_to": {
      "description": "Bill date on or before, yyyy-mm-dd.",
      "type": "string"
    },
    "due_date_from": {
      "description": "Due date on or after, yyyy-mm-dd.",
      "type": "string"
    },
    "due_date_to": {
      "description": "Due date on or before, yyyy-mm-dd.",
      "type": "string"
    },
    "sort": {
      "description": "Sort field.",
      "type": "string",
      "enum": [
        "document_no",
        "bill_date",
        "due_date",
        "vendor",
        "gross",
        "pending_amount",
        "created_at"
      ]
    },
    "descending": {
      "description": "Sort descending (default ascending).",
      "type": "boolean"
    },
    "page": {
      "description": "Page number, 1-based (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "limit": {
      "description": "Bills per page, 1-500 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
πŸ”΄bexio_create_contact(contact_type, name, first_name, street_name, house_number, ...)

WRITE: create a new contact (company or person) in bexio. Nothing existing is changed. For a person, name is the last name and first_name the first name. Owner and responsible user default to the signed-in user.

Input Schema

{
  "type": "object",
  "properties": {
    "contact_type": {
      "type": "string",
      "enum": [
        "company",
        "person"
      ],
      "description": "company or person."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "Company name, or a person's last name (name_1)."
    },
    "first_name": {
      "description": "A person's first name, or a company's name addition (name_2).",
      "type": "string",
      "maxLength": 255
    },
    "street_name": {
      "description": "Street name.",
      "type": "string",
      "maxLength": 255
    },
    "house_number": {
      "description": "House number.",
      "type": "string",
      "maxLength": 50
    },
    "address_addition": {
      "description": "Address addition (c/o, P.O. box).",
      "type": "string",
      "maxLength": 255
    },
    "postcode": {
      "description": "Postcode.",
      "type": "string",
      "maxLength": 20
    },
    "city": {
      "description": "City.",
      "type": "string",
      "maxLength": 255
    },
    "country_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "bexio country id (1 = Switzerland in a default bexio setup)."
    },
    "email": {
      "description": "Main email.",
      "type": "string",
      "maxLength": 255,
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "phone": {
      "description": "Landline phone.",
      "type": "string",
      "maxLength": 50
    },
    "mobile": {
      "description": "Mobile phone.",
      "type": "string",
      "maxLength": 50
    },
    "website": {
      "description": "Website URL.",
      "type": "string",
      "maxLength": 255
    },
    "remarks": {
      "description": "Internal remarks.",
      "type": "string",
      "maxLength": 10000
    },
    "language_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "bexio language id of the contact's correspondence language."
    },
    "contact_group_ids": {
      "description": "Contact group ids.",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 2147483647,
        "description": "A contact group id."
      }
    },
    "user_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Responsible bexio user (default: the signed-in user)."
    },
    "owner_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Owner bexio user (default: the responsible user)."
    }
  },
  "required": [
    "contact_type",
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
πŸ”΄bexio_create_note(subject, info, contact_id, project_id, event_start, ...)

WRITE: add a note (call log, meeting minutes, follow-up) to a contact and/or project in bexio. Nothing existing is changed.

Input Schema

{
  "type": "object",
  "properties": {
    "subject": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "Note subject."
    },
    "info": {
      "description": "Note text.",
      "type": "string",
      "maxLength": 20000
    },
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Attach to this contact."
    },
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Attach to this project."
    },
    "event_start": {
      "description": "When it happened, local time yyyy-mm-dd HH:MM[:SS] (default: now, UTC).",
      "type": "string"
    },
    "user_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Author bexio user (default: the signed-in user)."
    }
  },
  "required": [
    "subject"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
πŸ”΄bexio_create_timesheet(business_activity_id, date, duration, start, end, ...)

WRITE: log time in bexio: either date + duration (HH:MM), or start + end. Needs a business activity (bexio_list_business_activities). Nothing existing is changed.

Input Schema

{
  "type": "object",
  "properties": {
    "business_activity_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "The business activity (client_service_id) from bexio_list_business_activities."
    },
    "date": {
      "description": "Work date, yyyy-mm-dd (with duration).",
      "type": "string"
    },
    "duration": {
      "description": "Time worked as HH:MM, e.g. 01:30 (with date).",
      "type": "string",
      "pattern": "^\\d{1,3}:[0-5]\\d$"
    },
    "start": {
      "description": "Start, local time yyyy-mm-dd HH:MM[:SS] (with end).",
      "type": "string"
    },
    "end": {
      "description": "End, local time yyyy-mm-dd HH:MM[:SS] (with start).",
      "type": "string"
    },
    "text": {
      "description": "What was done.",
      "type": "string",
      "maxLength": 10000
    },
    "billable": {
      "description": "Billable to the client (default true).",
      "type": "boolean"
    },
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "The client contact."
    },
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "The project."
    },
    "status_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Timesheet status id (bexio's default when omitted)."
    },
    "user_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Whose time (default: the signed-in user)."
    }
  },
  "required": [
    "business_activity_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
πŸ”΄bexio_create_draft_invoice(contact_id, positions, title, document_nr, contact_sub_id, ...)

WRITE: create a DRAFT invoice in bexio for a contact, with custom, item (article) and text lines. It is never issued, sent or booked: the user reviews and issues it in bexio. Taxes must be active sales taxes (bexio_list_taxes with types sales_tax, scope active).

Input Schema

{
  "type": "object",
  "properties": {
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "The customer contact (from bexio_list_contacts)."
    },
    "positions": {
      "minItems": 1,
      "maxItems": 150,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "custom",
              "article",
              "text"
            ],
            "description": "custom = a free line (text, amount, unit_price, tax_id); article = an existing item (article_id, amount, tax_id); text = a text-only line."
          },
          "text": {
            "description": "Line text (required for custom and text lines; for article lines the item's text is used when omitted).",
            "type": "string",
            "maxLength": 10000
          },
          "amount": {
            "description": "Quantity (max. 6 decimals). Required for custom and article lines.",
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000000000
          },
          "unit_price": {
            "description": "Price per unit (max. 6 decimals). Required for custom lines; article lines default to the item's price.",
            "type": "number",
            "minimum": -1000000000,
            "maximum": 1000000000
          },
          "tax_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 2147483647,
            "description": "An ACTIVE sales tax (bexio_list_taxes with types sales_tax, scope active). Required for custom and article lines."
          },
          "article_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 2147483647,
            "description": "The item (from bexio_list_articles). Required for article lines only."
          },
          "account_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 2147483647,
            "description": "Revenue account (from bexio_list_accounts); bexio's default when omitted."
          },
          "unit_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 2147483647,
            "description": "Unit id (bexio's units, e.g. hours); none when omitted."
          },
          "discount_in_percent": {
            "description": "Line discount in percent.",
            "type": "number",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "type"
        ]
      },
      "description": "1-150 invoice lines."
    },
    "title": {
      "description": "Invoice title.",
      "type": "string",
      "maxLength": 255
    },
    "document_nr": {
      "description": "Invoice number. Only when automatic numbering is OFF in bexio's settings (then it is required); leave empty with automatic numbering.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "contact_sub_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "A contact person of the customer."
    },
    "project_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Link to this project."
    },
    "valid_from": {
      "description": "Invoice date, yyyy-mm-dd (default today).",
      "type": "string"
    },
    "valid_to": {
      "description": "Due date, yyyy-mm-dd (default from the payment terms).",
      "type": "string"
    },
    "tax_mode": {
      "description": "net = unit prices are net and VAT is added (default); gross = unit prices include VAT; exempt = the invoice is exempt from VAT.",
      "type": "string",
      "enum": [
        "net",
        "gross",
        "exempt"
      ]
    },
    "currency_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Currency (from bexio_list_currencies); company default when omitted."
    },
    "bank_account_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Bank account for the payment slip (from bexio_list_bank_accounts); default when omitted."
    },
    "language_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Document language id; the contact's language when omitted."
    },
    "payment_type_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Payment type id; default when omitted."
    },
    "header": {
      "description": "Text above the lines.",
      "type": "string",
      "maxLength": 10000
    },
    "footer": {
      "description": "Text below the lines.",
      "type": "string",
      "maxLength": 10000
    },
    "reference": {
      "description": "Customer reference shown on the invoice.",
      "type": "string",
      "maxLength": 255
    },
    "api_reference": {
      "description": "Your own external reference (only visible through the API).",
      "type": "string",
      "maxLength": 255
    },
    "user_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647,
      "description": "Responsible bexio user (default: the signed-in user)."
    }
  },
  "required": [
    "contact_id",
    "positions"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded28 tools