API and MCP for AI agents

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.

Copied — send the message to your agent Select the text and copy it manually.

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.