Skip to main content
Glama
649,985 tools. Updated 2026-10-09 20:23

"Salesforce" matching MCP tools:

  • Find arbitrage opportunities on Polymarket via monotonicity violations + partition-sum checks. Call with NO args for a `trending_scan` of the top ~200 markets by weekly volume; pass `event` for the strongest per-event partition_check, or `topic` for a themed cross-event scan. `event` (recommended for a specific market): pass a Polymarket event slug like "fed-decision-may-2026" or "when-will-bitcoin-hit-150k"; walks child markets, checks date-axis / threshold-axis ordering AND computes the partition_check (sum of YES prices across mutually-exclusive legs — should ≈1; deviations >3pp emit a BUY/SELL EVERY LEG signal). `topic` (for cross-event scanning): pass a seed question like "Strait of Hormuz traffic returns to normal" or "Fed rate decision"; searches related events across the platform, flattens markets, runs the comparator on the union. Cross-event mode catches "...by May 31" vs "...by Jun 30" patterns that single-event misses. SEMANTIC ANCHOR: cross-event pairs require ≥0.30 Jaccard similarity on question tokens (prevents Powell-Fed-Pause being paired with Powell-DOJ-probe); skipped_low_similarity surfaces the rejected pair count. PARTITION FILTER: drops will-person-X / will-manager-Y / will-someone-else- placeholder slugs; partitions with >20% placeholder fraction return null arb signal. Response: opportunities[] (gap_pp, suggested_trade, reasoning, monotonicity violation context), and in event mode partition_check{sum_yes_prices, gap_from_1, placeholders_filtered, suggested_trade}. FEES: every opportunities[] row and partition_check.arbitrage carry edge_pp_gross (== gap_pp / overround_pp), fees_pp, edge_pp_net, net_positive, plus polymarket_fee_pp, fee_basis and fee_categories[]. BOTH cost components are modeled: Polymarket's own per-category TAKER FEE (fee = shares × rate × p × (1-p), rates crypto 0.07 / sports-economics-culture-weather-other 0.05 / finance-politics-mentions-tech 0.04, geopolitics and world events fee-free; verified against Polymarket's own docs as of 2026-09-13) and Polygon gas (~$0.02/leg). The taker fee dominates: ~$1.75 per 100 shares on a crypto market at 50c versus $0.02 of gas, so rows that looked profitable before fleet #1927 may now show net_positive:false — that is the correction, not a regression. Each leg is priced at ITS OWN market's rate and price (the fee curve peaks at 50c and falls toward both extremes). fee_basis says where the rate came from: 'payload' (read off the market, the normal case), 'category' (mapped from its fee category), 'fee_free', or 'fallback' (rate unknown — charged at the modal 0.05 rather than assumed free, so an unreadable market is never reported as costless). Where fill_check reprices against live depth, this does NOT double-count that spread cost. FILL CHECK: when the partition signal fires, arbitrage.fill_check prices it against live CLOB depth (theoretical_edge_pp_at_book vs realizable_edge_pp at 1000 shares/leg, thin_legs[]) — realizable_edge_pp ≤ 0 means the overround exists only at last-trade, not in the book; do not trade it. For custom sizing use polymarket_fill_risk.
    ConnectorNo auth
  • Extract the settlement clause of a single Polymarket or Kalshi market: who publishes the settling number (source), the clock time + timezone it is taken at, the precision of the computation (e.g. "1-minute candle close" vs "60-second trailing average" vs "election outcome"), the evidence standard (official_source | consensus_reporting | any_credible_report | unspecified), and void_handling (cancellation/postponement settlement — reused verbatim from bet_research's cancellation_rule detector, not re-derived). Parses Polymarket's `description` field (fetched via polymarket_market) or Kalshi's `rules_primary` + `rules_secondary` fields (fetched via kalshi_market) with regex + a small vocabulary — no LLM pass, so an unusual clause reports confidence:"low" rather than a guess. Pass `market` as a Polymarket slug/URL or a Kalshi market ticker (e.g. "KXBTCD-26SEP1317-T66999.99"); a Kalshi EVENT ticker (e.g. "KXBTCD-26SEP1317") also works — it picks one representative market under that event, since the settlement mechanism is normally shared across all strikes/legs in one event. Use this before treating a polymarket_kalshi_spread row as a real arbitrage: two ladders that look alike can settle on different sources, at different times, with different precision — this tool is how you check. Pair with resolution_diff to compare two markets directly. KNOWN GAP: idiosyncratic phrasing that doesn't match the vocabulary returns confidence:"low" and evidence_standard:"unspecified" rather than an LLM-guessed answer.
    ConnectorNo auth
  • Answer a conjunctive query: concepts reachable from EVERY anchor at once (A AND B). query_ckg walks outward from one concept. This intersects the reachable sets of two or more, which is the shape of most real questions — "the component that satisfies A AND applies to B". Neither anchor alone answers it; the answer lives in the overlap. Every branch is an exact set of declared edges, so the intersection is exact. A concept appears only if a declared path reaches it from each anchor. A relation missing from the graph produces an empty result, never a guess. Args: branches: Two or more branches. Either a bare anchor ("TensorRT-LLM"), which takes everything within `depth` hops, or an anchor plus an explicit relation path using '>' ("TensorRT-LLM > REQUIRES > ENABLES"), where each relation replaces the frontier. '*' matches any relation. Mix both forms freely. depth: Hops for bare-anchor branches, 1-5 (default 2). Ignored for explicit paths. direction: 'out' follows dependencies, 'in' follows them backwards, 'both' (default). mode: 'AND' (default) intersects branches; 'OR' unions them. limit: Max concepts listed, 1-200 (default 40). The true count is always shown. Returns: Markdown with the query plan and its per-step set sizes, then the answer set with taxonomy tags. Reports which branch was empty when the intersection is empty.
    ConnectorNo auth
  • Read-only inspector for workspace integrations. Operations: "list" enumerates the registered providers (currently slackbot, hubspot, gmail, googledocs, notion, confluence, salesforce, prodege) and connection status; "connect" returns a setup URL the user opens in a browser to complete OAuth, or, for providers connected with customer-issued keys (prodege), a page where the user pastes those keys; "search_tools" returns the available action slugs (e.g., SLACKBOT_SEND_MESSAGE, HUBSPOT_SUBMIT_FORM, GMAIL_SEND_EMAIL) for a connected provider. Behavior: - Read-only. Does NOT itself perform OAuth — "connect" just hands a setup URL back so the user can finish the connection in the web app. - Never ask the user for API keys or secrets in chat — they are only ever entered on the setup_url page. Share the link and ask the user to reply "Done" once saved. - Errors when the workspace is not found or you do not have access. - search_tools returns success: false with "No active <provider> connection. Use 'connect' operation first." when the provider is not connected. Limit is 10 tools per search. - Required params per operation: connect needs provider; search_tools needs provider and query. MCP schema validation rejects missing or unrelated operation arguments before execution; the handler retains equivalent errors for non-MCP callers. When to use this tool: - Checking which integrations the workspace has connected before configuring an automation that talks to one of them. - Surfacing the setup URL to the user when they want to connect a provider. - Discovering action slugs to populate provider-backed automations. When NOT to use this tool: - Creating or modifying automations — use automation_create / automation_update after the provider is connected. - Sending a real message to test a provider wiring — create the automation first, then run automation_test. Examples: - List: `{ "operation": "list" }` - Connect: `{ "operation": "connect", "provider": "slackbot" }` - Search: `{ "operation": "search_tools", "provider": "hubspot", "query": "create contact" }`
    ConnectorOAuth
  • Realizable-vs-theoretical edge check against live CLOB order-book depth. REQUIRES one of `market` (single-market mode) or `event` (basket/partition mode). SINGLE-MARKET: pass a market slug/URL + side (buy_yes|sell_yes|buy_no|sell_no, default buy_yes) + size_usd (default 1000 — max spend on buys, target proceeds on sells); walks the ladder and returns top_of_book, vwap_fill_price, slippage_pp, shares_filled, max_fillable_usd, and a verdict (clean|degraded|cannot_fill). BASKET: pass an event slug/URL + side (sell_yes = capture overround by selling every leg, buy_yes = capture underround; default auto from partition sum) + size_usd interpreted as settlement notional S (shares per leg; each share pays $1); returns theoretical_sum vs realizable_sum (top-of-book vs VWAP across all legs), capture_ratio, profit_usd at executed size, per-leg fill detail, thin_legs[], max_clean_notional_usd, and forced_directional_risk naming the legs most likely to strand you unhedged. USE THIS before acting on any polymarket_arbitrage SELL/BUY-EVERY-LEG signal or any polymarket_edges trade above ~$500 — theoretical overround on thin books is not capturable, and partial basket fills convert an arb into an unhedged directional position (the dominant loss mode in real arb-bot P&L). FEES ARE NOT MODELLED HERE: vwap_fill_price/profit_usd are GROSS of Polymarket's own taker fee (rate 0.04-0.07 by category — see polymarket_edges/fees.ts), on top of which this tool prices depth-crossing cost; a thin-margin fill that looks clean here can still be net-negative after the fee.
    ConnectorNo auth
  • Tell the Pipeworx team something is broken, missing, or needs to exist. Use when a tool returns wrong/stale data (bug), when a tool you wish existed isn't in the catalog (feature/data_gap), or when something worked surprisingly well (praise). ONLY for tools served by this Pipeworx connection — if the tool came from a different MCP server in your client (another vendor's Gmail, Splunk, Slack, etc. connector), we cannot fix it and reporting it here only delays you; file it with that server instead. Not sure? Pipeworx tool names are the ones this connection lists. Describe the issue in terms of Pipeworx tools/packs — don't paste the end-user's prompt. Filing without an account returns a `claim_token`; pass it back later as pipeworx_feedback({claim_token:"pwfb_…"}) to read whether it was fixed and what changed. The team reads digests daily and signal directly affects roadmap. Rate-limited to 5 per identifier per day. Free; doesn't count against your tool-call quota.
    ConnectorNo auth

Matching MCP Servers

Matching MCP Connectors

  • Salesforce MCP Pack

  • Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.

  • <summary>Which integrations the account has connected, keyed by the same integration_id you pass to get_tool_connect_url (gmail, outlook, linkedin, slack, googlesheets, salesforce, notion, ...). Call this before telling a user an integration is unavailable, or before minting a connect link for one they say is already connected — it may already be active.</summary> <returns> <description>A dict mapping each integration_id to its connection status; read one with result[integration_id]['connected']. Some entries carry extra detail — linkedin, google_calendar, and fathom include needs_reconnect (connected, but the auth broke and the user must re-link); email and linkedin include the connected account email. A missing key means that integration wasn't checked, not that it's disconnected. The slack entry carries two independent flags: 'connected' is the workspace bot link that delivers Sliq's notifications, and 'slack_mcp_connected' gates only your Slack MCP tools in chat — judge notification delivery by 'connected' alone.</description> </returns>
    ConnectorOAuth
  • Prices Kalshi daily high-temperature markets against the NWS forecast for the market's OWN settlement station, and measures whether that forecast actually beats the market. Two modes. LIVE (default): returns the full strike ladder for one city and settlement date with market_prob (mid), forecast_prob, and edge_pp per strike, plus the settlement clause verbatim. BACKTEST (`backtest_days: N`): scores an archived gridded forecast against the market on settled days and returns brier_market vs brier_forecast with a plain-English `verdict`, so the edge is MEASURED rather than asserted. READ THE WARNINGS — they are not boilerplate. (1) These markets DO NOT settle on the NWS. They settle on The Weather Company (weather.com) at a Kalshi station code such as CLINYC, which the response quotes verbatim; so part of every edge_pp is NWS-vs-Weather-Company disagreement about the same day at the same station, which is not mispricing and not tradeable. `settlement_vs_forecast_basis_f` from backtest mode is that part as a number. (2) The station is DERIVED from the settlement clause, never from the city name: Chicago settles at MIDWAY and New York at CENTRAL PARK, so a city-centre forecast would misprice a whole ladder. A station that cannot be resolved yields rows with no forecast and a reason, never a guessed coordinate. (3) forecast_prob assumes a normal distribution around the NWS high whose width is ASSUMED, not fitted (stated in `distribution_assumption`) — run backtest mode to see whether it is calibrated. (4) edge_pp is gross: no Kalshi fees, no bid-ask. MEASURED RESULT, AND IT IS NOT THE FLATTERING ONE: on the first backtest (KXHIGHNY, 13 settled days to 2026-09-11, 58 market observations) the MARKET beat the forecast — Brier 0.1008 for the market against 0.1594 for the archived gridded forecast, lower being better. So on that sample there is NO forecast edge to sell, and a large edge_pp is more likely to be the model disagreeing with a better-informed market than an opportunity. The measured settlement-vs-forecast basis was 1.7F mean absolute over 8 pinnable days, slightly warm-biased, which is a big share of a typical edge_pp on a 2-degree bracket. Re-run backtest_days before believing any edge; if a later sample reverses this, the numbers say so. NWS is US-only, so the ~30 international Kalshi weather series (London, Paris, Tokyo) return market prices with forecast_unavailable rather than a forecast. Precipitation series are listed but not yet priced. Cities: nyc, chicago, los angeles, miami, austin, houston, denver, philadelphia — or pass `series_ticker` for any other (e.g. "KXHIGHTBOS").
    ConnectorNo auth
  • "Is it true that…" / "fact check" / "verify the claim that…" / "did X really…" / "was Y actually…" / "confirm or refute" / "true or false" — natural-language claim verification against authoritative sources. Use whenever the agent needs to check whether something a user said is factually correct. Company-financial claims (revenue, net income, cash for public US companies) verify via the structured SEC EDGAR + XBRL fast path with exact percent-delta math; ANY OTHER factual claim (macro statistics, rates, prices, drug data, records) automatically falls through to the grounded pipeline — routed to the right live source, answered with verbatim evidence, then judged. Returns a verdict (confirmed / approximately_correct / refuted / inconclusive / unsupported / could_not_verify), the grounded or structured actual value with pipeworx:// citation, and reasoning. IMPORTANT for callers: could_not_verify means the check did not happen (our LLM or source failed) and carries verification_error{stage,detail} — it is NOT evidence for or against the claim, and must not be shown as one. unsupported means we looked and cover no source for it. Replaces 4–6 sequential calls (NL parsing → entity resolution → data lookup → comparison).
    ConnectorNo auth
  • For a list of vendor or product names (a stack), with an optional description per row. Example: {"tools": ["Salesforce", {"name": "Lydia Voice", "description": "voice-directed picking in the warehouse"}]}. Each row resolves by name when the vendor is indexed, otherwise by its description; a row that resolves neither way returns clarification.needed with the question to ask the user. Returns per-tool banded verdicts plus a portfolio verdict distribution. Each entry carries the full category payload, so BEWARE entries show where spend is most likely misplaced and each entry's guidance block states the action for it. Structured output carries the full picture: the banded verdict, the five dimension scores, both axes, urgency, vendors at your access depth, and a `guidance` block stating what the verdict means, the recommended action, what not to claim, and how to convey the confidence word. Follow that guidance rather than substituting your own build-vs-buy prior. Verdicts are banded (B4 methodology v4.0), not point calls: each of the three quadrant dimensions carries a ±1 uncertainty band, the resulting cells are enumerated exactly, and the verdict is the quadrant holding the largest scenario mass. Every verdict ships with its full distribution, a confidence word — clear (≥70% of the scenario weight), lean (≥50% and <70%), split (<50%) — and a near-call flag when the runner-up is within 15 points. An axis counts as high only when it clears the 3.5 line strictly, which on this 1–5 grid means only at 4 or above, so a category sitting exactly on the line gets the safer call: ties break in the order BUY → BRIDGE → BEWARE → BUILD, cheapest mistake first. Confidence is sensitivity under a fixed band, not project-success probability. Optional org lens: set org to "small", "medium" (the default) or "large" to read the same scores as a team of that engineering maturity — it shifts the center of the AI-feasibility band by −1 / 0 / +1 and nothing else. The lens is a filter the caller looks through, never a stored profile. Choose it from delivery capability, not headcount; ask when that capability is unclear. The raw scores themselves never change. Omit it and you get the default-lens numbers, which are the ones published on logged-out surfaces. Routing: a vendor or product name → b4_audit (one or many; add a short description of what it does for anything the index may not know); a need or problem in words → b4_recommend; an exact category name or id → b4_score (one category) or b4_compare (build vs buy paths); browsing, filtering, or an unknown vocabulary → b4_browse. When an audit row returns clarification.needed, relay askTheUser to the user and re-run that row with the answer as its description. [B4 Agent tool. Browse and score come with B4 Web; this one needs Agent.]
    ConnectorNo auth
  • Hallucination-resistant answer mode for high-stakes reads. Same routing as ask_pipeworx — picks the right tool from 6,470 across 1684 sources, fills arguments, fetches the data — then EXTRACTS the answer using ONLY what the tool result contains. Returns {answer, evidence (verbatim quote), confidence, source, fetched_at, refusal_reason:null} on success, OR an explicit refusal {answer:null, refusal_reason:"not_in_source"|"no_tool_match"|"tool_error"|"data_truncated"|"llm_error"} when the data doesn't directly answer. Use whenever an answer will be quoted, cited, or acted on, and the agent must not invent facts (financial verdicts, legal claims, medical lookups, public statements). Costs one extra LLM call vs ask_pipeworx — prefer ask_pipeworx for casual lookups.
    ConnectorNo auth
  • "Tell me about X" / "research Acme" / "brief me on Tesla" / "what does Apple do" / "company profile for Microsoft" / "give me the rundown on NVDA" / "everything you know about $TICKER" — full cross-source profile of a US public company in ONE parallel call. ALWAYS PREFER over chaining single-pack SEC/XBRL/news lookups when the user asks for a holistic view. Fans out across SEC EDGAR, XBRL, USPTO patents, federal contracts (USAspending), FDA-licensed biologics (Purple Book), H-1B hiring (DOL LCA), news and GLEIF, and returns: cik + company_name (+ resolved_from/resolved_to when `value` was a name); recent_filings (up to 5 with pipeworx://edgar/company/{cik}/filings/{accession} URIs); fundamentals (LATEST 10-K Revenues + NetIncomeLoss + Cash, sorted period_end DESC); patents (USPTO PatentsView API sunset May 2025 — soft-fails until reactivated); federal_contracts (USAspending awards where the company is the recipient); fda_products (FDA-licensed biologics — vaccines, cell/gene therapies — from the Purple Book; a company with only small-molecule/generic drugs will show none here, that is expected, not a failure); hiring (H-1B sponsorship volume + salary range from DOL LCA filings); recent news mentions via GDELT→GNews fallback; LEI via GLEIF. `sources_used` / `sources_failed` say which of these actually returned data for THIS company — an empty section is a real "no data", not a bug. `sources_skipped` is the third state: a leg we deliberately did NOT run, each entry carrying a `reason` token and a plain-English `detail` (the Purple Book is skipped for a filer SEC classifies outside the life-science SIC bands, since it lists only 351(a)/(k) biologics licence holders). Pass a ticker ("AAPL"), zero-padded CIK ("0000320193"), OR a company name ("Moderna") — names now resolve via SEC EDGAR's company-name match; a private company (no CIK/ticker) returns resolved:false with an explicit `notes` line, not a bare failure. `type` accepts "company" or "ticker" interchangeably — both take the same `value` shapes above.
    ConnectorNo auth
  • Composite "should I add this npm package to my project" check in ONE call — fans out across deps.dev (license + advisories + version history) and bundlephobia (gzipped/minified bundle size, dependency count, ESM/tree-shake support). Use whenever an agent asks "is X safe / popular / small" or "what does adding lodash cost me". Returns a summary block (is_latest, license, published_at, advisory_count, bundle_kb_min, bundle_kb_gz, dependency_count, has_esm, tree_shakeable), per-advisory detail, links, and a list of recent alternative versions. NPM ecosystem only in v1; PyPI / Maven / Cargo / Go fall under deps.dev:version directly. Partial failures degrade gracefully — bundlephobia's first measurement on a new version can take 5-30s; sources_failed will list it if it times out, the rest still returns.
    ConnectorNo auth
  • Find B2B SaaS products that support a specific capability — an integration with a named service ('salesforce-integration'), a data format ('xrechnung-support'), an industry standard ('eclass-support'), or a compliance certification ('soc2'). Accepts either a canonical capability slug or natural language; resolves to a structured capability when possible. Ranking basis: currentScore desc (computed editorial score), then name. Paid tier is NOT a ranking input — it appears only as an annotation. Every result carries { position (1-based), rank (0..1; 1.0 = top, scales linearly down by ordinal position) } so callers can merge results across tools consistently. Response: { capability, matchType (none|exactSlug|canonicalSlug|nlpFallback — exactSlug & canonicalSlug are deterministic; nlpFallback is heuristic), resolvedFeatures[], products[] }. Each product: { position, rank, slug, name, tagline, websiteUrl, tier, unverified (true when no approved vendor claim), verifiedAt, evidence[] (per-claim: featureSlug, evidenceUrl, notes, source, confidence) }. Empty: { capability, matchType, message, suggestedSlugs[] } when no capability matched, or products: [] when capability matched but no products claim it yet.
    ConnectorNo auth
  • Find B2B SaaS products that support a specific capability — an integration with a named service ('salesforce-integration'), a data format ('xrechnung-support'), an industry standard ('eclass-support'), or a compliance certification ('soc2'). Accepts either a canonical capability slug or natural language; resolves to a structured capability when possible. Ranking basis: currentScore desc (computed editorial score), then name. Paid tier is NOT a ranking input — it appears only as an annotation. Every result carries { position (1-based), rank (0..1; 1.0 = top, scales linearly down by ordinal position) } so callers can merge results across tools consistently. Response: { capability, matchType (none|exactSlug|canonicalSlug|nlpFallback — exactSlug & canonicalSlug are deterministic; nlpFallback is heuristic), resolvedFeatures[], products[] }. Each product: { position, rank, slug, name, tagline, websiteUrl, tier, unverified (true when no approved vendor claim), verifiedAt, evidence[] (per-claim: featureSlug, evidenceUrl, notes, source, confidence) }. Empty: { capability, matchType, message, suggestedSlugs[] } when no capability matched, or products: [] when capability matched but no products claim it yet.
    ConnectorNo auth
  • For buyers paying by card (no wallet needed): opens a Stripe Checkout for just the rows of one dataset that match a filter, and returns the payment URL to give the user. Takes the same filters as count_locations (state/city/county/zip, `where` on any column, `near`, `order_by`) and up to 10,000 rows. It counts the matches first, so the buyer pays only for rows that exist: the data price is the same per-row price query_locations charges, plus a card processing fee (2.9% + $0.30) added on top, one price the buyer sees at checkout. After payment the buyer is emailed a CSV download link; check_order with the session id returns it too. No match, a bad column, a distance search on a list without coordinates, or a subset that would cost more than the whole file returns an explanation and creates no checkout — nothing is charged. Agents with a USDC wallet should call query_locations instead. To cover several chains near one place, pass datasets or category and a total instead of dataset: one answer, one price and one checkout for one CSV (source_dataset names each row's dataset, duplicates removed). shape: hubspot | salesforce delivers the CSV with that CRM's import column names first (the download link also takes ?shape= later).
    ConnectorNo auth
  • List the account's saved Salesforce "mixed criteria" (contact-list criteria) — the selectable source for creating a Salesforce-contacts audience. PREREQUISITE: • Salesforce integration MUST be connected. If it is not, tell the user to connect Salesforce first (connect_crm with crm="salesforce"). WHEN TO USE: • Before create_salesforce_contacts_audience, to find the criteria_id. • "list my Salesforce contact criteria", "which Salesforce lists can I use for an audience". PARAMETERS: • qualified (optional): when true, keep only criteria whose generated filter matches qualified-signal fields. RETURNS: a list of { id, name, description }. Use `id` as the criteria_id for create_salesforce_contacts_audience. Note: this does NOT include a contacts count.
    ConnectorAPI key
  • Create a Salesforce-contacts custom audience (platform customAudienceType SFDC_CONTACTS_STATIC or SFDC_CONTACTS_DYNAMIC) from a Salesforce mixed-criteria. This is one of the audience types eligible for Microsoft Ads (Customer Match). Use it when a user wants a Salesforce-sourced contacts audience, including for a Microsoft Ads campaign. PREREQUISITE: • Salesforce integration MUST be connected — the tool checks this and, if not connected, creates nothing and returns { warning, connected: false }. • A criteria_id from list_salesforce_mixed_criteria — do NOT invent one. VARIANT (mirrors the UI's static/dynamic choice): • STATIC → SFDC_CONTACTS_STATIC — snapshot at creation, does not refresh. • DYNAMIC → SFDC_CONTACTS_DYNAMIC — refreshes as the Salesforce data changes. • If the user did not say which, ASK; do not default silently. ASYNC: the platform creates the audience in the background and returns a flow id, NOT a ready audience id. The audience appears under the account's Salesforce audiences once the flow completes, and its contact count fills in then. Do not expect to associate it to a campaign in the same turn. PARAMETERS: • name (required): audience display name. • criteria_id (required): id from list_salesforce_mixed_criteria. • variant (required): STATIC or DYNAMIC. RETURNS: { id, name, status, createdDate, audience_type, async: true } — `audience_type` is the SFDC_CONTACTS_* you created and `id` is a creation/flow id, not associable yet. If Salesforce is not connected: { warning, connected: false }, and nothing is created.
    ConnectorAPI key
  • Upload a list of company ACCOUNTS (website, plus an optional name) as an Account List CSV and create a FIRMOGRAPHIC_INCLUDE audience on the Metadata platform, optionally overlaid with platform-side contacts criteria. AUDIENCE TYPE: Account List CSV / CSV Upload - Accounts (platform stores `customAudienceType=FIRMOGRAPHIC_INCLUDE`; the main UI's audience-map renders this enum as "CSV Upload - Accounts"). This tool is ONLY for company/account-level data (company names and websites). Do NOT use this tool for contact-level data (emails, phone numbers, individual people). For contacts, use upload_contact_list_csv_audience instead. TWO WAYS TO SUPPLY THE ACCOUNT LIST — provide EXACTLY ONE of: • `companies`: an inline JSON object map `{ "<companyname>": "<companywebsite>", ... }`. Use this for short ad-hoc lists you have already parsed into context. • `companies_source_csv_url`: a public URL of a CSV file with header EXACTLY `companyname,companywebsite` (case-insensitive, whitespace-trimmed). Use this WHENEVER THE USER ATTACHED A CSV to the chat — the URL is surfaced to you via `AudienceBrief.attached_file_urls`; pass it through verbatim. The MCP server downloads + validates + parses the CSV so a multi-megabyte file never has to travel through your context. If both are provided, or neither, the tool errors with a clear message — pick one. OPTIONAL CONTACTS CRITERIA: layer per-contact filters on top of the account list, matching the same shape `create_firmographic_audience` uses: • `location_country_ids` / `location_state_ids` — geography • `job_title_includes` / `job_title_excludes` — free-text title keywords • `job_function_include_ids` / `job_function_exclude_ids` • `seniority_include_ids` / `seniority_exclude_ids` • `contacts_per_company_limit` When set, the resulting audience matches only contacts inside the listed companies that ALSO satisfy these filters — e.g. "this 1,999-account list, but only VP/Director/Manager Engineering contacts in Canada + Saint Pierre and Miquelon + United States" becomes a single call. When all of these are omitted, every contact in every uploaded company is matched. WHEN TO USE: - "Upload these companies/accounts as an audience" / "Create an account list audience" / "Upload account list CSV" - "Create a CSV Upload - Accounts audience with this CSV and these contact filters" - The user attached a CSV of companies (website, with or without a name) and asked for a CSV-Upload audience WHEN NOT TO USE: - When the data is contact-level (emails, phone numbers, individual people) — use `upload_contact_list_csv_audience`. - For pure firmographic targeting without an attached account list — use `create_firmographic_audience`. INLINE-MAP DATA MAPPING RULES (when you choose the `companies` path): - Each KEY must be the **company name**; each VALUE must be the **company website URL**. - Format: { "<companyname>": "<companywebsite>", ... } - Example: { "Acme Corp": "https://acme.com", "Globex International": "https://globex.com", "Salesforce": "https://salesforce.com" } - DO NOT pass column headers as keys; DO NOT reverse the mapping; DO NOT send raw file paths or bytes. CSV-URL HEADER RULES (when you choose the `companies_source_csv_url` path): - The first row of the CSV MUST be exactly `companyname,companywebsite` (case-insensitive — `Company Name,Website` is rejected; rename the columns first or fall back to the inline map path). - Only `companywebsite` must be filled: the platform matches accounts on the website domain and treats `companyname` as optional, so a file whose name column is empty on every row is a valid account list. Never ask the user to fill in company names. - Rows with an empty company website are dropped server-side. - The server enforces a 50 MB cap on the downloaded file. PARAMETERS: - audience_name (required) - companies (optional, mutually exclusive with companies_source_csv_url) - companies_source_csv_url (optional, mutually exclusive with companies) - location_country_ids / location_state_ids (optional contacts criteria) - job_title_includes / job_title_excludes (optional) - job_function_include_ids / job_function_exclude_ids (optional) - seniority_include_ids / seniority_exclude_ids (optional) - contacts_per_company_limit (optional) RETURNS: - success, id / audience_id, audience_name, audience_type (FIRMOGRAPHIC_INCLUDE), file_id, companies_count, upload_filename, expectedNumberOfCompanies, expectedNumberOfContacts, cappedContactCount - companies_count: the rows sent, each with a website. dropped_without_website names up to 25 rows left out for having none, which the platform cannot match; dropped_without_website_count counts them all. - companies_summary: status is matching, because the platform matches the list after this call returns, and submitted_companies is how many rows the platform took in. Read the final count later with get_deep_audience_details, and never report companies_count or expectedNumberOfCompanies as the audience's final size. IMPORTANT NOTES: - There is a small delay between upload and audience creation while the platform processes the file; the tool waits for that internally. - The companies map / source CSV must contain at least one row with a company website. - Company websites should be valid URLs (e.g., https://example.com).
    ConnectorAPI key
  • Discover the fields an Insights (Spotlight) account-journey segment can filter on: the exact `field` names, their type, the operators each accepts, and the picklist options. USE BEFORE create_segment, and before get_insights_report when you filter it. Omit `search_keywords` to get the whole catalog in compact form; pass keywords to narrow it (matched against field names and labels: "impressions", "score", "visits", "pricing", "opportunity"). WHAT A SEGMENT FILTERS: the companies in the account's Spotlight journey, one row per company, with engagement metrics that are computed INSIDE the lookback window the audience is later created with (create_audience_from_segment.lookback_window). Needs the Insights (Spotlight) subscription on the account: without it the catalog comes back empty or the call fails, and the right move is to say so, not to guess fields. STATIC FIELDS (always present; use the NAME in criteria): - Marketing touchpoints: LINKEDIN_IMPRESSIONS (NUMERIC), LINKEDIN_ADS_ENGAGEMENT (NUMERIC, LinkedIn clicks), FORM_SUBMISSIONS (NUMERIC), CHANNEL (MULTIPICKLIST: LINKEDIN, FACEBOOK, GOOGLE_ADS, INSTAGRAM, EMAIL, THIRD_PARTY, DIRECT), HIGH_INTENT_PAGES (BOOLEAN) - Website engagement: WEBSITE_VISITS, TOTAL_PAGE_VIEWS, UNIQUE_VISITORS (NUMERIC), PAGE_URL (STRING; LIKE "/pricing" is the page-visit filter), IDENTIFIED_VISITORS (BOOLEAN), IS_ABM (BOOLEAN), UTM_SOURCE / UTM_MEDIUM / UTM_CAMPAIGN / UTM_TERM / UTM_CONTENT / UTM_KEYWORD / REFERRER (ARRAY) - Engagement score: SCORE (MULTIPICKLIST classification), CONFIDENCE_SCORE and TREND (MULTIPICKLIST) - CRM: ACCOUNT_STATUS (opportunity status, MULTIPICKLIST), IN_CRM (BOOLEAN), ACCOUNT_OWNER (MULTIPICKLIST); HubSpot adds DEAL_TYPE and DEAL_STAGE; Salesforce adds EMAILS, CALLS, EVENTS (NUMERIC), CAMPAIGN_NAME, CAMPAIGN_TYPE, CAMPAIGN_MEMBER_STATUS, RESPONDED; any connected CRM adds DYNAMIC fields (criterion field "DYNAMIC" plus entity and property) - Firmographic: INDUSTRIES, REVENUES, EMPLOYEES, COUNTRIES (MULTIPICKLIST), COMPANY_DOMAIN, COMPANY_NAME (STRING), ACCOUNT_LIST (MULTIPICKLIST of the account's ABM lists) RESPONSE: {fields: [{name, label, criteria_fields: [{name, label, type, operators, options (first 10), options_total, dynamic?, entity?, status?}]}], missing_crm_fields, criteria_rules}. `criteria_rules` restates the value shape per type. A dynamic field with status PENDING is still being extracted from the CRM and cannot be used yet.
    ConnectorAPI key
  • JOIN of the official release calendar (econ data, the FOMC, FDA decisions, SEC rules) against LIVE Polymarket/Kalshi markets — which scheduled releases land in the next N hours, and which live markets resolve on them. This is a POSITIONING tool, not a speed product: results are cached like every other pack (≤ 60s TTL) and there is no push/webhook — do not use this to try to beat a release, use it to see what is coming and what is already priced. CATEGORIES: econ (CPI, Employment Situation/jobs report, GDP, PCE, PPI, retail sales, housing starts, jobless claims — via fred_release_dates per known release_id, since FRED's own cross-release calendar mostly returns recent actuals, not future dates), fed (the next FOMC meeting's rate decision, via fomc_calendar), fda (PDUFA action dates + FDA advisory-committee meetings, via pdufa_catalysts / fda_adcom_calendar), sec (SEC final rules whose own DATES clause names an effective date in the window, via federal-register recent_rules — usually finds nothing in a short window since SEC rules typically take effect 30–60 days out, which is an accurate answer, not a bug), court (ALWAYS EMPTY today — court-listener has no forward-looking scheduled-hearing calendar, only filing/termination dates, so this category returns zero releases with unsupported:true rather than fabricate one). Omit `categories` or pass "all" for every category. MATCHING AND ITS HONESTY CONTRACT: every release is returned even when it has ZERO matched markets — a release is never dropped just because nothing on Polymarket or Kalshi resolves on it (most FDA/SEC releases will show markets:[]; that is signal, not a gap). Every matched market carries resolves_on_this_release: "true" (the venue's own close/end date sits within ~36h of the release AND the question passed a subject filter — econ and fed only), "likely" (same subject filter, but the venue closes days away from the release date), or "unclear" (a keyword hit with no date to anchor against — always true for the fda category, which has no ladder structure to check a date against). matched_by names the mechanism (a Kalshi series ticker, a Polymarket search query, or an FDA keyword probe) so a caller can judge the match rather than trust a label. scheduled_at carries both `utc` and `et`; econ releases use the standing BLS/Census 8:30am ET convention (FRED's calendar itself has no clock time), FOMC decisions use the 2:00pm ET convention, and FDA/SEC dates are date_only:true (no reliable clock time exists for either). DO NOT treat a matched market as a real arbitrage or a settled fact on its own — a market question sharing tokens with a release name is not proof it settles on that release's own published number. Call resolution_audit / resolution_diff (fleet #1909) on a specific market before sizing anything here. An empty window (zero releases across every requested category) returns the SAME shape as a populated one — release_count:0, releases:[] — plus empty_reason:"no_releases_in_window" and a `hint` telling you to widen, so you never branch on the response shape and never have to guess whether zero means "nothing is scheduled" or "the lookup failed". Econ releases especially cluster on specific dates each month, so a 48h window often straddles a dead stretch.
    ConnectorNo auth