The Echtpost MCP connector routes your AI agent's tool calls to Echtpost's own MCP server through Scalekit. Each user signs in to Echtpost once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 22 tools.
- Tools
- 22
- What they doRead · write · destructive
- 0 · 22 · 00 read22 write0 destructive
- Users sign in with
- OAuth
- OAuth app
- Your own Echtpost MCP server app
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Echtpost MCP connection
In AgentKit > Connections, create an Echtpost MCP connection and copy its redirect URI. The name you give it is the
connection_nameyour code passes. See Configure connections.Register an OAuth app
Echtpost MCP server connections use your own OAuth app. Register one with Echtpost MCP server and add the redirect URI you copied.
Then enter the app's Client ID and Client Secret on the Echtpost MCP connection.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'echtpostmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Echtpost MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'echtpostmcp_get_me',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "echtpostmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Echtpost MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="echtpostmcp_get_me",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolechtpostmcp_cancel_cardCancel a scheduled postcard.WriteCancel Card
Cancel a scheduled postcard. Only cards where "cancelable" is true can be cancelled. Cancellation is asynchronous and may take a few minutes.
Inputs
idstringrequired- UUID of the card to cancel.
echtpostmcp_create_cardCreate a postcard with custom message and font.WriteCreate Card
Create a postcard with custom message and font. Validates that text fits on the card. Use preview_fit first to check if your message fits. Specify recipients via existing contact IDs, group IDs, or inline recipient objects (combinable). For simpler creation from a saved template, use create_card_from_template instead.
Inputs
contentstringrequired- Main message text to print on the postcard.
deliver_atstringrequired- Delivery date. Accepted values: today, tomorrow, YYYY-MM-DD, or N-days-from-now.
motive_idintegerrequired- Numeric ID of the motive (front image design) to use on the card.
content_psstring- Optional postscript line printed after the main message (P.S.).
content_verticalstring- Optional text printed in the vertical side panel of the card.
font_colorstring- Font color for the card text. Accepted values: black, blue.
font_familystring- Font family for the card text. Accepted values: architects_daughter, reenie_beanie, special_elite.
font_sizeinteger- Font size in pt. Allowed ranges: architects_daughter 12–14, reenie_beanie 15–17, special_elite 11–13.
group_idsarray- Array of contact group IDs. All members of each group receive the card.
notification_emailstring- Email address to receive delivery notifications.
notification_send_onstring- Date to send the notification (ISO 8601, YYYY-MM-DD). Defaults to the delivery date.
notification_typestring- When to send a delivery notification. Accepted values: before_send, after_sent.
qr_code_urlstring- URL to encode as a QR code printed on the card.
recipient_idsarray- Array of existing contact IDs to send the card to.
recipientsarray- Array of inline recipient objects. Each requires last_name, street, zip, city, and country_code.
echtpostmcp_create_card_from_templateCreate a postcard from an existing template.WriteCreate Card From Template
Create a postcard from an existing template. The template provides the message, font, and motive. Specify recipients via existing contact IDs, group IDs, or inline recipient objects (combinable). Use list_templates to find templates.
Inputs
deliver_atstringrequired- Delivery date. Accepted values: today, tomorrow, YYYY-MM-DD, or N-days-from-now.
template_idintegerrequired- Numeric ID of the template to use for this card.
group_idsarray- Array of contact group IDs. All members of each group receive the card.
recipient_idsarray- Array of existing contact IDs to send the card to.
recipientsarray- Array of inline recipient objects. Each requires last_name, street, zip, city, and country_code.
echtpostmcp_create_contactCreate a new contact for the account.WriteCreate Contact
Create a new contact for the account. At minimum, provide last_name and a postal address (street, zip, city, country_code). Optionally assign to groups via group_ids or group_names (group_names auto-creates groups if they do not exist).
Inputs
citystringrequired- City for the recipient's postal address.
country_codestringrequired- ISO 3166-1 alpha-2 country code (e.g. DE for Germany).
last_namestringrequired- Recipient's last name.
streetstringrequired- Street name and house number.
zipstringrequired- Postal code for the recipient's address.
birthdatestring- Contact's birthdate in ISO 8601 format (YYYY-MM-DD).
company_namestring- Company name for the recipient.
custom_salutationstring- Custom greeting line. Use when greeting_style is set to custom.
departmentstring- Department within the company.
external_idstring- Your own reference ID for this record.
first_namestring- Recipient's first name.
genderstring- Gender identifier. Accepted values: male_user, female_user, diverse_user.
greeting_stylestring- Greeting style for the card. Accepted values: formal, informal, custom.
group_idsarray- Array of contact group IDs. All members of each group receive the card.
group_namesarray- Array of group names. Groups are created automatically if they do not exist.
state_codestring- State or province code (e.g. BY for Bavaria).
titlestring- Academic or professional title (e.g. Dr., Prof.).
echtpostmcp_create_groupCreate a new contact group.WriteCreate Group
Create a new contact group. Provide a name; optionally an external_id for your own reference.
Inputs
namestringrequired- Group name.
external_idstring- Your own reference ID for this record.
echtpostmcp_delete_contactDelete a contact by ID.WriteDelete Contact
Delete a contact by ID. This is permanent and cannot be undone.
Inputs
idintegerrequired- Numeric ID of the contact to delete.
echtpostmcp_delete_groupDelete a contact group.WriteDelete Group
Delete a contact group. Fails if the group has attached workflows.
Inputs
idintegerrequired- Numeric ID of the group to delete.
echtpostmcp_get_cardGet details of a specific postcard by its ID.WriteGet Card
Get details of a specific postcard by its ID. Returns status, content, font, delivery date, and whether the card is cancelable.
Inputs
idstringrequired- UUID of the card to retrieve.
echtpostmcp_get_contactGet details of a specific contact by their ID.WriteGet Contact
Get details of a specific contact by their ID. Returns all fields including first_name, last_name, greeting, address, and group_ids.
Inputs
idintegerrequired- Numeric ID of the contact to retrieve.
echtpostmcp_get_groupGet details of a specific contact group by ID.WriteGet Group
Get details of a specific contact group by ID. Returns name, external_id, and recipient count.
Inputs
idintegerrequired- Numeric ID of the group to retrieve.
echtpostmcp_get_meGet account info, user email, API key metadata, and current credit balance.WriteGet Me
Get account info, user email, API key metadata, and current credit balance. Use this to verify the connection and check available credits.
Inputs
This tool takes no inputs.
echtpostmcp_get_motiveGet details of a specific motive (postcard design) by its ID.WriteGet Motive
Get details of a specific motive (postcard design) by its ID.
Inputs
idintegerrequired- Numeric ID of the motive (postcard design) to retrieve.
echtpostmcp_get_templateGet details of a specific template by ID.WriteGet Template
Get details of a specific template by ID. Returns content, font, motive, and QR code URL.
Inputs
idintegerrequired- Numeric ID of the template to retrieve.
echtpostmcp_list_cardsList postcards for the account.WriteList Cards
List postcards for the account. Returns id, status (pending/scheduled/sent/canceled), content, font, delivery date, and whether the card is cancelable. Supports status filter.
Inputs
pageinteger- Page number for paginated results. Defaults to 1.
per_pageinteger- Number of results per page. Defaults to 50, maximum 100.
statusstring- Filter cards by status. Accepted values: pending, scheduled, sent, canceled.
echtpostmcp_list_contactsList contacts for the account.WriteList Contacts
List contacts for the account. Returns id, first_name, last_name, address, greeting, and other fields. Supports search and pagination (50 per page).
Inputs
pageinteger- Page number for paginated results. Defaults to 1.
per_pageinteger- Number of results per page. Defaults to 50, maximum 100.
searchstring- Search term to filter results by name or company.
echtpostmcp_list_creditsShow the current credit balance, how many local/foreign postcards can be sent, and the price per card in EUR.WriteList Credits
Show the current credit balance, how many local/foreign postcards can be sent, and the price per card in EUR.
Inputs
This tool takes no inputs.
echtpostmcp_list_groupsList contact groups for the account.WriteList Groups
List contact groups for the account. Groups can be used as recipients when creating cards.
Inputs
pageinteger- Page number for paginated results. Defaults to 1.
per_pageinteger- Number of results per page. Defaults to 50, maximum 100.
echtpostmcp_list_motivesList available postcard motives (designs).WriteList Motives
List available postcard motives (designs). Returns id, name, orientation, and feature flags. Supports search by name/description. Use the motive id when creating cards.
Inputs
pageinteger- Page number for paginated results. Defaults to 1.
per_pageinteger- Number of results per page. Defaults to 50, maximum 100.
searchstring- Search term to filter results by name or company.
echtpostmcp_list_templatesList available card templates for the account.WriteList Templates
List available card templates for the account. Templates contain pre-configured message, font, and motive — use create_card_from_template to send one.
Inputs
pageinteger- Page number for paginated results. Defaults to 1.
per_pageinteger- Number of results per page. Defaults to 50, maximum 100.
echtpostmcp_preview_fitCheck if a message fits on a postcard with the given font settings.WritePreview Fit
Check if a message fits on a postcard with the given font settings. Returns fits (true/false), lines used, max lines, and a suggested smaller font size if it overflows. Use this before create_card to iterate on message length.
Inputs
contentstringrequired- Message text to check for fit on the postcard.
font_familystring- Font family for the card text. Accepted values: architects_daughter, reenie_beanie, special_elite.
font_sizeinteger- Font size in pt. Allowed ranges: architects_daughter 12–14, reenie_beanie 15–17, special_elite 11–13.
sample_greetingstring- Sample greeting string used to expand the {anrede} placeholder when checking fit.
echtpostmcp_update_contactUpdate one or more fields on an existing contact.WriteUpdate Contact
Update one or more fields on an existing contact. Optional fields not provided are left unchanged. To clear an optional field, pass an empty string. group_ids replaces all memberships; group_names additively assigns groups (auto-creating).
Inputs
idintegerrequired- Numeric ID of the contact to update.
birthdatestring- Contact's birthdate in ISO 8601 format (YYYY-MM-DD).
citystring- City for the recipient's postal address.
company_namestring- Company name for the recipient.
country_codestring- ISO 3166-1 alpha-2 country code (e.g. DE for Germany).
custom_salutationstring- Custom greeting line. Use when greeting_style is set to custom.
departmentstring- Department within the company.
external_idstring- Your own reference ID for this record.
first_namestring- Recipient's first name.
genderstring- Gender identifier. Accepted values: male_user, female_user, diverse_user.
greeting_stylestring- Greeting style for the card. Accepted values: formal, informal, custom.
group_idsarray- Array of contact group IDs. All members of each group receive the card.
group_namesarray- Array of group names. Groups are created automatically if they do not exist.
last_namestring- Recipient's last name.
state_codestring- State or province code (e.g. BY for Bavaria).
streetstring- Street name and house number.
titlestring- Academic or professional title (e.g. Dr., Prof.).
zipstring- Postal code for the recipient's address.
echtpostmcp_update_groupUpdate a contact group.WriteUpdate Group
Update a contact group. Only provided fields are changed.
Inputs
idintegerrequired- Numeric ID of the group to update.
external_idstring- Your own reference ID for this record.
namestring- Group name.
No tools match.