Roaspy
AI Tools

Roaspy MCP Server

Connect your AI tools to Roaspy using the Model Context Protocol. Ask about revenue, ROAS, leads, campaigns and contacts in plain English.

70 tools - Streamable HTTP

The Model Context Protocol (MCP) is an open standard that lets AI assistants like Claude, Cursor and ChatGPT securely connect to external data sources. The Roaspy MCP server exposes your Roaspy analytics and CRM data as a set of tools the assistant can call on your behalf, so you can simply ask, "How are my Meta ads doing this week, with campaign names?" and get a real answer.

Installation

The server speaks the Streamable HTTP transport. Point any MCP-compatible client at:

https://mcp.roaspy.com/mcp

Claude Desktop & Cursor

Add this to your MCP configuration file:

{
  "mcpServers": {
    "roaspy": {
      "type": "http",
      "url": "https://mcp.roaspy.com/mcp"
    }
  }
}

Claude.ai (web)

  1. Open Settings -> Connectors.
  2. Click Add custom connector.
  3. Paste https://mcp.roaspy.com/mcp and save.

Authentication

The server is multi-tenant. Each chat connects with its own credentials, so the same server safely serves many Roaspy accounts. Authenticate once per session:

  1. Call connectAccount with your Roaspy API key and business ID (looks like bus_xxxx).
  2. Credentials are held for the duration of the session, and every other tool then works automatically.
  3. Call disconnectAccount to clear them.
Shortcut: You can paste your credentials right into a normal prompt, e.g. "How are my Meta ads doing the last 7 days, with campaign names? API: <key> Business ID: bus_xxxx" and the assistant will call connectAccount for you, then answer.

Analytics & stats

ToolDescription
getDashboardStatsSource of truth for totals. Revenue, cost, ROAS, total and unique sales, leads, AOV, LTV and daily time-series for a date range. Matches the Roaspy dashboard exactly.
getCostRevenueTotal cost vs. revenue plus a daily chart series for a date range.
getFunnelAnalyticsPerformance analytics for a specific funnel over a date range.

AI runs ads (Meta)

Create and launch real Meta (Facebook/Instagram) ad campaigns, grounded in what has actually converted for your business. Everything is created PAUSED - going live is always a separate, explicit updateAdStatus(ACTIVE) step that starts real spend. Budgets are in minor units (cents): $50 = 5000, and any budget above the configured cap requires an explicit override.

The flow: ask "build me an ad from what's working" and the assistant will call getWinningPatterns first, then build createCampaign -> createAdSet -> createAdCreative -> createAd (or duplicateWinner in one shot). It shows you the IDs and budget, and only goes live once you confirm.
ToolDescription
getWinningPatternsStart here. Top-performing campaigns and audiences by real revenue, conversion rate and average order value - the data the assistant bases new creative, targeting and budget on.
getCreativesReportWhich specific creatives/assets drove the best revenue and ROAS, so new creative can be modelled on the top performers.
listMetaAdAccountsList the Meta ad accounts the token can manage. Call first to pick the ad account id.
createCampaignCreate a PAUSED campaign shell (objective, special ad categories).
createAdSetCreate a PAUSED ad set: audience targeting, budget (cents), optimization goal, schedule.
createAdCreativeCreate the ad creative - the copy + media (object story spec).
createAdBind a creative to an ad set as a PAUSED ad. Last step of the chain.
duplicateWinnerOne shot: build a full PAUSED campaign -> ad set -> creative -> ad from a winning pattern.
updateAdStatusThe go-live switch. Set a campaign/ad set/ad to ACTIVE, PAUSED or ARCHIVED. ACTIVE starts real spend.
updateBudgetChange the daily/lifetime budget on an ad set or CBO campaign (cents; capped unless overridden).
updateEntityUpdate arbitrary fields (name, targeting, bid) on an existing campaign, ad set or ad.
getAdEntitiesList existing campaigns, ad sets or ads on an account.
getAdInsightsRead live spend, delivery and ROAS for an account, campaign, ad set or ad - to verify a launch worked.

Media & creatives

ToolDescription
uploadAdImageGive it an image link. Downloads the image and uploads it, returning a reusable image_hash.
uploadAdVideoGive it a video link. Meta fetches the video from the URL and returns a video_id.
createImageAdCreativeBuild a single-image link-ad creative in one call (message, headline, link, CTA, image).
getAdImages / getAdVideosList media already uploaded to the account.
getAdCreatives / getCreativeAdsList creatives, and the ads that use a given creative.
getAdPreviewRender a preview of a creative/ad in a placement (Feed, Story, Reels) to show before launch.

Pages & Instagram

ToolDescription
getUserPagesFacebook Pages you can advertise with (and their linked IG accounts) - source of the page_id.
getPagesForBusinessPages owned by a Meta Business Manager.
getIgAccounts / getIgMediaInstagram Business Accounts on an ad account, and recent media on one.
boostIgPostTurn an existing organic Instagram post into a boosted ad (paused, budget-capped).
adsLibrarySearchSearch the public Meta Ad Library for competitive/creative research.

Custom audiences

ToolDescription
getCustomAudiences / getCustomAudienceList audiences on an account, or inspect one (size, status, subtype).
getCustomAudienceAdSetsWhich ad sets currently target a given audience.
createCustomAudienceCreate a customer-file, website, lookalike, app, or engagement audience.
updateCustomAudience / updateCustomAudienceUsersEdit an audience, or add/remove members (personal data is hashed before upload).
deleteCustomAudienceDelete a custom audience.

Campaigns

ToolDescription
getCampaignBreakdownReal Meta campaign names with leads and revenue per campaign. Defaults to the last 30 days, so it naturally lists your active campaigns. Resolves true names from contact journeys (the report fields are blank).
getSalesReportByCampaignsSales report pre-filtered to the campaigns tab, for cross-referencing campaign IDs.

Reports

ToolDescription
getSalesReportRow-level attributed purchases for a date range. Supports a tab (platforms, ad-accounts, campaigns, ad-sets, ads). Not a total count; use getDashboardStats for totals.
getLeadsReportRow-level attributed leads, same tab options.
getBookingsReportRow-level attributed bookings, same tab options.
getReportStatsHigh-level summary statistics for the business.

Contacts

ToolDescription
listContactsList contacts (up to 300/page) with search and pagination. Includes firstSource/lastSource (the ad-set/audience name).
getContactFull details for a single contact.
getContactJourneyFull marketing journey. The clicked events carry the real CAMPAIGN: name in their note.
getContactPurchasesAll purchases made by a contact.
createContactCreate a new contact.
updateContactStatusUpdate a contact's status.

Funnels & products

ToolDescription
listFunnelsList all funnels for the business.
listFunnelViewsList all funnel views.
listProductsList all products.
listProductsByTagsList products filtered by tags.

Purchases

ToolDescription
createPurchaseRecord a new purchase for a contact.
refundPurchaseRefund an existing purchase.

Tracking links

ToolDescription
listTrackingLinksList all tracking links.
createTrackingLinkCreate a tracking link.
updateTrackingLinkUpdate a tracking link.
deleteTrackingLinkDelete a tracking link.

Custom metrics

ToolDescription
listCustomMetricsList all custom metrics.
createCustomMetricCreate a custom metric from a formula.
updateCustomMetricUpdate a custom metric.
deleteCustomMetricDelete a custom metric.

Business & integrations

ToolDescription
getBusinessFull details for the connected business.
updateBusinessUpdate business settings (name, timezone, currency).
listIntegrationsList connected platform integrations.
getIntegrationDetails for a specific integration (e.g. meta, stripe).
listConversionsList raw conversion events for a date range.

Tips & gotchas

getDashboardStatsUse this for any total (revenue, sales, leads, ROAS). getSalesReport only returns individually-attributed purchases and will undercount.
getCampaignBreakdownUse this for campaign names. The report endpoints return empty campaign-name fields for most accounts.
firstSourceOn a contact this is the ad-set / audience name, not the campaign name. The campaign name lives in the journey note.

Security

Treat your Roaspy API key like a password. A few good practices:

  1. Only connect the MCP server in AI clients you trust.
  2. Credentials are scoped to a single session and are never persisted to disk by this server.
  3. Be cautious with prompts that mix untrusted content (e.g. pasted emails) with tool access. Prompt injection is a real risk for any MCP server.
  4. Use disconnectAccount when you're done, or rotate the key in Roaspy if it may have been exposed.