meta-ads-mcp 0.11.3__tar.gz → 0.11.4__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.
Files changed (78) hide show
  1. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/PKG-INFO +1 -1
  2. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/__init__.py +1 -1
  3. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/ads.py +15 -3
  4. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/openai_deep_research.py +0 -4
  5. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/pyproject.toml +1 -1
  6. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/.github/workflows/publish.yml +0 -0
  7. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/.github/workflows/test.yml +0 -0
  8. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/.gitignore +0 -0
  9. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/CUSTOM_META_APP.md +0 -0
  10. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/Dockerfile +0 -0
  11. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/LICENSE +0 -0
  12. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/LOCAL_INSTALLATION.md +0 -0
  13. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/META_API_NOTES.md +0 -0
  14. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/README.md +0 -0
  15. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/RELEASE.md +0 -0
  16. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/STREAMABLE_HTTP_SETUP.md +0 -0
  17. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/examples/README.md +0 -0
  18. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/examples/example_http_client.py +0 -0
  19. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/future_improvements.md +0 -0
  20. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/images/meta-ads-example.png +0 -0
  21. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_auth.sh +0 -0
  22. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/__main__.py +0 -0
  23. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/__init__.py +0 -0
  24. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/accounts.py +0 -0
  25. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/ads_library.py +0 -0
  26. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/adsets.py +0 -0
  27. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/api.py +0 -0
  28. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/auth.py +0 -0
  29. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/authentication.py +0 -0
  30. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/budget_schedules.py +0 -0
  31. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/callback_server.py +0 -0
  32. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/campaigns.py +0 -0
  33. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/duplication.py +0 -0
  34. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/http_auth_integration.py +0 -0
  35. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/insights.py +0 -0
  36. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/pipeboard_auth.py +0 -0
  37. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/reports.py +0 -0
  38. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/resources.py +0 -0
  39. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/server.py +0 -0
  40. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/targeting.py +0 -0
  41. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/meta_ads_mcp/core/utils.py +0 -0
  42. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/requirements.txt +0 -0
  43. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/setup.py +0 -0
  44. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/smithery.yaml +0 -0
  45. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/README.md +0 -0
  46. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/README_REGRESSION_TESTS.md +0 -0
  47. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/__init__.py +0 -0
  48. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/conftest.py +0 -0
  49. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/e2e_account_info_search_issue.py +0 -0
  50. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_account_info_access_fix.py +0 -0
  51. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_account_search.py +0 -0
  52. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_budget_update.py +0 -0
  53. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_budget_update_e2e.py +0 -0
  54. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_dsa_beneficiary.py +0 -0
  55. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_dsa_integration.py +0 -0
  56. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_duplication.py +0 -0
  57. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_duplication_regression.py +0 -0
  58. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_dynamic_creatives.py +0 -0
  59. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_estimate_audience_size.py +0 -0
  60. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_estimate_audience_size_e2e.py +0 -0
  61. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_get_account_pages.py +0 -0
  62. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_get_ad_creatives_fix.py +0 -0
  63. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_get_ad_image_quality_improvements.py +0 -0
  64. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_get_ad_image_regression.py +0 -0
  65. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_http_transport.py +0 -0
  66. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_insights_actions_and_values.py +0 -0
  67. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_integration_openai_mcp.py +0 -0
  68. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_is_dynamic_creative_adset.py +0 -0
  69. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_mobile_app_adset_creation.py +0 -0
  70. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_mobile_app_adset_issue.py +0 -0
  71. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_openai.py +0 -0
  72. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_openai_mcp_deep_research.py +0 -0
  73. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_page_discovery.py +0 -0
  74. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_page_discovery_integration.py +0 -0
  75. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_targeting.py +0 -0
  76. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_targeting_search_e2e.py +0 -0
  77. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_update_ad_creative_id.py +0 -0
  78. {meta_ads_mcp-0.11.3 → meta_ads_mcp-0.11.4}/tests/test_upload_ad_image.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meta-ads-mcp
3
- Version: 0.11.3
3
+ Version: 0.11.4
4
4
  Summary: Model Context Protocol (MCP) server for interacting with Meta Ads API
5
5
  Project-URL: Homepage, https://github.com/pipeboard-co/meta-ads-mcp
6
6
  Project-URL: Bug Tracker, https://github.com/pipeboard-co/meta-ads-mcp/issues
@@ -6,7 +6,7 @@ This package provides a Meta Ads MCP integration
6
6
 
7
7
  from meta_ads_mcp.core.server import main
8
8
 
9
- __version__ = "0.11.3"
9
+ __version__ = "0.11.4"
10
10
 
11
11
  __all__ = [
12
12
  'get_ad_accounts',
@@ -635,15 +635,27 @@ async def upload_ad_image(
635
635
  image_bytes = await try_multiple_download_methods(image_url)
636
636
  except Exception as download_error:
637
637
  return json.dumps({
638
- "error": "Failed to download image from URL",
639
- "details": str(download_error),
638
+ "error": "We couldn’t download the image from the link provided.",
639
+ "reason": "The server returned an error while trying to fetch the image.",
640
640
  "image_url": image_url,
641
+ "details": str(download_error),
642
+ "suggestions": [
643
+ "Make sure the link is publicly reachable (no login, VPN, or IP restrictions).",
644
+ "If the image is hosted on a private app or server, move it to a public URL or a CDN and try again.",
645
+ "Verify the URL is correct and serves the actual image file."
646
+ ]
641
647
  }, indent=2)
642
648
 
643
649
  if not image_bytes:
644
650
  return json.dumps({
645
- "error": "No data returned when downloading image from URL",
651
+ "error": "We couldn’t access the image at the link you provided.",
652
+ "reason": "The image link doesn’t appear to be publicly accessible or didn’t return any data.",
646
653
  "image_url": image_url,
654
+ "suggestions": [
655
+ "Double‑check that the link is public and does not require login, VPN, or IP allow‑listing.",
656
+ "If the image is stored in a private app (for example, a self‑hosted gallery), upload it to a public URL or a CDN and try again.",
657
+ "Confirm the URL is correct and points directly to an image file (e.g., .jpg, .png)."
658
+ ]
647
659
  }, indent=2)
648
660
 
649
661
  import base64 # Local import
@@ -315,8 +315,6 @@ async def search(
315
315
  ) -> str:
316
316
  """
317
317
  Search through Meta Ads data and return matching record IDs.
318
-
319
- This tool is required for OpenAI ChatGPT Deep Research integration.
320
318
  It searches across ad accounts, campaigns, ads, pages, and businesses to find relevant records
321
319
  based on the provided query.
322
320
 
@@ -371,8 +369,6 @@ async def fetch(
371
369
  ) -> str:
372
370
  """
373
371
  Fetch complete record data by ID.
374
-
375
- This tool is required for OpenAI ChatGPT Deep Research integration.
376
372
  It retrieves the full data for a specific record identified by its ID.
377
373
 
378
374
  Args:
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "meta-ads-mcp"
7
- version = "0.11.3"
7
+ version = "0.11.4"
8
8
  description = "Model Context Protocol (MCP) server for interacting with Meta Ads API"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes