meta-ads-mcp 0.3.5__py3-none-any.whl → 0.3.7__py3-none-any.whl

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.
meta_ads_mcp/__init__.py CHANGED
@@ -7,7 +7,7 @@ with the Claude LLM.
7
7
 
8
8
  from meta_ads_mcp.core.server import main
9
9
 
10
- __version__ = "0.3.5"
10
+ __version__ = "0.3.7"
11
11
 
12
12
  __all__ = [
13
13
  'get_ad_accounts',
meta_ads_mcp/api.py CHANGED
@@ -767,7 +767,7 @@ async def get_account_info(access_token: str = None, account_id: str = None) ->
767
767
 
768
768
  @mcp_server.tool()
769
769
  @meta_api_tool
770
- async def get_campaigns(access_token: str = None, account_id: str = None, limit: int = 10, status_filter: str = "") -> str:
770
+ async def get_campaigns(access_token: str = None, account_id: str = None, limit: int = 10, status_filter: str = "", after: str = "") -> str:
771
771
  """
772
772
  Get campaigns for a Meta Ads account with optional filtering.
773
773
 
@@ -776,6 +776,7 @@ async def get_campaigns(access_token: str = None, account_id: str = None, limit:
776
776
  account_id: Meta Ads account ID (format: act_XXXXXXXXX)
777
777
  limit: Maximum number of campaigns to return (default: 10)
778
778
  status_filter: Filter by status (empty for all, or 'ACTIVE', 'PAUSED', etc.)
779
+ after: Pagination cursor to get the next set of results
779
780
  """
780
781
  # If no account ID is specified, try to get the first one for the user
781
782
  if not account_id:
@@ -796,6 +797,9 @@ async def get_campaigns(access_token: str = None, account_id: str = None, limit:
796
797
  if status_filter:
797
798
  params["effective_status"] = [status_filter]
798
799
 
800
+ if after:
801
+ params["after"] = after
802
+
799
803
  data = await make_api_request(endpoint, access_token, params)
800
804
 
801
805
  return json.dumps(data, indent=2)
@@ -841,7 +845,7 @@ async def create_campaign(
841
845
  access_token: Meta API access token (optional - will use cached token if not provided)
842
846
  account_id: Meta Ads account ID (format: act_XXXXXXXXX)
843
847
  name: Campaign name
844
- objective: Campaign objective (AWARENESS, TRAFFIC, ENGAGEMENT, etc.)
848
+ objective: Campaign objective. enum{BRAND_AWARENESS, LEAD_GENERATION, LINK_CLICKS, CONVERSIONS, OUTCOME_TRAFFIC, etc.}.
845
849
  status: Initial campaign status (default: PAUSED)
846
850
  special_ad_categories: List of special ad categories if applicable
847
851
  daily_budget: Daily budget in account currency (in cents)
meta_ads_mcp/core/api.py CHANGED
@@ -206,6 +206,9 @@ def meta_api_tool(func):
206
206
  if (auth_manager.app_id == "YOUR_META_APP_ID" or not auth_manager.app_id) and not auth_manager.use_pipeboard:
207
207
  logger.error("TOKEN VALIDATION FAILED: No valid app_id configured")
208
208
  logger.error("Please set META_APP_ID environment variable or configure in your code")
209
+ elif auth_manager.use_pipeboard:
210
+ logger.error("TOKEN VALIDATION FAILED: Pipeboard authentication enabled but no valid token available")
211
+ logger.error("Complete authentication via Pipeboard service or check PIPEBOARD_API_TOKEN")
209
212
  else:
210
213
  logger.error("Check logs above for detailed token validation failures")
211
214
  except Exception as e:
@@ -221,16 +224,21 @@ def meta_api_tool(func):
221
224
  # Add more specific troubleshooting information
222
225
  auth_url = auth_manager.get_auth_url()
223
226
  app_id = auth_manager.app_id
227
+ using_pipeboard = auth_manager.use_pipeboard
224
228
 
225
229
  logger.error("TOKEN VALIDATION SUMMARY:")
226
230
  logger.error(f"- Current app_id: '{app_id}'")
227
231
  logger.error(f"- Environment META_APP_ID: '{os.environ.get('META_APP_ID', 'Not set')}'")
228
232
  logger.error(f"- Pipeboard API token configured: {'Yes' if os.environ.get('PIPEBOARD_API_TOKEN') else 'No'}")
233
+ logger.error(f"- Using Pipeboard authentication: {'Yes' if using_pipeboard else 'No'}")
229
234
 
230
- # Check for common configuration issues
231
- if app_id == "YOUR_META_APP_ID" or not app_id:
235
+ # Check for common configuration issues - but only if not using Pipeboard
236
+ if not using_pipeboard and (app_id == "YOUR_META_APP_ID" or not app_id):
232
237
  logger.error("ISSUE DETECTED: No valid Meta App ID configured")
233
238
  logger.error("ACTION REQUIRED: Set META_APP_ID environment variable with a valid App ID")
239
+ elif using_pipeboard:
240
+ logger.error("ISSUE DETECTED: Pipeboard authentication configured but no valid token available")
241
+ logger.error("ACTION REQUIRED: Complete authentication via Pipeboard service")
234
242
 
235
243
  return json.dumps({
236
244
  "error": {
@@ -116,7 +116,7 @@ async def get_login_link(access_token: str = None) -> str:
116
116
  "authentication_method": "meta_oauth",
117
117
  "token_exchange_message": f"Your authentication token will be valid for approximately {token_duration}." +
118
118
  (" Long-lived token exchange is enabled." if token_exchange_supported else
119
- " To enable long-lived tokens (60 days), set the META_APP_SECRET environment variable."),
119
+ " For direct Meta authentication, long-lived tokens require META_APP_SECRET. Consider using Pipeboard authentication instead (60-day tokens by default)."),
120
120
  "note": "After authenticating, the token will be automatically saved."
121
121
  }
122
122
 
@@ -9,7 +9,7 @@ from .server import mcp_server
9
9
 
10
10
  @mcp_server.tool()
11
11
  @meta_api_tool
12
- async def get_campaigns(access_token: str = None, account_id: str = None, limit: int = 10, status_filter: str = "") -> str:
12
+ async def get_campaigns(access_token: str = None, account_id: str = None, limit: int = 10, status_filter: str = "", after: str = "") -> str:
13
13
  """
14
14
  Get campaigns for a Meta Ads account with optional filtering.
15
15
 
@@ -26,6 +26,7 @@ async def get_campaigns(access_token: str = None, account_id: str = None, limit:
26
26
  status_filter: Filter by effective status (e.g., 'ACTIVE', 'PAUSED', 'ARCHIVED').
27
27
  Maps to the 'effective_status' API parameter, which expects an array
28
28
  (this function handles the required JSON formatting). Leave empty for all statuses.
29
+ after: Pagination cursor to get the next set of results
29
30
  """
30
31
  # If no account ID is specified, try to get the first one for the user
31
32
  if not account_id:
@@ -47,6 +48,9 @@ async def get_campaigns(access_token: str = None, account_id: str = None, limit:
47
48
  # API expects an array, encode it as a JSON string
48
49
  params["effective_status"] = json.dumps([status_filter])
49
50
 
51
+ if after:
52
+ params["after"] = after
53
+
50
54
  data = await make_api_request(endpoint, access_token, params)
51
55
 
52
56
  return json.dumps(data, indent=2)
@@ -104,7 +108,7 @@ async def create_campaign(
104
108
  access_token: Meta API access token (optional - will use cached token if not provided)
105
109
  account_id: Meta Ads account ID (format: act_XXXXXXXXX)
106
110
  name: Campaign name
107
- objective: Campaign objective (AWARENESS, TRAFFIC, ENGAGEMENT, etc.)
111
+ objective: Campaign objective. Validates ad objectives. enum{BRAND_AWARENESS, LEAD_GENERATION, LINK_CLICKS, CONVERSIONS, OUTCOME_TRAFFIC, etc.}.
108
112
  status: Initial campaign status (default: PAUSED)
109
113
  special_ad_categories: List of special ad categories if applicable
110
114
  daily_budget: Daily budget in account currency (in cents) as a string
@@ -24,9 +24,13 @@ using_pipeboard = bool(os.environ.get("PIPEBOARD_API_TOKEN", ""))
24
24
  # Print warning if Meta app credentials are not configured and not using Pipeboard
25
25
  if not using_pipeboard:
26
26
  if not META_APP_ID:
27
- print("WARNING: META_APP_ID environment variable is not set. Authentication will not work properly.")
27
+ print("WARNING: META_APP_ID environment variable is not set.")
28
+ print("RECOMMENDED: Use Pipeboard authentication by setting PIPEBOARD_API_TOKEN instead.")
29
+ print("ALTERNATIVE: For direct Meta authentication, set META_APP_ID to your Meta App ID.")
28
30
  if not META_APP_SECRET:
29
- print("WARNING: META_APP_SECRET environment variable is not set. Long-lived token exchange will not work.")
31
+ print("WARNING: META_APP_SECRET environment variable is not set.")
32
+ print("NOTE: This is only needed for direct Meta authentication. Pipeboard authentication doesn't require this.")
33
+ print("RECOMMENDED: Use Pipeboard authentication by setting PIPEBOARD_API_TOKEN instead.")
30
34
 
31
35
  # Configure logging to file
32
36
  def setup_logging():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meta-ads-mcp
3
- Version: 0.3.5
3
+ Version: 0.3.7
4
4
  Summary: Model Calling Protocol (MCP) plugin for interacting with Meta Ads API
5
5
  Project-URL: Homepage, https://github.com/nictuku/meta-ads-mcp
6
6
  Project-URL: Bug Tracker, https://github.com/nictuku/meta-ads-mcp/issues
@@ -11,7 +11,7 @@ Keywords: ads,api,claude,facebook,mcp,meta
11
11
  Classifier: License :: OSI Approved :: MIT License
12
12
  Classifier: Operating System :: OS Independent
13
13
  Classifier: Programming Language :: Python :: 3
14
- Requires-Python: >=3.9.6
14
+ Requires-Python: >=3.10
15
15
  Requires-Dist: httpx>=0.26.0
16
16
  Requires-Dist: mcp[cli]>=1.6.0
17
17
  Requires-Dist: pathlib>=1.0.1
@@ -31,6 +31,28 @@ A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server for in
31
31
 
32
32
  ![Meta Ads MCP in action: Visualize ad performance metrics and creative details directly in Claude or your favorite MCP client, with rich insights about campaign reach, engagement, and costs](./images/meta-ads-example.png)
33
33
 
34
+ ## Quick Start
35
+
36
+ 1. Sign-up to [Pipeboard](https://pipeboard.co) to authenticate with Meta (alternatively, you can setup your own [custom meta app](CUSTOM_META_APP.md))
37
+ 2. Get your Pipeboard token at [pipeboard.co/api-tokens](https://pipeboard.co/api-tokens)
38
+ 3. Add this configuration to your MCP client:
39
+
40
+ ```json
41
+ "mcpServers": {
42
+ "meta-ads": {
43
+ "command": "uvx",
44
+ "args": ["meta-ads-mcp"],
45
+ "env": {
46
+ "PIPEBOARD_API_TOKEN": "your_pipeboard_token" // Get your token at https://pipeboard.co/api-tokens
47
+ }
48
+ }
49
+ }
50
+ ```
51
+
52
+ That's it! You can now use Meta Ads MCP in your favorite MCP client.
53
+
54
+ > **Note**: If you prefer to use your own Meta Developer App instead of Pipeboard authentication, see [CUSTOM_META_APP.md](CUSTOM_META_APP.md) for instructions.
55
+
34
56
  ## Features
35
57
 
36
58
  - **AI-Powered Campaign Analysis**: Let your favorite LLM analyze your campaigns and provide actionable insights on performance
@@ -44,56 +66,80 @@ A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server for in
44
66
  - **Simple Authentication**: Easy setup with secure OAuth authentication
45
67
  - **Cross-Platform Support**: Works on Windows, macOS, and Linux
46
68
 
47
- ## Installation
69
+ ## Advanced Setup
48
70
 
49
- ### Using uv (recommended)
71
+ ### Development Installation
50
72
 
51
- When using uv no specific installation is needed. We can use uvx to directly run meta-ads-mcp:
73
+ If you're contributing to the project or need to run it directly:
52
74
 
53
75
  ```bash
54
- # Run with Meta authentication
55
- uvx meta-ads-mcp --app-id YOUR_META_ADS_APP_ID
76
+ # From the repository root
77
+ uv pip install -e .
56
78
  ```
57
79
 
58
- If you want to install the package:
80
+ ## Privacy and Security
59
81
 
60
- ```bash
61
- uv pip install meta-ads-mcp
62
- ```
82
+ The Meta Ads MCP follows security best practices:
63
83
 
64
- For development (if you've cloned the repository):
84
+ 1. Tokens are cached in a platform-specific secure location:
85
+ - Windows: `%APPDATA%\meta-ads-mcp\token_cache.json`
86
+ - macOS: `~/Library/Application Support/meta-ads-mcp/token_cache.json`
87
+ - Linux: `~/.config/meta-ads-mcp/token_cache.json`
65
88
 
66
- ```bash
67
- # From the repository root
68
- uv pip install -e .
69
- ```
89
+ 2. You do not need to provide your access token for each command; it will be automatically retrieved from the cache.
70
90
 
71
- ### Using pip
91
+ ## Testing
72
92
 
73
- Alternatively, you can install meta-ads-mcp via pip:
93
+ ### LLM Interface Testing
74
94
 
75
- ```bash
76
- pip install meta-ads-mcp
77
- ```
95
+ When using the Meta Ads MCP with an LLM interface (like Claude):
78
96
 
79
- After installation, you can run it as:
97
+ 1. Ensure the PIPEBOARD_API_TOKEN environment variable is set
98
+ 2. Verify account access by calling `mcp_meta_ads_get_ad_accounts`
99
+ 3. Check specific account details with `mcp_meta_ads_get_account_info`
80
100
 
81
- ```bash
82
- # Run with Meta authentication
83
- python -m meta_ads_mcp --app-id YOUR_META_ADS_APP_ID
84
- ```
101
+ ## Troubleshooting
102
+
103
+ ### Authentication Issues
104
+
105
+ If you encounter authentication issues:
106
+
107
+ 1. Verify your Pipeboard setup:
108
+ - Check that `PIPEBOARD_API_TOKEN` is set correctly
109
+ - Verify your token in the Pipeboard dashboard
110
+ - Try forcing a new login: `python test_pipeboard_auth.py --force-login`
111
+
112
+ 2. When using the LLM interface:
113
+ - Ensure the PIPEBOARD_API_TOKEN environment variable is set
114
+ - Check that the callback server is running properly
115
+
116
+ ### API Errors
117
+
118
+ If you receive errors from the Meta API:
119
+ 1. Ensure the user has appropriate permissions on the ad accounts
120
+ 2. Check if there are rate limits or other restrictions
121
+ 3. Verify your Pipeboard token hasn't expired
122
+
123
+ ## Log Location
124
+
125
+ Log files are stored in a platform-specific location:
126
+
127
+ - **macOS**: `~/Library/Application Support/meta-ads-mcp/meta_ads_debug.log`
128
+ - **Windows**: `%APPDATA%\meta-ads-mcp\meta_ads_debug.log`
129
+ - **Linux**: `~/.config/meta-ads-mcp/meta_ads_debug.log`
85
130
 
86
131
  ## Configuration
87
132
 
88
- ### Create a Meta Developer App (Required)
133
+ ### Pipeboard Authentication
89
134
 
90
- Before using the MCP server, you'll need to set up a Meta Developer App:
135
+ The easiest way to use Meta Ads MCP is with Pipeboard authentication:
91
136
 
92
- 1. Go to [Meta for Developers](https://developers.facebook.com/) and create a new app
93
- 2. Choose the "Business" app type
94
- 3. In your app settings, add the "Marketing API" product
95
- 4. Configure your app's OAuth redirect URI to include `http://localhost:8888/callback`
96
- 5. Note your App ID (Client ID) for use with the MCP
137
+ 1. Sign up at [Pipeboard.co](https://pipeboard.co) and generate an API token
138
+ 2. Set the environment variable:
139
+ ```bash
140
+ export PIPEBOARD_API_TOKEN=your_pipeboard_token
141
+ ```
142
+ 3. Run meta-ads-mcp - it will handle authentication automatically
97
143
 
98
144
  ### Usage with Cursor or Claude Desktop
99
145
 
@@ -103,7 +149,10 @@ Add this to your `claude_desktop_config.json` to integrate with Claude or `~/.cu
103
149
  "mcpServers": {
104
150
  "meta-ads": {
105
151
  "command": "uvx",
106
- "args": ["meta-ads-mcp", "--app-id", "YOUR_META_ADS_APP_ID"]
152
+ "args": ["meta-ads-mcp"],
153
+ "env": {
154
+ "PIPEBOARD_API_TOKEN": "your_pipeboard_token" // Get your token at https://pipeboard.co
155
+ }
107
156
  }
108
157
  }
109
158
  ```
@@ -319,157 +368,3 @@ Add this to your `claude_desktop_config.json` to integrate with Claude or `~/.cu
319
368
  - `time_end`: Unix timestamp for when the high demand period should end.
320
369
  - `access_token` (optional): Meta API access token.
321
370
  - Returns: JSON string with the ID of the created budget schedule or an error message.
322
-
323
- ## Authentication
324
-
325
- The Meta Ads MCP uses Meta's OAuth 2.0 authentication flow, designed for desktop apps:
326
-
327
- When authenticating, it will:
328
-
329
- 1. Start a local callback server on your machine
330
- 2. Open a browser window to authenticate with Meta
331
- 3. Ask you to authorize the app
332
- 4. Redirect back to the local server to extract and store the token securely
333
-
334
- This method requires you to [create a Meta Developer App](#create-a-meta-developer-app) as described above.
335
-
336
- ## Troubleshooting and Logging
337
-
338
- The Meta Ads MCP includes a comprehensive logging system to help troubleshoot issues:
339
-
340
- ### Log Location
341
-
342
- Log files are stored in a platform-specific location:
343
-
344
- - **macOS**: `~/Library/Application Support/meta-ads-mcp/meta_ads_debug.log`
345
- - **Windows**: `%APPDATA%\meta-ads-mcp\meta_ads_debug.log`
346
- - **Linux**: `~/.config/meta-ads-mcp/meta_ads_debug.log`
347
-
348
- ### Common Issues
349
-
350
- #### Authentication Issues
351
-
352
- If you encounter errors like `(#200) Provide valid app ID`, check the following:
353
- - Ensure you've set up a Meta Developer App correctly
354
- - Verify that you're passing the correct App ID using one of these methods:
355
- - Set the `META_APP_ID` environment variable: `export META_APP_ID=your_app_id`
356
- - Pass it as a command-line argument: `meta-ads-mcp --app-id your_app_id`
357
-
358
- #### API Errors
359
-
360
- If you receive errors from the Meta API:
361
-
362
- 1. Verify your app has the Marketing API product added
363
- 2. Ensure the user has appropriate permissions on the ad accounts
364
- 3. Check if there are rate limits or other restrictions on your app
365
-
366
- ### Debugging Command
367
-
368
- For specific image download issues, use the built-in diagnostic tool:
369
-
370
- ```python
371
- # Using direct tool call
372
- mcp_meta_ads_debug_image_download(ad_id="your_ad_id")
373
- ```
374
-
375
- This will give you detailed information about the download process and potential issues.
376
-
377
- ## Running with Different App IDs
378
-
379
- If you need to use different Meta App IDs for different purposes:
380
-
381
- ```bash
382
- # Using environment variable
383
- export META_APP_ID=your_app_id
384
- uvx meta-ads-mcp
385
-
386
- # Or using command line argument
387
- uvx meta-ads-mcp --app-id=your_app_id
388
- ```
389
-
390
- ## Privacy and Security
391
-
392
- The Meta Ads MCP follows security best practices:
393
-
394
- 1. Tokens are cached in a platform-specific secure location:
395
- - Windows: `%APPDATA%\meta-ads-mcp\token_cache.json`
396
- - macOS: `~/Library/Application Support/meta-ads-mcp/token_cache.json`
397
- - Linux: `~/.config/meta-ads-mcp/token_cache.json`
398
-
399
- 2. You do not need to provide your access token for each command; it will be automatically retrieved from the cache.
400
-
401
- 3. You can set the `META_APP_ID` environment variable instead of passing it as an argument:
402
- ```bash
403
- export META_APP_ID=your_app_id
404
- uvx meta-ads-mcp
405
- ```
406
-
407
- 4. You can provide a direct access token using the `META_ACCESS_TOKEN` environment variable. This bypasses both the local token cache and the Pipeboard authentication method:
408
- ```bash
409
- export META_ACCESS_TOKEN=your_access_token
410
- uvx meta-ads-mcp
411
- ```
412
- This is useful for CI/CD pipelines or when you already have a valid access token from another source.
413
-
414
- ## Testing
415
-
416
- ### CLI Testing
417
-
418
- Run the test script to verify authentication and basic functionality:
419
-
420
- ```bash
421
- python test_meta_ads_auth.py --app-id YOUR_APP_ID
422
- ```
423
-
424
- Use the `--force-login` flag to force a new authentication even if a cached token exists:
425
-
426
- ```bash
427
- python test_meta_ads_auth.py --app-id YOUR_APP_ID --force-login
428
- ```
429
-
430
- ### LLM Interface Testing
431
-
432
- When using the Meta Ads MCP with an LLM interface (like Claude):
433
-
434
- 1. Test authentication by calling the `mcp_meta_ads_get_login_link` tool
435
- 2. Verify account access by calling `mcp_meta_ads_get_ad_accounts`
436
- 3. Check specific account details with `mcp_meta_ads_get_account_info`
437
-
438
- These functions will automatically handle authentication if needed and provide a clickable login link if required.
439
-
440
- ## Troubleshooting
441
-
442
- ### Authentication Issues
443
-
444
- If you encounter authentication issues:
445
-
446
- 1. When using the LLM interface:
447
- - Use the `mcp_meta_ads_get_login_link` tool to generate a fresh authentication link
448
- - Ensure you click the link and complete the authorization flow in your browser
449
- - Check that the callback server is running properly (the tool will report this)
450
-
451
- 2. When using direct Meta OAuth:
452
- - Run with `--force-login` to get a fresh token: `uvx meta-ads-mcp --login --app-id YOUR_APP_ID --force-login`
453
- - Make sure the terminal has permissions to open a browser window
454
-
455
- 3. Skip authentication entirely by providing a token directly:
456
- - If you already have a valid access token, you can bypass the authentication flow:
457
- - `export META_ACCESS_TOKEN=your_access_token`
458
- - This will ignore both the local token cache and the Pipeboard authentication
459
-
460
- ### API Errors
461
-
462
- If you receive errors from the Meta API:
463
-
464
- 1. Verify your app has the Marketing API product added
465
- 2. Ensure the user has appropriate permissions on the ad accounts
466
- 3. Check if there are rate limits or other restrictions on your app
467
-
468
- ## Versioning
469
-
470
- You can check the current version of the package:
471
-
472
- ```python
473
- import meta_ads_mcp
474
- print(meta_ads_mcp.__version__)
475
- ```
@@ -1,24 +1,24 @@
1
- meta_ads_mcp/__init__.py,sha256=RSDlsZrR_mt2PklzoAeG_4555QHPTM1ZJrvr5aVadjU,1236
1
+ meta_ads_mcp/__init__.py,sha256=2862NGwFr1iQ3EIKCJEc_uFo5L6stIhTjOH8fkFy4Gg,1236
2
2
  meta_ads_mcp/__main__.py,sha256=XaQt3iXftG_7f0Zu7Wop9SeFgrD2WBn0EQOaPMc27d8,207
3
- meta_ads_mcp/api.py,sha256=z0pW1pV3hE75IeG9QTqB3K7QoQOUxUg2MBQ9IjAWUYA,84363
3
+ meta_ads_mcp/api.py,sha256=DJQCzPiguObgdHg0s9Nz9rQLLuaONB-oYQcUfNUKg2A,84546
4
4
  meta_ads_mcp/core/__init__.py,sha256=NvRA_socbKPEXFXIYdso5jBHb8cEEpF_2Mwhe3Obguw,1105
5
5
  meta_ads_mcp/core/accounts.py,sha256=Nmp7lPxO9wmq25jWV7_H0LIqnEbBhpCVBlLGW2HUaq0,2277
6
6
  meta_ads_mcp/core/ads.py,sha256=b_81GlGHIM4jISvuDZmHNyc6uW7uD3ovX68ezBci9MM,29747
7
7
  meta_ads_mcp/core/ads_library.py,sha256=onStn9UkRqYDC60gOPS-iKDtP1plz6DygUb7hUZ0Jw8,2807
8
8
  meta_ads_mcp/core/adsets.py,sha256=WBPNaI7ITnUOnGMus4_0MX15DslOCzfM5q1zF1VWs2s,12408
9
- meta_ads_mcp/core/api.py,sha256=9Whcs2orILhPiWkAR3qGmJNouYE5uri_e_Jzeh5Hjn8,14208
9
+ meta_ads_mcp/core/api.py,sha256=aAzM6Q75VQOFXtr5D-mDmBRhxWK4wsiODsJYnR3mpDI,14994
10
10
  meta_ads_mcp/core/auth.py,sha256=pDARBh3NBNqCpxflVrVvR4VsWuIveFxQmb9-P-gLFDM,20730
11
- meta_ads_mcp/core/authentication.py,sha256=2MG13r28OlIcOIgPSRrGXJ2-4JSt3ifU-oB9tiOsrKQ,6511
11
+ meta_ads_mcp/core/authentication.py,sha256=PFqmN7ujtNsJCEDutDzs81peGWFJ8_0YLYI3-o8kmt4,6577
12
12
  meta_ads_mcp/core/budget_schedules.py,sha256=UxseExsvKAiPwfDCY9aycT4kys4xqeNytyq-yyDOxrs,2901
13
13
  meta_ads_mcp/core/callback_server.py,sha256=AUymElaVwHqFyqB2wgqf6A68KsqwtKoYmY-7JZZt8Ks,43286
14
- meta_ads_mcp/core/campaigns.py,sha256=TQHDhJ0s7cLbo5-zd2Bk8YgwToWBoK3YBMFG8fZbEHI,10757
14
+ meta_ads_mcp/core/campaigns.py,sha256=Fd477GsD1Gx08Ve0uXUCvr4fC-xQCeVHPBwRVaeRQKk,10965
15
15
  meta_ads_mcp/core/insights.py,sha256=XAm4uu83gWp84PEGqAJ3GFIqlvg7prh6MdD71JfvBCo,18072
16
16
  meta_ads_mcp/core/pipeboard_auth.py,sha256=VvbxEB8ZOhnMccLU7HI1HgaPWHCl5NGrzZCm-zzHze4,22798
17
17
  meta_ads_mcp/core/resources.py,sha256=-zIIfZulpo76vcKv6jhAlQq91cR2SZ3cjYZt3ek3x0w,1236
18
18
  meta_ads_mcp/core/server.py,sha256=5WofyJZGzeDhbGzLXPhQjT0XnZwo0syeK8TM_XnJo4Q,5507
19
- meta_ads_mcp/core/utils.py,sha256=EPmpBX3OZaTWRS_YuEk_PLLyLXj7DeR6Ks8WoaZ5JGQ,6366
20
- meta_ads_mcp-0.3.5.dist-info/METADATA,sha256=lbTJVtr81f-WwPI87zeKUKqGe0HzZrlC5c-WJeZKv2c,19650
21
- meta_ads_mcp-0.3.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
22
- meta_ads_mcp-0.3.5.dist-info/entry_points.txt,sha256=Dv2RkoBjRJBqj6CyhwqGIiwPCD-SCL1-7B9-zmVRuv0,57
23
- meta_ads_mcp-0.3.5.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
24
- meta_ads_mcp-0.3.5.dist-info/RECORD,,
19
+ meta_ads_mcp/core/utils.py,sha256=DsizDYuJnWUpkbShV1y5Qe8t47Qf59aPZ6O9v0hzdkY,6705
20
+ meta_ads_mcp-0.3.7.dist-info/METADATA,sha256=QJDzaqVO24H-vuPnptWEgsXph_BhPYasxwRSxAVucUk,16579
21
+ meta_ads_mcp-0.3.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
22
+ meta_ads_mcp-0.3.7.dist-info/entry_points.txt,sha256=Dv2RkoBjRJBqj6CyhwqGIiwPCD-SCL1-7B9-zmVRuv0,57
23
+ meta_ads_mcp-0.3.7.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
24
+ meta_ads_mcp-0.3.7.dist-info/RECORD,,