{"$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-05T20:27:48.443Z","url":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp","markdownUrl":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp.md","server":{"slug":"de-konverter-pro-konverter-pro","name":"Konverter Pro","registryName":"de.konverter-pro/konverter-pro","description":"German bank statements, PayPal, SumUp and Stripe reports to verified DATEV, Lexware or MT940","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"api-v1-mcp","type":"remote","identifier":"https://konverter-pro.de/api/v1/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp","version":"1.0.0","transport":null,"scoredAt":"2026-11-05T08:27:33.531Z"},"score":{"total":71,"tier":"medium","status":"scored","weekDelta":null,"history":[{"date":"2026-11-05","total":71},{"date":"2026-11-04","total":71},{"date":"2026-11-03","total":70},{"date":"2026-11-02","total":70},{"date":"2026-11-01","total":70},{"date":"2026-10-31","total":69}]},"categories":[{"name":"Endpoint Security","score":80,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation.","HTTPS is enforced; there's no plaintext access path.","The HSTS (Strict-Transport-Security) header is present.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.none_no_destructive","args":{}},{"code":"https.enforced","args":{}},{"code":"headers.hsts_present","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":100,"verdict":"pass","reasons":["Verified streamable-http transport via a live MCP handshake."],"codes":[{"code":"transport.verified","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":59,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Context-footprint check failed: tool/resource definitions use about 1967 tokens (~245/item across 8 items; 8 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_heavy","args":{"avg":"245","items":"8","tools":"8","tokens":"1967","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":17,"verdict":"partial","reasons":["Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"5"}}]},{"name":"Tool Coverage","score":97,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","92% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"92"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 8 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 9 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"8"}},{"code":"toolsafety.manipulation_clean","args":{"units":"9","judged":"9"}}]},{"name":"Capabilities","score":60,"verdict":"fail","reasons":["Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28."],"codes":[{"code":"protocol.outdated","args":{"latest":"2026-07-28","version":"2025-06-18"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"api-v1-mcp","type":"remote","identifier":"https://konverter-pro.de/api/v1/mcp","withdrawn":false,"score":71,"current":true,"url":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp","markdownUrl":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp.md"}],"facts":[{"label":"Endpoint","value":"https://konverter-pro.de/api/v1/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.0.0"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"upload_statements","title":"Upload bank statements or payment reports","description":"Start a conversion job (or add files to one with job_token): German bank statements (PDF, CSV, MT940, camt.053/052 XML, photos) or payment-provider reports (PayPal, SumUp, Stripe, Amazon, Shopify ...) to DATEV (default), Lexware or MT940. Pass each file as content_base64 or a public https url (Konverter Pro's server then fetches it). Returns a job_token for all further tools. Without a KP API key the job is anonymous: free preview, pay per job for the final file; it uses no AI unless allow_ai is true (see allow_ai: only after your user's explicit consent), so photos and scans need allow_ai. An anonymous job expires 7 days after creation; its files and data are then deleted, usually within one more day. With an API key the job belongs to the customer's account, whose AI settings and retention apply.","inputs":[{"name":"allow_ai","type":"boolean","required":false,"description":"For anonymous jobs (created without an API key): allow Konverter Pro to use AI (Microsoft Azure OpenAI in the EU) for this job: reading photos, scans and PDF pages, including PDFs with text whose lay…"},{"name":"chart","type":"string","required":false,"description":"Chart of accounts of a new anonymous job (default SKR03). Ask the user if unsure."},{"name":"client_number","type":"string","required":false,"description":"API key only: the Mandantennummer of the profile to use."},{"name":"datev","type":"object","required":false,"description":"DATEV header data from the user's tax office. Required for DATEV files of anonymous jobs: berater_nummer (4-7 digits) and mandanten_nummer (1-5 digits). Optional fiscal_year_start (YYYY-MM-DD, first…"},{"name":"files","type":"array","required":true,"description":null},{"name":"force_duplicate","type":"boolean","required":false,"description":"Read a file again that was uploaded before."},{"name":"job_token","type":"string","required":false,"description":"Add files to this existing job."},{"name":"language","type":"string","required":false,"description":"Language of messages (default de)."},{"name":"target_format","type":"string","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":611},{"name":"get_job_status","title":"Job status and verification","description":"Per file: processing state, KP's verification (pages and bookings read, balance check, all records read), readiness for the target format with blockers, open questions and the next step. Poll every few seconds until every file is read.","inputs":[{"name":"job_token","type":"string","required":true,"description":"The job_token returned by upload_statements."},{"name":"language","type":"string","required":false,"description":"Language of messages (default de)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":85},{"name":"list_open_questions","title":"Open account questions","description":"Bookings KP could not assign to an account with certainty, grouped like KP's review (by booking type, counterparty or single booking), each with KP's proposal, count, total and examples. Answer them with answer_questions.","inputs":[{"name":"file_id","type":"string","required":false,"description":"A file_id from get_job_status; optional when the job has one file."},{"name":"job_token","type":"string","required":true,"description":"The job_token returned by upload_statements."},{"name":"language","type":"string","required":false,"description":"Language of messages (default de)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":107},{"name":"answer_questions","title":"Answer account questions","description":"Assign an account (4-8 digits, the user's chart) to whole question groups. For a booking type the answer is remembered for future files of the same client unless remember=false. A revenue account on a group with direction expense (money out) is only usual for refunds or credit notes: ask your user before answering, then pass acknowledge_revenue_on_money_out=true. Without it the answer is applied with a warning in the result (code revenue_on_money_out); an answered question cannot be answered again here, corrections are made in the review on konverter-pro.de.","inputs":[{"name":"answers","type":"array","required":true,"description":null},{"name":"job_token","type":"string","required":true,"description":"The job_token returned by upload_statements."},{"name":"language","type":"string","required":false,"description":"Language of messages (default de)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":159},{"name":"get_preview","title":"Free preview file","description":"A free preview of the output (for unpaid jobs the first pages, marked as a draft so it is not imported by mistake). Returns a download link valid for 1 hour.","inputs":[{"name":"account_iban","type":"string","required":false,"description":"MT940 only: IBAN of the statement's account."},{"name":"closing_balance","type":"string","required":false,"description":"MT940 only: balance after the last booking; with opening_balance it proves a statement without balances complete."},{"name":"datev","type":"object","required":false,"description":"DATEV header data from the user's tax office. Required for DATEV files of anonymous jobs: berater_nummer (4-7 digits) and mandanten_nummer (1-5 digits). Optional fiscal_year_start (YYYY-MM-DD, first…"},{"name":"file_id","type":"string","required":false,"description":"A file_id from get_job_status; optional when the job has one file."},{"name":"format","type":"string","required":false,"description":"Output format; default: the job's target_format."},{"name":"job_token","type":"string","required":true,"description":"The job_token returned by upload_statements."},{"name":"language","type":"string","required":false,"description":"Language of messages (default de)."},{"name":"opening_balance","type":"string","required":false,"description":"MT940 only: balance before the first booking, e.g. 1234.56; omit when the statement shows it."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":267},{"name":"get_price_quote","title":"Price quote","description":"The price of the job's ready, unpaid files: units (1 page with bookings, or 25 bookings) x unit price, with a minimum per job, net plus VAT. With a KP API key the customer's plan pays instead.","inputs":[{"name":"job_token","type":"string","required":true,"description":"The job_token returned by upload_statements."},{"name":"language","type":"string","required":false,"description":"Language of messages (default de)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":86},{"name":"create_payment_link","title":"Payment link","description":"A Stripe payment page for the quoted files (card and other methods, invoice with VAT). Show the link to your user; once paid, download_result releases the final files. A new link replaces the previous one.","inputs":[{"name":"job_token","type":"string","required":true,"description":"The job_token returned by upload_statements."},{"name":"language","type":"string","required":false,"description":"Language of messages (default de)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":81},{"name":"download_result","title":"Download the final file","description":"The final, verified file (DATEV Buchungsstapel, Lexware CSV or MT940) once it is ready and paid (or covered by the API key's plan). Returns download links valid for 1 hour and the verification. DATEV needs datev.berater_nummer and datev.mandanten_nummer for anonymous jobs; MT940 needs account_iban.","inputs":[{"name":"account_iban","type":"string","required":false,"description":"MT940 only: IBAN of the statement's account."},{"name":"closing_balance","type":"string","required":false,"description":"MT940 only: balance after the last booking; with opening_balance it proves a statement without balances complete."},{"name":"datev","type":"object","required":false,"description":"DATEV header data from the user's tax office. Required for DATEV files of anonymous jobs: berater_nummer (4-7 digits) and mandanten_nummer (1-5 digits). Optional fiscal_year_start (YYYY-MM-DD, first…"},{"name":"file_id","type":"string","required":false,"description":"A file_id from get_job_status; optional when the job has one file."},{"name":"format","type":"string","required":false,"description":"Output format; default: the job's target_format."},{"name":"job_token","type":"string","required":true,"description":"The job_token returned by upload_statements."},{"name":"language","type":"string","required":false,"description":"Language of messages (default de)."},{"name":"opening_balance","type":"string","required":false,"description":"MT940 only: balance before the first booking, e.g. 1234.56; omit when the statement shows it."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":307}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T08:27:33.000Z","track":"remote","endpoint":"https://konverter-pro.de/api/v1/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=konverter-pro.de","issuer":"CN=YE2,O=Let's Encrypt,C=US","notBefore":"2026-10-30T22:15:53Z","notAfter":"2027-01-28T22:15:52Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=YE2,O=Let's Encrypt,C=US","issuer":"CN=Root YE,O=ISRG,C=US","notBefore":"2025-09-03T00:00:00Z","notAfter":"2028-09-02T23:59:59Z","keyType":"ECDSA","keyBits":384,"isCa":true},{"subject":"CN=Root YE,O=ISRG,C=US","issuer":"CN=ISRG Root X2,O=Internet Security Research Group,C=US","notBefore":"2026-05-13T00:00:00Z","notAfter":"2032-09-02T23:59:59Z","keyType":"ECDSA","keyBits":384,"isCa":true},{"subject":"CN=ISRG Root X2,O=Internet Security Research Group,C=US","issuer":"CN=ISRG Root X1,O=Internet Security Research Group,C=US","notBefore":"2026-05-13T00:00:00Z","notAfter":"2032-09-02T23:59:59Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"konverter-pro.de.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"de.","outcome":"verified","label":"Verified"},{"zone":"konverter-pro.de.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"none","label":"No authorisation required","gate":null,"gateLabel":null,"status":200,"authorizationServers":[]},"httpsRedirect":{"outcome":"https_enforced","label":"HTTPS enforced","status":301},"transports":[{"transport":"streamable-http","outcome":"verified","label":"Verified","status":200,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-31","recent":[{"id":"chg_01a1a5a7-a14c-7d0c-8c1c-c6f9a9119f21","kind":"score.total_changed","summary":"Trust score (70 → 71)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp#chg-chg_01a1a5a7-a14c-7d0c-8c1c-c6f9a9119f21"},{"id":"chg_01a1a083-4409-792d-9514-15298e65d8a1","kind":"check.measure","summary":"Schema quality (188 → 245)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp#chg-chg_01a1a083-4409-792d-9514-15298e65d8a1"},{"id":"chg_01a1a083-440b-72a0-af10-5df14690a8ec","kind":"tool.description_changed","summary":"Tool “answer_questions” rewrote its description, which is the text the model reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp#chg-chg_01a1a083-440b-72a0-af10-5df14690a8ec"},{"id":"chg_01a1a083-440d-7184-ac9b-ab0fc74a187d","kind":"tool.description_changed","summary":"Tool “upload_statements” rewrote its description, which is the text the model reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp#chg-chg_01a1a083-440d-7184-ac9b-ab0fc74a187d"},{"id":"chg_01a1a083-440d-7869-be09-2221d486a2a8","kind":"param.added_optional","summary":"“upload_statements” added an optional parameter “allow_ai”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp#chg-chg_01a1a083-440d-7869-be09-2221d486a2a8"},{"id":"chg_01a1a083-440d-7dce-961d-ee5683348965","kind":"server.instructions_changed","summary":"The server rewrote its instructions, which are the text every model session reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp#chg-chg_01a1a083-440d-7dce-961d-ee5683348965"},{"id":"chg_01a19631-13d3-78e9-a377-4b711cd9b7bd","kind":"check.reverified","summary":"Stability (unverified → 0.03)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp#chg-chg_01a19631-13d3-78e9-a377-4b711cd9b7bd"},{"id":"chg_01a19631-13d4-73b3-9c22-0db17688ac7d","kind":"score.total_changed","summary":"Trust score (69 → 70)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp#chg-chg_01a19631-13d4-73b3-9c22-0db17688ac7d"},{"id":"chg_01a191d6-1603-7d84-8c21-1b2ed9167bba","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp#chg-chg_01a191d6-1603-7d84-8c21-1b2ed9167bba"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp/changelog.json"},"links":{"html":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp","markdown":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp.md","changelogJson":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp/changelog.json","changelogRss":"https://verifymcp.io/servers/de-konverter-pro-konverter-pro/api-v1-mcp.xml","external":[{"label":"Remote endpoint","href":"https://konverter-pro.de/api/v1/mcp"},{"label":"Website","href":"https://konverter-pro.de/"}]}}