Operator-facing follow-up to v0.2.0. Unofficial MCP for ads.telegram.org. TON cabinet, billed in Gram. Cookies stay in a gitignored .env.
Что стало лучше / What got better
- Stats.
get_ad_statsechoes requestperiod(5min= last 24h,day= lifetime).summary.spendandcharts.budgetare already scaled (spend_already_scaled/values_already_scaled) — do not divide. No CSV tool; optional dump is gitignoredreports/. - Session. Dead cookies: INSTALL.md DevTools clicks (F12 → Application → Cookies → ads.telegram.org) into
.envonly, thenreload_session. Never paste values into chat. - Bugs / Issues. Playbook Found a bug → Issue (offer, do not open unasked). Local
uv run python scripts/check_security.py --issue draft.mdprintsgh issue createor refuses; does not open. Issue form forbids cookies and hashes. - Write gate.
write_gatednow includestool,class,would_send(intended args, no secrets) andsent: false. Not a platform dry-run. - Audience / events. Access denied →
code: access_denied,hint: skip. Do not retry-loop. - Create.
launch_adtakestopics,exclude_*,locations. Dropslangswhen specificchannelsare set (platform Target invalid). - Later campaign service. Wheel JSON Schema (
telegram_ads_mcp/schemas/) names campaign brief / review artifact / stats dump. This repo is still not that SaaS. - Local notes.
AGENTS.local.mdis gitignored. Client playbook staysAGENTS.md. MCP JSON without secrets:mcp.json.example.
Use it
- Clone,
uv sync, copy.env.example→.env. Command:telegram-ads-mcp. - Agent setup: paste INSTALL.md (includes starring the repo).
- Playbook:
ads://playbook/ AGENTS.md.
Not in this tag
PyPI is not published. Live write-checks against a cabinet are still operator-side (OFFLINE.md). Not in this tag: confirm_hash in-memory handle, live upload_media pin, Playwright preview, 26th tool, connecting Cursor mcp.json with real cookies.
License is LicenseRef-ZAI-ONE (not MIT): run against your own cabinet; do not copy or remix; file Issues.