Papierkram MCP by usefulapi
io.usefulapi/papierkramusefulapi.iostreamable-httpv1.0.0Scanned
Read Papierkram invoices, vouchers, contacts, projects, time; create contacts, time, draft invoices.
33 tools: 1 can delete or cancel things, 7 change things and 25 only read.
- Reads private data · 4
- Reads text others write · 8
- Can send data out · 2
- No findings
Anlyon alternative
8 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
33 tools
Deletes or cancels 1Claude Code: deny
papierkram_update_companyWRITE: change fields of an existing contact (only the fields you pass are changed).Reads text others writeNo findings
Why it is in this group
- The name "papierkram_update_company" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it WRITE: change fields of an existing contact (only the fields you pass are changed). Read it first with papierkram_get_company.
Annotations the server declares
- title: Update company
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
Changes things 7Claude Code: ask
papierkram_create_companyWRITE: create a contact (company) in Papierkram.Reads text others writeCan send data outNo findings
Why it is in this group
- The name "papierkram_create_company" says "create": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe input takes a destination (input.phone): what the tool writes goes there.
Description, as the server wrote it 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).
Annotations the server declares
- title: Create company
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
papierkram_create_invoiceWRITE: 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).Reads text others writeNo findings
Why it is in this group
- The name "papierkram_create_invoice" says "create": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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).
Annotations the server declares
- title: Create draft invoice
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
papierkram_create_personWRITE: add a contact person to an existing company.Reads text others writeCan send data outNo findings
Why it is in this group
- The name "papierkram_create_person" says "create": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe input takes a destination (input.phone): what the tool writes goes there.
Description, as the server wrote it 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).
Annotations the server declares
- title: Create person
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
papierkram_create_projectWRITE: create a project for a customer.Reads text others writeNo findings
Why it is in this group
- The name "papierkram_create_project" says "create": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it WRITE: create a project for a customer. Costs Papierkram API credits (a create 10, an invoice 50; the monthly quota is limited).
Annotations the server declares
- title: Create project
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
papierkram_create_propositionWRITE: create a stored product or service (Leistung/Artikel) with a price.Reads text others writeNo findings
Why it is in this group
- The name "papierkram_create_proposition" says "create": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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).
Annotations the server declares
- title: Create product or service
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
papierkram_create_taskWRITE: create a time-tracking task in a project.Reads text others writeNo findings
Why it is in this group
- The name "papierkram_create_task" says "create": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it WRITE: create a time-tracking task in a project. Costs Papierkram API credits (a create 10, an invoice 50; the monthly quota is limited).
Annotations the server declares
- title: Create task
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
papierkram_create_time_entryWRITE: record a time entry (worked time) on a task.Reads text others writeNo findings
Why it is in this group
- The name "papierkram_create_time_entry" says "create": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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).
Annotations the server declares
- title: Create time entry
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
Only reads 25Show 25 read-only tools
papierkram_get_bank_transactionGet one bank transaction by id.No findings
Why it is in this group
- The name "papierkram_get_bank_transaction" says "get": a word for reading.
Description, as the server wrote it Get one bank transaction by id.
Annotations the server declares
- title: Get bank transaction
- readOnlyHint: true
papierkram_get_companyGet one contact (company) by id, with its people.Reads private dataNo findings
Why it is in this group
- The name "papierkram_get_company" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "get" and "contact": it reads contacts.
Description, as the server wrote it Get one contact (company) by id, with its people.
Annotations the server declares
- title: Get company
- readOnlyHint: true
papierkram_get_estimateGet one estimate with its line items.No findings
Why it is in this group
- The name "papierkram_get_estimate" says "get": a word for reading.
Description, as the server wrote it Get one estimate with its line items.
Annotations the server declares
- title: Get estimate
- readOnlyHint: true
papierkram_get_infoRead the API version and the account's custom invoice templates (ids usable as custom_template_id when creating an invoice).No findings
Why it is in this group
- The name "papierkram_get_info" says "get": a word for reading.
Description, as the server wrote it Read the API version and the account's custom invoice templates (ids usable as custom_template_id when creating an invoice).
Annotations the server declares
- title: Get account info
- readOnlyHint: true
papierkram_get_invoiceGet one outgoing invoice with its line items, billing address and payment term.No findings
Why it is in this group
- The name "papierkram_get_invoice" says "get": a word for reading.
Description, as the server wrote it Get one outgoing invoice with its line items, billing address and payment term.
Annotations the server declares
- title: Get invoice
- readOnlyHint: true
papierkram_get_personGet one contact person of a company.Reads private dataNo findings
Why it is in this group
- The name "papierkram_get_person" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "get" and "contact": it reads contacts.
Description, as the server wrote it Get one contact person of a company.
Annotations the server declares
- title: Get person
- readOnlyHint: true
papierkram_get_projectGet one project by id.No findings
Why it is in this group
- The name "papierkram_get_project" says "get": a word for reading.
Description, as the server wrote it Get one project by id.
Annotations the server declares
- title: Get project
- readOnlyHint: true
papierkram_get_propositionGet one stored product or service, including its vat_rate (name such as 19% and rate such as 0.19).No findings
Why it is in this group
- The name "papierkram_get_proposition" says "get": a word for reading.
Description, as the server wrote it Get one stored product or service, including its vat_rate (name such as 19% and rate such as 0.19).
Annotations the server declares
- title: Get product or service
- readOnlyHint: true
papierkram_get_taskGet one task by id.No findings
Why it is in this group
- The name "papierkram_get_task" says "get": a word for reading.
Description, as the server wrote it Get one task by id.
Annotations the server declares
- title: Get task
- readOnlyHint: true
papierkram_get_time_entryGet one time entry by id.No findings
Why it is in this group
- The name "papierkram_get_time_entry" says "get": a word for reading.
Description, as the server wrote it Get one time entry by id.
Annotations the server declares
- title: Get time entry
- readOnlyHint: true
papierkram_get_userGet one user by id.No findings
Why it is in this group
- The name "papierkram_get_user" says "get": a word for reading.
Description, as the server wrote it Get one user by id.
Annotations the server declares
- title: Get user
- readOnlyHint: true
papierkram_get_voucherGet one expense voucher with its line items.No findings
Why it is in this group
- The name "papierkram_get_voucher" says "get": a word for reading.
Description, as the server wrote it Get one expense voucher with its line items.
Annotations the server declares
- title: Get expense voucher
- readOnlyHint: true
papierkram_list_bank_connectionsList the bank accounts connected to Papierkram (name, IBAN, balance data as Papierkram reports it).No findings
Why it is in this group
- The name "papierkram_list_bank_connections" says "list": a word for reading.
Description, as the server wrote it List the bank accounts connected to Papierkram (name, IBAN, balance data as Papierkram reports it). Paged.
Annotations the server declares
- title: List bank connections
- readOnlyHint: true
papierkram_list_bank_transactionsList bank transactions (value, currency, usage text, booking date, counterparty).No findings
Why it is in this group
- The name "papierkram_list_bank_transactions" says "list": a word for reading.
Description, as the server wrote it List bank transactions (value, currency, usage text, booking date, counterparty). Filter by bank connection. Paged.
Annotations the server declares
- title: List bank transactions
- readOnlyHint: true
papierkram_list_companiesList contacts (companies: customers and suppliers) with address, VAT id and contact data.Reads private dataNo findings
Why it is in this group
- The name "papierkram_list_companies" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "list" and "contact": it reads contacts.
Description, as the server wrote it List contacts (companies: customers and suppliers) with address, VAT id and contact data. Paged.
Annotations the server declares
- title: List companies
- readOnlyHint: true
papierkram_list_estimatesList estimates (Angebote) with state, dates and totals.No findings
Why it is in this group
- The name "papierkram_list_estimates" says "list": a word for reading.
Description, as the server wrote it List estimates (Angebote) with state, dates and totals. Filter by company, project or document date range. Paged.
Annotations the server declares
- title: List estimates
- readOnlyHint: true
papierkram_list_invoicesList outgoing invoices (Ausgangsrechnungen) with state (draft, ...), dates, totals and outstanding_amount.No findings
Why it is in this group
- The name "papierkram_list_invoices" says "list": a word for reading.
Description, as the server wrote it List outgoing invoices (Ausgangsrechnungen) with state (draft, ...), dates, totals and outstanding_amount. Filter by company, project or document date range. Paged.
Annotations the server declares
- title: List invoices
- readOnlyHint: true
papierkram_list_payment_termsList the payment term templates (ids needed as payment_term_id when creating an invoice).No findings
Why it is in this group
- The name "papierkram_list_payment_terms" says "list": a word for reading.
Description, as the server wrote it List the payment term templates (ids needed as payment_term_id when creating an invoice).
Annotations the server declares
- title: List payment terms
- readOnlyHint: true
papierkram_list_personsList the contact persons of one company.Reads private dataNo findings
Why it is in this group
- The name "papierkram_list_persons" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "list" and "contact": it reads contacts.
Description, as the server wrote it List the contact persons of one company. Paged.
Annotations the server declares
- title: List persons of a company
- readOnlyHint: true
papierkram_list_projectsList projects with dates, budget and state.No findings
Why it is in this group
- The name "papierkram_list_projects" says "list": a word for reading.
Description, as the server wrote it List projects with dates, budget and state. Filter by company. Paged.
Annotations the server declares
- title: List projects
- readOnlyHint: true
papierkram_list_propositionsList the stored products and services (Leistungen/Artikel) with article number, price and unit (the VAT rate is only in papierkram_get_proposition).No findings
Why it is in this group
- The name "papierkram_list_propositions" says "list": a word for reading.
Description, as the server wrote it List the stored products and services (Leistungen/Artikel) with article number, price and unit (the VAT rate is only in papierkram_get_proposition). Paged.
Annotations the server declares
- title: List products and services
- readOnlyHint: true
papierkram_list_tasksList time-tracking tasks.No findings
Why it is in this group
- The name "papierkram_list_tasks" says "list": a word for reading.
Description, as the server wrote it List time-tracking tasks. Filter by project or product/service. Paged.
Annotations the server declares
- title: List tasks
- readOnlyHint: true
papierkram_list_time_entriesList tracked time entries.No findings
Why it is in this group
- The name "papierkram_list_time_entries" says "list": a word for reading.
Description, as the server wrote it List tracked time entries. Filter by project, task, invoice, user, billing state or start time range (RFC 3339 date-time). Paged.
Annotations the server declares
- title: List time entries
- readOnlyHint: true
papierkram_list_usersList the users of the account (ids needed as user_id for time entries and tasks).No findings
Why it is in this group
- The name "papierkram_list_users" says "list": a word for reading.
Description, as the server wrote it List the users of the account (ids needed as user_id for time entries and tasks).
Annotations the server declares
- title: List users
- readOnlyHint: true
papierkram_list_vouchersList expense vouchers (Belege / incoming invoices and receipts) with creditor, state, dates and amounts.No findings
Why it is in this group
- The name "papierkram_list_vouchers" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List expense vouchers
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
64 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 2 outbound tools breaks every one.
- Reads private data4
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write8
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out2
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
{
"permissions": {
"deny": [
"mcp__papierkram__papierkram_create_company",
"mcp__papierkram__papierkram_create_person"
]
}
}Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
No check matched anything in these tool definitions. That is not a safety guarantee.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http papierkram https://papierkram.usefulapi.io/mcpclaude mcp add --transport http papierkram https://papierkram.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__papierkram__papierkram_get_info",
"mcp__papierkram__papierkram_list_companies",
"mcp__papierkram__papierkram_get_company",
"mcp__papierkram__papierkram_list_persons",
"mcp__papierkram__papierkram_get_person",
"mcp__papierkram__papierkram_list_invoices",
"mcp__papierkram__papierkram_get_invoice",
"mcp__papierkram__papierkram_list_estimates",
"mcp__papierkram__papierkram_get_estimate",
"mcp__papierkram__papierkram_list_vouchers",
"mcp__papierkram__papierkram_get_voucher",
"mcp__papierkram__papierkram_list_payment_terms",
"mcp__papierkram__papierkram_list_propositions",
"mcp__papierkram__papierkram_get_proposition",
"mcp__papierkram__papierkram_list_projects",
"mcp__papierkram__papierkram_get_project",
"mcp__papierkram__papierkram_list_tasks",
"mcp__papierkram__papierkram_get_task",
"mcp__papierkram__papierkram_list_time_entries",
"mcp__papierkram__papierkram_get_time_entry",
"mcp__papierkram__papierkram_list_bank_connections",
"mcp__papierkram__papierkram_list_bank_transactions",
"mcp__papierkram__papierkram_get_bank_transaction",
"mcp__papierkram__papierkram_list_users",
"mcp__papierkram__papierkram_get_user"
],
"ask": [
"mcp__papierkram__papierkram_create_company",
"mcp__papierkram__papierkram_create_person",
"mcp__papierkram__papierkram_create_project",
"mcp__papierkram__papierkram_create_task",
"mcp__papierkram__papierkram_create_time_entry",
"mcp__papierkram__papierkram_create_proposition",
"mcp__papierkram__papierkram_create_invoice"
],
"deny": [
"mcp__papierkram__papierkram_update_company"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as papierkram. Review it before you use it.
Capability tags behind 12 rules
- mcp__papierkram__papierkram_list_companies private-data
- mcp__papierkram__papierkram_get_company private-data
- mcp__papierkram__papierkram_list_persons private-data
- mcp__papierkram__papierkram_get_person private-data
- mcp__papierkram__papierkram_create_company untrusted-input, outbound
- mcp__papierkram__papierkram_update_company untrusted-input
- mcp__papierkram__papierkram_create_person untrusted-input, outbound
- mcp__papierkram__papierkram_create_project untrusted-input
- mcp__papierkram__papierkram_create_task untrusted-input
- mcp__papierkram__papierkram_create_time_entry untrusted-input
- mcp__papierkram__papierkram_create_proposition untrusted-input
- mcp__papierkram__papierkram_create_invoice untrusted-input
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/io.usefulapi/papierkram/verify?hash=398938dfcab69782ed25328f27fff9842de45d349d3bbe8fc373160c157fd101" | jq -e '.changed == false'Pinned hash 398938dfcab6, from Oct 25, 2026, 19:19 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/io.usefulapi/papierkram/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/io.usefulapi/papierkram)Source: MCP Registry · repository. Synced Oct 25, 2026, 19:18 UTC.