# FrankKi MCP FrankKi gives an AI agent a controlled way to prepare and send physical letters. It can validate recipients, manage sender profiles and templates, draft and preview letters, quote postage, submit a send for explicit human approval, dispatch approved mail, and read delivery and archive state. The tool surface also covers letter design, attachments, scheduling, company address search, structured documents, and wallet operations. ## Connection - Transport: Streamable HTTP, POST https://mcp.frankki.app/api/mcp/v1 - Pricing: https://frankki.app/en/pricing/business - The MCP lane is stateless. A client sends JSON-RPC messages to the transport path. ## Tool registry The current registry contains 64 model-facing tool definitions. The exact names below are read from the backend registry at request time and grouped for discovery. ### Account, profiles, and onboarding - `mcp_health` - `profile_get` - `wallet_balance` - `sender_profile_list` - `sender_profile_get` - `sender_profile_validate` - `sender_profile_upsert` - `analytics_summary` - `setup_fix_link` ### Recipients and addresses - `mandant_get` - `mandant_list` - `mandant_search` - `address_upsert` - `address_list` - `address_validate` - `address_search_company` ### Templates and documents - `template_list` - `template_get` - `template_apply_with_merge_fields` - `template_diff_check` - `template_save` - `template_release` - `template_archive` - `template_draft_discard` - `template_preview` - `document_create` - `document_list` - `document_get` ### Letters and letter design - `letter_get` - `letter_list` - `letter_search` - `letter_create_draft` - `letter_preview` - `attachment_upload_pdf` - `attachment_upload_image` - `preset_save` - `signature_upload` - `letterhead_upload` - `letter_design_save` - `letter_design_list` - `letter_design_delete` - `letter_design_preview` - `letter_design_list_presets` - `brand_kit_get` - `brand_kit_save` - `brand_import_from_website` - `signature_list` - `letterhead_list` ### Pricing, approvals, and delivery - `shipping_quote` - `pricing_tiers` - `order_status` - `order_einlieferungsbeleg` - `order_send` - `approval_list` - `approval_submit` - `approval_decide` - `order_cancel` - `wallet_topup_link` - `order_send_batch` - `order_fix_resubmit` ### Scheduling and archive - `letter_schedule` - `schedule_list_or_cancel` - `archive_export` - `archive_export_status` ## Anonymous access Exactly four tools are exposed to an unauthenticated, single, non-batched `tools/list` request when the anonymous manifest is enabled: - `mcp_health` - `pricing_tiers` - `shipping_quote` - `address_validate` Those four names are the anonymous manifest. An unauthenticated client cannot call tools, and the manifest does not grant access to any other tool. ## Authenticated access The other 60 registered model-facing tools require a valid FrankKi MCP credential: - `profile_get` - `wallet_balance` - `sender_profile_list` - `sender_profile_get` - `mandant_get` - `mandant_list` - `mandant_search` - `template_list` - `template_get` - `letter_get` - `letter_list` - `sender_profile_validate` - `sender_profile_upsert` - `analytics_summary` - `address_upsert` - `address_list` - `template_apply_with_merge_fields` - `letter_create_draft` - `attachment_upload_pdf` - `attachment_upload_image` - `order_status` - `order_einlieferungsbeleg` - `order_send` - `approval_list` - `approval_submit` - `approval_decide` - `setup_fix_link` - `order_cancel` - `wallet_topup_link` - `template_diff_check` - `template_save` - `template_release` - `template_archive` - `template_draft_discard` - `preset_save` - `signature_upload` - `letterhead_upload` - `letter_design_save` - `letter_design_list` - `letter_design_delete` - `letter_design_preview` - `letter_design_list_presets` - `brand_kit_get` - `brand_kit_save` - `brand_import_from_website` - `signature_list` - `letterhead_list` - `letter_schedule` - `schedule_list_or_cancel` - `order_send_batch` - `address_search_company` - `letter_search` - `archive_export` - `archive_export_status` - `order_fix_resubmit` - `letter_preview` - `template_preview` - `document_create` - `document_list` - `document_get` Authentication uses a scoped Bearer API key in the `Authorization` header. The server resolves the partner identity and scopes from the credential. OAuth 2.1 with dynamic client registration is also implemented as the remote-auth front door when enabled, with the protected-resource metadata under the MCP host's `/.well-known` routes. A valid credential still needs the scope and business policy required by the selected tool. ## Anonymous manifest behavior The anonymous exception is narrow and read-only. It applies only when there is no Authorization header, the request is one non-batched `tools/list`, and the manifest kill switch has not been set to the literal value `false`. The response contains reduced metadata for exactly the four names above, without private UI metadata. Anonymous `tools/call`, other MCP methods, batched requests, and requests with a present but invalid credential require authentication and return an authorization error. Every physical dispatch remains subject to FrankKi's explicit human approval flow. Prices must be obtained from the server with `shipping_quote` before sending, and the wallet and tool policies remain server-authoritative.