DocsAPI and MCP
Vendor Intelligence

API and MCP

The sports clubs we have mapped in your market and the registration software each runs, with evidence, in your AI assistant, CRM or warehouse. Separate from the Competitive Intelligence and VC APIs: their keys don't work here, and ours don't work there.

Access

  • People connect Claude, ChatGPT or any MCP client by signing in with their Alertedly account. They see the workspaces they belong to.
  • Integrations use an API key (alyv_live_…) that an admin creates under Team & access → API & MCP. A key belongs to one workspace and acts with its creator's access: read, or read and write.
  • Send keys as X-API-Key: alyv_live_… or Authorization: Bearer alyv_live_…. Signed-in people in several workspaces pick one with X-Workspace-Id (REST) or the tools' workspace argument (MCP).

MCP server

MCP server URL
https://vendor.alertedly.com/mcp

Streamable HTTP. Tools that change something (marked write) need a signed-in person or a read + write key; check_website and check_list use one check per website, unless we checked the site in the last 30 days.

ToolAccessWhat it does
search_clubsreadOpen leads, Switch leads or your customers, filtered by incumbent, sport, region, city, size, status and signal (delivered: leads Alertedly found for you). Best first.
get_clubreadOne club: what it runs, the evidence, its check history, your team's notes, nearby clubs on the same platform, and who to contact with why we believe it.
find_contactwriteLook for a club's decision maker and their email. Takes a few minutes; get_club then shows the contact.
lookup_websitereadThe club behind a website we checked in the last 30 days (doesn't count against your plan).
check_websitewriteCheck a website now (one check, about a minute). Poll get_check.
get_checkreadA check's progress, and the club once it's done.
market_summaryreadYour market by region and sport, and each platform's footprint.
market_movesreadClubs that changed platform, and clubs won and lost per platform.
list_competitorsreadTracked competitors and their latest weekly report.
get_competitor_reportreadA weekly intelligence report (markdown, every line sourced).
set_lead_statuswriteSet a club's status: new, working, contacted, in_crm, won, lost, not_a_fit.
add_notewriteAdd a note to a club for your team.
send_to_crmwriteAdd up to 50 clubs to your CRM: matched by website or created, with a note of the evidence. They move to In CRM.
find_in_crmwriteWhich of up to 50 clubs are already in your CRM, by website. Found ones are linked; nothing is written to the CRM.
dashboard_overviewreadThe dashboard's home: lead counts, the best Open and Switch leads, platform footprints, coverage and this month's moves.
update_clubswriteStatus and/or owner (a team member's email) for up to 1,000 clubs at once.
list_teamreadYour team: email, role and territories.
list_saved_viewsreadYour team's saved searches.
run_saved_viewreadThe clubs in a saved view, best first.
check_listwriteCheck up to 500 websites as a list (known clubs answer at once; the rest use one check each). Poll get_list.
list_uploadsreadYour lists, with progress.
get_listreadA list's rows: what each club runs, with evidence, or why it couldn't be checked.
set_competitorswriteThe platforms (up to 10) whose weekly intelligence you track. Admins only.
report_mistakewriteTell us a club's platform or evidence is wrong; we re-check it.
request_coveragewriteAsk us to cover a region, sport or kind of club you don't see yet.
my_workspacereadThe workspace the tools use: markets, your platform, competitors, and what's left of this month's plan.

Try: “Find pickleball clubs in Texas on CourtReserve with 8+ courts”, “Prep me for a call with Lakewood Racquet Club”, “Which platforms won the most clubs this quarter?”, “Show me the new leads Alertedly found for us and give the Texas ones to Sam”.

REST API

Base URL
https://vendor.alertedly.com/api/v1
Example
curl "https://vendor.alertedly.com/api/v1/clubs?lead=switch&incumbent=CourtReserve&region=US-TX&limit=25" \
  -H "X-API-Key: alyv_live_…"
Check a list (known clubs match at once; the rest use one check each)
curl -X POST "https://vendor.alertedly.com/api/v1/lists" \
  -H "X-API-Key: alyv_live_…" -H "Content-Type: application/json" \
  -d '{"name": "Q4 targets", "rows": [{"name": "Lakewood Racquet Club", "website": "lakewoodracquet.com", "external_id": "acct-114"}]}'
MethodPathScopeWhat
GET/workspacereadYour workspace: markets, your platform, competitors
GET/usagereadThis month's plan: checks included, used and left, and bought checks
GET/overviewreadThe dashboard's home: lead counts, best leads, platform footprints, coverage, this month's moves
GET/clubsreadSearch: lead, priority (high, medium, low), open_kind, incumbent, sport, country, region, city, size, status, evidence, checked, signal (delivered: leads we found for you), q, sort (priority, name, location, checked, size), dir, page, limit (≤ 100)
GET/clubs/exportreadThe same filters as a CSV, best first (up to 10,000; 5 exports every 10 minutes)
POST/clubs/bulkwrite{"club_ids": […], "status"?, "owner"?} for up to 1,000 clubs; owner is a member's email or null
GET/clubs/{id}readOne club with history, notes, nearby clubs and its contacts (name, role, email, confidence and the evidence)
POST/clubs/{id}/contact-searchwriteLook for the club's decision maker. Answers queued, already_queued, recent or retry_later
PATCH/clubs/{id}writeStatus and/or owner: {"status": "working", "owner": "rep@company.com"}
POST/clubs/{id}/noteswriteAdd a note: {"text": "…"}
DELETE/clubs/{id}/notes/{note_id}writeDelete a note (yours, or any as an admin)
POST/clubs/{id}/mistakeswrite{"text": "…"}: the platform or evidence is wrong; we re-check it
POST/coverage-requestswrite{"text": "…"}: a region, sport or kind of club to cover
GET/teamreadMembers and pending invites: email, role, territories
GET/viewsreadSaved views: lead type and filters
POST/viewswrite{"name", "lead": "open"|"switch"|"customer", "filters": {…}, "sort"?, "shared"?}: opens the same in the dashboard
GET/views/{id}/clubsreadRun a saved view: its clubs, best first (page, limit)
DELETE/views/{id}writeDelete a saved view
GET/listsreadYour lists, with progress
POST/listswrite{"name", "rows": [{name, website, city, region, country, sport, external_id}] (≤ 10,000), "find_websites"?, "watch"?, "run"?}: known clubs match at once; the rest are checked (one check each). 202 with the job
GET/lists/{id}readA list's rows with your external_id, status and the club with its evidence (page, limit ≤ 1,000)
PATCH/lists/{id}write{"accounts": true}: this list is your customers (for "we found X% of your accounts")
DELETE/lists/{id}writeDiscard a list that hasn't run
POST/lists/{id}/runwriteRun a list uploaded with "run": false: {"find_websites"?, "watch"?}
GET/accountsreadYour customer lists against the market: found on your platform, on a competitor, no platform
GET/lookupread?url=… a club we checked in the last 30 days (free), else 404
POST/checkswrite{"url": "…"}: known clubs answer at once; otherwise 202 with a job id (one check). Send Idempotency-Key to retry safely
GET/checks/{id}readA check's progress and result
GET/marketreadCounts by region and sport; platform footprints
GET/movesread?months=1–24: moves and the scoreboard
GET/competitorsreadTracked competitors and their latest report
PUT/competitorswriteAdmins: {"platforms": […]} (≤ 10, from the catalogue)
GET/competitors/cataloguereadThe platforms you can track, with how many sample clubs run each
GET/competitors/reports/{id}readOne weekly report (markdown)
POST/crm/sendwrite{"club_ids": […]} (≤ 50): add them to your CRM with the evidence; per-club results
POST/crm/checkwrite{"club_ids": […]} (≤ 50): which are already in your CRM, by website
POST/integrations/crmwriteSigned-in admins only: {"kind", "key"} connects a CRM once it accepts the key

OpenAPI 3: vendor-openapi.yaml. Leads we find for you carry the signal delivered for 30 days: GET /clubs?signal=delivered.

Lists take comma-separated values (lead=open,switch). Regions are ISO codes (US-TX, CA-ON). Searches return { clubs, pagination: { total, page, limit, has_more } }.

The club object

Club
{
  "id": "…", "name": "Austin Pickleball", "website": "https://austinpb.com", "sport": "pickleball",
  "location": { "city": "Austin", "region": "Texas", "region_code": "US-TX", "country": "US" },
  "size": { "courts": 14 },
  "lead": { "type": "switch", "open_kind": null, "incumbent": "CourtReserve", "priority": "medium",
            "priority_why": "On CourtReserve: win them from it · Large club", "signals": [], "why": "Runs CourtReserve for registration, checked live." },
  "evidence": { "level": "verified", "platform": "CourtReserve", "registration_url": "https://…",
                "note": null, "quote": null, "evidence_url": "https://app.courtreserve.com/Online/Portal/Index/1234", "also_linked": [], "also_uses": null, "checked_at": "2026-10-10T03:00:00Z" },
  "status": "new", "owner": null, "source": "market", "url": "https://alertedly.com/vendor/clubs/…"
}
  • lead.type: open (no specialist platform found: forms, email, by hand), switch (on a competitor's platform), customer (on yours), review (not enough evidence) or not_a_lead (not a club, such as an association or a city programme, or a second listing of a club: kept in the data, never in lead lists or review).
  • evidence.level: verified (checked live), candidate, reference, unknown or fetch_failed.
  • lead.priority: how good a sales opportunity, never a prediction. high: no platform to displace (a form, by hand, or a system the club built), opening soon with no platform chosen, a club that left your platform for a competitor (win it back), or an organisation change at a club on a competitor. medium: on a competitor (it has to be won from it), registration through a governing body's portal, or a form not confirmed as how they register. low: a very small club, whatever it uses. priority_why says which; the evidence is in evidence.

Limits and errors

  • 60 requests a minute per key or person; over it, 429 with Retry-After.
  • Errors are { error: { message, error_code }, request_id }: UNAUTHORIZED, INSUFFICIENT_SCOPE, NOT_FOUND, REFUSED (with the reason), RATE_LIMITED.
  • Results are your workspace's: your entitled market, your private checks and uploads, your lead statuses and notes.