Papierkram MCP by usefulapi

Read Papierkram invoices, vouchers, contacts, projects, time; create contacts, time, draft invoices.

使うべきか

品質と安全性

A
説明の品質
96%
スキーマの完全性
85%
命名の品質
78%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(3)

  • LOWTool 'papierkram_list_bank_connections' name length outside 3-30 rangepapierkram_list_bank_connections 内
  • LOWTool 'papierkram_list_bank_transactions' name length outside 3-30 rangepapierkram_list_bank_transactions 内
  • LOWTool 'papierkram_get_bank_transaction' name length outside 3-30 rangepapierkram_get_bank_transaction 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~9,428トークン数(ツール定義)
~2.4 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 7.37%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

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

リモートエンドポイント

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

できること

ツール一覧

ツール(33)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢papierkram_get_info

Read the API version and the account's custom invoice templates (ids usable as custom_template_id when creating an invoice).

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_list_companies(order_by, order_direction, page, page_size)

List contacts (companies: customers and suppliers) with address, VAT id and contact data. Paged.

入力スキーマ

{
  "type": "object",
  "properties": {
    "order_by": {
      "description": "Field to sort by, e.g. document_date. Must be used together with order_direction.",
      "type": "string",
      "pattern": "^[a-z_]{1,60}$"
    },
    "order_direction": {
      "description": "Sort direction. Must be used together with order_by.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_get_company(id)

Get one contact (company) by id, with its people.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Company id (from papierkram_list_companies)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_list_persons(company_id, order_by, order_direction, page, page_size)

List the contact persons of one company. Paged.

入力スキーマ

{
  "type": "object",
  "properties": {
    "company_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Company id (from papierkram_list_companies)."
    },
    "order_by": {
      "description": "Field to sort by, e.g. document_date. Must be used together with order_direction.",
      "type": "string",
      "pattern": "^[a-z_]{1,60}$"
    },
    "order_direction": {
      "description": "Sort direction. Must be used together with order_by.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "company_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_get_person(company_id, id)

Get one contact person of a company.

入力スキーマ

{
  "type": "object",
  "properties": {
    "company_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Company id."
    },
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Person id (from papierkram_list_persons)."
    }
  },
  "required": [
    "company_id",
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_list_invoices(company_id, project_id, document_date_range_start, document_date_range_end, order_by, ...)

List outgoing invoices (Ausgangsrechnungen) with state (draft, ...), dates, totals and outstanding_amount. Filter by company, project or document date range. Paged.

入力スキーマ

{
  "type": "object",
  "properties": {
    "company_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Only invoices of this company."
    },
    "project_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Only invoices of this project."
    },
    "document_date_range_start": {
      "description": "Only documents dated on or after this day (yyyy-mm-dd).",
      "type": "string"
    },
    "document_date_range_end": {
      "description": "Only documents dated on or before this day (yyyy-mm-dd).",
      "type": "string"
    },
    "order_by": {
      "description": "Field to sort by, e.g. document_date. Must be used together with order_direction.",
      "type": "string",
      "pattern": "^[a-z_]{1,60}$"
    },
    "order_direction": {
      "description": "Sort direction. Must be used together with order_by.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_get_invoice(id)

Get one outgoing invoice with its line items, billing address and payment term.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Invoice id (from papierkram_list_invoices)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_list_estimates(company_id, project_id, document_date_range_start, document_date_range_end, order_by, ...)

List estimates (Angebote) with state, dates and totals. Filter by company, project or document date range. Paged.

入力スキーマ

{
  "type": "object",
  "properties": {
    "company_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Only estimates of this company."
    },
    "project_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Only estimates of this project."
    },
    "document_date_range_start": {
      "description": "Only documents dated on or after this day (yyyy-mm-dd).",
      "type": "string"
    },
    "document_date_range_end": {
      "description": "Only documents dated on or before this day (yyyy-mm-dd).",
      "type": "string"
    },
    "order_by": {
      "description": "Field to sort by, e.g. document_date. Must be used together with order_direction.",
      "type": "string",
      "pattern": "^[a-z_]{1,60}$"
    },
    "order_direction": {
      "description": "Sort direction. Must be used together with order_by.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_get_estimate(id)

Get one estimate with its line items.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Estimate id (from papierkram_list_estimates)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_list_vouchers(creditor_id, project_id, document_date_range_start, document_date_range_end, order_by, ...)

List expense vouchers (Belege / incoming invoices and receipts) with creditor, state, dates and amounts. Filter by creditor (supplier company), project or document date range. Paged.

入力スキーマ

{
  "type": "object",
  "properties": {
    "creditor_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Only vouchers of this creditor (company id of the supplier)."
    },
    "project_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Only vouchers of this project."
    },
    "document_date_range_start": {
      "description": "Only documents dated on or after this day (yyyy-mm-dd).",
      "type": "string"
    },
    "document_date_range_end": {
      "description": "Only documents dated on or before this day (yyyy-mm-dd).",
      "type": "string"
    },
    "order_by": {
      "description": "Field to sort by, e.g. document_date. Must be used together with order_direction.",
      "type": "string",
      "pattern": "^[a-z_]{1,60}$"
    },
    "order_direction": {
      "description": "Sort direction. Must be used together with order_by.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_get_voucher(id)

Get one expense voucher with its line items.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Voucher id (from papierkram_list_vouchers)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_list_payment_terms(order_by, order_direction, page, page_size)

List the payment term templates (ids needed as payment_term_id when creating an invoice).

入力スキーマ

{
  "type": "object",
  "properties": {
    "order_by": {
      "description": "Field to sort by, e.g. document_date. Must be used together with order_direction.",
      "type": "string",
      "pattern": "^[a-z_]{1,60}$"
    },
    "order_direction": {
      "description": "Sort direction. Must be used together with order_by.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_list_propositions(order_by, order_direction, page, page_size)

List the stored products and services (Leistungen/Artikel) with article number, price and unit (the VAT rate is only in papierkram_get_proposition). Paged.

入力スキーマ

{
  "type": "object",
  "properties": {
    "order_by": {
      "description": "Field to sort by, e.g. document_date. Must be used together with order_direction.",
      "type": "string",
      "pattern": "^[a-z_]{1,60}$"
    },
    "order_direction": {
      "description": "Sort direction. Must be used together with order_by.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_get_proposition(id)

Get one stored product or service, including its vat_rate (name such as 19% and rate such as 0.19).

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Proposition id (from papierkram_list_propositions)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_list_projects(company_id, order_by, order_direction, page, page_size)

List projects with dates, budget and state. Filter by company. Paged.

入力スキーマ

{
  "type": "object",
  "properties": {
    "company_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Only projects of this company."
    },
    "order_by": {
      "description": "Field to sort by, e.g. document_date. Must be used together with order_direction.",
      "type": "string",
      "pattern": "^[a-z_]{1,60}$"
    },
    "order_direction": {
      "description": "Sort direction. Must be used together with order_by.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_get_project(id)

Get one project by id.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Project id (from papierkram_list_projects)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_list_tasks(project_id, proposition_id, order_by, order_direction, page, ...)

List time-tracking tasks. Filter by project or product/service. Paged.

入力スキーマ

{
  "type": "object",
  "properties": {
    "project_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Only tasks of this project."
    },
    "proposition_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Only tasks of this product/service."
    },
    "order_by": {
      "description": "Field to sort by, e.g. document_date. Must be used together with order_direction.",
      "type": "string",
      "pattern": "^[a-z_]{1,60}$"
    },
    "order_direction": {
      "description": "Sort direction. Must be used together with order_by.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_get_task(id)

Get one task by id.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Task id (from papierkram_list_tasks)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_list_time_entries(project_id, task_id, invoice_id, user_id, billing_state, ...)

List tracked time entries. Filter by project, task, invoice, user, billing state or start time range (RFC 3339 date-time). Paged.

入力スキーマ

{
  "type": "object",
  "properties": {
    "project_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Only entries of this project."
    },
    "task_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Only entries of this task."
    },
    "invoice_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Only entries billed on this invoice."
    },
    "user_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Only entries of this user (from papierkram_list_users)."
    },
    "billing_state": {
      "description": "Only entries in this billing state.",
      "type": "string",
      "enum": [
        "billed",
        "unbilled",
        "billable",
        "unbillable",
        "archived"
      ]
    },
    "start_time_range_start": {
      "description": "Only entries started at or after this time, RFC 3339, e.g. 2026-10-01T00:00:00Z.",
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "start_time_range_end": {
      "description": "Only entries started at or before this time, RFC 3339.",
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "order_by": {
      "description": "Field to sort by, e.g. document_date. Must be used together with order_direction.",
      "type": "string",
      "pattern": "^[a-z_]{1,60}$"
    },
    "order_direction": {
      "description": "Sort direction. Must be used together with order_by.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_get_time_entry(id)

Get one time entry by id.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Time entry id (from papierkram_list_time_entries)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_list_bank_connections(order_by, order_direction, page, page_size)

List the bank accounts connected to Papierkram (name, IBAN, balance data as Papierkram reports it). Paged.

入力スキーマ

{
  "type": "object",
  "properties": {
    "order_by": {
      "description": "Field to sort by, e.g. document_date. Must be used together with order_direction.",
      "type": "string",
      "pattern": "^[a-z_]{1,60}$"
    },
    "order_direction": {
      "description": "Sort direction. Must be used together with order_by.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_list_bank_transactions(bank_connection_id, order_by, order_direction, page, page_size)

List bank transactions (value, currency, usage text, booking date, counterparty). Filter by bank connection. Paged.

入力スキーマ

{
  "type": "object",
  "properties": {
    "bank_connection_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Only transactions of this bank connection (from papierkram_list_bank_connections)."
    },
    "order_by": {
      "description": "Field to sort by, e.g. document_date. Must be used together with order_direction.",
      "type": "string",
      "pattern": "^[a-z_]{1,60}$"
    },
    "order_direction": {
      "description": "Sort direction. Must be used together with order_by.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_get_bank_transaction(id)

Get one bank transaction by id.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Transaction id (from papierkram_list_bank_transactions)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_list_users(order_by, order_direction, page, page_size)

List the users of the account (ids needed as user_id for time entries and tasks).

入力スキーマ

{
  "type": "object",
  "properties": {
    "order_by": {
      "description": "Field to sort by, e.g. document_date. Must be used together with order_direction.",
      "type": "string",
      "pattern": "^[a-z_]{1,60}$"
    },
    "order_direction": {
      "description": "Sort direction. Must be used together with order_by.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢papierkram_get_user(id)

Get one user by id.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "User id (from papierkram_list_users)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡papierkram_create_company(name, contact_type, phone, email, website, ...)

WRITE: create a contact (company) in Papierkram. Papierkram assigns the customer number. Nothing is sent to the contact. Check papierkram_list_companies first to avoid duplicates. Costs Papierkram API credits (a create 10, an invoice 50; the monthly quota is limited).

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Company name."
    },
    "contact_type": {
      "type": "string",
      "enum": [
        "customer",
        "supplier"
      ],
      "description": "customer or supplier (required)."
    },
    "phone": {
      "description": "Phone.",
      "type": "string",
      "maxLength": 100
    },
    "email": {
      "description": "E-mail address.",
      "type": "string",
      "maxLength": 254
    },
    "website": {
      "description": "Website.",
      "type": "string",
      "maxLength": 300
    },
    "ust_idnr": {
      "description": "VAT id (USt-IdNr.), e.g. DE123456789.",
      "type": "string",
      "maxLength": 50
    },
    "delivery_method": {
      "description": "How documents are delivered to this contact.",
      "type": "string",
      "enum": [
        "pdf",
        "email"
      ]
    },
    "postal_street": {
      "description": "Postal address: street and number.",
      "type": "string",
      "maxLength": 200
    },
    "postal_zip": {
      "description": "Postal address: ZIP.",
      "type": "string",
      "maxLength": 20
    },
    "postal_city": {
      "description": "Postal address: city.",
      "type": "string",
      "maxLength": 100
    },
    "postal_country": {
      "description": "Postal address: country.",
      "type": "string",
      "maxLength": 100
    },
    "bank_iban": {
      "description": "IBAN.",
      "type": "string",
      "maxLength": 50
    },
    "bank_bic": {
      "description": "BIC.",
      "type": "string",
      "maxLength": 20
    },
    "notes": {
      "description": "Internal notes.",
      "type": "string",
      "maxLength": 5000
    }
  },
  "required": [
    "name",
    "contact_type"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴papierkram_update_company(id, name, contact_type, phone, email, ...)

WRITE: change fields of an existing contact (only the fields you pass are changed). Read it first with papierkram_get_company.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Company id."
    },
    "name": {
      "description": "New company name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "contact_type": {
      "description": "customer or supplier.",
      "type": "string",
      "enum": [
        "customer",
        "supplier"
      ]
    },
    "phone": {
      "description": "Phone.",
      "type": "string",
      "maxLength": 100
    },
    "email": {
      "description": "E-mail address.",
      "type": "string",
      "maxLength": 254
    },
    "website": {
      "description": "Website.",
      "type": "string",
      "maxLength": 300
    },
    "ust_idnr": {
      "description": "VAT id (USt-IdNr.), e.g. DE123456789.",
      "type": "string",
      "maxLength": 50
    },
    "delivery_method": {
      "description": "How documents are delivered to this contact.",
      "type": "string",
      "enum": [
        "pdf",
        "email"
      ]
    },
    "postal_street": {
      "description": "Postal address: street and number.",
      "type": "string",
      "maxLength": 200
    },
    "postal_zip": {
      "description": "Postal address: ZIP.",
      "type": "string",
      "maxLength": 20
    },
    "postal_city": {
      "description": "Postal address: city.",
      "type": "string",
      "maxLength": 100
    },
    "postal_country": {
      "description": "Postal address: country.",
      "type": "string",
      "maxLength": 100
    },
    "bank_iban": {
      "description": "IBAN.",
      "type": "string",
      "maxLength": 50
    },
    "bank_bic": {
      "description": "BIC.",
      "type": "string",
      "maxLength": 20
    },
    "notes": {
      "description": "Internal notes.",
      "type": "string",
      "maxLength": 5000
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡papierkram_create_person(company_id, first_name, last_name, salutation, position, ...)

WRITE: add a contact person to an existing company. Nothing is sent to the person. Costs Papierkram API credits (a create 10, an invoice 50; the monthly quota is limited).

入力スキーマ

{
  "type": "object",
  "properties": {
    "company_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Company id."
    },
    "first_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "First name."
    },
    "last_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Last name."
    },
    "salutation": {
      "description": "Salutation, e.g. Herr or Frau.",
      "type": "string",
      "maxLength": 50
    },
    "position": {
      "description": "Position.",
      "type": "string",
      "maxLength": 100
    },
    "department": {
      "description": "Department.",
      "type": "string",
      "maxLength": 100
    },
    "phone": {
      "description": "Phone.",
      "type": "string",
      "maxLength": 100
    },
    "mobile": {
      "description": "Mobile phone.",
      "type": "string",
      "maxLength": 100
    },
    "email": {
      "description": "E-mail address.",
      "type": "string",
      "maxLength": 254
    },
    "comment": {
      "description": "Comment.",
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "company_id",
    "first_name",
    "last_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡papierkram_create_project(name, customer_id, description, start_date, end_date, ...)

WRITE: create a project for a customer. Costs Papierkram API credits (a create 10, an invoice 50; the monthly quota is limited).

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project name."
    },
    "customer_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Company id of the customer (from papierkram_list_companies)."
    },
    "description": {
      "description": "Description.",
      "type": "string",
      "maxLength": 2000
    },
    "start_date": {
      "description": "Start date yyyy-mm-dd.",
      "type": "string"
    },
    "end_date": {
      "description": "End date yyyy-mm-dd.",
      "type": "string"
    },
    "budget_type": {
      "description": "Budget kind; then pass budget_money or budget_time.",
      "type": "string",
      "enum": [
        "money",
        "working_time"
      ]
    },
    "budget_money": {
      "description": "Money budget, e.g. 5000.00.",
      "type": "string",
      "pattern": "^\\d{1,12}(\\.\\d{1,2})?$"
    },
    "budget_time": {
      "description": "Time budget in budget_time_unit.",
      "type": "string",
      "pattern": "^\\d{1,8}(\\.\\d{1,2})?$"
    },
    "budget_time_unit": {
      "description": "Unit of budget_time.",
      "type": "string",
      "enum": [
        "hour",
        "day"
      ]
    }
  },
  "required": [
    "name",
    "customer_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡papierkram_create_task(name, project_id, proposition_id, user_id, deadline)

WRITE: create a time-tracking task in a project. Costs Papierkram API credits (a create 10, an invoice 50; the monthly quota is limited).

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Task name."
    },
    "project_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Project id (from papierkram_list_projects)."
    },
    "proposition_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Product/service id the time is billed with (from papierkram_list_propositions)."
    },
    "user_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "User assigned to the task (from papierkram_list_users)."
    },
    "deadline": {
      "description": "Deadline yyyy-mm-dd.",
      "type": "string"
    }
  },
  "required": [
    "name",
    "project_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡papierkram_create_time_entry(task_id, user_id, entry_date, started_at_time, ended_at_time, ...)

WRITE: record a time entry (worked time) on a task. Not billed until an invoice is made. Costs Papierkram API credits (a create 10, an invoice 50; the monthly quota is limited).

入力スキーマ

{
  "type": "object",
  "properties": {
    "task_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Task id (from papierkram_list_tasks)."
    },
    "user_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "User who worked (from papierkram_list_users)."
    },
    "entry_date": {
      "type": "string",
      "description": "Day of the work, yyyy-mm-dd."
    },
    "started_at_time": {
      "type": "string",
      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
      "description": "Start time HH:MM."
    },
    "ended_at_time": {
      "type": "string",
      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
      "description": "End time HH:MM."
    },
    "comments": {
      "description": "What was done.",
      "type": "string",
      "maxLength": 2000
    },
    "unbillable": {
      "description": "True when the time must not be billed.",
      "type": "boolean"
    }
  },
  "required": [
    "task_id",
    "user_id",
    "entry_date",
    "started_at_time",
    "ended_at_time"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡papierkram_create_proposition(name, article_no, proposition_type, time_unit, vat_rate, ...)

WRITE: create a stored product or service (Leistung/Artikel) with a price. Costs Papierkram API credits (a create 10, an invoice 50; the monthly quota is limited).

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Name."
    },
    "article_no": {
      "type": "string",
      "minLength": 1,
      "maxLength": 50,
      "description": "Article number."
    },
    "proposition_type": {
      "type": "string",
      "enum": [
        "service",
        "product",
        "ecommerce"
      ],
      "description": "service, product or ecommerce."
    },
    "time_unit": {
      "type": "string",
      "enum": [
        "hour",
        "day"
      ],
      "description": "Time unit used for time tracking with this item."
    },
    "vat_rate": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20,
      "description": "VAT rate as Papierkram writes it, e.g. 19% (see vat_rate.name of an existing item from papierkram_get_proposition)."
    },
    "price": {
      "description": "Net unit price, e.g. 99.50.",
      "type": "string",
      "pattern": "^\\d{1,12}(\\.\\d{1,4})?$"
    },
    "description": {
      "description": "Description.",
      "type": "string",
      "maxLength": 2000
    },
    "unit_name_1": {
      "description": "Unit name singular, e.g. Stunde.",
      "type": "string",
      "maxLength": 50
    },
    "unit_name_n": {
      "description": "Unit name plural, e.g. Stunden.",
      "type": "string",
      "maxLength": 50
    }
  },
  "required": [
    "name",
    "article_no",
    "proposition_type",
    "time_unit",
    "vat_rate"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡papierkram_create_invoice(name, customer_id, payment_term_id, contact_person_id, project_id, ...)

WRITE: create a DRAFT outgoing invoice (state draft; it is NOT finalized or sent, and gets no invoice number until the user completes it in Papierkram). Needs a payment term id (papierkram_list_payment_terms) and at least one line item. Use papierkram_list_invoices afterwards to check it. Costs Papierkram API credits (a create 10, an invoice 50; the monthly quota is limited).

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Invoice title/subject."
    },
    "customer_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Company id of the customer (from papierkram_list_companies)."
    },
    "payment_term_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Payment term id (from papierkram_list_payment_terms)."
    },
    "contact_person_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Contact person of the customer (from papierkram_list_persons)."
    },
    "project_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Project the invoice belongs to."
    },
    "custom_template_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[1-9]\\d{0,15}$"
        }
      ],
      "description": "Custom invoice template id (from papierkram_get_info)."
    },
    "document_date": {
      "description": "Invoice date yyyy-mm-dd (default today).",
      "type": "string"
    },
    "supply_date": {
      "description": "Supply/service date or period as text, e.g. 01.10.2026 - 14.10.2026.",
      "type": "string",
      "maxLength": 100
    },
    "description": {
      "description": "Notes shown on the invoice.",
      "type": "string",
      "maxLength": 2000
    },
    "gross": {
      "description": "False (default): prices are net. True: prices are gross.",
      "type": "boolean"
    },
    "line_items": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300,
            "description": "Line item title."
          },
          "description": {
            "description": "Line item description.",
            "type": "string",
            "maxLength": 2000
          },
          "quantity": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000000000,
            "description": "Quantity."
          },
          "unit": {
            "type": "string",
            "minLength": 1,
            "maxLength": 50,
            "description": "Unit, e.g. Stunden."
          },
          "vat_rate": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "VAT rate as a fraction, e.g. 0.19 for 19%, 0.07 for 7%, 0 for none."
          },
          "price": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000000000,
            "description": "Net unit price (or gross when gross is true: see price_gross)."
          },
          "discount_percentage": {
            "description": "Discount as a fraction, e.g. 0.1 for 10%.",
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "proposition_id": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              {
                "type": "string",
                "pattern": "^[1-9]\\d{0,15}$"
              }
            ],
            "description": "Stored product/service this line is based on (from papierkram_list_propositions)."
          }
        },
        "required": [
          "name",
          "quantity",
          "unit",
          "vat_rate",
          "price"
        ]
      },
      "description": "The invoice lines."
    }
  },
  "required": [
    "name",
    "customer_id",
    "payment_term_id",
    "line_items"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 33 件