adloop 0.34.0__tar.gz → 0.35.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {adloop-0.34.0 → adloop-0.35.0}/PKG-INFO +5 -1
- {adloop-0.34.0 → adloop-0.35.0}/README.md +4 -0
- {adloop-0.34.0 → adloop-0.35.0}/pyproject.toml +1 -1
- {adloop-0.34.0 → adloop-0.35.0}/pyproject.toml.orig +1 -1
- adloop-0.35.0/src/adloop/ads/assets.py +1755 -0
- adloop-0.35.0/src/adloop/ads/snippet_headers.py +723 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/write.py +12 -16
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/rules/adloop.md +9 -2
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/server.py +376 -13
- adloop-0.34.0/src/adloop/ads/assets.py +0 -734
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/__init__.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/__main__.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/_mcp_patches.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/__init__.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/ai_max.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/audiences.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/brands.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/client.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/conversion_actions.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/currency.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/custom_conversion_goals.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/enums.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/forecast.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/gaql.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/image_fetch.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/pmax.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/read.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/shopping.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ads/validate_only.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/auth.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/cli.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/config.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/crossref.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/diagnostics.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ga4/__init__.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ga4/client.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ga4/reports.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ga4/tracking.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/ga4/write.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/gsc/__init__.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/gsc/client.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/gsc/reports.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/gtm/__init__.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/gtm/client.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/gtm/entities.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/gtm/read.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/gtm/write.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/merchant/__init__.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/merchant/client.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/merchant/read.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/pagespeed.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/reddit/__init__.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/reddit/auth.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/reddit/client.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/reddit/read.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/reddit/schedule.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/reddit/write.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/rules/__init__.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/rules/commands/analyze-performance.md +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/rules/commands/budget-plan.md +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/rules/commands/create-ad.md +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/rules/commands/create-campaign.md +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/rules/commands/diagnose-tracking.md +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/rules/commands/optimize-campaign.md +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/rules_install.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/runtime.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/safety/__init__.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/safety/approval.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/safety/approval_card.html +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/safety/audit.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/safety/guards.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/safety/preview.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/tracking.py +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/upload_card.html +0 -0
- {adloop-0.34.0 → adloop-0.35.0}/src/adloop/uploads.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: adloop
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.35.0
|
|
4
4
|
Summary: The AI command center for Google Ads, Reddit Ads, GA4, and tracking code.
|
|
5
5
|
Keywords: mcp,google-ads,reddit-ads,google-analytics,ga4,cursor,marketing
|
|
6
6
|
Author: Daniel Klose
|
|
@@ -310,6 +310,10 @@ All write operations follow a **draft → preview → confirm** workflow. Nothin
|
|
|
310
310
|
| `draft_business_name_asset` | Create the business name shown with the ads, for a campaign or the account. |
|
|
311
311
|
| `link_asset_to_customer` | Link existing assets account-wide; the asset type is checked against the field type. |
|
|
312
312
|
| `update_callout` / `update_sitelink` / `update_structured_snippet` | Edit an asset in place, keeping its ID and history; the apply refuses if it was changed in Google Ads since the preview. |
|
|
313
|
+
| `draft_call_asset` / `update_call_asset` | Create a call asset (phone number) for an ad group, a campaign or the account, or edit one in place; numbers are parsed and checked against their country. |
|
|
314
|
+
| `add_ad_schedule` | Add ad schedule windows to a campaign; overlaps are refused, and a campaign's first schedule needs a double confirmation. |
|
|
315
|
+
| `draft_promotion` / `update_promotion` | Create a promotion asset, or edit one in place without losing the fields you don't pass; amounts in the account currency. |
|
|
316
|
+
| `draft_price_asset` | Create a price asset with 3-8 offerings, in the account currency. |
|
|
313
317
|
| `draft_image_assets` | Create campaign image assets from local files, public image URLs or uploads (PNG, JPEG, or GIF). |
|
|
314
318
|
| `draft_keywords` | Propose keyword additions with match types. Proactively checks bidding strategy — flags BROAD match on campaigns without Smart Bidding as dangerous in the preview. |
|
|
315
319
|
| `add_negative_keywords` | Propose negative keywords directly on a campaign |
|
|
@@ -282,6 +282,10 @@ All write operations follow a **draft → preview → confirm** workflow. Nothin
|
|
|
282
282
|
| `draft_business_name_asset` | Create the business name shown with the ads, for a campaign or the account. |
|
|
283
283
|
| `link_asset_to_customer` | Link existing assets account-wide; the asset type is checked against the field type. |
|
|
284
284
|
| `update_callout` / `update_sitelink` / `update_structured_snippet` | Edit an asset in place, keeping its ID and history; the apply refuses if it was changed in Google Ads since the preview. |
|
|
285
|
+
| `draft_call_asset` / `update_call_asset` | Create a call asset (phone number) for an ad group, a campaign or the account, or edit one in place; numbers are parsed and checked against their country. |
|
|
286
|
+
| `add_ad_schedule` | Add ad schedule windows to a campaign; overlaps are refused, and a campaign's first schedule needs a double confirmation. |
|
|
287
|
+
| `draft_promotion` / `update_promotion` | Create a promotion asset, or edit one in place without losing the fields you don't pass; amounts in the account currency. |
|
|
288
|
+
| `draft_price_asset` | Create a price asset with 3-8 offerings, in the account currency. |
|
|
285
289
|
| `draft_image_assets` | Create campaign image assets from local files, public image URLs or uploads (PNG, JPEG, or GIF). |
|
|
286
290
|
| `draft_keywords` | Propose keyword additions with match types. Proactively checks bidding strategy — flags BROAD match on campaigns without Smart Bidding as dangerous in the preview. |
|
|
287
291
|
| `add_negative_keywords` | Propose negative keywords directly on a campaign |
|