API and MCP for AI agents
BotMarketing.pro provides a Streamable HTTP MCP server and a customer REST API. An agent can configure your business from a compatible chat or application using the permissions you grant for your company.
Let your AI assistant set up your business
Copy the message below to ChatGPT, Codex, Claude or another chat and describe what you need. Connection instructions for your agent are included in the message.
Start with https://botmarketing.pro/llms.txt for agent instructions, MCP and API. Choose an available connection method in your environment yourself. Register through public MCP or the API if I have no account; otherwise use my existing account. Ask me to verify email and approve access when required. Then inspect the company and perform the requested changes yourself through MCP/API: create the company only if missing and configure the requested catalog, loyalty, schedules and messages. Do not send me to fill in website forms. Ask only for missing information, preserve existing settings and read back changes. Do not activate message sending unless I request it. If your host requires me to add a connection, explain only that initial step. Do not claim completion before a successful tool result.
For a new account, verify your email. For an existing account, sign in on the website and approve the connection. If your chat cannot access BotMarketing.pro yet, it may ask you to add the connection once. After that, describe your tasks. External service support depends on your chat.
Connection endpoints
- Protected MCP
- https://botmarketing.pro/mcp
- Public registration and reference MCP
- https://botmarketing.pro/mcp/onboarding
- REST API
- https://botmarketing.pro/api/v1
- OpenAPI contract
- https://botmarketing.pro/api/v1/openapi.json
- MCP resource discovery
- https://botmarketing.pro/.well-known/oauth-protected-resource/mcp
- OAuth server discovery
- https://botmarketing.pro/.well-known/oauth-authorization-server
- API keys and OAuth connections
- https://botmarketing.pro/agents
What an agent can configure
Configuration follows the company’s current subscription features and limits. There is no separate paid API/MCP access flag.
- Owner profile without credential changes; company details, contacts, currency, time zone, images and public business card.
- Categories, products and services: prices, stock, booking and delivery settings, catalog order, covers and galleries.
- Loyalty programs and levels, rules, images and activation.
- Working hours and product or service availability.
- Telegram bot, menu, greeting, assistant and company documents; automatic reminders and Instagram reply rules.
- File uploads, available plans, countries, cities, currencies, time zones and remaining setup steps.
Connect a chat or your own agent
Send the message above to your agent and describe your task. The agent uses the connection guide, registration and configuration methods itself. Your chat needs external connections or authenticated HTTP execution support.
- Sign in to your existing BotMarketing.pro account, review the requested permissions and approve the connection. OAuth uses Authorization Code with PKCE S256.
- Your own agent can use a permanent scoped key from the additional API and agents section, or POST /api/v1/auth/token after email verification. Keys work until revoked. Send keys only in Authorization: Bearer; keep them out of URLs and public text.
- For a new account, public /mcp/onboarding offers register_account and reference data. Verify your email on the website, then connect protected MCP and create your company. Company access is unavailable before verification.
- Use DeepSeek through your own function-calling agent or MCP client. Direct integration in the DeepSeek web chat is not advertised.
- After connecting, call get_setup_status for granted permissions, available features, limits and next steps. Connect Instagram through the existing browser authorization flow.
Permissions and changes
Connections require a verified owner. Each account has one owned company. Read and write permissions are separate for company, catalog, loyalty, schedule, messages and channels.
- Ownership, permissions and subscription limits are checked on every request. Staff cannot authorize a company connection on the owner’s behalf.
- Creation requires a stable idempotency_key in MCP or Idempotency-Key header in REST. Repeating the same key and body does not create a duplicate; a changed body returns a conflict.
- Activating a bot, reminder or reply rule can start sending messages. Agents should activate features only when requested by the owner.
- Revoke a key or OAuth connection in API and agents.
- Version one excludes CRM operations, order and reservation processing, staff management, financial transactions, customer balance adjustments, one-off bulk messages and Instagram post publication.
MCP tool catalog
Names and execution prerequisites come from the current server. Connected clients obtain argument schemas through tools/list; REST schemas are in OpenAPI. The public server offers registration and reference data; other tools require authentication.
MCP tools (65)
- get_connection_guide
- Start here when asked to register or configure a business. Read the agent-led workflow, endpoints, and the minimum owner actions for email confirmation and authorization. No account or credentials required.
- list_countries
- List available countries. Use returned identifiers and enum values when configuring a company.
- list_cities
- List available cities. Use returned identifiers and enum values when configuring a company.
- list_timezones
- List available timezones. Use returned identifiers and enum values when configuring a company.
- list_currencies
- List available currencies. Use returned identifiers and enum values when configuring a company.
- list_subscriptions
- List available subscriptions. Use returned identifiers and enum values when configuring a company.
- list_types
- List available types. Use returned identifiers and enum values when configuring a company.
- register_account
- Register a new company owner using email and password. Email confirmation is required before connecting the protected /mcp server. Existing accounts must sign in; this tool never grants access to an existing account.
- get_setup_status
- Read granted abilities, company setup steps, subscription features and remaining limits.
- get_channel_context
- Read the company channel identifiers, connected Instagram accounts and cached Instagram media for targeting and automation configuration. Requires channels:read.
- list_categories
- List categories in the connected owner company. Requires catalog:read. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- get_category
- Get categories in the connected owner company. Requires catalog:read. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- create_category
- Create categories in the connected owner company. Requires catalog:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- update_category
- Update categories in the connected owner company. Requires catalog:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- delete_category
- Delete categories in the connected owner company. Requires catalog:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- list_items
- List items in the connected owner company. Requires catalog:read. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- get_item
- Get items in the connected owner company. Requires catalog:read. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- create_item
- Create items in the connected owner company. Requires catalog:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- update_item
- Update items in the connected owner company. Requires catalog:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- delete_item
- Delete items in the connected owner company. Requires catalog:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- list_schedules
- List schedules in the connected owner company. Requires schedule:read. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- get_schedule
- Get schedules in the connected owner company. Requires schedule:read. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- create_schedule
- Create schedules in the connected owner company. Requires schedule:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- update_schedule
- Update schedules in the connected owner company. Requires schedule:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- delete_schedule
- Delete schedules in the connected owner company. Requires schedule:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- list_loyalty_programs
- List loyalty-programs in the connected owner company. Requires loyalty:read. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- get_loyalty_program
- Get loyalty-programs in the connected owner company. Requires loyalty:read. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- create_loyalty_program
- Create loyalty-programs in the connected owner company. Requires loyalty:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- update_loyalty_program
- Update loyalty-programs in the connected owner company. Requires loyalty:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- delete_loyalty_program
- Delete loyalty-programs in the connected owner company. Requires loyalty:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- list_loyalty_levels
- List loyalty-levels in the connected owner company. Requires loyalty:read. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- get_loyalty_level
- Get loyalty-levels in the connected owner company. Requires loyalty:read. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- create_loyalty_level
- Create loyalty-levels in the connected owner company. Requires loyalty:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- update_loyalty_level
- Update loyalty-levels in the connected owner company. Requires loyalty:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- delete_loyalty_level
- Delete loyalty-levels in the connected owner company. Requires loyalty:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- list_engagement_reminders
- List engagement-reminders in the connected owner company. Requires messages:read. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- get_engagement_reminder
- Get engagement-reminders in the connected owner company. Requires messages:read. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- create_engagement_reminder
- Create engagement-reminders in the connected owner company. Requires messages:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- update_engagement_reminder
- Update engagement-reminders in the connected owner company. Requires messages:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- delete_engagement_reminder
- Delete engagement-reminders in the connected owner company. Requires messages:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- list_instagram_rules
- List instagram-rules in the connected owner company. Requires messages:read. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- get_instagram_rule
- Get instagram-rules in the connected owner company. Requires messages:read. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- create_instagram_rule
- Create instagram-rules in the connected owner company. Requires messages:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- update_instagram_rule
- Update instagram-rules in the connected owner company. Requires messages:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- delete_instagram_rule
- Delete instagram-rules in the connected owner company. Requires messages:write. Existing subscription limits apply. PATCH keeps omitted fields. Creation requires a stable idempotency_key; reuse it after an interrupted response.
- remove_categories_file
- Remove a file attached to this company resource. Requires write access to its area.
- remove_items_file
- Remove a file attached to this company resource. Requires write access to its area.
- remove_loyalty_programs_file
- Remove a file attached to this company resource. Requires write access to its area.
- remove_engagement_reminders_file
- Remove a file attached to this company resource. Requires write access to its area.
- remove_instagram_rules_file
- Remove a file attached to this company resource. Requires write access to its area.
- get_company
- Read the connected owner company. Requires company:read.
- create_company
- Create the owner company after email confirmation. One company per account. Requires company:write.
- update_company
- Update the public company card, contacts, location and settings. Requires company:write.
- get_profile
- Read profile configuration without secret credentials.
- update_profile
- Update profile configuration. Requires company:write.
- get_bot
- Read bot configuration without secret credentials.
- update_bot
- Update bot configuration. Requires channels:write. Changes can activate Telegram automation; subscription features apply.
- get_settings
- Read settings configuration without secret credentials.
- update_settings
- Update settings configuration. Requires channels:write. Changes can activate Telegram automation; subscription features apply.
- get_assistant
- Read assistant configuration without secret credentials.
- update_assistant
- Update assistant configuration. Requires channels:write. Changes can activate Telegram automation; subscription features apply.
- get_menu
- Read menu configuration without secret credentials.
- update_menu
- Update menu configuration. Requires channels:write. Changes can activate Telegram automation; subscription features apply.
- upload_file
- Upload a file from base64 or a public HTTPS URL. Maximum 20 MiB; redirects and private networks are rejected. Requires write permission for the declared area. Use the returned ID in cover_file_id, image_file_ids or another file field.
- reorder_items
- Reorder the visible catalog page using the order_version from list_items. Requires catalog:write. Concurrent catalog changes return a conflict.