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 rangesmallinvoice_list_contact_addresses에서
  • LOWTool 'smallinvoice_list_contact_people' name length outside 3-30 rangesmallinvoice_list_contact_people에서
  • LOWTool 'smallinvoice_list_contact_groups' name length outside 3-30 rangesmallinvoice_list_contact_groups에서
  • LOWTool 'smallinvoice_list_invoice_payments' name length outside 3-30 rangesmallinvoice_list_invoice_payments에서
  • LOWTool 'smallinvoice_list_order_confirmations' name length outside 3-30 rangesmallinvoice_list_order_confirmations에서
  • LOWTool 'smallinvoice_get_order_confirmation' name length outside 3-30 rangesmallinvoice_get_order_confirmation에서
  • LOWTool 'smallinvoice_list_delivery_notes' name length outside 3-30 rangesmallinvoice_list_delivery_notes에서
  • LOWTool 'smallinvoice_list_bank_accounts' name length outside 3-30 rangesmallinvoice_list_bank_accounts에서
  • LOWTool 'smallinvoice_list_working_hours' name length outside 3-30 rangesmallinvoice_list_working_hours에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~9,227토큰 (도구 정의)
~2.7 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 7.21%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`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개