smallinvoice MCP by usefulapi

Read smallinvoice contacts, invoices, offers, projects and hours; create contacts and invoices.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
92%
命名质量
73%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

发现(9)

  • LOWTool 'smallinvoice_list_contact_addresses' name length outside 3-30 range在 smallinvoice_list_contact_addresses 中
  • LOWTool 'smallinvoice_list_contact_people' name length outside 3-30 range在 smallinvoice_list_contact_people 中
  • LOWTool 'smallinvoice_list_contact_groups' name length outside 3-30 range在 smallinvoice_list_contact_groups 中
  • LOWTool 'smallinvoice_list_invoice_payments' name length outside 3-30 range在 smallinvoice_list_invoice_payments 中
  • LOWTool 'smallinvoice_list_order_confirmations' name length outside 3-30 range在 smallinvoice_list_order_confirmations 中
  • LOWTool 'smallinvoice_get_order_confirmation' name length outside 3-30 range在 smallinvoice_get_order_confirmation 中
  • LOWTool 'smallinvoice_list_delivery_notes' name length outside 3-30 range在 smallinvoice_list_delivery_notes 中
  • LOWTool 'smallinvoice_list_bank_accounts' name length outside 3-30 range在 smallinvoice_list_bank_accounts 中
  • LOWTool 'smallinvoice_list_working_hours' name length outside 3-30 range在 smallinvoice_list_working_hours 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~9,227token 数(工具定义)
~2.7 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 7.21%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

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

远程端点

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

它能做什么

工具清单

工具(27)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢smallinvoice_get_owner

The smallinvoice account the API client belongs to (the owner's id and details). A cheap check that the connection works. GET /auth/owner.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_contacts(q, filter, sort, with, limit, ...)

List contacts (customers and suppliers): name, type (company or person), relation, e-mail, currency. Add with=main_address for the address. Needs the "contact" scope. GET /contacts. Returns count, total, next_offset (pass it as offset for the next page) and the items.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional free-text search over several fields."
    },
    "filter": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional filter as a JSON object string, e.g. {\"currency\":\"CHF\"}; combine with {\"and\":[...]} / {\"or\":[...]}. Comparators go before the value: \"<\", \"<=\", \">\", \">=\", \"!\" (not), \"~\" (contains), e.g. {\"name\":\"~ACME\"}. Unknown field names are answered with HTTP 400."
    },
    "sort": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^-?[A-Za-z0-9_.]+(,-?[A-Za-z0-9_.]+)*$",
      "description": "Optional sort: 'name' ascending, '-name' descending, '-surname,name' for several."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_get_contact(id, with)

One contact by id, with its fields. Add with=main_address for the main address. Needs the "contact" scope. GET /contacts/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The contact id (from smallinvoice_list_contacts)."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_contact_addresses(contact_id, limit, offset)

All addresses of one contact. Needs the "contact" scope. GET /contacts/{contactId}/addresses.

输入模式

{
  "type": "object",
  "properties": {
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The contact id."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "contact_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_contact_people(contact_id, limit, offset)

The contact persons of one company contact. Needs the "contact" scope. GET /contacts/{contactId}/people.

输入模式

{
  "type": "object",
  "properties": {
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The contact id."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "contact_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_contact_groups(q, filter, sort, with, limit, ...)

List the contact groups. Needs the "contact" scope. GET /contacts/configuration/groups. Returns count, total, next_offset (pass it as offset for the next page) and the items.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional free-text search over several fields."
    },
    "filter": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional filter as a JSON object string, e.g. {\"currency\":\"CHF\"}; combine with {\"and\":[...]} / {\"or\":[...]}. Comparators go before the value: \"<\", \"<=\", \">\", \">=\", \"!\" (not), \"~\" (contains), e.g. {\"name\":\"~ACME\"}. Unknown field names are answered with HTTP 400."
    },
    "sort": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^-?[A-Za-z0-9_.]+(,-?[A-Za-z0-9_.]+)*$",
      "description": "Optional sort: 'name' ascending, '-name' descending, '-surname,name' for several."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_invoices(q, filter, sort, with, limit, ...)

List invoices: number, contact, dates, total, currency, status. Filter by contact_id or a JSON filter. Needs the "invoice" scope. GET /receivables/invoices. Returns count, total, next_offset (pass it as offset for the next page) and the items.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional free-text search over several fields."
    },
    "filter": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional filter as a JSON object string, e.g. {\"currency\":\"CHF\"}; combine with {\"and\":[...]} / {\"or\":[...]}. Comparators go before the value: \"<\", \"<=\", \">\", \">=\", \"!\" (not), \"~\" (contains), e.g. {\"name\":\"~ACME\"}. Unknown field names are answered with HTTP 400."
    },
    "sort": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^-?[A-Za-z0-9_.]+(,-?[A-Za-z0-9_.]+)*$",
      "description": "Optional sort: 'name' ascending, '-name' descending, '-surname,name' for several."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Only documents of this contact (customer) id."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_get_invoice(id, with)

One invoice by id with its positions, totals and status. Needs the "invoice" scope. GET /receivables/invoices/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The invoice id (from smallinvoice_list_invoices)."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_invoice_payments(invoice_id, limit, offset)

The payments recorded on one invoice. Needs the "invoice" scope. GET /receivables/invoices/{invoiceId}/payments.

输入模式

{
  "type": "object",
  "properties": {
    "invoice_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The invoice id."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "invoice_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_offers(q, filter, sort, with, limit, ...)

List offers (quotes). Filter by contact_id or a JSON filter. Needs the "offer" scope. GET /receivables/offers. Returns count, total, next_offset (pass it as offset for the next page) and the items.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional free-text search over several fields."
    },
    "filter": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional filter as a JSON object string, e.g. {\"currency\":\"CHF\"}; combine with {\"and\":[...]} / {\"or\":[...]}. Comparators go before the value: \"<\", \"<=\", \">\", \">=\", \"!\" (not), \"~\" (contains), e.g. {\"name\":\"~ACME\"}. Unknown field names are answered with HTTP 400."
    },
    "sort": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^-?[A-Za-z0-9_.]+(,-?[A-Za-z0-9_.]+)*$",
      "description": "Optional sort: 'name' ascending, '-name' descending, '-surname,name' for several."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Only documents of this contact (customer) id."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_get_offer(id, with)

One offer (quote) by id with its positions and totals. Needs the "offer" scope. GET /receivables/offers/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The offer id (from smallinvoice_list_offers)."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_order_confirmations(q, filter, sort, with, limit, ...)

List order confirmations. Filter by contact_id or a JSON filter. Needs the "order_confirmation" scope. GET /receivables/order-confirmations. Returns count, total, next_offset (pass it as offset for the next page) and the items.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional free-text search over several fields."
    },
    "filter": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional filter as a JSON object string, e.g. {\"currency\":\"CHF\"}; combine with {\"and\":[...]} / {\"or\":[...]}. Comparators go before the value: \"<\", \"<=\", \">\", \">=\", \"!\" (not), \"~\" (contains), e.g. {\"name\":\"~ACME\"}. Unknown field names are answered with HTTP 400."
    },
    "sort": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^-?[A-Za-z0-9_.]+(,-?[A-Za-z0-9_.]+)*$",
      "description": "Optional sort: 'name' ascending, '-name' descending, '-surname,name' for several."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Only documents of this contact (customer) id."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_get_order_confirmation(id, with)

One order confirmation by id. Needs the "order_confirmation" scope. GET /receivables/order-confirmations/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The order confirmation id."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_delivery_notes(q, filter, sort, with, limit, ...)

List delivery notes. Filter by contact_id or a JSON filter. Needs the "delivery_note" scope. GET /receivables/delivery-notes. Returns count, total, next_offset (pass it as offset for the next page) and the items.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional free-text search over several fields."
    },
    "filter": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional filter as a JSON object string, e.g. {\"currency\":\"CHF\"}; combine with {\"and\":[...]} / {\"or\":[...]}. Comparators go before the value: \"<\", \"<=\", \">\", \">=\", \"!\" (not), \"~\" (contains), e.g. {\"name\":\"~ACME\"}. Unknown field names are answered with HTTP 400."
    },
    "sort": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^-?[A-Za-z0-9_.]+(,-?[A-Za-z0-9_.]+)*$",
      "description": "Optional sort: 'name' ascending, '-name' descending, '-surname,name' for several."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Only documents of this contact (customer) id."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_get_delivery_note(id, with)

One delivery note by id. Needs the "delivery_note" scope. GET /receivables/delivery-notes/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The delivery note id."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_products(q, filter, sort, with, limit, ...)

List the catalog's products (articles). Needs the "catalog" scope. GET /catalog/products. Returns count, total, next_offset (pass it as offset for the next page) and the items.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional free-text search over several fields."
    },
    "filter": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional filter as a JSON object string, e.g. {\"currency\":\"CHF\"}; combine with {\"and\":[...]} / {\"or\":[...]}. Comparators go before the value: \"<\", \"<=\", \">\", \">=\", \"!\" (not), \"~\" (contains), e.g. {\"name\":\"~ACME\"}. Unknown field names are answered with HTTP 400."
    },
    "sort": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^-?[A-Za-z0-9_.]+(,-?[A-Za-z0-9_.]+)*$",
      "description": "Optional sort: 'name' ascending, '-name' descending, '-surname,name' for several."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_services(q, filter, sort, with, limit, ...)

List the catalog's services. Needs the "catalog" scope. GET /catalog/services. Returns count, total, next_offset (pass it as offset for the next page) and the items.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional free-text search over several fields."
    },
    "filter": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional filter as a JSON object string, e.g. {\"currency\":\"CHF\"}; combine with {\"and\":[...]} / {\"or\":[...]}. Comparators go before the value: \"<\", \"<=\", \">\", \">=\", \"!\" (not), \"~\" (contains), e.g. {\"name\":\"~ACME\"}. Unknown field names are answered with HTTP 400."
    },
    "sort": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^-?[A-Za-z0-9_.]+(,-?[A-Za-z0-9_.]+)*$",
      "description": "Optional sort: 'name' ascending, '-name' descending, '-surname,name' for several."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_units(q, filter, sort, with, limit, ...)

List the units (piece, hour, ...) with their ids, which an invoice position's unit_id refers to. Needs the "configuration" scope. GET /catalog/configuration/units. Returns count, total, next_offset (pass it as offset for the next page) and the items.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional free-text search over several fields."
    },
    "filter": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional filter as a JSON object string, e.g. {\"currency\":\"CHF\"}; combine with {\"and\":[...]} / {\"or\":[...]}. Comparators go before the value: \"<\", \"<=\", \">\", \">=\", \"!\" (not), \"~\" (contains), e.g. {\"name\":\"~ACME\"}. Unknown field names are answered with HTTP 400."
    },
    "sort": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^-?[A-Za-z0-9_.]+(,-?[A-Za-z0-9_.]+)*$",
      "description": "Optional sort: 'name' ascending, '-name' descending, '-surname,name' for several."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_bank_accounts(q, filter, sort, with, limit, ...)

List the account's bank accounts (as printed on documents). Needs the "configuration" scope. GET /configuration/bank-accounts. Returns count, total, next_offset (pass it as offset for the next page) and the items.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional free-text search over several fields."
    },
    "filter": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional filter as a JSON object string, e.g. {\"currency\":\"CHF\"}; combine with {\"and\":[...]} / {\"or\":[...]}. Comparators go before the value: \"<\", \"<=\", \">\", \">=\", \"!\" (not), \"~\" (contains), e.g. {\"name\":\"~ACME\"}. Unknown field names are answered with HTTP 400."
    },
    "sort": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^-?[A-Za-z0-9_.]+(,-?[A-Za-z0-9_.]+)*$",
      "description": "Optional sort: 'name' ascending, '-name' descending, '-surname,name' for several."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_projects(q, filter, sort, with, limit, ...)

List projects. Needs the "project" scope. GET /reporting/projects. Returns count, total, next_offset (pass it as offset for the next page) and the items.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional free-text search over several fields."
    },
    "filter": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional filter as a JSON object string, e.g. {\"currency\":\"CHF\"}; combine with {\"and\":[...]} / {\"or\":[...]}. Comparators go before the value: \"<\", \"<=\", \">\", \">=\", \"!\" (not), \"~\" (contains), e.g. {\"name\":\"~ACME\"}. Unknown field names are answered with HTTP 400."
    },
    "sort": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^-?[A-Za-z0-9_.]+(,-?[A-Za-z0-9_.]+)*$",
      "description": "Optional sort: 'name' ascending, '-name' descending, '-surname,name' for several."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_get_project(id, with)

One project by id. Needs the "project" scope. GET /reporting/projects/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The project id (from smallinvoice_list_projects)."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_working_hours(q, filter, sort, with, limit, ...)

List recorded working hours (time tracking entries). Needs the "working_hours" scope. GET /reporting/working-hours. Returns count, total, next_offset (pass it as offset for the next page) and the items.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional free-text search over several fields."
    },
    "filter": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional filter as a JSON object string, e.g. {\"currency\":\"CHF\"}; combine with {\"and\":[...]} / {\"or\":[...]}. Comparators go before the value: \"<\", \"<=\", \">\", \">=\", \"!\" (not), \"~\" (contains), e.g. {\"name\":\"~ACME\"}. Unknown field names are answered with HTTP 400."
    },
    "sort": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^-?[A-Za-z0-9_.]+(,-?[A-Za-z0-9_.]+)*$",
      "description": "Optional sort: 'name' ascending, '-name' descending, '-surname,name' for several."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_efforts(q, filter, sort, with, limit, ...)

List efforts (expenses and services recorded against projects). Needs the "effort" scope. GET /reporting/efforts. Returns count, total, next_offset (pass it as offset for the next page) and the items.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional free-text search over several fields."
    },
    "filter": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional filter as a JSON object string, e.g. {\"currency\":\"CHF\"}; combine with {\"and\":[...]} / {\"or\":[...]}. Comparators go before the value: \"<\", \"<=\", \">\", \">=\", \"!\" (not), \"~\" (contains), e.g. {\"name\":\"~ACME\"}. Unknown field names are answered with HTTP 400."
    },
    "sort": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^-?[A-Za-z0-9_.]+(,-?[A-Za-z0-9_.]+)*$",
      "description": "Optional sort: 'name' ascending, '-name' descending, '-surname,name' for several."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_activities(q, filter, sort, with, limit, ...)

List activities (the kinds of work that hours are booked on). Needs the "activity" scope. GET /reporting/activities. Returns count, total, next_offset (pass it as offset for the next page) and the items.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional free-text search over several fields."
    },
    "filter": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional filter as a JSON object string, e.g. {\"currency\":\"CHF\"}; combine with {\"and\":[...]} / {\"or\":[...]}. Comparators go before the value: \"<\", \"<=\", \">\", \">=\", \"!\" (not), \"~\" (contains), e.g. {\"name\":\"~ACME\"}. Unknown field names are answered with HTTP 400."
    },
    "sort": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^-?[A-Za-z0-9_.]+(,-?[A-Za-z0-9_.]+)*$",
      "description": "Optional sort: 'name' ascending, '-name' descending, '-surname,name' for several."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smallinvoice_list_cost_units(q, filter, sort, with, limit, ...)

List cost units. Needs the "cost_unit" scope. GET /reporting/cost-units. Returns count, total, next_offset (pass it as offset for the next page) and the items.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional free-text search over several fields."
    },
    "filter": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional filter as a JSON object string, e.g. {\"currency\":\"CHF\"}; combine with {\"and\":[...]} / {\"or\":[...]}. Comparators go before the value: \"<\", \"<=\", \">\", \">=\", \"!\" (not), \"~\" (contains), e.g. {\"name\":\"~ACME\"}. Unknown field names are answered with HTTP 400."
    },
    "sort": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^-?[A-Za-z0-9_.]+(,-?[A-Za-z0-9_.]+)*$",
      "description": "Optional sort: 'name' ascending, '-name' descending, '-surname,name' for several."
    },
    "with": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.]+(,[A-Za-z0-9_.]+)*$",
      "description": "Optional extra fields to include, comma separated (e.g. 'main_address' on contacts)."
    },
    "limit": {
      "description": "Items per page (default 100, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Items to skip (paging: the previous reply's next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡smallinvoice_create_contact(name, street, postcode, city, country, ...)

WRITE: creates a new company contact (customer) in smallinvoice, with its main address. Needs the "contact" scope. POST /contacts. Nothing is sent to anyone. Private persons are not supported here (smallinvoice needs more fields for them): create those in smallinvoice. Check smallinvoice_list_contacts first so you do not create a duplicate.

输入模式

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Company name, as printed on documents."
    },
    "street": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Main address: street and number."
    },
    "postcode": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20,
      "description": "Main address: postcode."
    },
    "city": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Main address: city."
    },
    "country": {
      "type": "string",
      "pattern": "^[A-Z]{2}$",
      "description": "Main address: ISO country code, e.g. CH."
    },
    "relation": {
      "description": "Relation codes (default ['CL'] = client, as in the vendor's example). See the vendor docs for the others.",
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Z]{2}$"
      }
    },
    "email": {
      "description": "E-mail address.",
      "type": "string",
      "maxLength": 200,
      "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,}$"
    },
    "currency": {
      "description": "ISO currency, e.g. CHF or EUR.",
      "type": "string",
      "pattern": "^[A-Z]{3}$"
    }
  },
  "required": [
    "name",
    "street",
    "postcode",
    "city",
    "country"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡smallinvoice_create_invoice(contact_id, contact_address_id, date, due, currency, ...)

WRITE: creates a new invoice for a contact. Needs the "invoice" scope. POST /receivables/invoices. It is only created: it is NOT sent by e-mail or post and its status is not changed; the user reviews it in smallinvoice. Not idempotent: calling it twice creates two invoices. Use smallinvoice_list_contacts / smallinvoice_list_units first for the ids.

输入模式

{
  "type": "object",
  "properties": {
    "contact_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The contact (customer) id."
    },
    "contact_address_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The id of the contact's address to print (smallinvoice_list_contact_addresses, or main_address_id on the contact)."
    },
    "date": {
      "type": "string",
      "description": "Invoice date, yyyy-mm-dd."
    },
    "due": {
      "type": "string",
      "description": "Due date, yyyy-mm-dd."
    },
    "currency": {
      "type": "string",
      "pattern": "^[A-Z]{3}$",
      "description": "ISO currency, e.g. CHF."
    },
    "language": {
      "type": "string",
      "pattern": "^[a-z]{2}$",
      "description": "Document language: de, en, fr or it."
    },
    "positions": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300,
            "description": "Position name."
          },
          "description": {
            "description": "Position description.",
            "type": "string",
            "maxLength": 2000
          },
          "price": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000000,
            "description": "Unit price (net, in the invoice currency)."
          },
          "amount": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000000000,
            "description": "Quantity."
          },
          "unit_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "description": "Unit id (smallinvoice_list_units)."
          },
          "vat": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "VAT percentage, e.g. 8.1."
          },
          "type": {
            "description": "Position type (default 'N' = normal, as in the vendor's example).",
            "type": "string",
            "pattern": "^[A-Z]$"
          },
          "catalog_type": {
            "description": "Catalog type (default 'P', as in the vendor's example).",
            "type": "string",
            "pattern": "^[A-Z]$"
          }
        },
        "required": [
          "name",
          "price",
          "amount",
          "unit_id",
          "vat"
        ]
      },
      "description": "The invoice positions."
    }
  },
  "required": [
    "contact_id",
    "contact_address_id",
    "date",
    "due",
    "currency",
    "language",
    "positions"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本27 个工具