649,985 tools. Updated 2026-10-08 19:44
"hubspot" matching MCP tools:
- Runs a single end-to-end execution of an existing automation, returning success/failure plus the target and duration. Mirrors a real production firing. Behavior: - Sends REAL messages: posts the configured webhook, sends the configured email, posts the Slack message, or writes the HubSpot record. Use override_email (email channels) to redirect delivery to a safe test target. - Insight automations use REAL research conversations, create a normal analysis session and insights, and consume normal analysis-session credits. They do not advance the configured trigger's schedule. - Each call fires another real delivery. - Errors when the perspective or automation is not found, or you do not have access. Webhook automations whose endpoint URL hasn't been set yet (at configure_url) error with a pointer to that page. - Mock conversation defaults: trust score 85, status complete, "Test Participant" / test@example.com. Override participant_name, participant_email, summary, and tags via test_data. HubSpot note and record-update automations find the contact by participant_email, so set it to an existing contact's email. - Returns success: false when the automation skips delivery (e.g., tag/trust filter doesn't match the mock, or no HubSpot record matches the participant email); the message gives the skip reason. The error field is populated only on real delivery failures. When to use this tool: - Verifying a freshly-created automation actually delivers before relying on it (override_email directs email tests to a safe target instead of real recipients). - Reproducing a delivery failure surfaced in automation_list (last_error). When NOT to use this tool: - Listing what's configured — use automation_list. - Changing config — use automation_update. - Removing the automation — use automation_delete.ConnectorDestructiveOAuth
- 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
- 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
- Look up a person or company in the user's connected HubSpot CRM, live, by email address, domain, or name. Use this for 'what do I have on dshah@hubspot.com', 'is gusto.com in the CRM', 'is Acme a customer', or 'do we have a contact named Jane Doe'. An email finds that contact and the company at its domain; a domain finds the company and the contacts at it; anything else is a name search over both. Returns the matching records with their CRM properties and a url to open each in HubSpot. lifecyclestage says where a record stands (subscriber, lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer, evangelist, other), so 'a customer' means lifecyclestage is customer. found=false with no errors means the CRM has no such record. For aggregate questions over many records use ask_about_hubspot_contacts or ask_about_hubspot_companies instead.ConnectorNo auth
- <summary>Find phone numbers for one or more people from their LinkedIn URLs, via Airscale. Pass a list of LinkedIn profile URLs — one entry for a single person, all of them at once for a batch (they are looked up in parallel, costing one tool call against the loop guard, not N). Returns one result per URL in the same order. Airscale brokers providers like RocketReach. Persists nothing — use the returned numbers however the agent needs them (e.g. tell the user, or stash them on prospects via `update_prospect`). A LinkedIn profile URL is the only accepted input — this tool cannot look a person up by email or name. When a record (a HubSpot/CRM contact, a prospect row, a spreadsheet line) has no LinkedIn URL but does have the person's email, first call `find_linkedin_url(email=...)` to resolve one, then pass that URL here. Apply this resolve-then-lookup step to every record, not just the first; skip the phone lookup for any person you cannot get a URL for. Costs 8 Sliq credits per number found, when run on Sliq's shared Airscale account. Misses (no number on file) and upstream failures are free. A worst-case check runs up front on the Sliq path: the whole batch is refused unless the balance covers 8 credits per URL (any URL *could* be a hit). So no API call is ever spent on a lookup that can't be billed, and a user low on credits is told to top up or connect their own key. If the user has connected their own Airscale key (BYO, via the integrations page), lookups run against that account instead — no Sliq credit gate and no Sliq credit charge.</summary> <returns> <description>A list of result dicts in input order. Per hit: `{status: 'success', found: True, phone_number, phone_numbers, provider, linkedin_url, credits_charged: 8}` (0 on the BYO path) — `phone_number` is the first number, `phone_numbers` the full list. Per miss: `{..., found: False, phone_number: None, phone_numbers: [], credits_charged: 0}`. A malformed (non-LinkedIn) URL or an upstream failure on one URL becomes a per-item `{found: False, error, credits_charged: 0}` in that slot — it never aborts the rest of the batch. If the up-front worst-case credit check fails, it raises `InsufficientCreditsError` (no lookups are attempted).</description> </returns>ConnectorOAuth
Matching MCP Servers
- AlicenseNot gradedqualityBmaintenanceHubSpot MCP server that enables browsing and searching contacts, companies, and deals in your HubSpot workspace.405 npmMIT
- AlicenseAqualityDmaintenanceA read-only MCP server that exposes HubSpot CRM data (contacts, deals, companies, quotes) to AI agents, enabling natural language queries.9MIT
Matching MCP Connectors
HubSpot MCP Pack
- HubSpotOAuth
The HubSpot MCP Server acts as a bridge that enables AI assistants and Large Language Models to securely interact with HubSpot CRM data through natural conversation, without requiring users to understand complex API structures. It provides read-only access to standard CRM objects (contacts, companies, deals, tickets, products, invoices, and more) and their associations, secured via OAuth 2.0, allowing AI agents to perform tasks like summarizing deals, fetching company updates, and looking up record changes.
- Rank the startup credits, perks and deals one specific company can claim, from a catalog of 1,000+ programs (AWS Activate, Google for Startups, Microsoft for Startups, NVIDIA Inception, Anthropic, Stripe Atlas, Mercury, HubSpot and more). Use it when the user describes their own startup and asks what they can get or qualify for; use search_startup_perks to look up a provider or topic without a company profile, and get_startup_perk for one program's full terms. It checks each program's stated eligibility (stage, funding gate, raised-amount cap, company age, region) against the profile, ranks the categories the user needs first and takes each need in turn, and leaves out programs whose applications are paused or closed. Returns up to 25 programs, each with the value as the provider states it, whether the company qualifies and why, how to claim it, and links to the StartupPerks page, the provider's application and the provider's terms, plus a realistic claimable total (one program per provider, cloud counted once). Read-only; values are headline maximums, not guarantees.ConnectorNo auth
- Use this when the user asks which companies use a particular technology (for example Intercom, Zendesk, HubSpot, Shopify, Stripe), or which technologies are most used. With a slug: companies detected using that technology, 20 per page. company_count is every company detected using it; listed_count is how many the list can page through, so stop at page ceil(listed_count / 20). Without a slug: the technology index, most-used first, with company counts (default 100, up to 1,000). Slugs are lower-case with hyphens, e.g. intercom, hubspot, google-analytics, shopify. Works without an API key; no contact reveals.ConnectorNo auth
- 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
- 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
- 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
- Creates an automation on a perspective. Triggers: per_interview (fires on every completed conversation) or scheduled (daily/weekly, with digest, invite, or insights purpose). Actions: internal insight discovery, webhook, email, or connected provider-backed integrations such as Slack, HubSpot, Gmail, Google Docs, Notion, and Confluence. Execution modes: direct (fast, deterministic, webhook-only) or agent (LLM-powered, required for insights and delivery channels). Behavior: - Each call creates a new automation — even if name/config matches an existing one. - Once enabled, the automation starts firing on real events: per_interview sends on every completed conversation going forward; scheduled sends a real message on the configured cadence (daily/weekly). - For HubSpot, the workspace's HubSpot connection is required — errors with "Could not resolve HubSpot portal ID — please reconnect HubSpot" if not connected. - Webhook channels: do NOT ask the user for the endpoint URL or credentials — neither is accepted through this tool. The automation is created disabled and the response includes configure_url, a web app page where the user sets the URL (and an authentication header if needed). Share that link and ask the user to reply "Done" after saving, then enable the automation via automation_update. - Insight automations use kind "insights", execution_mode "agent", omit channel, and use scheduled purpose "insights" when scheduled. - Errors when the perspective is not found or you do not have access. When to use this tool: - The user wants ongoing notifications on every completed conversation (per_interview). - Building a daily/weekly digest delivered to Slack, email, HubSpot, or a webhook (scheduled). - Running scheduled insight automation which creates insights without external delivery. When NOT to use this tool: - Trying a one-off send before going live — create the automation, then use automation_test (use override_email on email channels to avoid hitting real recipients). - Editing or toggling an existing automation — use automation_update. - Connecting Slack or HubSpot — use integration_manage first; the provider must be connected before slack/hubspot channels work. Example — per-conversation Slack notify (resolve the channel with slack_channel_resolve first, then pass it as resource_id): ``` { "perspective_id": "...", "automation": { "name": "Notify Slack", "trigger": { "type": "per_interview" }, "execution_mode": "agent", "channel": { "type": "composio", "delivery_config": { "provider": "slackbot", "tool_slug": "SLACKBOT_SEND_MESSAGE", "resource_id": "C0123ABCD", "resource_name": "#research" } } } } ``` resource_id is the Slack channel ID or name. The channel is re-verified live on create; an unresolvable channel is rejected. Typical flow: 1. integration_manage (operation: "list"/"connect") → ensure Slack / HubSpot is connected (only needed for those channels) 2. For Slack: slack_channel_search / slack_channel_resolve → find/verify the channel to use as resource_id 3. automation_create → create the automation 4. automation_test (with overrides) → verify delivery before relying on itConnectorOAuth
- Updates fields on an existing automation. Pass a partial updates object with only the fields you want to change; omitted fields are preserved. Toggling enabled or changing schedule/channel/condition takes effect on the next scheduled run. Direct execution is webhook-only; use agent mode for insight discovery, email, and provider-backed channels. Behavior: - Saves the change to the same automation record. Scheduled automations with an active workflow are restarted on update so the next run picks up the latest config. - Errors when the perspective or automation is not found, or you do not have access. - For HubSpot, the workspace's HubSpot connection is re-checked — errors with "Could not resolve HubSpot portal ID — please reconnect HubSpot" if disconnected. - Webhook channels: do NOT ask the user for the endpoint URL or credentials — neither is accepted through this tool. The stored URL/auth header are preserved when the channel is re-specified, switching to a webhook channel starts disabled, and enabling errors until the URL has been set at configure_url (returned in the response). - For scheduled automations: changes to channel, condition, execution mode, or instruction apply starting from the next run, not the one currently in flight. When to use this tool: - Toggling enabled on or off (also pauses/resumes scheduled sends). - Changing schedule, channel, condition, or instruction on a live automation. When NOT to use this tool: - Removing the automation entirely — use automation_delete. - Verifying a config change actually delivers — follow up with automation_test. - Listing what's configured — use automation_list.ConnectorDestructiveOAuth
- Reset connector auth state for the current user. Use when tokens are stale, missing scopes, tied to the wrong account/workspace, or repeatedly failing auth. For credential-based connectors, this clears the saved credentials so the user can re-enter them. Input: connector_id (required). Supported values: google_workspace, microsoft, dropbox, shopify, shopline, quickbooks, hubspot, slack, ebay, facebook_marketing, tiktok, klaviyo, calendly, activecampaign, odoo, constantcontact, airtable, gohighlevel, monday, semrush, ahrefs, posthog, stripe, gunbroker.ConnectorDestructiveNo auth
- <summary>Find companies whose technographic profile matches a target tech stack. Use ONLY when the user explicitly wants to discover companies BY THEIR INSTALLED TECHNOLOGY — e.g. "find DTC brands using Shopify and Klaviyo", "who runs Snowflake AND Looker", "US e-commerce companies using HubSpot". For hiring-signal discovery (companies posting jobs that mention a tech), use `theirstack_search` instead — that surfaces investment intent, whereas this surfaces installed base. That installed base is what TheirStack DETECTS from job-posting text, not from crawling storefronts, so it only sees companies that hire and name the tool in their JDs — treat a company's absence as "not detected here," not "not using it" (a storefront-sniffing method like BuiltWith/Wappalyzer would surface more). For ecommerce-platform tools, results may include the platform's SERVICE PROVIDERS (agencies, ISVs) alongside actual merchants — job mentions don't distinguish "we run on Shopify" from "we sell to Shopify merchants," so name the kind of company you want in `criteria` and the check filters them out. Recruiting agencies are always excluded (company_type = direct_employer), matching theirstack_search. Costs 1.5 Sliq credits per company returned; a failed search is free. In chat, STATE THE COUNT AND THE COST in the same reply as the results — every time, without stopping to ask first. Use the user's number when they gave one, otherwise the default: "pulled 25 companies — 37.5 credits; say if you want more, max 100." Price the companies actually returned, which `count` gives: fewer than `limit` costs less. Because this endpoint pages, prefer one page at the user's number over silently walking `offset` past it — every extra page is more credits. Each company returned is then checked against `criteria`, one company at a time, reading its name, firmographics and technologies, and only the matches come back in `companies`; the rest come back in `rejected` as {name, reason}. It adds a few seconds per ten companies. When this runs in an agent, every company with a domain is saved to the Output tab as a company row (deduped by domain) with its verdict, carrying its firmographics and matched technologies; the rejected ones are hidden from the list's default view. The tool resolves each technology name to a TheirStack catalog slug (calling /v0/catalog/technologies per name; popularity tiebreak; exact name match wins), then queries /v1/companies/search with `company_technology_slug_and` so EVERY supplied technology must be present on the returned company.</summary> <returns> <description>{ "companies": [ { "id": str, "name": str, "domain": str | None, "industry": str | None, "employee_count": int | None, "country_code": str | None, "linkedin_url": str | None, "technologies_found": [ {"slug": str, "name": str, "confidence": str, "jobs": int, "last_date_found": str}, ... ], "verdict": str | None, # 'qualified', 'unclear', or None when the check couldn't run "verdict_reason": str, }, ... ], "rejected": [{"name": str, "reason": str}, ...], # companies the check turned down "count": int, # companies in this page, rejected ones included; the number billed "total_matches": int, # universe size for this query (or None) "created_identifiers": [str], # domains of matching companies this call newly added to the list } On upstream failure (timeout / 5xx / connection error), returns `{"companies": [], "count": 0, "theirstack_available": False}` so the agent can read the flag and degrade gracefully.</description> </returns>ConnectorOAuth
- Create a Marketing-Automation-contacts custom audience (platform customAudienceType MA_CONTACTS_STATIC or MA_CONTACTS_DYNAMIC) from a provider library list. This is one of the audience types eligible for Microsoft Ads (Customer Match). Use it when a user wants a Marketing-Automation-sourced contacts audience, including for a Microsoft Ads campaign. PREREQUISITE: • The provider (HUBSPOT or MARKETO) MUST be connected — the platform validates this and returns a clear error if not. • A library_list_id from list_marketing_automation_lists — do NOT invent one. For HubSpot the list must be DONE; for Marketo READY. VARIANT (mirrors the UI's static/dynamic choice): • STATIC → MA_CONTACTS_STATIC — snapshot at creation, does not refresh. • DYNAMIC → MA_CONTACTS_DYNAMIC — refreshes as the provider data changes. • If the user did not say which, ASK — do NOT default and do NOT infer it from the source list's type. A HubSpot STATIC_LIST is not the same choice as a STATIC (snapshot) audience; the audience variant is the user's call, independent of the list's type. 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 Marketing-Automation 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: • custom_audience_name (required): the audience display name — must NOT contain '/'. • library_list_id (required): id from list_marketing_automation_lists. • provider (required): HUBSPOT or MARKETO. • variant (required): STATIC or DYNAMIC. • list_name (optional): the source list's own name (from the lookup), forwarded to the flow. RETURNS: { id, name, status, createdDate, audience_type, async: true } — `audience_type` is the MA_CONTACTS_* you created and `id` is a creation/flow id, not associable yet.ConnectorAPI key
- ACCOUNT REQUIRED (free — sign in via GitHub at https://pipeworx.io/signup; depth:"thorough" needs a paid plan). If you are not signed in, use ask_pipeworx instead — it works on every tier. Grounded multi-source research across Pipeworx's 1685 STRUCTURED data sources (SEC filings, FRED/BLS economics, FDA, USPTO patents, markets, science, government records, etc.) in ONE call — this is NOT open-web search. Decomposes your question into focused facets, routes each to the right one of 6,474 tools IN PARALLEL, and returns a findings packet: verbatim evidence + confidence + source + fetched_at + a stable pipeworx:// citation per finding, with explicit gaps[] for facets the data couldn't answer (never invented). Best for broad/multi-part questions over structured data ("compare X and Y's regulatory + financial exposure", "research the filings + market picture for ACME"). For a single lookup use ask_pipeworx (one LLM call, not many). For BREAKING or colloquial CURRENT-NEWS / "what's the world saying about X" topics, prefer ask_pipeworx — it routes to live news APIs and the *-news-feeds packs; deep_research returns mostly empty gaps[] when the topic isn't in the structured catalog. Second-hop iteration: depth:"standard" re-angles unanswered gaps (gap recovery); depth:"thorough" additionally chases the best leads from the first pass — so multi-step questions resolve in one call. Every finding carries a `hop` field and a citation_uri — a resolvable pipeworx:// record URI, present only when the source emits one that resources/read can actually serve, so a citation you get back is always fetchable. "standard" and "thorough" also return contradictions[] flagging findings that disagree. Large records are semantically excerpted to the passages relevant to each facet (not head-truncated), so answers deep in a long filing/series aren't missed. Expect 15-60s (thorough with its follow-up + contradiction pass: up to ~90s).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
- Orbit Toolbox — ALL of your integrations live behind this single tool. Orbit's full capability set (39): image_generate, calendar, apollo, up2data, apify, orbit_scrape, jev, ocean, instantly, perplexity, notion, airtable, linear, github, hubspot, resend, slack, stripe, semrush, google_search_console, twitter, telegram_bot, posteahora, custom_api, remote_mcp, linkedin, whatsapp, instagram, messenger, telegram, x_dms, gmail_mailbox, outlook_mailbox, imap_mailbox, twitter_data, x_article, x_session, reddit_data, predictleads. • image_generate — Orbit-provisioned image generation. Text → PNG, returns a signed HTTPS URL ready to attach to social posts (PosteAhora mediaUrls) or file artifacts. No key required. • calendar — Read, create and cancel events on the operator's real calendar — free with a connected Gmail or Outlook mailbox. Use it for meeting prep, scheduling and conflict checks. [requires connected Gmail/Outlook mailbox — calendar itself is free] • apollo — Unified Apollo tool (Orbit-provisioned). Sub-actions: test, people_search (discovery only, no emails), org_search, people_enrich, people_enrich_bulk (up to 10 people per call), or… • up2data — Orbit's MAIN tool for LinkedIn data, Orbit-provisioned, no key required. Live LinkedIn profiles (positions, education, skills, photo, current company), companies, posts, comments … • apify — Run any of 4,000+ Apify actors (scraping, SERPs, socials, marketplaces) with zero setup — provisioned by Orbit. Only pay-per-result actors are listed — never use a subscription/re… • orbit_scrape — Read any public web page as clean markdown, or search the web, in one call — Orbit-provisioned, free, no key required. The default for company websites, articles, docs, competitor… • jev — Fast, cheap, calibrated decisions on up to 500 items per call — Orbit-provisioned, no key required. Not a writer: it answers one typed question per item (classify into labels you … • ocean — ONLY for lookalike campaigns or finding new leads modelled on the operator's existing customers — never for general lead search, LinkedIn work, enrichment or research (use up2data… • instantly — Author Instantly cold-email campaigns end to end: write the sequence copy with {{variables}}, attach sending mailboxes, add leads with per-lead variables, activate or pause. Also … [requires operator API key] • perplexity — Ask Perplexity Sonar and get a cited answer. [requires operator API key] • notion — Search Notion pages/databases and create pages. [requires operator API key] • airtable — List and create records in an Airtable base. [requires operator API key] • linear — Linear tracker: read teams, projects, issues and comments; create, update, assign, comment on and close issues. [requires operator API key] • github — List and create GitHub issues in a repo. [requires operator API key] • hubspot — Search HubSpot contacts and create new ones. [requires operator API key] • resend — Send transactional email via Resend from the operator's account. [requires operator API key] • slack — Post a message into a Slack channel using the operator's bot token. [requires operator API key] • stripe — Read-only Stripe: recent charges, customers, subscriptions. [requires operator API key] • semrush — Semrush domain overview — traffic, keywords, ads. [requires operator API key] • google_search_console — The operator's own Search Console: queries and pages with clicks, impressions, CTR and position; index status of a URL; sitemaps. Can also submit sitemaps and ask Google to crawl … [requires operator API key] • twitter — Post, delete, read and search on X using the operator's own X developer app credentials (OAuth 1.0a or bearer token). Non-provisioned alternative to a connected X account. [requires operator API key] • telegram_bot — Send and read messages with the operator's own Telegram bot (BotFather token): send_message, send_photo, send_document, get_updates, across chats, groups and channels. Several bot… [requires operator API key] • posteahora — Publish, schedule and read analytics on Instagram, TikTok, X, LinkedIn, Threads, Facebook, Bluesky and more via the operator's PosteAhora key. [requires operator API key] • custom_api — Call any HTTP API the operator registered themselves (label + https base URL + optional key). Actions: list, request. The key is stored encrypted and injected server-side — it is … [requires operator API key] • remote_mcp — Use the tools of any MCP server the operator added themselves (name + https address + optional token). Actions: list_servers, list_tools, call. The token is stored encrypted and o… [requires operator API key] • linkedin — Act on the operator's own LinkedIn: read and reply to DMs, open new conversations, send personalised connection requests, publish posts, comment and like. Caps: 50 messages, 20 in… [requires linked account] • whatsapp — Read and reply to WhatsApp chats from the operator's own number. Warm conversations and follow-ups only — 100 messages a day. [requires linked account] • instagram — Read and answer Instagram DMs as the operator. 40 messages a day. [requires linked account] • messenger — Read and answer Facebook Messenger conversations as the operator. 40 messages a day. [requires linked account] • telegram — Read and reply to Telegram chats as the operator. 120 messages a day. [requires linked account] • x_dms — Read and reply to X direct messages as the operator. 40 messages a day. [requires linked account] • gmail_mailbox — Triage, read and send email from the operator's own Gmail address. Replies and follow-ups, never cold sequences. 120 sends a day. [requires linked account] • outlook_mailbox — Triage, read and send email from the operator's Microsoft mailbox. Replies and follow-ups, never cold sequences. 120 sends a day. [requires linked account] • imap_mailbox — Triage, read and send email from any other mailbox the operator connected over IMAP/SMTP. 100 sends a day. [requires linked account] • twitter_data — PRIMARY Twitter/X public-data source — search, profiles, timelines, threads, replies, quotes, followers, lists, communities, trends and spaces over a direct REST API. Orbit-provis… ⚠ Public-data reads only. Private data and account actions require the workspace's own connected X account. • x_article — Write and publish long-form Articles on X as this workspace's own account — create a draft, set the title and body (markdown), publish or unpublish, list and delete. Requires the … [requires operator API key] ⚠ Needs the workspace's own X session cookies (auth_token + ct0) and an X Premium account. • x_session — Reply to tweets, post, delete and read/send DMs on X as this workspace's own account, through its saved X session cookies. No developer app needed. Orbit's shared account is never… [requires operator API key] ⚠ Needs the workspace's own X session cookies (auth_token + ct0); they expire after weeks of inactivity. • reddit_data — PRIMARY Reddit source — post and comment search, subreddit listings and rules, full comment trees, community discovery, user profiles and comment history over a direct REST API. O… ⚠ Public reads only — no posting, commenting, voting or DMs. ⚠ Reddit caps any single listing at ~1000 items; when `after` is null check `listing_status` before assuming the data ended. • predictleads — Pull GTM buying signals from PredictLeads — funding rounds, job openings, technology installs, product launches, website changes, exec moves and company connections. Orbit-provisi… ⚠ action 'discover_by_technology' is gated by PredictLeads' discovery add-on and is currently UNAVAILABLE on Orbit's plan — it returns an authorization error even for the documented example. Do not spend calls on it; use 'technologies' per-domain instead. ⚠ Responses are large. Always pass `fields` (e.g. ['data.attributes.domain']) or `mode:'summary'` on discovery actions. Usage: { action: 'list' } → what is LIVE for this workspace right now (full descriptions + JSON Schemas) plus what is not connected yet and how the operator connects it. { action: 'describe', tool: '<name>' } → one tool's schema, full docs, and any known broken/plan-gated actions. { action: 'call', tool: '<name>', arguments: { ... }, agent_id: '<your agent.id>' } → run it. Always include agent_id so spend is attributed to you. { action: 'fetch_payload', payload_id: '<id>', path?, offset?, limit?, fields? } → page a stored oversized response (free, no re-billing). PAYLOAD CONTROLS (use them — some APIs return 100KB+ of single-line JSON): fields: ['data.attributes.domain', 'data.attributes.company_name'] → project only the columns you need. Cheapest option, always prefer it. mode: 'summary' → structure digest + record count + 2 sample rows, so you can pick `fields` before pulling the full set. max_chars: <n> → clamp the response (default 12000). Anything over the limit is NOT dropped: it is stored and returned as a digest + payload_id you can page with fetch_payload. Never route overflow through files. Every response carries `related_tools` — the tools that feed into or follow from the one you just used. Read it before deciding your next step. Tools marked [requires ...] only work once the operator has connected them. Always `list` once per session to see live status, and `describe` a tool before your first `call`. Never tell the operator a capability is missing without checking `list` first — and never promise an action on a tool that `list` reports as not connected; tell the operator what to connect instead.ConnectorNo auth
- Set up a standing search the user wants watched — 'track LinkedIn posts that mention hubspot', 'track tweets mentioning @dharmesh', 'watch acme.com/pricing for changes'. query is what to watch for; tracker_type says where to watch (LinkedIn posts unless they ask for tweets/X or a specific page URL — a URL to watch means web_page, with the URL in url and query as a short label for it). linkedin_post and twitter_search requests become a daily cloud agent that emails a digest of new posts; web_page creates a tracker in their brain that runs daily and emails changes, filtered by the prompt. Always give the user the returned page_url as a link — that page is where they review and manage it.ConnectorNo auth
- Query the user's HubSpot contacts — the people synced from the HubSpot portals they've connected. Use this for any question about their CRM contacts: engagement filters ('show me people with more than 10 page views'), lifecycle and pipeline ('how many customers do I have?', 'leads with an open deal'), firmographics ('contacts at Google', 'people in Boston'), attribution ('which source brought the most contacts?'), email activity, deal amounts, lead scores, or form conversions. Answered by generating a read-only SQL query over the synced contact table, so it returns columns and rows rather than prose — summarize the rows for the user, and say how many there were. If it reports no contacts synced, tell them to import at /hubspot/import. Keep the question under 500 characters.ConnectorNo auth