Skip to main content
Glama
127,264 tools. Last updated 2026-05-05 12:27

"A server for finding scientific articles, creating ad ideas, and deploying Facebook ads" matching MCP tools:

  • Run a JavaScript orchestration script in a sandboxed QuickJS runtime against the Meta Marketing API (Facebook + Instagram Ads). One runScript call can replace 10+ sequential Graph API tool invocations. ── WHEN TO USE THIS ── Default tool for any open-ended analytical question about a Meta ad account. Reach for it first when you see: - "How is my campaign doing?" / "What's working?" / "Find ad sets with bad ROAS" / "Why did CPM spike last week" - "Audit my account" / "Rank ad sets by spend efficiency" / "Compare creatives" - Any question where you'd otherwise call 3+ Graph endpoints in sequence - Any question that benefits from correlating insights + delivery info + recent edits in a single pass runScript owns reads — there are no per-surface read tools. Use `getInsights` only for the dedicated 1-account-1-window pull when you don't need to correlate. ── BATCHING DISCIPLINE ── Prefer ONE runScript call that fans out via `ads.graphParallel` (up to 20 calls concurrently). Cast a wide net on the first call; filter in-script for free. ── API SURFACE (all on the `ads` namespace) ── Async RPCs: - ads.graph(path, params?, method?) -> JSON — single Graph API call. Path may use the `{accountId}` template token (replaced with the active `act_<id>`). Default method: GET. - ads.graphParallel([{ name, path, params?, method?, paged?, limit? }]) -> { [name]: { ok, data } | { ok: false, error } } — fan-out, max 20. - Set `paged: true` to follow paging.next (capped at 20 pages). `limit` trims the final list to N rows. - ads.insights(adAccountId?, options?) -> rows — wrapper over /{accountId}/insights with sensible defaults. Pass `null` for the active account. - options: { level: "account"|"campaign"|"adset"|"ad", date_preset, time_range:{since,until}, time_increment, fields, breakdowns, action_breakdowns, limit } - ads.batch([{ method, relative_url, body? }]) -> [{ code, body }] — Graph API /batch endpoint. Up to 50 sub-requests. - ads.pagedAll(path, params?, maxPages?) -> [...] — read every page of a paged endpoint. Sync helpers: - ads.helpers.getDateRange(days) -> { since, until } — YYYY-MM-DD strings, UTC. - ads.helpers.formatDate(date) | daysBetween(a,b) | withActPrefix(id) | stripActPrefix(id) Constants: - ads.activeAccountId — the active ad-account numeric id (no act_ prefix). - ads.fields.* — comma-joined field-list strings: campaign, adset, ad, adAccount, insightsAudit, insightsLite. Drop into params.fields. - ads.datePresets — array of preset strings accepted by /insights date_preset. Path templates: - "/{accountId}/campaigns" → "/act_<active-id>/campaigns" - "/{accountId}/insights" → "/act_<active-id>/insights" - Plain ids like "/me/adaccounts" are untouched. ── COMMON PATTERNS ── Single insights pull: ```js return await ads.insights(null, { level: "campaign", date_preset: "last_30d", fields: ads.fields.insightsAudit.split(","), }); ``` Audit fan-out — campaigns + ad sets + ads + last 30d insights, in one call: ```js const r = await ads.graphParallel([ { name: "campaigns", path: "/{accountId}/campaigns", params: { fields: ads.fields.campaign }, paged: true }, { name: "adsets", path: "/{accountId}/adsets", params: { fields: ads.fields.adset }, paged: true }, { name: "ads", path: "/{accountId}/ads", params: { fields: ads.fields.ad }, paged: true, limit: 200 }, { name: "insights", path: "/{accountId}/insights", params: { level: "campaign", date_preset: "last_30d", fields: ads.fields.insightsAudit }, paged: true }, ]); const worst = (r.insights.ok ? r.insights.data : []).filter(x => Number(x.spend) > 100 && Number(x.ctr) < 0.5); return { worstCampaigns: worst, totals: { campaigns: r.campaigns.rowCount, adsets: r.adsets.rowCount } }; ``` ── RULES ── - Top-level await works. No fetch / require / process / fs reachable. - Return value must be JSON-serializable. Limits: 30s timeout (max 45s), 500KB return cap, 100K log chars. - Mutations (pause/enable/budget) go through dedicated tools (`pauseCampaign`, `pauseAdSet`, `pauseAd`, ...). Never write through runScript. ── ANTI-PATTERNS ── - Calling runScript 5+ times to fetch different surfaces — that's what graphParallel replaces. - Returning entire data arrays — summarize, rank, or aggregate first. - Manually computing dates with new Date() math — use ads.helpers.getDateRange / formatDate.
    Connector
  • Search Cochrane systematic reviews via PubMed. Finds Cochrane Database of Systematic Reviews articles matching your query. Returns PubMed IDs, titles, and publication dates. Use get_review_detail with a PMID to get the full abstract. Args: query: Search terms for finding reviews (e.g. 'diabetes exercise', 'hypertension treatment', 'childhood vaccination safety'). limit: Maximum number of results to return (default 20, max 100).
    Connector
  • Returns step-by-step instructions for creating a Kamy API key in the dashboard. Does not open the browser.
    Connector
  • Get pre-built graph template schemas for common use cases. ⭐ USE THIS FIRST when creating a new graph project! Templates show the CORRECT graph schema format with: proper node definitions (description, flat_labels, schema with flat field definitions), relationship configurations (from, to, cardinality, data_schema), and hierarchical entity nesting. Available templates: Social Network (users, posts, follows), Knowledge Graph (topics, articles, authors), Product Catalog (products, categories, suppliers). You can use these templates directly with create_graph_project or modify them for your needs. TIP: Study these templates to understand the correct graph schema format before creating custom schemas.
    Connector
  • Convert between article identifiers (DOI, PMID, PMCID). Accepts up to 50 IDs of a single type per request. Uses the NCBI PMC ID Converter API — only resolves articles indexed in PubMed Central. For articles not in PMC, use pubmed_search_articles instead.
    Connector
  • Paginated list of all native articles on this microsite (clinician-reviewed). Returns lightweight summaries — call get_article for full body.
    Connector

Matching MCP Servers

Matching MCP Connectors

  • Ad network for AI agents — monetize MCP servers with contextual ads. 70% revenue share.

  • Manage Google, Meta, TikTok & LinkedIn ads. 91 tools for campaigns, analytics & optimization.

  • Get comprehensive bias analysis for a news source. Returns: - source_name, slug_name, page_url - articles_analyzed: total articles in the bias database for this source - avg_social_shares: average social shares per article - emotionality_score (0-10): how emotional the writing is - prescriptiveness_score (0-10): how much the source tells readers what to think/do - bias_scores: dict of all measured bias dimensions with scores (-50 to +50 for bipolar, 0 to +50 for unipolar). WARNING: this endpoint returns emoji-prefixed display keys (e.g. '🔵 Liberal <—> Conservative 🔴') rather than the plain-text keys used by get_bias_from_url, get_all_source_biases, and search_news (e.g. 'liberal conservative bias'). Do not attempt to cross-reference bias_scores keys here with bias_values keys from other endpoints. - bias_description: AI-generated overall bias summary narrative - liberal_conservative_description: narrative on political leaning - libertarian_authoritarian_description: narrative on authority stance - signature_phrases: words/phrases uniquely overrepresented vs other sources - signature_negative_phrases: uniquely negative/alarming phrases - most_shared_phrases: phrases in their most viral articles - most_emotional_phrases: phrases used in their most emotional articles - pays_for_traffic_keywords: keywords this source buys ads for - similar_sources: sources with the most similar bias profile - most_different_sources: sources with the most different bias profile - trends_graph_url: URL to a chart of this source's coverage volume over time - bias_plot_urls: dict of 2D bias scatter plot image URLs (political_lib_auth, subjective_objective, informative_opinion, oversimplification_factful) — only present when available - recent_articles: list of most recent articles with full article fields and per-article bias_values Throws an error if the source is not found. Args: source: Source name (e.g. 'Fox', 'CNN', 'Reuters'). Slug-style input (e.g. 'fox-news') is NOT supported — use full name or domain only. recent_articles: Number of recent articles to include (1-50, default 10).
    Connector
  • Search for UK SIC 2007 codes by business activity description. Describe what a business does in plain English and get ranked SIC code recommendations with relevance scores, hierarchy breadcrumbs, and GICS/ICB cross-classification mappings. Useful for finding the right SIC code for Companies House registration.
    Connector
  • Step 2 — List data sources available within a tenant. (In the Indicate system a data source is called a 'data product'.) Examples: Google Analytics, Facebook Ads, vioma, Booking.com. Returns each data source's 'id', 'displayName', and 'semantic_context_id'. → Pass the chosen 'id' as 'data_source_id' and 'semantic_context_id' to list_metrics.
    Connector
  • Returns the step-by-step setup flow for deploying PayRam as an agent. Covers install, wallet creation, faucet funding, contract deployment, and first payment. Includes chain recommendations (ETH Sepolia for testnet, Base for mainnet), faucet URLs, card-to-crypto prerequisites, and status/recovery commands for interrupted sessions.
    Connector
  • Search for UK SIC 2007 codes by business activity description. Describe what a business does in plain English and get ranked SIC code recommendations with relevance scores, hierarchy breadcrumbs, and GICS/ICB cross-classification mappings. Useful for finding the right SIC code for Companies House registration.
    Connector
  • Get current ads scheduled for a device (for testing). WHEN TO USE: - Testing device ad delivery - Debugging which ads are being shown - Verifying ad targeting is working RETURNS: - ads: Array of advertisement objects - default_stream: Default content when no ads - schedule: Current ad schedule EXAMPLE: User: "What ads are showing on device P_abc123?" get_device_ads({ fingerprint: "P_abc123" })
    Connector
  • Full-text search of clinician-reviewed pediatric psychiatry articles published on Psychiatry for Children, ranked by relevance. Use to find guidance for parents and caregivers of children.
    Connector
  • Browse the daily Congressional Record — floor speeches, debates, and legislative text published each day Congress is in session. Navigation is hierarchical: list → volumes, issues → individual articles. Use 'list' to find recent volumes, 'issues' to see what's in a volume, and 'articles' to access individual speeches and debate sections.
    Connector
  • Paginated list of all native articles on this microsite (clinician-reviewed). Returns lightweight summaries — call get_article for full body.
    Connector
  • Rename an ad (set its `name` field). Works on every ad type the user has rights to, including boosted-Page-post ads where status writes are blocked.
    Connector
  • Get Lenny Zeltser's expert writing guidelines for incident response reports. Topics: tone, words, structure, executive_summary, voice, articles, or summary for quick reference. When the topic maps to a lens (tone, words, structure), the response includes a rating-sheet checklist appendix as concrete reference points for grounded feedback. This server never requests your incident notes and instructs your AI to keep them local—guidelines flow to your AI for local analysis.
    Connector
  • Browse Emora Health condition / specialty / insurance pages. Returns either a specific page (with slug) or a paginated list. These are the canonical site pages, not blog articles. Use when: The user wants the canonical "about anxiety" / "about CBT" / "about Aetna coverage" page. For blog-style articles use search_content instead. Don't use when: You're looking for clinician-reviewed articles or longer-form content — use search_content. Example: browse_pages({ collection: 'conditions-pages', slug: 'anxiety' })
    Connector
  • Browse curated recipe collections by theme — date night, comfort food, quick weeknight, party appetizers, and more. TRIGGERS: - 'date night recipes', 'comfort food ideas', 'party appetizers' - 'meal prep recipes', 'one pot meals', 'kid-friendly recipes' - 'romantic dinner', 'game day food', 'brunch ideas'
    Connector
  • Create a new campaign on the active (or specified) ad account. Returns the new campaign id and a snapshot of its fields. Defaults to status=PAUSED so the user can review before launching. Budgets are in account-currency MINOR units (cents for USD). `special_ad_categories` is required by Meta — pass `["NONE"]` for a standard commercial ad, or one of EMPLOYMENT, HOUSING, CREDIT, ISSUES_ELECTIONS_POLITICS, ONLINE_GAMBLING_AND_GAMING, FINANCIAL_PRODUCTS_SERVICES for restricted categories.
    Connector