Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ADS_MCP_DATANoThe local data directory used by AdsMCP for storing acceptance and downloaded updates. Defaults to the repository's data/ directory.data
ADSMCP_GITHUB_TOKENNoFine-grained GitHub token used for contribution setup and publishing PRs.
ADSMCP_UPDATE_ENABLEDNoSet to false to disable the daily GitHub update check. Default is true.true
ADSMCP_FORK_REPOSITORYNoPersonal fork repository for contributions, required before publishing a PR.
ADSMCP_UPDATE_REPOSITORYNoGitHub repository in owner/repository format used for daily update checks. If not set, AdsMCP detects the repository from the local origin remote.
ADSMCP_WEEKLY_PR_ENABLEDNoSet to false to disable the weekly check for local Git working tree changes. Default is true.true
ADSMCP_UPSTREAM_REPOSITORYNoUpstream repository for contributions, required before publishing a PR.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
ads_free_use_rulesA

Read the AdsMCP Free Use Rules and see whether this local installation has accepted the current version.

ads_free_use_acceptA

Accept the current AdsMCP Free Use Rules for this local data directory. Review ads_free_use_rules first.

ads_github_contribution_statusA

Show the local Git changes and GitHub fork setup without publishing anything.

ads_github_contribution_setupA

Prepare an optional GitHub fork for publishing reviewed AdsMCP changes. confirm=true may create the fork through the configured GitHub token.

ads_github_contribution_create_prA

Review the changedFiles from ads_github_contribution_status, then create one GitHub branch and pull request after confirm=true.

ads_project_createC

Create a project that groups related advertising campaigns and their analytics.

ads_project_getC

Get one local advertising project by its id.

ads_project_listB

List projects, optionally filtered by active or archived status.

ads_project_updateB

Update project metadata or archive it without deleting its campaigns.

ads_project_analyticsC

Calculate aggregate and per-campaign KPIs for one project.

ads_client_profile_createB

Create a local client profile with per-person context. Telegram remains the default channel; channel and external_user_id can represent Mastodon or another connector. contact_account_id records which local connected account made the contact. Consent defaults to unknown; this tool does not send a message.

ads_client_profile_getC

Get one local client profile and its recent dialogue history.

ads_client_profile_listB

List local client profiles without loading full dialogue histories.

ads_client_profile_updateC

Update one local client profile, including context, consent status, next action and the local account used for contact. This tool does not send a message.

ads_client_profile_message_addA

Append an inbound, outbound or internal note to a local client profile. For external or multi-account contacts, pass contact_account_id so the exact account is recorded. This stores history only and never sends a message.

ads_client_profile_batch_sendA

Send a saved client-profile draft (firstContact or replyToUnread) to up to 50 active profiles with one explicit batch confirmation. The exact saved draft and every variation must have been approved before sending; any draft change requires fresh approval. Requires Telegram Premium, reports a read-only unread-human-dialog preflight without blocking the write, performs an activity preflight (stale exact last-seen and hidden profiles without an avatar are blocked), enforces at least 15 seconds between messages, blocks opted_out profiles, stops on the first send error, and records each successful outbound message.

ads_client_profile_unread_checkA

Take a fast read-only snapshot of unread one-to-one human Telegram chats. This returns the latest incoming message only; it does not read full history, mark messages as read, or send anything. Before drafting a reply when a person may have multiple messages, run the local full-history sync script npm run telegram:sync:unread and review every returned message.

ads_client_profile_channel_reviewA

Review the public channel linked in a Telegram user's profile and search it for AI-related topics. Uses the selected local GramJS/TDLib backend, never reads non-public chats, never sends messages, and stores only the bounded review result in the client profile.

ads_interest_contact_upsertB

Save or update one public discovery candidate in the local interest registry. This does not create a client profile, follow anyone or send a message; consent remains unknown by default.

ads_interest_contact_listB

List public discovery candidates from the local interest registry. This is read-only and never contacts anyone.

ads_interest_research_post_upsertB

Store one bounded public research post linked to an interest contact. This is local research only and never publishes or contacts anyone.

ads_interest_research_post_listC

List bounded public research posts collected during discovery. Read-only; it never contacts authors.

ads_interest_research_tag_listC

List aggregated hashtags and research tags from the local discovery base. Read-only.

ads_interest_research_stats_buildB

Build a local time-window snapshot of research demand: post volume, unique authors, contacts, relevance and popular tags. This is analytics only and never contacts anyone.

ads_interest_research_stats_listB

List saved research demand snapshots and tag popularity metrics. Read-only analytics; it never contacts anyone.

ads_telegram_ai_chat_upsertB

Save or update one public Telegram group/channel discovered for AI-related topics. This writes only local chat metadata under a project and never collects participants or sends messages.

ads_telegram_ai_chat_listB

List public Telegram AI-related chats saved in the local catalog; defaults to the Neron project and never returns participant data.

ads_tg_resource_upsertB

Save or update one Telegram group or channel in the generic local resource catalog. This stores metadata only and never joins, leaves or sends messages.

ads_tg_resource_listB

List generic Telegram groups and channels saved in the local tg_resources catalog; defaults to the Neron project and never returns participant data.

ads_tg_resource_post_recordB

Record a confirmed Telegram publication link for a cataloged group or channel. This only updates the local audit trail and never sends a message.

ads_tg_resource_post_listB

List confirmed Telegram publication links recorded for local resources; this is read-only and never sends messages.

ads_telegram_public_reply_upsertC

Save or update one public Telegram reply/mention found under a message from the connected account. Local-only; never sends or marks messages read.

ads_telegram_public_reply_listB

List public Telegram replies and mentions saved in the local audit table; pending items are shown first and nothing is sent.

ads_telegram_public_reply_statusA

Set the review status of one saved public Telegram reply. This changes only local audit data and never sends a message.

ads_telegram_public_reply_syncA

Read a bounded recent history in selected public Telegram chats and save direct replies plus a small context window after each outgoing message, because people may answer without using Telegram's reply action. Requires Premium; never sends, joins, collects participant lists or marks messages read.

ads_telegram_ai_post_listB

List public Telegram posts saved from the global AI search. Results are classified locally as request, opportunity, discussion, promotion or repost; this tool never sends messages.

ads_telegram_ai_post_reclassifyB

Reclassify saved public Telegram AI posts and rebuild Neron offer matches plus contextual public reply drafts. Local-only: never sends or edits Telegram messages.

ads_telegram_ai_search_query_upsertB

Save or update one Telegram AI search phrase for later discovery and demand analysis. This changes only local SQLite and never searches or sends messages.

ads_telegram_ai_search_query_listB

List saved Telegram AI search phrases and their last-run/result counters; read-only and never contacts Telegram.

ads_telegram_ai_search_run_listB

List the append-only history of Telegram AI searches, including source/scope, status, quota and result counters; read-only and never contacts Telegram.

ads_telegram_ai_keyword_observeA

Extract normalized demand keywords from one search query or user-provided text and update local trend counters. The submitted text is not stored and this tool never contacts Telegram.

ads_telegram_ai_keyword_listB

List aggregated Telegram AI demand keywords with source counters and recent-vs-previous trend direction; read-only and never contacts Telegram.

ads_telegram_ai_keyword_topic_listB

List aggregated demand-topic trends that group related keyword variants, with source counters and recent-vs-previous activity; read-only and never contacts Telegram.

ads_telegram_ai_keyword_rebuildA

Rebuild demand keyword observations from existing search history, saved public AI posts and inbound client messages. Set reset=true only to replace the derived keyword aggregate and observation tables; stores only normalized keywords and source metadata; never sends messages.

ads_telegram_ai_trend_snapshot_buildB

Build one weekly demand snapshot grouped by topic and intent, with deduplicated source counts. This changes only local analytics tables and never contacts Telegram.

ads_telegram_ai_trend_snapshot_listB

List saved weekly demand snapshots by topic and intent; read-only and never contacts Telegram.

ads_campaign_createC

Create a local advertising campaign definition, optionally inside a project. It starts in draft status.

ads_campaign_getB

Get one campaign by its local id.

ads_campaign_listC

List local campaigns, optionally filtered by project and lifecycle status.

ads_campaign_updateC

Update campaign metadata, lifecycle status or project assignment.

ads_event_ingestB

Ingest a funnel event or conversion. A stable dedupe_key makes retries safe.

ads_spend_recordB

Record spend and daily platform metrics. A stable dedupe_key makes sync retries safe.

ads_campaign_analyticsC

Calculate spend, funnel and efficiency KPIs for one or all campaigns.

ads_campaign_timeseriesC

Read normalized time-bucketed provider metrics saved in local SQLite.

ads_attribution_reportC

Attribute local conversion events to tracked touchpoints using a selected attribution model.

ads_integration_registerC

Register an external advertising, CRM or webhook integration without storing secrets.

ads_integration_listB

List registered integrations and built-in adapter capabilities/configuration status.

ads_integration_planB

Show adapter readiness, required environment keys and safe next actions for one or all providers.

ads_platform_guideC

Explain what audience and acquisition scenario each advertising platform fits before configuring its MCP module.

ads_module_planA

Show configured provider MCP modules without starting them. Modules keep their own API logic and credentials outside the AdsMCP database.

ads_dashbord_startB

Start the local AdsMCP settings page on 127.0.0.1. It stores Click.ru data, Yandex Direct OAuth token files and settings, Microsoft Advertising OAuth profiles and Mastodon OAuth account tokens locally, and provides the preferred local Telegram account / GramJS login flow; it never performs billing or campaign actions. Use restart=true only to replace an already-running page.

ads_dashbord_stopA

Stop the local AdsMCP settings page. This does not delete Click.ru profiles, Microsoft OAuth profiles, Mastodon accounts or campaign drafts.

ads_clickru_profiles_statusA

Show locally stored Click.ru advertiser profiles with masked INNs and the active profile. Never returns API tokens.

ads_clickru_campaign_drafts_statusA

Show locally stored Click.ru campaign drafts, their statuses and the active campaign. Drafts are not sent or launched.

ads_clickru_campaign_draft_set_statusB

Change a locally stored Click.ru campaign between DRAFT and READY. This never sends or launches the campaign.

ads_module_toolsC

Discover tools exposed by one configured provider MCP module.

ads_module_callC

Call a tool of a configured provider MCP module, optionally restricted by its allow_tools list. Use provider-native tools for capabilities that AdsMCP does not reimplement.

ads_google_ads_reportC

Read daily Google Ads campaign metrics through the configured service-account adapter. This tool never writes to Google Ads.

ads_google_ads_syncB

Read Google Ads metrics and persist normalized campaign, spend and aggregate conversion data into local SQLite. This never writes to Google Ads.

ads_google_ads_pmax_replace_imagesA

Replace the enabled landscape and portrait marketing images in one Google Ads Performance Max asset group. New images are linked first; square images, logos and text assets are preserved. Requires explicit confirm=true.

ads_microsoft_ads_reportC

Read aggregate Microsoft Advertising campaign metrics through the official read-only MCP. This tool never writes to Microsoft Ads.

ads_microsoft_ads_syncC

Read aggregate Microsoft Advertising metrics and persist normalized campaigns, spend and conversions into local SQLite. This never writes to Microsoft Ads.

ads_yandex_direct_reportB

Read Yandex Direct campaign statistics through the configured provider MCP module and normalize the result by day.

ads_yandex_direct_syncC

Read Yandex Direct statistics through the provider MCP module and persist normalized campaigns, spend and conversions into local SQLite.

ads_yandex_direct_writeA

Apply an explicitly confirmed, idempotent Yandex Direct campaign change through the provider API. Updates and lifecycle status changes for existing campaigns are exposed; creation uses the dedicated safe create tool and deletion remains disabled.

ads_yandex_direct_create_campaignA

Create one paused Yandex Direct text campaign through the guarded provider path. The new campaign is created with search and network serving off, without ads or a budget; it cannot start showing until configured and enabled separately.

ads_telegram_ads_reportC

Read Telegram Ads account, campaigns and normalized metrics through the configured HTTP-based MCP module. This is read-only.

ads_telegram_ads_syncC

Read Telegram Ads metrics and persist campaigns, daily spend and optional time-bucketed metrics into local SQLite. This never writes to Telegram Ads.

ads_telegram_accounts_reportB

List Telegram Ads cabinets and optionally read one or all cabinets. Switching cabinets requires explicit confirm=true and is restored to the original cabinet afterward.

ads_telegram_accounts_syncB

Read one or all Telegram Ads cabinets and persist their campaigns, daily spend and optional time-bucketed metrics into local SQLite. Cabinet switching requires explicit confirm=true.

ads_telegram_ads_api_statusA

Show the official Telegram Ads API layer readiness. With probe=true, perform one read-only getCurrentAccount request; provider writes remain separately guarded.

ads_telegram_ads_api_create_adA

Create one Telegram Ads advertisement through the official API. This is a provider write; confirm=true is required. Defaults to paused with zero initial budget.

ads_telegram_ads_api_increase_ad_budgetB

Increase one Telegram Ads ad budget through the official API. This is a provider write; confirm=true is required.

ads_telegram_ads_api_submit_ad_for_reviewB

Submit one Telegram Ads ad for moderation through the official API. This is a provider write; confirm=true is required.

ads_telegram_ads_api_set_ad_pausedB

Pause or resume one Telegram Ads ad through the official API. This is a provider write; confirm=true is required.

ads_telegram_ads_api_reportC

Read Telegram Ads through the official promoteapi.telegram.org API. This is read-only and supports exact date-bounded 5-minute or daily stats.

ads_telegram_ads_api_syncB

Read official Telegram Ads API metrics and persist them into the same local SQLite campaign model. This never writes to Telegram Ads.

ads_telegram_account_statusA

Check the local Telegram user-account GramJS/TDLib dependencies, credentials, authentication state and ignored storage paths.

ads_discord_statusA

Check the official Discord bot connector, credentials and current bot identity. Normal user-account tokens and passwords are not supported.

ads_discord_guild_listB

List Discord servers where the configured bot is installed. This is not a global server search.

ads_discord_channel_listB

List viewable text, announcement, forum and thread channels in one Discord server.

ads_discord_member_searchA

Search members by username or nickname inside one installed Discord server. Finding a member does not authorize contacting them.

ads_discord_message_searchA

Search a bounded recent page of messages in one accessible Discord channel; history is not crawled or persisted.

ads_discord_channel_sendA

Send one plain-text message to one selected Discord channel after explicit confirm=true. No bulk sends and no member DMs.

ads_mastodon_account_listB

List locally connected Mastodon accounts without returning access tokens.

ads_mastodon_auth_startA

Start a Mastodon OAuth 2 + PKCE account connection for one instance. Open the returned authorization_url and then complete it with the one-time code.

ads_mastodon_auth_completeB

Complete a pending Mastodon OAuth connection with the one-time code shown by the instance. The code is not logged or returned.

ads_mastodon_statusC

Check the connected Mastodon account and current profile through verify_credentials.

ads_mastodon_thread_createA

Publish one explicitly provided Mastodon thread in order after confirm=true. Every post after the first replies to the previous post; optionally pin only the thread root.

ads_mastodon_pin_statusB

Pin one selected Mastodon status after explicit confirm=true.

ads_mastodon_notification_listB

Read a bounded page of Mastodon mention notifications to prepare a context-aware reply. This tool never publishes anything.

ads_mastodon_hashtag_searchB

Read public Mastodon hashtag timelines for AI-related discovery, score cost/local-model/MCP intent signals and return ranked candidate accounts with bounded post evidence. This never follows or contacts anyone.

ads_mastodon_interest_searchC

Run the expanded Mastodon interest discovery pack for AI agents, MCP, local/self-hosted models, providers, costs and limits; score pain/intent signals and save bounded public evidence to the local research base. This never follows or contacts anyone.

ads_mastodon_followA

Follow one selected Mastodon account after explicit confirm=true. Search results never trigger follows automatically; read:follows is required to check existing subscriptions and write:follows is required to follow.

ads_mastodon_replyA

Reply to one selected Mastodon status after explicit confirm=true. The target status is checked first, its author mention is added automatically, and the reply visibility cannot be broader than the target.

ads_mastodon_direct_messageA

Send one private Mastodon Direct status to one selected account after explicit confirm=true. The target mention is added automatically; no bulk messaging.

ads_mastodon_public_mentionA

Publish one public Mastodon mention to one selected account after explicit confirm=true. Optionally reply to one public status; no bulk messaging.

ads_mastodon_message_batchA

Send an explicitly provided ordered list of Mastodon direct messages, public mentions or replies after confirm=true. Each item names its recipient, exact text and mode; discovery never creates items automatically.

ads_mastodon_profile_updateB

Update selected Mastodon profile fields after explicit confirm=true. Unspecified fields remain unchanged.

ads_telegram_account_authB

Continue local Telegram user-account login through the selected backend. GramJS supports starting a local QR flow; never paste Telegram codes or 2FA passwords into a hosted chat.

ads_telegram_account_searchA

Read recent history or search one Telegram chat through the connected local GramJS/TDLib account. Requires Telegram Premium; no messages are sent.

ads_telegram_chat_mark_readA

Mark one human one-to-one Telegram chat as read. Requires explicit confirm=true; sends no message, does not create a local dialogue row, and does not mark bots or channels.

ads_telegram_public_posts_searchA

Search public Telegram channel posts globally by full-text query. Requires Telegram Premium. Uses a free daily quota when available and never spends Stars without explicit confirm_paid=true plus a sufficient max_stars limit.

ads_telegram_action_queue_createA

Create an ordered local Telegram action queue from explicitly supplied targets and exact texts. Requires confirm=true; it does not execute anything. Supports one-to-one messages, group replies, channel-post replies and one-message reactions. No recipient discovery is performed. Each action is assigned a random pause between min_delay_seconds and max_delay_seconds (default 15–66 s) before it runs.

ads_telegram_action_queue_listB

List the exact actions and statuses in one local Telegram action queue. Read-only; it does not send or mark anything read.

ads_telegram_action_queue_processA

Execute an explicitly approved Telegram action queue in sequence. Requires Premium and confirm=true; verifies each action through the existing send/reply/reaction tools, waits at least the configured interval, and stops on the first error without retrying.

ads_telegram_action_queue_cancelA

Cancel all still-queued actions in one local Telegram action queue. Requires confirm=true; already sent or failed actions are not changed.

ads_telegram_account_sendA

Send one plain-text Telegram message through the selected local GramJS/TDLib account. Requires Telegram Premium, prior approval of the exact text, and explicit confirm=true; reports a read-only unread-human-dialog preflight without blocking the write; bulk outreach is not supported.

ads_telegram_message_reactA

Add one emoji reaction to one existing Telegram message through the selected local GramJS/TDLib account. Requires Telegram Premium, explicit confirm=true and (when available) expected_text to fail closed if the message changed; does not send text or mark the chat read.

ads_telegram_channel_direct_checkA

Read-only preflight for a broadcast Telegram channel: checks Direct Messages, the connected discussion chat, and public contacts from the channel description. Requires Telegram Premium; never joins, sends a message, or creates a public post.

ads_telegram_channel_direct_sendA

Send one explicitly approved plain-text message to a Telegram channel's Direct Messages monoforum, only when a read-only preflight confirms that Direct Messages are enabled. Requires Telegram Premium and confirm=true; never publishes to the channel feed.

ads_telegram_public_post_replyA

Reply publicly to one Telegram channel post through its linked discussion only when the post contains a relevant explicit request and the resource rules permit it. Requires Telegram Premium and explicit confirm=true; reports a read-only unread-human-dialog preflight without blocking the write; never sends a private message and never bypasses moderation or guest-send restrictions.

ads_telegram_chat_replyA

Reply publicly to one message inside an accessible Telegram group when the message contains a relevant explicit request and the resource rules permit it. Requires Telegram Premium and explicit confirm=true; reports a read-only unread-human-dialog preflight without blocking the write; never sends a private message and never bypasses moderation, CAPTCHA or guest-send restrictions.

ads_automation_rule_createC

Create a KPI rule. Supported actions are pause_campaign and notify.

ads_automation_rule_listC

List automation rules, optionally for one campaign.

ads_automation_runB

Evaluate automation rules. This is dry-run unless execute=true is explicitly set.

ads_store_statusB

Show local SQLite storage path, row counts and safety defaults.

ads_network_statusA

Check the optional Ads Network Relay connection. The local MCP works without it.

ads_dstore_statusA

Show the dStore card and advertising-placement adapter configuration. It reads public catalog data and does not send credentials or publish changes.

ads_dstore_searchB

Search dStore's verified public advertising inventory. Use this for requests to find channels or sites for mutual promotion; AIKI community proposals are separate and remain unverified until dStore checks them.

ads_dstore_card_getA

Read one public dStore card by numeric id or dStore card URL. Returns normalized title, resource URL, icon, platform, tags and description for catalog discovery.

ads_dstore_cards_getA

Read up to 50 public dStore cards by id or URL. The result keeps successful cards and reports individual lookup errors.

ads_aiki_statusC

Show the AIKI community source for AdsMCP. AIKI proposals are unverified leads; dStore must verify them before adding a platform to the catalog.

ads_aiki_setup_guideA

Return the AIKI MCP configuration plus the AdsMCP workflow: search the community topic, check duplicates and topic rules before publishing a new channel or advertising offer, then hand the unverified proposal to dStore.

ads_network_platform_listC

List verified or reported advertising platforms from the optional network registry.

ads_network_platform_reportC

Anonymously report a new advertising platform or integration candidate. No credentials are sent.

ads_network_profile_publishC

Publish an opt-in networking profile without advertising credentials or raw campaign data.

ads_network_profile_listC

Find opt-in networking profiles in the optional relay registry.

ads_network_placement_publishC

Publish an opt-in advertising placement offer. Provider credentials stay local.

ads_network_inventory_listC

List verified advertising placement offers from the optional relay registry.

ads_network_conversion_reportC

Opt-in anonymous conversion report. Send only opaque references and aggregates, never raw PII or credentials.

ads_network_aggregate_publishC

Opt-in publish of aggregated campaign metrics. The relay never receives raw local events.

ads_network_sync_manifestC

Pull opt-in network catalog changes since an ISO timestamp.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

C2.8/5.0

Scored across 143 tools

Disambiguation2/5

The set contains many near-overlapping tools, especially across Telegram Ads report/sync/API variants, Telegram action queues, public reply/post research, and multiple local catalog tools. Descriptions add context, but an agent can easily confuse names like ads_telegram_ads_report vs ads_telegram_ads_api_report or ads_telegram_ai_post_list vs ads_interest_research_post_list.

Naming Consistency4/5

All tools use an ads_ prefix and snake_case, giving a mostly predictable namespace. However, action ordering is uneven across compound names, there is a visible typo in ads_dashbord_start/stop, and similar concepts use inconsistent labels such as cards_get vs card_get and dstore vs tg_resource.

Tool Count1/5

143 tools is far too many for a coherent MCP surface. Even for a broad advertising automation server, the set spans many domains, providers, local catalogs, research workflows, networking, and messaging channels, making discovery and correct selection very difficult.

Completeness3/5

The surface is broad and covers many advertising, reporting, sync, outreach, and local analytics workflows, but lifecycle coverage is uneven. Some entities lack delete operations, several ad platforms are mostly read/sync-only, and write coverage is concentrated in specific providers such as Telegram, Yandex Direct, and Mastodon.

Maintenance

ActivityMaintained
ResponsivenessNo issues