{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T23:12:03.542Z","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram.md","server":{"slug":"io-usefulapi-papierkram","name":"Papierkram MCP by usefulapi","registryName":"io.usefulapi/papierkram","description":"Read Papierkram invoices, vouchers, contacts, projects, time; create contacts, time, draft invoices.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"papierkram","type":"remote","identifier":"https://papierkram.usefulapi.io/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram","version":"1.16.3","transport":null,"scoredAt":"2026-11-05T15:02:55.126Z"},"score":{"total":18,"tier":"low","status":"scored","weekDelta":-46,"history":[{"date":"2026-11-05","total":18},{"date":"2026-11-04","total":18},{"date":"2026-11-03","total":18},{"date":"2026-11-02","total":18},{"date":"2026-11-01","total":68},{"date":"2026-10-31","total":67},{"date":"2026-10-30","total":64},{"date":"2026-10-29","total":64},{"date":"2026-10-28","total":63},{"date":"2026-10-27","total":63},{"date":"2026-10-26","total":62},{"date":"2026-10-25","total":62}]},"categories":[{"name":"Endpoint Security","score":46,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","HSTS check failed: the Strict-Transport-Security header is absent.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.unreachable","args":{}},{"code":"https.inconclusive","args":{"reason":"redirect_not_https"}},{"code":"headers.hsts_absent","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":0,"verdict":"fail","reasons":["Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly."],"codes":[{"code":"transport.redirected","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":0,"verdict":"unverified","reasons":["Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list."],"codes":[{"code":"schema.unreachable","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"codes":[{"code":"stability.insufficient_history","args":{}}]},{"name":"Tool Coverage","score":0,"verdict":"unverified","reasons":["Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolquality.unreachable","args":{}}]},{"name":"Tool Safety","score":0,"verdict":"unverified","reasons":["Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolsafety.unreachable","args":{}}]},{"name":"Capabilities","score":0,"verdict":"unverified","reasons":["Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"codes":[{"code":"cap.unreachable","args":{}}]}],"inconclusive":["Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.","Stability not yet verified: not enough scan history yet (needs a 30-day window).","Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"malware":[],"components":[{"slug":"papierkram","type":"remote","identifier":"https://papierkram.usefulapi.io/mcp","withdrawn":false,"score":18,"current":true,"url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram.md"}],"facts":[{"label":"Endpoint","value":"https://papierkram.usefulapi.io/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.16.3"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"papierkram_get_info","title":null,"description":"Read the API version and the account's custom invoice templates (ids usable as custom_template_id when creating an invoice).","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":34},{"name":"papierkram_list_companies","title":null,"description":"List contacts (companies: customers and suppliers) with address, VAT id and contact data. Paged.","inputs":[{"name":"order_by","type":"string","required":false,"description":"Field to sort by, e.g. document_date. Must be used together with order_direction."},{"name":"order_direction","type":"string","required":false,"description":"Sort direction. Must be used together with order_by."},{"name":"page","type":"integer","required":false,"description":"Page number, 1-based (default 1). Use next_page from the previous reply."},{"name":"page_size","type":"integer","required":false,"description":"Results per page, 1-100 (default 100)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":122},{"name":"papierkram_get_company","title":null,"description":"Get one contact (company) by id, with its people.","inputs":[{"name":"id","type":null,"required":true,"description":"Company id (from papierkram_list_companies)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":39},{"name":"papierkram_list_persons","title":null,"description":"List the contact persons of one company. Paged.","inputs":[{"name":"company_id","type":null,"required":true,"description":"Company id (from papierkram_list_companies)."},{"name":"order_by","type":"string","required":false,"description":"Field to sort by, e.g. document_date. Must be used together with order_direction."},{"name":"order_direction","type":"string","required":false,"description":"Sort direction. Must be used together with order_by."},{"name":"page","type":"integer","required":false,"description":"Page number, 1-based (default 1). Use next_page from the previous reply."},{"name":"page_size","type":"integer","required":false,"description":"Results per page, 1-100 (default 100)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":128},{"name":"papierkram_get_person","title":null,"description":"Get one contact person of a company.","inputs":[{"name":"company_id","type":null,"required":true,"description":"Company id."},{"name":"id","type":null,"required":true,"description":"Person id (from papierkram_list_persons)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":42},{"name":"papierkram_list_invoices","title":null,"description":"List outgoing invoices (Ausgangsrechnungen) with state (draft, ...), dates, totals and outstanding_amount. Filter by company, project or document date range. Paged.","inputs":[{"name":"company_id","type":null,"required":false,"description":"Only invoices of this company."},{"name":"document_date_range_end","type":"string","required":false,"description":"Only documents dated on or before this day (yyyy-mm-dd)."},{"name":"document_date_range_start","type":"string","required":false,"description":"Only documents dated on or after this day (yyyy-mm-dd)."},{"name":"order_by","type":"string","required":false,"description":"Field to sort by, e.g. document_date. Must be used together with order_direction."},{"name":"order_direction","type":"string","required":false,"description":"Sort direction. Must be used together with order_by."},{"name":"page","type":"integer","required":false,"description":"Page number, 1-based (default 1). Use next_page from the previous reply."},{"name":"page_size","type":"integer","required":false,"description":"Results per page, 1-100 (default 100)."},{"name":"project_id","type":null,"required":false,"description":"Only invoices of this project."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":205},{"name":"papierkram_get_invoice","title":null,"description":"Get one outgoing invoice with its line items, billing address and payment term.","inputs":[{"name":"id","type":null,"required":true,"description":"Invoice id (from papierkram_list_invoices)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":41},{"name":"papierkram_list_estimates","title":null,"description":"List estimates (Angebote) with state, dates and totals. Filter by company, project or document date range. Paged.","inputs":[{"name":"company_id","type":null,"required":false,"description":"Only estimates of this company."},{"name":"document_date_range_end","type":"string","required":false,"description":"Only documents dated on or before this day (yyyy-mm-dd)."},{"name":"document_date_range_start","type":"string","required":false,"description":"Only documents dated on or after this day (yyyy-mm-dd)."},{"name":"order_by","type":"string","required":false,"description":"Field to sort by, e.g. document_date. Must be used together with order_direction."},{"name":"order_direction","type":"string","required":false,"description":"Sort direction. Must be used together with order_by."},{"name":"page","type":"integer","required":false,"description":"Page number, 1-based (default 1). Use next_page from the previous reply."},{"name":"page_size","type":"integer","required":false,"description":"Results per page, 1-100 (default 100)."},{"name":"project_id","type":null,"required":false,"description":"Only estimates of this project."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":194},{"name":"papierkram_get_estimate","title":null,"description":"Get one estimate with its line items.","inputs":[{"name":"id","type":null,"required":true,"description":"Estimate id (from papierkram_list_estimates)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":35},{"name":"papierkram_list_vouchers","title":null,"description":"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.","inputs":[{"name":"creditor_id","type":null,"required":false,"description":"Only vouchers of this creditor (company id of the supplier)."},{"name":"document_date_range_end","type":"string","required":false,"description":"Only documents dated on or before this day (yyyy-mm-dd)."},{"name":"document_date_range_start","type":"string","required":false,"description":"Only documents dated on or after this day (yyyy-mm-dd)."},{"name":"order_by","type":"string","required":false,"description":"Field to sort by, e.g. document_date. Must be used together with order_direction."},{"name":"order_direction","type":"string","required":false,"description":"Sort direction. Must be used together with order_by."},{"name":"page","type":"integer","required":false,"description":"Page number, 1-based (default 1). Use next_page from the previous reply."},{"name":"page_size","type":"integer","required":false,"description":"Results per page, 1-100 (default 100)."},{"name":"project_id","type":null,"required":false,"description":"Only vouchers of this project."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":210},{"name":"papierkram_get_voucher","title":null,"description":"Get one expense voucher with its line items.","inputs":[{"name":"id","type":null,"required":true,"description":"Voucher id (from papierkram_list_vouchers)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":36},{"name":"papierkram_list_payment_terms","title":null,"description":"List the payment term templates (ids needed as payment_term_id when creating an invoice).","inputs":[{"name":"order_by","type":"string","required":false,"description":"Field to sort by, e.g. document_date. Must be used together with order_direction."},{"name":"order_direction","type":"string","required":false,"description":"Sort direction. Must be used together with order_by."},{"name":"page","type":"integer","required":false,"description":"Page number, 1-based (default 1). Use next_page from the previous reply."},{"name":"page_size","type":"integer","required":false,"description":"Results per page, 1-100 (default 100)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":118},{"name":"papierkram_list_propositions","title":null,"description":"List the stored products and services (Leistungen/Artikel) with article number, price and unit (the VAT rate is only in papierkram_get_proposition). Paged.","inputs":[{"name":"order_by","type":"string","required":false,"description":"Field to sort by, e.g. document_date. Must be used together with order_direction."},{"name":"order_direction","type":"string","required":false,"description":"Sort direction. Must be used together with order_by."},{"name":"page","type":"integer","required":false,"description":"Page number, 1-based (default 1). Use next_page from the previous reply."},{"name":"page_size","type":"integer","required":false,"description":"Results per page, 1-100 (default 100)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":138},{"name":"papierkram_get_proposition","title":null,"description":"Get one stored product or service, including its vat_rate (name such as 19% and rate such as 0.19).","inputs":[{"name":"id","type":null,"required":true,"description":"Proposition id (from papierkram_list_propositions)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":54},{"name":"papierkram_list_projects","title":null,"description":"List projects with dates, budget and state. Filter by company. Paged.","inputs":[{"name":"company_id","type":null,"required":false,"description":"Only projects of this company."},{"name":"order_by","type":"string","required":false,"description":"Field to sort by, e.g. document_date. Must be used together with order_direction."},{"name":"order_direction","type":"string","required":false,"description":"Sort direction. Must be used together with order_by."},{"name":"page","type":"integer","required":false,"description":"Page number, 1-based (default 1). Use next_page from the previous reply."},{"name":"page_size","type":"integer","required":false,"description":"Results per page, 1-100 (default 100)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":127},{"name":"papierkram_get_project","title":null,"description":"Get one project by id.","inputs":[{"name":"id","type":null,"required":true,"description":"Project id (from papierkram_list_projects)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":31},{"name":"papierkram_list_tasks","title":null,"description":"List time-tracking tasks. Filter by project or product/service. Paged.","inputs":[{"name":"order_by","type":"string","required":false,"description":"Field to sort by, e.g. document_date. Must be used together with order_direction."},{"name":"order_direction","type":"string","required":false,"description":"Sort direction. Must be used together with order_by."},{"name":"page","type":"integer","required":false,"description":"Page number, 1-based (default 1). Use next_page from the previous reply."},{"name":"page_size","type":"integer","required":false,"description":"Results per page, 1-100 (default 100)."},{"name":"project_id","type":null,"required":false,"description":"Only tasks of this project."},{"name":"proposition_id","type":null,"required":false,"description":"Only tasks of this product/service."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":139},{"name":"papierkram_get_task","title":null,"description":"Get one task by id.","inputs":[{"name":"id","type":null,"required":true,"description":"Task id (from papierkram_list_tasks)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":31},{"name":"papierkram_list_time_entries","title":null,"description":"List tracked time entries. Filter by project, task, invoice, user, billing state or start time range (RFC 3339 date-time). Paged.","inputs":[{"name":"billing_state","type":"string","required":false,"description":"Only entries in this billing state."},{"name":"invoice_id","type":null,"required":false,"description":"Only entries billed on this invoice."},{"name":"order_by","type":"string","required":false,"description":"Field to sort by, e.g. document_date. Must be used together with order_direction."},{"name":"order_direction","type":"string","required":false,"description":"Sort direction. Must be used together with order_by."},{"name":"page","type":"integer","required":false,"description":"Page number, 1-based (default 1). Use next_page from the previous reply."},{"name":"page_size","type":"integer","required":false,"description":"Results per page, 1-100 (default 100)."},{"name":"project_id","type":null,"required":false,"description":"Only entries of this project."},{"name":"start_time_range_end","type":"string","required":false,"description":"Only entries started at or before this time, RFC 3339."},{"name":"start_time_range_start","type":"string","required":false,"description":"Only entries started at or after this time, RFC 3339, e.g. 2026-10-01T00:00:00Z."},{"name":"task_id","type":null,"required":false,"description":"Only entries of this task."},{"name":"user_id","type":null,"required":false,"description":"Only entries of this user (from papierkram_list_users)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":263},{"name":"papierkram_get_time_entry","title":null,"description":"Get one time entry by id.","inputs":[{"name":"id","type":null,"required":true,"description":"Time entry id (from papierkram_list_time_entries)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":35},{"name":"papierkram_list_bank_connections","title":null,"description":"List the bank accounts connected to Papierkram (name, IBAN, balance data as Papierkram reports it). Paged.","inputs":[{"name":"order_by","type":"string","required":false,"description":"Field to sort by, e.g. document_date. Must be used together with order_direction."},{"name":"order_direction","type":"string","required":false,"description":"Sort direction. Must be used together with order_by."},{"name":"page","type":"integer","required":false,"description":"Page number, 1-based (default 1). Use next_page from the previous reply."},{"name":"page_size","type":"integer","required":false,"description":"Results per page, 1-100 (default 100)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":128},{"name":"papierkram_list_bank_transactions","title":null,"description":"List bank transactions (value, currency, usage text, booking date, counterparty). Filter by bank connection. Paged.","inputs":[{"name":"bank_connection_id","type":null,"required":false,"description":"Only transactions of this bank connection (from papierkram_list_bank_connections)."},{"name":"order_by","type":"string","required":false,"description":"Field to sort by, e.g. document_date. Must be used together with order_direction."},{"name":"order_direction","type":"string","required":false,"description":"Sort direction. Must be used together with order_by."},{"name":"page","type":"integer","required":false,"description":"Page number, 1-based (default 1). Use next_page from the previous reply."},{"name":"page_size","type":"integer","required":false,"description":"Results per page, 1-100 (default 100)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":147},{"name":"papierkram_get_bank_transaction","title":null,"description":"Get one bank transaction by id.","inputs":[{"name":"id","type":null,"required":true,"description":"Transaction id (from papierkram_list_bank_transactions)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":34},{"name":"papierkram_list_users","title":null,"description":"List the users of the account (ids needed as user_id for time entries and tasks).","inputs":[{"name":"order_by","type":"string","required":false,"description":"Field to sort by, e.g. document_date. Must be used together with order_direction."},{"name":"order_direction","type":"string","required":false,"description":"Sort direction. Must be used together with order_by."},{"name":"page","type":"integer","required":false,"description":"Page number, 1-based (default 1). Use next_page from the previous reply."},{"name":"page_size","type":"integer","required":false,"description":"Results per page, 1-100 (default 100)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":118},{"name":"papierkram_get_user","title":null,"description":"Get one user by id.","inputs":[{"name":"id","type":null,"required":true,"description":"User id (from papierkram_list_users)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":31},{"name":"papierkram_create_company","title":null,"description":"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).","inputs":[{"name":"bank_bic","type":"string","required":false,"description":"BIC."},{"name":"bank_iban","type":"string","required":false,"description":"IBAN."},{"name":"contact_type","type":"string","required":true,"description":"customer or supplier (required)."},{"name":"delivery_method","type":"string","required":false,"description":"How documents are delivered to this contact."},{"name":"email","type":"string","required":false,"description":"E-mail address."},{"name":"name","type":"string","required":true,"description":"Company name."},{"name":"notes","type":"string","required":false,"description":"Internal notes."},{"name":"phone","type":"string","required":false,"description":"Phone."},{"name":"postal_city","type":"string","required":false,"description":"Postal address: city."},{"name":"postal_country","type":"string","required":false,"description":"Postal address: country."},{"name":"postal_street","type":"string","required":false,"description":"Postal address: street and number."},{"name":"postal_zip","type":"string","required":false,"description":"Postal address: ZIP."},{"name":"ust_idnr","type":"string","required":false,"description":"VAT id (USt-IdNr.), e.g. DE123456789."},{"name":"website","type":"string","required":false,"description":"Website."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":244},{"name":"papierkram_update_company","title":null,"description":"WRITE: change fields of an existing contact (only the fields you pass are changed). Read it first with papierkram_get_company.","inputs":[{"name":"bank_bic","type":"string","required":false,"description":"BIC."},{"name":"bank_iban","type":"string","required":false,"description":"IBAN."},{"name":"contact_type","type":"string","required":false,"description":"customer or supplier."},{"name":"delivery_method","type":"string","required":false,"description":"How documents are delivered to this contact."},{"name":"email","type":"string","required":false,"description":"E-mail address."},{"name":"id","type":null,"required":true,"description":"Company id."},{"name":"name","type":"string","required":false,"description":"New company name."},{"name":"notes","type":"string","required":false,"description":"Internal notes."},{"name":"phone","type":"string","required":false,"description":"Phone."},{"name":"postal_city","type":"string","required":false,"description":"Postal address: city."},{"name":"postal_country","type":"string","required":false,"description":"Postal address: country."},{"name":"postal_street","type":"string","required":false,"description":"Postal address: street and number."},{"name":"postal_zip","type":"string","required":false,"description":"Postal address: ZIP."},{"name":"ust_idnr","type":"string","required":false,"description":"VAT id (USt-IdNr.), e.g. DE123456789."},{"name":"website","type":"string","required":false,"description":"Website."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":214},{"name":"papierkram_create_person","title":null,"description":"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).","inputs":[{"name":"comment","type":"string","required":false,"description":"Comment."},{"name":"company_id","type":null,"required":true,"description":"Company id."},{"name":"department","type":"string","required":false,"description":"Department."},{"name":"email","type":"string","required":false,"description":"E-mail address."},{"name":"first_name","type":"string","required":true,"description":"First name."},{"name":"last_name","type":"string","required":true,"description":"Last name."},{"name":"mobile","type":"string","required":false,"description":"Mobile phone."},{"name":"phone","type":"string","required":false,"description":"Phone."},{"name":"position","type":"string","required":false,"description":"Position."},{"name":"salutation","type":"string","required":false,"description":"Salutation, e.g. Herr or Frau."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":148},{"name":"papierkram_create_project","title":null,"description":"WRITE: create a project for a customer. Costs Papierkram API credits (a create 10, an invoice 50; the monthly quota is limited).","inputs":[{"name":"budget_money","type":"string","required":false,"description":"Money budget, e.g. 5000.00."},{"name":"budget_time","type":"string","required":false,"description":"Time budget in budget_time_unit."},{"name":"budget_time_unit","type":"string","required":false,"description":"Unit of budget_time."},{"name":"budget_type","type":"string","required":false,"description":"Budget kind; then pass budget_money or budget_time."},{"name":"customer_id","type":null,"required":true,"description":"Company id of the customer (from papierkram_list_companies)."},{"name":"description","type":"string","required":false,"description":"Description."},{"name":"end_date","type":"string","required":false,"description":"End date yyyy-mm-dd."},{"name":"name","type":"string","required":true,"description":"Project name."},{"name":"start_date","type":"string","required":false,"description":"Start date yyyy-mm-dd."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":169},{"name":"papierkram_create_task","title":null,"description":"WRITE: create a time-tracking task in a project. Costs Papierkram API credits (a create 10, an invoice 50; the monthly quota is limited).","inputs":[{"name":"deadline","type":"string","required":false,"description":"Deadline yyyy-mm-dd."},{"name":"name","type":"string","required":true,"description":"Task name."},{"name":"project_id","type":null,"required":true,"description":"Project id (from papierkram_list_projects)."},{"name":"proposition_id","type":null,"required":false,"description":"Product/service id the time is billed with (from papierkram_list_propositions)."},{"name":"user_id","type":null,"required":false,"description":"User assigned to the task (from papierkram_list_users)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":121},{"name":"papierkram_create_time_entry","title":null,"description":"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).","inputs":[{"name":"comments","type":"string","required":false,"description":"What was done."},{"name":"ended_at_time","type":"string","required":true,"description":"End time HH:MM."},{"name":"entry_date","type":"string","required":true,"description":"Day of the work, yyyy-mm-dd."},{"name":"started_at_time","type":"string","required":true,"description":"Start time HH:MM."},{"name":"task_id","type":null,"required":true,"description":"Task id (from papierkram_list_tasks)."},{"name":"unbillable","type":"boolean","required":false,"description":"True when the time must not be billed."},{"name":"user_id","type":null,"required":true,"description":"User who worked (from papierkram_list_users)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":159},{"name":"papierkram_create_proposition","title":null,"description":"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).","inputs":[{"name":"article_no","type":"string","required":true,"description":"Article number."},{"name":"description","type":"string","required":false,"description":"Description."},{"name":"name","type":"string","required":true,"description":"Name."},{"name":"price","type":"string","required":false,"description":"Net unit price, e.g. 99.50."},{"name":"proposition_type","type":"string","required":true,"description":"service, product or ecommerce."},{"name":"time_unit","type":"string","required":true,"description":"Time unit used for time tracking with this item."},{"name":"unit_name_1","type":"string","required":false,"description":"Unit name singular, e.g. Stunde."},{"name":"unit_name_n","type":"string","required":false,"description":"Unit name plural, e.g. Stunden."},{"name":"vat_rate","type":"string","required":true,"description":"VAT rate as Papierkram writes it, e.g. 19% (see vat_rate.name of an existing item from papierkram_get_proposition)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":201},{"name":"papierkram_create_invoice","title":null,"description":"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).","inputs":[{"name":"contact_person_id","type":null,"required":false,"description":"Contact person of the customer (from papierkram_list_persons)."},{"name":"custom_template_id","type":null,"required":false,"description":"Custom invoice template id (from papierkram_get_info)."},{"name":"customer_id","type":null,"required":true,"description":"Company id of the customer (from papierkram_list_companies)."},{"name":"description","type":"string","required":false,"description":"Notes shown on the invoice."},{"name":"document_date","type":"string","required":false,"description":"Invoice date yyyy-mm-dd (default today)."},{"name":"gross","type":"boolean","required":false,"description":"False (default): prices are net. True: prices are gross."},{"name":"line_items","type":"array","required":true,"description":"The invoice lines."},{"name":"name","type":"string","required":true,"description":"Invoice title/subject."},{"name":"payment_term_id","type":null,"required":true,"description":"Payment term id (from papierkram_list_payment_terms)."},{"name":"project_id","type":null,"required":false,"description":"Project the invoice belongs to."},{"name":"supply_date","type":"string","required":false,"description":"Supply/service date or period as text, e.g. 01.10.2026 - 14.10.2026."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":290},{"name":"papierkram_get_voucher_pdf","title":null,"description":"Get the PDF that Papierkram makes for one expense voucher (GET /expense/vouchers/{id}/pdf). The API reference does not say whether it embeds the uploaded receipt; for the original uploaded file use papierkram_get_voucher_document. Returns the PDF as an embedded file (up to 3 MB).","inputs":[{"name":"id","type":null,"required":true,"description":"Voucher id (from papierkram_list_vouchers)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":92},{"name":"papierkram_get_voucher_document","title":null,"description":"Get an original file uploaded to an expense voucher (a receipt PDF or image), so its content can be read. Reads the voucher (papierkram_get_voucher) and fetches documents[].uri. Images come back as images, PDFs as an embedded file (up to 3 MB). The API has no documented download for one document: if Papierkram does not serve the file to an API token, the tool says so; then use papierkram_get_voucher_pdf. Files that are not yet attached to a voucher (the upload inbox) are not reachable through the Papierkram API.","inputs":[{"name":"document_id","type":null,"required":false,"description":"Document id (documents[].id of papierkram_get_voucher). Needed only when the voucher has more than one document."},{"name":"voucher_id","type":null,"required":true,"description":"Voucher id (from papierkram_list_vouchers)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":181},{"name":"papierkram_upload_voucher_document","title":null,"description":"WRITE: attach a file (receipt PDF or image) to an existing expense voucher (POST /expense/vouchers/{id}/documents). The file is given as base64, up to 3 MB. Check papierkram_get_voucher first: a repeated upload attaches the file twice. Costs 10 Papierkram API credits.","inputs":[{"name":"content_base64","type":"string","required":true,"description":"The file content as standard base64."},{"name":"filename","type":"string","required":true,"description":"File name, e.g. receipt-2026-10-31.pdf."},{"name":"mime_type","type":"string","required":true,"description":"Media type of the file."},{"name":"voucher_id","type":null,"required":true,"description":"Voucher id (from papierkram_list_vouchers or papierkram_create_voucher)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":154},{"name":"papierkram_create_voucher","title":null,"description":"WRITE: book an expense voucher (Beleg) in Papierkram, e.g. from a receipt. Papierkram books it at once (state unpaid, no draft), so this tool works in two steps. Without confirm it creates nothing: it returns the exact request and possible duplicates (same document date, creditor and total) for the user to review. After the user approves, call again with the same arguments and confirm: true. Then attach the file with papierkram_upload_voucher_document and record a payment with papierkram_pay_voucher. Asset categories that need a depreciation (AfA) setting must be finished in Papierkram. Costs 50 Papierkram API credits; each duplicate check reads 1.","inputs":[{"name":"allow_duplicate","type":"boolean","required":false,"description":"True only after the user confirmed that a reported possible duplicate is a different voucher."},{"name":"confirm","type":"boolean","required":false,"description":"False or missing: preview only, nothing is created. True: book the voucher now."},{"name":"creditor_id","type":null,"required":false,"description":"Supplier company id (from papierkram_list_companies; it must be a supplier)."},{"name":"description","type":"string","required":false,"description":"Notes."},{"name":"document_date","type":"string","required":true,"description":"Receipt date yyyy-mm-dd (Belegdatum)."},{"name":"due_date","type":"string","required":false,"description":"Due date yyyy-mm-dd."},{"name":"entertainment_persons","type":"array","required":false,"description":"Guests of a business meal (Bewirtungskosten only)."},{"name":"entertainment_reason","type":"string","required":false,"description":"Reason of a business meal (Bewirtungskosten only)."},{"name":"flagged","type":"boolean","required":false,"description":"Mark the voucher for a later check."},{"name":"line_items","type":"array","required":true,"description":"The voucher lines."},{"name":"name","type":"string","required":true,"description":"Voucher title, e.g. the supplier and the receipt number."},{"name":"provenance","type":"string","required":true,"description":"Where the supplier is: domestic (Germany), eu or foreign."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":370},{"name":"papierkram_pay_voucher","title":null,"description":"WRITE: book a payment of an expense voucher (POST /expense/vouchers/{id}/pay), with a value and payment date or with an existing bank transaction. Without confirm it changes nothing: it reads the voucher and returns the exact request for the user to review. After approval, call again with confirm: true. A value that differs from the open amount needs difference_reason (teilzahlung = part payment, skonto = cash discount, mahnung = reminder fee, schmaelerung = reduction, sonstige = other). A repeated call books a second payment: after an error, check the voucher state with papierkram_get_voucher before retrying.","inputs":[{"name":"banking_transaction_id","type":null,"required":false,"description":"Bank transaction that paid the voucher (from papierkram_list_bank_transactions)."},{"name":"confirm","type":"boolean","required":false,"description":"False or missing: preview only, nothing is booked. True: book the payment now."},{"name":"difference_reason","type":"string","required":false,"description":"Why the value differs from the open amount."},{"name":"id","type":null,"required":true,"description":"Voucher id."},{"name":"payment_date","type":"string","required":false,"description":"Payment date yyyy-mm-dd (default: Papierkram's default, today)."},{"name":"value","type":"number","required":false,"description":"Paid amount. Needed unless banking_transaction_id is given."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":253},{"name":"papierkram_update_voucher","title":null,"description":"WRITE: change an existing expense voucher (PUT /expense/vouchers/{id}): title, supplier, provenance, dates, notes, flag or line items (amount, VAT rate, category). Only the fields you pass are changed. line_items REPLACES all lines of the voucher: pass the full new list. Without confirm it changes nothing: it reads the voucher and returns its current values next to the exact request for the user to review. After approval, call again with the same arguments and confirm: true. Papierkram refuses a voucher that can no longer be edited (e.g. a paid or locked one). Lines with a billing (re-invoicing) or depreciation (AfA) setting cannot be replaced here, so the tool refuses line_items for such a voucher; change those lines in Papierkram. Payments are booked with papierkram_pay_voucher. Costs 1 Papierkram API credit; the preview, and a confirmed line change, also read the voucher (1 each).","inputs":[{"name":"confirm","type":"boolean","required":false,"description":"False or missing: preview only, nothing is changed. True: change the voucher now."},{"name":"creditor_id","type":null,"required":false,"description":"New supplier company id (from papierkram_list_companies; it must be a supplier)."},{"name":"description","type":"string","required":false,"description":"New notes."},{"name":"document_date","type":"string","required":false,"description":"New receipt date yyyy-mm-dd (Belegdatum)."},{"name":"due_date","type":"string|null","required":false,"description":"New due date yyyy-mm-dd; null removes the due date."},{"name":"entertainment_persons","type":"array","required":false,"description":"Guests of a business meal (Bewirtungskosten only)."},{"name":"entertainment_reason","type":"string","required":false,"description":"Reason of a business meal (Bewirtungskosten only)."},{"name":"flagged","type":"boolean","required":false,"description":"Mark (true) or unmark (false) the voucher for a later check."},{"name":"id","type":null,"required":true,"description":"Voucher id (from papierkram_list_vouchers)."},{"name":"line_items","type":"array","required":false,"description":"The complete new list of voucher lines. It replaces ALL current lines."},{"name":"name","type":"string","required":false,"description":"New voucher title."},{"name":"provenance","type":"string","required":false,"description":"Where the supplier is: domestic (Germany), eu or foreign."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":439}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T15:02:55.000Z","track":"remote","endpoint":"https://papierkram.usefulapi.io/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=usefulapi.io","issuer":"CN=WE1,O=Google Trust Services,C=US","notBefore":"2026-09-13T08:55:39Z","notAfter":"2026-12-12T09:54:12Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=WE1,O=Google Trust Services,C=US","issuer":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","notBefore":"2023-12-13T09:00:00Z","notAfter":"2029-02-20T14:00:00Z","keyType":"ECDSA","keyBits":256,"isCa":true},{"subject":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","issuer":"CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE","notBefore":"2023-11-15T03:43:21Z","notAfter":"2028-01-28T00:00:42Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"papierkram.usefulapi.io.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"io.","outcome":"verified","label":"Verified"},{"zone":"usefulapi.io.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"inconclusive","label":"Inconclusive","gate":null,"gateLabel":null,"status":302,"authorizationServers":[]},"httpsRedirect":{"outcome":"inconclusive","label":"Inconclusive","status":302},"transports":[{"transport":"streamable-http","outcome":"redirected","label":"Redirected","status":302,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-25","recent":[{"id":"chg_01a19a09-40b1-709f-9d52-07826c98d33c","kind":"check.unverifiable","summary":"Stability (0.23 → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a19a09-40b1-709f-9d52-07826c98d33c"},{"id":"chg_01a19a09-40b2-70e2-93b4-a1b3526c3073","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a19a09-40b2-70e2-93b4-a1b3526c3073"},{"id":"chg_01a19a09-40b2-77bf-a2f6-a5359379640e","kind":"check.unverifiable","summary":"Authorization (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a19a09-40b2-77bf-a2f6-a5359379640e"},{"id":"chg_01a19a09-40b2-7dc5-a925-0eeb7d245ea8","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a19a09-40b2-7dc5-a925-0eeb7d245ea8"},{"id":"chg_01a19a09-40b3-735c-8062-3ceab6ace363","kind":"check.unverifiable","summary":"Capabilities (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a19a09-40b3-735c-8062-3ceab6ace363"},{"id":"chg_01a19a09-40b3-78a2-9d64-fafab0a1bf1d","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a19a09-40b3-78a2-9d64-fafab0a1bf1d"},{"id":"chg_01a19a09-40b3-7ea1-89cc-84a04cf26e5d","kind":"capture.status_changed","summary":"Endpoint reachability (reachable → not serving MCP)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a19a09-40b3-7ea1-89cc-84a04cf26e5d"},{"id":"chg_01a19a09-40b4-754e-968e-c8ccda2a9298","kind":"score.total_changed","summary":"Trust score (68 → 18)","materiality":"functional","direction":"regression","scoreDelta":-50,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a19a09-40b4-754e-968e-c8ccda2a9298"},{"id":"chg_01a194e2-7118-7e22-80c7-3a69acaaf6e0","kind":"score.total_changed","summary":"Trust score (67 → 68)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a194e2-7118-7e22-80c7-3a69acaaf6e0"},{"id":"chg_01a193fb-b7f8-7052-81e9-86aeb742e55b","kind":"check.verdict","summary":"Authorization (partial → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a193fb-b7f8-7052-81e9-86aeb742e55b"},{"id":"chg_01a193fb-b7f8-7c4c-92ae-167af4419c60","kind":"check.verdict","summary":"MCP protocol (fail → pass)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a193fb-b7f8-7c4c-92ae-167af4419c60"},{"id":"chg_01a193fb-b7fa-7041-8e36-9adb5a6a8fe4","kind":"prompt.added","summary":"New prompt “check_bank_connections_and_transactions”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a193fb-b7fa-7041-8e36-9adb5a6a8fe4"},{"id":"chg_01a193fb-b7fa-754b-8fed-ea8db7288c09","kind":"prompt.added","summary":"New prompt “check_tracked_hours_on_a_project”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a193fb-b7fa-754b-8fed-ea8db7288c09"},{"id":"chg_01a193fb-b7fa-7b30-92cc-abe99bf235de","kind":"prompt.added","summary":"New prompt “create_a_project_and_task_then_record_time”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a193fb-b7fa-7b30-92cc-abe99bf235de"},{"id":"chg_01a193fb-b7fb-713d-b0d8-25a9e785ec9d","kind":"prompt.added","summary":"New prompt “prepare_a_draft_invoice_or_add_a_contact”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a193fb-b7fb-713d-b0d8-25a9e785ec9d"},{"id":"chg_01a193fb-b7fb-7690-afaa-6c984ceff82d","kind":"prompt.added","summary":"New prompt “review_expense_vouchers_of_a_supplier”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a193fb-b7fb-7690-afaa-6c984ceff82d"},{"id":"chg_01a193fb-b7fb-7bc3-9d62-d1b35f29cfbe","kind":"prompt.added","summary":"New prompt “see_which_invoices_are_still_unpaid”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a193fb-b7fb-7bc3-9d62-d1b35f29cfbe"},{"id":"chg_01a193fb-b7fc-70b0-b9b0-a277ba9b7c07","kind":"server.version_changed","summary":"Server version (1.11.0 → 1.13.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a193fb-b7fc-70b0-b9b0-a277ba9b7c07"},{"id":"chg_01a193fb-b7fc-7543-bbd2-53b64c4b1a20","kind":"protocol.version_changed","summary":"MCP protocol version (2025-06-18 → 2025-11-25)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a193fb-b7fc-7543-bbd2-53b64c4b1a20"},{"id":"chg_01a193fb-b7fc-7aa1-a95b-bf951fea7cb2","kind":"score.total_changed","summary":"Trust score (65 → 67)","materiality":"functional","direction":"improvement","scoreDelta":2,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram#chg-chg_01a193fb-b7fc-7aa1-a95b-bf951fea7cb2"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram/changelog.json"},"links":{"html":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram","markdown":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram.md","changelogJson":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram/changelog.json","changelogRss":"https://verifymcp.io/servers/io-usefulapi-papierkram/papierkram.xml","external":[{"label":"Remote endpoint","href":"https://papierkram.usefulapi.io/mcp"},{"label":"Repository","href":"https://github.com/m190/usefulapi-mcp"},{"label":"Website","href":"https://usefulapi.io/papierkram/"}]}}