Open in ClaudeOpen in ChatGPT

    Docs · Connect

    API

    Authenticate, page through mentions, handle errors, and every REST endpoint on one page.

    Base URL: https://prospy.io/api/v1. The full schema is the OpenAPI 3.1 spec.

    Authenticate

    Create a key in Integrations → API & MCP and keep it server-side. Keys start with psy_live_ and are shown once. Read keys allow GET requests; full keys also allow writes within your project role. An active subscription is required.

    curl https://prospy.io/api/v1/projects \
      -H "Authorization: Bearer $PROSPY_API_KEY"

    Paginate

    List mentions returns data and nextCursor. limit is 1–100 (default 25). Pass nextCursor back as cursor with the same filters and sort, and stop when it is null. Arrays accept repeated or comma-separated values: platforms=Twitter,Reddit. Dates are ISO 8601; from is inclusive and to exclusive.

    Handle errors

    Errors look like {"error":{"code":"validation_error","message":"Invalid request"}}.

    StatusWhat to do
    400Fix parameter types, required fields or JSON.
    401Check the key and whether it was revoked.
    403Check subscription, key scope and project role.
    404Check the path and resource ID.
    409Resolve the conflict or idempotency-key mismatch.
    429Wait for Retry-After. Limits are per user across all keys and MCP.
    500Retry with backoff.

    Send an Idempotency-Key on POST to retry safely. Responses replay for 24 hours; reusing a key for a different request returns 409.

    Endpoints

    Projects

    GET/meGet the API key's user identifier and actor context.

    Get the API key's user identifier and actor context. MCP tool: get_me.

    Scope: read or full.

    curl -X GET 'https://prospy.io/api/v1/me' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"get_me","arguments":{}}
    GET/projectsList projects the actor can access, including their role.

    List projects the actor can access, including their role. MCP tool: list_projects.

    Scope: read or full.

    curl -X GET 'https://prospy.io/api/v1/projects' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"list_projects","arguments":{}}
    POST/projectsCreate a project owned by the actor, with optional starting brand and competitor keywords, within plan limits, and start its first scan.

    Create a project owned by the actor, with optional starting brand and competitor keywords, within plan limits, and start its first scan. MCP tool: create_project.

    JSON body:

    FieldRequiredTypeNotes
    nameYesstringMinimum length: 1. Maximum length: 200.
    urlNostringFormat: uri.
    timezoneNostringMinimum length: 1. Maximum length: 100.
    brandKeywordsNostring[]Brand and product keywords, added to the Brand group. Maximum items: 100.
    competitorKeywordsNostring[]Competitor names, added to the Competitors group. Maximum items: 100.
    platformsNo("Twitter" | "Reddit" | "HackerNews" | "Bluesky" | "YouTube" | "LinkedIn" | "Threads" | "TikTok" | "Quora" | "ProductHunt" | "GitHub" | "Medium")[]Platforms the starting keywords watch. Omit to watch every platform. Maximum items: 12.
    categoriesNoobject[]Replaces the default mention categories. Maximum items: 50.

    Scope: full. Needs editor role or higher.

    curl -X POST 'https://prospy.io/api/v1/projects' \
      -H "Authorization: Bearer $PROSPY_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"name":"Example"}'
    {"name":"create_project","arguments":{"input":{"name":"Example"}}}
    GET/projects/{projectId}Get a project. Requires viewer access.

    Get a project. Requires viewer access. MCP tool: get_project.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.

    Scope: read or full.

    curl -X GET 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"get_project","arguments":{"projectId":"00000000-0000-4000-8000-000000000001"}}
    PATCH/projects/{projectId}Update project settings; public settings require owner access.

    Update project settings; public settings require owner access. MCP tool: update_project.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.

    JSON body:

    FieldRequiredTypeNotes
    nameNostringMinimum length: 1. Maximum length: 200.
    urlNostringFormat: uri.
    timezoneNostringMinimum length: 1. Maximum length: 100.
    digestEnabledNoboolean
    digestHourNointegerMinimum: 0. Maximum: 23.
    isPublicNoboolean
    publicSlugNostring | null
    publicDescriptionNostring | null

    Scope: full. Needs editor role or higher.

    curl -X PATCH 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001' \
      -H "Authorization: Bearer $PROSPY_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"name":"Example"}'
    {"name":"update_project","arguments":{"projectId":"00000000-0000-4000-8000-000000000001","input":{"name":"Example"}}}
    GET/projects/{projectId}/usageGet current monthly usage against the project owner's plan.

    Get current monthly usage against the project owner's plan. MCP tool: get_usage.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.

    Scope: read or full.

    curl -X GET 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001/usage' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"get_usage","arguments":{"projectId":"00000000-0000-4000-8000-000000000001"}}
    GET/projects/{projectId}/analyticsAggregate mentions over an ISO date range; defaults to the last 30 days.

    Aggregate mentions over an ISO date range; defaults to the last 30 days. MCP tool: get_analytics.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.
    fromqueryNostringFormat: date-time.
    toqueryNostringFormat: date-time.

    Scope: read or full.

    curl -X GET 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001/analytics' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"get_analytics","arguments":{"projectId":"00000000-0000-4000-8000-000000000001"}}

    Mentions

    GET/projects/{projectId}/mentionsSearch mentions by dates, platforms, statuses, sentiments, intents, categories, keywords, groups, author, lead score, text and Google ranking (ranksOnGoogle, sort google_rank), with cursor pagination.

    Search mentions by dates, platforms, statuses, sentiments, intents, categories, keywords, groups, author, lead score, text and Google ranking (ranksOnGoogle, sort google_rank), with cursor pagination. MCP tool: list_mentions.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.
    fromqueryNostringFormat: date-time.
    toqueryNostringFormat: date-time.
    platformsqueryNo("Twitter" | "Reddit" | "HackerNews" | "Bluesky" | "YouTube" | "LinkedIn" | "Threads" | "TikTok" | "Quora" | "ProductHunt" | "GitHub" | "Medium")[]Maximum items: 12.
    statusesqueryNo("open" | "done" | "follow_up")[]Maximum items: 3.
    sentimentsqueryNo("positive" | "neutral" | "negative")[]Maximum items: 3.
    intentsqueryNo("buyer" | "switching" | "question" | "complaint" | "praise" | "none")[]Maximum items: 6.
    categoryIdsqueryNostring[]Maximum items: 100.
    keywordIdsqueryNostring[]Maximum items: 100.
    keywordGroupIdsqueryNostring[]Maximum items: 100.
    authorqueryNostringMinimum length: 1. Maximum length: 100.
    minLeadScorequeryNointegerMinimum: 0. Maximum: 100.
    searchqueryNostringMinimum length: 1. Maximum length: 200.
    ranksOnGooglequeryNoboolean
    sortqueryNo"newest" | "oldest" | "lead_score" | "engagement" | "google_rank"
    limitqueryNointegerMinimum: 1. Maximum: 100. Default: 25.
    cursorqueryNostringMaximum length: 500.

    Scope: read or full.

    curl -X GET 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001/mentions' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"list_mentions","arguments":{"projectId":"00000000-0000-4000-8000-000000000001"}}
    GET/mentions/{id}Get one mention. Requires viewer access.

    Get one mention. Requires viewer access. MCP tool: get_mention.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    Scope: read or full.

    curl -X GET 'https://prospy.io/api/v1/mentions/00000000-0000-4000-8000-000000000001' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"get_mention","arguments":{"id":"00000000-0000-4000-8000-000000000001"}}
    PATCH/mentions/{id}Update a mention's status or category. Requires editor access.

    Update a mention's status or category. Requires editor access. MCP tool: update_mention_status.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    JSON body:

    FieldRequiredTypeNotes
    statusNo"open" | "done" | "follow_up"
    feedbackNo"good" | "bad" | null
    categoryIdNostring | null

    Scope: full. Needs editor role or higher.

    curl -X PATCH 'https://prospy.io/api/v1/mentions/00000000-0000-4000-8000-000000000001' \
      -H "Authorization: Bearer $PROSPY_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"status":"open"}'
    {"name":"update_mention_status","arguments":{"id":"00000000-0000-4000-8000-000000000001","input":{"status":"open"}}}
    POST/mentions/{id}/irrelevantDelete and block re-ingestion of an irrelevant mention, optionally blocking its author. Requires editor access.

    Delete and block re-ingestion of an irrelevant mention, optionally blocking its author. Requires editor access. MCP tool: mark_mention_irrelevant.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    JSON body:

    FieldRequiredTypeNotes
    blockAuthorNoboolean

    Scope: full. Needs editor role or higher.

    curl -X POST 'https://prospy.io/api/v1/mentions/00000000-0000-4000-8000-000000000001/irrelevant' \
      -H "Authorization: Bearer $PROSPY_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"blockAuthor":true}'
    {"name":"mark_mention_irrelevant","arguments":{"id":"00000000-0000-4000-8000-000000000001","input":{"blockAuthor":true}}}
    POST/mentions/{id}/translateTranslate a mention to English and return it. Requires editor access.

    Translate a mention to English and return it. Requires editor access. MCP tool: translate_mention.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    Scope: full. Needs editor role or higher.

    curl -X POST 'https://prospy.io/api/v1/mentions/00000000-0000-4000-8000-000000000001/translate' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"translate_mention","arguments":{"id":"00000000-0000-4000-8000-000000000001"}}

    Keywords

    GET/projects/{projectId}/keyword-groupsList a project's keyword groups.

    List a project's keyword groups. MCP tool: list_keyword_groups.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.

    Scope: read or full.

    curl -X GET 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001/keyword-groups' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"list_keyword_groups","arguments":{"projectId":"00000000-0000-4000-8000-000000000001"}}
    POST/projects/{projectId}/keyword-groupsCreate a keyword group. Requires editor access.

    Create a keyword group. Requires editor access. MCP tool: create_keyword_group.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.

    JSON body:

    FieldRequiredTypeNotes
    nameYesstringMinimum length: 1. Maximum length: 200.
    kindNo"brand" | "competitors" | "custom"

    Scope: full. Needs editor role or higher.

    curl -X POST 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001/keyword-groups' \
      -H "Authorization: Bearer $PROSPY_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"name":"Example"}'
    {"name":"create_keyword_group","arguments":{"projectId":"00000000-0000-4000-8000-000000000001","input":{"name":"Example"}}}
    PATCH/keyword-groups/{id}Rename or reorder a keyword group.

    Rename or reorder a keyword group. MCP tool: update_keyword_group.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    JSON body:

    FieldRequiredTypeNotes
    nameNostringMinimum length: 1. Maximum length: 200.
    positionNointegerMinimum: 0. Maximum: 10000.

    Scope: full. Needs editor role or higher.

    curl -X PATCH 'https://prospy.io/api/v1/keyword-groups/00000000-0000-4000-8000-000000000001' \
      -H "Authorization: Bearer $PROSPY_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"name":"Example"}'
    {"name":"update_keyword_group","arguments":{"id":"00000000-0000-4000-8000-000000000001","input":{"name":"Example"}}}
    DELETE/keyword-groups/{id}Delete a custom keyword group; built-in groups are protected.

    Delete a custom keyword group; built-in groups are protected. MCP tool: delete_keyword_group.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    Scope: full. Needs editor role or higher.

    curl -X DELETE 'https://prospy.io/api/v1/keyword-groups/00000000-0000-4000-8000-000000000001' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"delete_keyword_group","arguments":{"id":"00000000-0000-4000-8000-000000000001"}}
    GET/projects/{projectId}/keywordsList a project's keywords and matching settings.

    List a project's keywords and matching settings. MCP tool: list_keywords.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.

    Scope: read or full.

    curl -X GET 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001/keywords' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"list_keywords","arguments":{"projectId":"00000000-0000-4000-8000-000000000001"}}
    POST/projects/{projectId}/keywordsCreate a keyword within plan limits. Requires editor access.

    Create a keyword within plan limits. Requires editor access. MCP tool: create_keyword.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.

    JSON body:

    FieldRequiredTypeNotes
    keywordYesstringMinimum length: 1. Maximum length: 200.
    groupIdNostring | null
    platformsNo("Twitter" | "Reddit" | "HackerNews" | "Bluesky" | "YouTube" | "LinkedIn" | "Threads" | "TikTok" | "Quora" | "ProductHunt" | "GitHub" | "Medium")[] | null
    aliasesNostring[]Maximum items: 100.
    excludeTermsNostring[]Maximum items: 100.
    exactMatchNoboolean
    enabledNoboolean

    Scope: full. Needs editor role or higher.

    curl -X POST 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001/keywords' \
      -H "Authorization: Bearer $PROSPY_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"keyword":"social listening"}'
    {"name":"create_keyword","arguments":{"projectId":"00000000-0000-4000-8000-000000000001","input":{"keyword":"social listening"}}}
    PATCH/keywords/{id}Update keyword matching settings. Requires editor access.

    Update keyword matching settings. Requires editor access. MCP tool: update_keyword.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    JSON body:

    FieldRequiredTypeNotes
    keywordNostringMinimum length: 1. Maximum length: 200.
    groupIdNostring | null
    platformsNo("Twitter" | "Reddit" | "HackerNews" | "Bluesky" | "YouTube" | "LinkedIn" | "Threads" | "TikTok" | "Quora" | "ProductHunt" | "GitHub" | "Medium")[] | null
    aliasesNostring[]Maximum items: 100.
    excludeTermsNostring[]Maximum items: 100.
    exactMatchNoboolean
    enabledNoboolean

    Scope: full. Needs editor role or higher.

    curl -X PATCH 'https://prospy.io/api/v1/keywords/00000000-0000-4000-8000-000000000001' \
      -H "Authorization: Bearer $PROSPY_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"keyword":"social listening"}'
    {"name":"update_keyword","arguments":{"id":"00000000-0000-4000-8000-000000000001","input":{"keyword":"social listening"}}}
    DELETE/keywords/{id}Delete a keyword. Requires editor access.

    Delete a keyword. Requires editor access. MCP tool: delete_keyword.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    Scope: full. Needs editor role or higher.

    curl -X DELETE 'https://prospy.io/api/v1/keywords/00000000-0000-4000-8000-000000000001' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"delete_keyword","arguments":{"id":"00000000-0000-4000-8000-000000000001"}}

    Categories and views

    GET/projects/{projectId}/categoriesList a project's categories.

    List a project's categories. MCP tool: list_categories.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.

    Scope: read or full.

    curl -X GET 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001/categories' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"list_categories","arguments":{"projectId":"00000000-0000-4000-8000-000000000001"}}
    POST/projects/{projectId}/categoriesCreate a mention category. Requires editor access.

    Create a mention category. Requires editor access. MCP tool: create_category.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.

    JSON body:

    FieldRequiredTypeNotes
    nameYesstringMinimum length: 1. Maximum length: 200.
    descriptionNostringMaximum length: 2000.
    colorNostringMinimum length: 1. Maximum length: 40.

    Scope: full. Needs editor role or higher.

    curl -X POST 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001/categories' \
      -H "Authorization: Bearer $PROSPY_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"name":"Example"}'
    {"name":"create_category","arguments":{"projectId":"00000000-0000-4000-8000-000000000001","input":{"name":"Example"}}}
    PATCH/categories/{id}Update a category's name, description, color or position.

    Update a category's name, description, color or position. MCP tool: update_category.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    JSON body:

    FieldRequiredTypeNotes
    nameNostringMinimum length: 1. Maximum length: 200.
    descriptionNostringMaximum length: 2000.
    colorNostringMinimum length: 1. Maximum length: 40.
    positionNointegerMinimum: 0. Maximum: 10000.

    Scope: full. Needs editor role or higher.

    curl -X PATCH 'https://prospy.io/api/v1/categories/00000000-0000-4000-8000-000000000001' \
      -H "Authorization: Bearer $PROSPY_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"name":"Example"}'
    {"name":"update_category","arguments":{"id":"00000000-0000-4000-8000-000000000001","input":{"name":"Example"}}}
    DELETE/categories/{id}Delete a category, preserving its mentions without that category.

    Delete a category, preserving its mentions without that category. MCP tool: delete_category.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    Scope: full. Needs editor role or higher.

    curl -X DELETE 'https://prospy.io/api/v1/categories/00000000-0000-4000-8000-000000000001' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"delete_category","arguments":{"id":"00000000-0000-4000-8000-000000000001"}}
    GET/projects/{projectId}/saved-viewsList saved mention filters.

    List saved mention filters. MCP tool: list_saved_views.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.

    Scope: read or full.

    curl -X GET 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001/saved-views' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"list_saved_views","arguments":{"projectId":"00000000-0000-4000-8000-000000000001"}}
    POST/projects/{projectId}/saved-viewsSave a named set of mention filters.

    Save a named set of mention filters. MCP tool: create_saved_view.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.

    JSON body:

    FieldRequiredTypeNotes
    nameYesstringMinimum length: 1. Maximum length: 200.
    filtersYesobject

    Scope: full. Needs editor role or higher.

    curl -X POST 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001/saved-views' \
      -H "Authorization: Bearer $PROSPY_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"name":"Example","filters":{"from":"2026-10-01T00:00:00Z"}}'
    {"name":"create_saved_view","arguments":{"projectId":"00000000-0000-4000-8000-000000000001","input":{"name":"Example","filters":{"from":"2026-10-01T00:00:00Z"}}}}
    PATCH/saved-views/{id}Update a saved view's name, filters or position.

    Update a saved view's name, filters or position. MCP tool: update_saved_view.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    JSON body:

    FieldRequiredTypeNotes
    nameNostringMinimum length: 1. Maximum length: 200.
    filtersNoobject
    positionNointegerMinimum: 0. Maximum: 10000.

    Scope: full. Needs editor role or higher.

    curl -X PATCH 'https://prospy.io/api/v1/saved-views/00000000-0000-4000-8000-000000000001' \
      -H "Authorization: Bearer $PROSPY_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"name":"Example"}'
    {"name":"update_saved_view","arguments":{"id":"00000000-0000-4000-8000-000000000001","input":{"name":"Example"}}}
    DELETE/saved-views/{id}Delete a saved view.

    Delete a saved view. MCP tool: delete_saved_view.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    Scope: full. Needs editor role or higher.

    curl -X DELETE 'https://prospy.io/api/v1/saved-views/00000000-0000-4000-8000-000000000001' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"delete_saved_view","arguments":{"id":"00000000-0000-4000-8000-000000000001"}}

    Alerts

    GET/projects/{projectId}/alertsList project alert rules.

    List project alert rules. MCP tool: list_alerts.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.

    Scope: read or full.

    curl -X GET 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001/alerts' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"list_alerts","arguments":{"projectId":"00000000-0000-4000-8000-000000000001"}}
    POST/projects/{projectId}/alertsCreate an email, Slack or Discord alert within plan limits.

    Create an email, Slack or Discord alert within plan limits. MCP tool: create_alert.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.

    JSON body:

    FieldRequiredTypeNotes
    nameYesstringMinimum length: 1. Maximum length: 200.
    targetTypeYes"all" | "group" | "keyword" | "author"
    targetIdNostring | null
    targetValueNostring | null
    minLeadScoreNointegerMinimum: 0. Maximum: 100.
    categoryIdsNostring[]Maximum items: 100.
    sentimentsNo("positive" | "neutral" | "negative")[]Maximum items: 3.
    channelYes"email" | "slack" | "discord" | "webhook"
    destinationYesstringMinimum length: 1. Maximum length: 2000.
    enabledNoboolean

    Scope: full. Needs editor role or higher.

    curl -X POST 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001/alerts' \
      -H "Authorization: Bearer $PROSPY_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"name":"Example","targetType":"all","channel":"email","destination":"[email protected]"}'
    {"name":"create_alert","arguments":{"projectId":"00000000-0000-4000-8000-000000000001","input":{"name":"Example","targetType":"all","channel":"email","destination":"[email protected]"}}}
    PATCH/alerts/{id}Update an alert rule. Requires editor access.

    Update an alert rule. Requires editor access. MCP tool: update_alert.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    JSON body:

    FieldRequiredTypeNotes
    nameNostringMinimum length: 1. Maximum length: 200.
    targetTypeNo"all" | "group" | "keyword" | "author"
    targetIdNostring | null
    targetValueNostring | null
    minLeadScoreNointegerMinimum: 0. Maximum: 100.
    categoryIdsNostring[]Maximum items: 100.
    sentimentsNo("positive" | "neutral" | "negative")[]Maximum items: 3.
    channelNo"email" | "slack" | "discord" | "webhook"
    destinationNostringMinimum length: 1. Maximum length: 2000.
    enabledNoboolean

    Scope: full. Needs editor role or higher.

    curl -X PATCH 'https://prospy.io/api/v1/alerts/00000000-0000-4000-8000-000000000001' \
      -H "Authorization: Bearer $PROSPY_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"name":"Example"}'
    {"name":"update_alert","arguments":{"id":"00000000-0000-4000-8000-000000000001","input":{"name":"Example"}}}
    DELETE/alerts/{id}Delete an alert rule.

    Delete an alert rule. MCP tool: delete_alert.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    Scope: full. Needs editor role or higher.

    curl -X DELETE 'https://prospy.io/api/v1/alerts/00000000-0000-4000-8000-000000000001' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"delete_alert","arguments":{"id":"00000000-0000-4000-8000-000000000001"}}
    POST/alerts/{id}/testSend a test notification to an alert destination.

    Send a test notification to an alert destination. MCP tool: test_alert.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    Scope: full. Needs editor role or higher.

    curl -X POST 'https://prospy.io/api/v1/alerts/00000000-0000-4000-8000-000000000001/test' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"test_alert","arguments":{"id":"00000000-0000-4000-8000-000000000001"}}

    Webhooks

    GET/projects/{projectId}/webhooksList webhook endpoints without signing secrets.

    List webhook endpoints without signing secrets. MCP tool: list_webhooks.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.

    Scope: read or full.

    curl -X GET 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001/webhooks' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"list_webhooks","arguments":{"projectId":"00000000-0000-4000-8000-000000000001"}}
    POST/projects/{projectId}/webhooksCreate a webhook endpoint; returns the signing secret once.

    Create a webhook endpoint; returns the signing secret once. MCP tool: create_webhook.

    ParameterInRequiredTypeNotes
    projectIdpathYesstringFormat: uuid.

    JSON body:

    FieldRequiredTypeNotes
    urlYesstringFormat: uri.
    descriptionNostringMaximum length: 2000.
    eventTypesNo("mention.created" | "mention.updated" | "mention.status_changed" | "mention.marked_irrelevant" | "keyword.created" | "keyword.updated" | "keyword.deleted" | "alert.triggered" | "scan.completed")[]Maximum items: 9.
    enabledNoboolean

    Scope: full. Needs editor role or higher.

    curl -X POST 'https://prospy.io/api/v1/projects/00000000-0000-4000-8000-000000000001/webhooks' \
      -H "Authorization: Bearer $PROSPY_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"url":"https://example.com/webhooks/prospy"}'
    {"name":"create_webhook","arguments":{"projectId":"00000000-0000-4000-8000-000000000001","input":{"url":"https://example.com/webhooks/prospy"}}}
    PATCH/webhooks/{id}Update an endpoint URL, events or enabled state.

    Update an endpoint URL, events or enabled state. MCP tool: update_webhook.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    JSON body:

    FieldRequiredTypeNotes
    urlNostringFormat: uri.
    descriptionNostringMaximum length: 2000.
    eventTypesNo("mention.created" | "mention.updated" | "mention.status_changed" | "mention.marked_irrelevant" | "keyword.created" | "keyword.updated" | "keyword.deleted" | "alert.triggered" | "scan.completed")[]Maximum items: 9.
    enabledNoboolean

    Scope: full. Needs editor role or higher.

    curl -X PATCH 'https://prospy.io/api/v1/webhooks/00000000-0000-4000-8000-000000000001' \
      -H "Authorization: Bearer $PROSPY_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"url":"https://example.com/webhooks/prospy"}'
    {"name":"update_webhook","arguments":{"id":"00000000-0000-4000-8000-000000000001","input":{"url":"https://example.com/webhooks/prospy"}}}
    DELETE/webhooks/{id}Delete a webhook endpoint.

    Delete a webhook endpoint. MCP tool: delete_webhook.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    Scope: full. Needs editor role or higher.

    curl -X DELETE 'https://prospy.io/api/v1/webhooks/00000000-0000-4000-8000-000000000001' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"delete_webhook","arguments":{"id":"00000000-0000-4000-8000-000000000001"}}
    POST/webhooks/{id}/rotate-secretReplace an endpoint's signing secret and return the new secret once.

    Replace an endpoint's signing secret and return the new secret once. MCP tool: rotate_webhook_secret.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    Scope: full. Needs editor role or higher.

    curl -X POST 'https://prospy.io/api/v1/webhooks/00000000-0000-4000-8000-000000000001/rotate-secret' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"rotate_webhook_secret","arguments":{"id":"00000000-0000-4000-8000-000000000001"}}
    GET/webhooks/{id}/deliveriesList webhook delivery attempts with cursor pagination.

    List webhook delivery attempts with cursor pagination. MCP tool: list_webhook_deliveries.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.
    limitqueryNointegerMinimum: 1. Maximum: 100. Default: 25.
    cursorqueryNostringMaximum length: 500.

    Scope: read or full.

    curl -X GET 'https://prospy.io/api/v1/webhooks/00000000-0000-4000-8000-000000000001/deliveries' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"list_webhook_deliveries","arguments":{"id":"00000000-0000-4000-8000-000000000001"}}
    POST/webhook-deliveries/{id}/replayReplay a webhook delivery with its original event id.

    Replay a webhook delivery with its original event id. MCP tool: replay_webhook_delivery.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    Scope: full. Needs editor role or higher.

    curl -X POST 'https://prospy.io/api/v1/webhook-deliveries/00000000-0000-4000-8000-000000000001/replay' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"replay_webhook_delivery","arguments":{"id":"00000000-0000-4000-8000-000000000001"}}
    POST/webhooks/{id}/testSend a sample mention.created event to an endpoint.

    Send a sample mention.created event to an endpoint. MCP tool: test_webhook.

    ParameterInRequiredTypeNotes
    idpathYesstringFormat: uuid.

    Scope: full. Needs editor role or higher.

    curl -X POST 'https://prospy.io/api/v1/webhooks/00000000-0000-4000-8000-000000000001/test' \
      -H "Authorization: Bearer $PROSPY_API_KEY"
    {"name":"test_webhook","arguments":{"id":"00000000-0000-4000-8000-000000000001"}}