{"openapi":"3.1.0","info":{"title":"Stalkr Agent API","version":"2026-08-24","description":"The same project-scoped capabilities used by Stalkr's dashboard and MCP server.","termsOfService":"https://www.stalkr.ai/terms"},"servers":[{"url":"https://www.stalkr.ai/api/v1","description":"Production"}],"paths":{"/projects":{"get":{"operationId":"list_projects","summary":"List projects","description":"List every active project the authenticated user owns or has been invited to.","tags":["projects"],"security":[{"BearerAuth":[]}],"parameters":[],"x-mcp-tool":"list_projects","x-required-scope":"projects:read","x-tool-annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}},"post":{"operationId":"create_project","summary":"Create project","description":"Create a new monitoring project in the authenticated user's workspace.","tags":["projects"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"create_project","x-required-scope":"projects:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"description":{"default":"","type":"string","maxLength":500},"color":{"default":"#7e47eb","type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"icon":{"default":"📡","type":"string","maxLength":10},"enabledSources":{"default":["x","reddit","youtube","linkedin"],"type":"array","items":{"type":"string","enum":["x","reddit","youtube","linkedin"]}}},"required":["name","description","color","icon","enabledSources"],"additionalProperties":false}}}}}},"/projects/{projectId}":{"get":{"operationId":"get_project","summary":"Get project","description":"Get one project and the authenticated user's role in it.","tags":["projects"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"x-mcp-tool":"get_project","x-required-scope":"projects:read","x-tool-annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}},"patch":{"operationId":"update_project","summary":"Update project","description":"Update project details or status. Only owners can change archival status.","tags":["projects"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"update_project","x-required-scope":"projects:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","maxLength":500},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"icon":{"type":"string","maxLength":10},"enabledSources":{"type":"array","items":{"type":"string","enum":["x","reddit","youtube","linkedin"]}},"status":{"type":"string","enum":["active","paused","archived"]}},"additionalProperties":false}}}}},"delete":{"operationId":"archive_project","summary":"Archive project","description":"Archive a project and disconnect its LinkedIn integration. Only the owner can do this.","tags":["projects"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"archive_project","x-required-scope":"projects:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/projects/{projectId}/members":{"get":{"operationId":"list_project_members","summary":"List project members","description":"List project members and, for owners, pending invitations.","tags":["projects"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"x-mcp-tool":"list_project_members","x-required-scope":"projects:read","x-tool-annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}},"post":{"operationId":"invite_project_member","summary":"Invite project member","description":"Email a time-limited project invitation. Only owners can invite and the existing seat and email rate limits apply.","tags":["projects"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"invite_project_member","x-required-scope":"projects:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{},"role":{"default":"viewer","type":"string","enum":["viewer","editor"]}},"required":["email","role"],"additionalProperties":false}}}}}},"/projects/{projectId}/members/{memberId}":{"patch":{"operationId":"update_project_member","summary":"Update project member","description":"Change a member or pending invite role. Only the project owner can do this.","tags":["projects"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"memberId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"update_project_member","x-required-scope":"projects:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["viewer","editor"]},"memberType":{"default":"member","type":"string","enum":["member","invite"]}},"required":["role","memberType"],"additionalProperties":false}}}}},"delete":{"operationId":"remove_project_member","summary":"Remove project member","description":"Remove a member or revoke a pending project invite.","tags":["projects"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"memberId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"remove_project_member","x-required-scope":"projects:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"memberType":{"default":"member","type":"string","enum":["member","invite"]}},"required":["memberType"],"additionalProperties":false}}}}}},"/keywords":{"get":{"operationId":"list_keywords","summary":"List keywords","description":"List tracked keywords for one project or all accessible active projects.","tags":["keywords"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"projectId","in":"query","required":false,"schema":{"type":"string"}},{"name":"active","in":"query","required":false,"schema":{"type":"boolean"}}],"x-mcp-tool":"list_keywords","x-required-scope":"keywords:read","x-tool-annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}},"post":{"operationId":"create_keyword","summary":"Create keyword","description":"Create a tracked keyword. Existing workspace keyword limits are enforced.","tags":["keywords"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"create_keyword","x-required-scope":"keywords:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1},"value":{"type":"string","minLength":3,"maxLength":200},"sources":{"default":["x","reddit","youtube","linkedin"],"minItems":1,"type":"array","items":{"type":"string","enum":["x","reddit","youtube","linkedin"]}},"aliases":{"default":[],"maxItems":10,"type":"array","items":{"type":"string","maxLength":200}},"excludedTerms":{"default":[],"maxItems":10,"type":"array","items":{"type":"string","maxLength":200}},"filters":{},"caseSensitive":{"default":false,"type":"boolean"}},"required":["projectId","value","sources","aliases","excludedTerms","filters","caseSensitive"],"additionalProperties":false}}}}}},"/keywords/{keywordId}":{"patch":{"operationId":"update_keyword","summary":"Update keyword","description":"Update keyword text, sources, filters, or active state.","tags":["keywords"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"keywordId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"update_keyword","x-required-scope":"keywords:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","minLength":3,"maxLength":200},"sources":{"minItems":1,"type":"array","items":{"type":"string","enum":["x","reddit","youtube","linkedin"]}},"aliases":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":200}},"excludedTerms":{"maxItems":10,"type":"array","items":{"type":"string","maxLength":200}},"filters":{},"caseSensitive":{"type":"boolean"},"active":{"type":"boolean"}},"additionalProperties":false}}}}},"delete":{"operationId":"delete_keyword","summary":"Stop tracking keyword","description":"Deactivate a tracked keyword without deleting its historical mentions.","tags":["keywords"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"keywordId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"delete_keyword","x-required-scope":"keywords:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/mentions":{"get":{"operationId":"list_mentions","summary":"List mentions","description":"Search and paginate mentions across accessible projects with the same filters as the dashboard.","tags":["mentions"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"projectId","in":"query","required":false,"schema":{"type":"string"}},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["x","reddit","youtube","linkedin"]}},{"name":"keywordId","in":"query","required":false,"schema":{"type":"string"}},{"name":"keywordIds","in":"query","required":false,"schema":{"type":"string","maxLength":5000}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["open","done","follow_up"]}},{"name":"sentiment","in":"query","required":false,"schema":{"type":"string","enum":["positive","neutral","negative"]}},{"name":"categoryId","in":"query","required":false,"schema":{"type":"string"}},{"name":"urgencyMin","in":"query","required":false,"schema":{"type":"number","minimum":0,"maximum":100}},{"name":"urgencyMax","in":"query","required":false,"schema":{"type":"number","minimum":0,"maximum":100}},{"name":"search","in":"query","required":false,"schema":{"type":"string","maxLength":200}},{"name":"engagement","in":"query","required":false,"schema":{"type":"string","maxLength":500}},{"name":"dateFrom","in":"query","required":false,"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},{"name":"dateTo","in":"query","required":false,"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},{"name":"sort","in":"query","required":true,"schema":{"default":"createdAtSource","type":"string","enum":["createdAtSource","urgencyScore","engagement"]}},{"name":"direction","in":"query","required":true,"schema":{"default":"desc","type":"string","enum":["asc","desc"]}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":true,"schema":{"default":25,"type":"integer","minimum":1,"maximum":100}},{"name":"tzOffset","in":"query","required":true,"schema":{"default":0,"type":"integer","minimum":-840,"maximum":840}}],"x-mcp-tool":"list_mentions","x-required-scope":"mentions:read","x-tool-annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/mentions/{mentionId}":{"get":{"operationId":"get_mention","summary":"Get mention","description":"Get one source-compliant mention from an accessible project.","tags":["mentions"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"mentionId","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"x-mcp-tool":"get_mention","x-required-scope":"mentions:read","x-tool-annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}},"patch":{"operationId":"update_mention_status","summary":"Update mention status","description":"Mark a mention open, done, or needing follow-up.","tags":["mentions"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"mentionId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"update_mention_status","x-required-scope":"mentions:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["open","done","follow_up"]}},"required":["status"],"additionalProperties":false}}}}}},"/categories":{"get":{"operationId":"list_categories","summary":"List categories","description":"List mention categories for one project or every accessible project.","tags":["mentions"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"projectId","in":"query","required":false,"schema":{"type":"string"}}],"x-mcp-tool":"list_categories","x-required-scope":"mentions:read","x-tool-annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}},"post":{"operationId":"create_category","summary":"Create category","description":"Create a category in a project the user can edit.","tags":["mentions"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"create_category","x-required-scope":"mentions:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":60},"description":{"default":"","type":"string","maxLength":280},"icon":{"type":"string","minLength":1,"maxLength":60},"order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["projectId","name","description","icon"],"additionalProperties":false}}}}}},"/categories/{categoryId}":{"patch":{"operationId":"update_category","summary":"Update category","description":"Update a mention category.","tags":["mentions"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"categoryId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"update_category","x-required-scope":"mentions:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60},"description":{"type":"string","maxLength":280},"icon":{"type":"string","minLength":1,"maxLength":60},"order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false}}}}},"delete":{"operationId":"delete_category","summary":"Delete category","description":"Delete a category. Existing mentions become uncategorized.","tags":["mentions"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"categoryId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"delete_category","x-required-scope":"mentions:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/mention-views":{"get":{"operationId":"list_mention_views","summary":"List saved mention views","description":"List saved mention filter presets.","tags":["mentions"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"projectId","in":"query","required":false,"schema":{"type":"string"}}],"x-mcp-tool":"list_mention_views","x-required-scope":"mentions:read","x-tool-annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}},"post":{"operationId":"create_mention_view","summary":"Create saved mention view","description":"Save a mention filter preset.","tags":["mentions"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"create_mention_view","x-required-scope":"mentions:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":60},"filters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["projectId","name","filters"],"additionalProperties":false}}}}}},"/mention-views/{viewId}":{"patch":{"operationId":"update_mention_view","summary":"Update saved mention view","description":"Update a saved mention filter preset.","tags":["mentions"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"viewId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"update_mention_view","x-required-scope":"mentions:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60},"filters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false}}}}},"delete":{"operationId":"delete_mention_view","summary":"Delete saved mention view","description":"Delete a saved mention filter preset.","tags":["mentions"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"viewId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"delete_mention_view","x-required-scope":"mentions:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/alerts":{"get":{"operationId":"list_alerts","summary":"List alerts","description":"List alert rules in the user's workspace or for an accessible project.","tags":["alerts"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"projectId","in":"query","required":false,"schema":{"type":"string"}}],"x-mcp-tool":"list_alerts","x-required-scope":"alerts:read","x-tool-annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}},"post":{"operationId":"create_alert","summary":"Create alert","description":"Create an email alert rule while enforcing the workspace alert cap and verified-owner recipient policy.","tags":["alerts"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"create_alert","x-required-scope":"alerts:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":80},"type":{"type":"string","enum":["digest","custom"]},"active":{"default":true,"type":"boolean"},"channels":{"minItems":1,"maxItems":1,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","const":"email"},"config":{"default":{},"type":"object","properties":{"recipients":{"maxItems":1,"type":"array","items":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}},"additionalProperties":false}},"required":["type","config"],"additionalProperties":false},"description":"Exactly one email channel; Stalkr delivers alerts only to the verified workspace owner"},"digest":{"type":"object","properties":{"sendHour":{"type":"integer","minimum":0,"maximum":23},"timezone":{"type":"string","minLength":1,"maxLength":80},"sources":{"default":[],"type":"array","items":{"type":"string","enum":["x","reddit","youtube","linkedin"]}}},"required":["sendHour","timezone","sources"],"additionalProperties":false},"filters":{"type":"object","properties":{"sources":{"type":"array","items":{"type":"string","enum":["x","reddit","youtube","linkedin"]}},"sentiments":{"type":"array","items":{"type":"string","enum":["positive","neutral","negative"]}},"categoryIds":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"minUrgency":{"type":"integer","minimum":0,"maximum":100},"engagement":{"type":"object","propertyNames":{"type":"string","enum":["x","reddit","youtube","linkedin"]},"additionalProperties":{"type":"object","properties":{"metric":{"type":"string","maxLength":40},"min":{"type":"number","minimum":0}},"additionalProperties":false}}},"additionalProperties":false}},"required":["projectId","name","type","active","channels"],"additionalProperties":false}}}}}},"/alerts/{alertId}":{"patch":{"operationId":"update_alert","summary":"Update alert","description":"Update an alert rule the user can edit.","tags":["alerts"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"update_alert","x-required-scope":"alerts:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"active":{"type":"boolean"},"channels":{"minItems":1,"maxItems":1,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","const":"email"},"config":{"default":{},"type":"object","properties":{"recipients":{"maxItems":1,"type":"array","items":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}},"additionalProperties":false}},"required":["type","config"],"additionalProperties":false},"description":"Exactly one email channel; Stalkr delivers alerts only to the verified workspace owner"},"digest":{"type":"object","properties":{"sendHour":{"type":"integer","minimum":0,"maximum":23},"timezone":{"type":"string","minLength":1,"maxLength":80},"sources":{"default":[],"type":"array","items":{"type":"string","enum":["x","reddit","youtube","linkedin"]}}},"required":["sendHour","timezone","sources"],"additionalProperties":false},"filters":{"type":"object","properties":{"sources":{"type":"array","items":{"type":"string","enum":["x","reddit","youtube","linkedin"]}},"sentiments":{"type":"array","items":{"type":"string","enum":["positive","neutral","negative"]}},"categoryIds":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"minUrgency":{"type":"integer","minimum":0,"maximum":100},"engagement":{"type":"object","propertyNames":{"type":"string","enum":["x","reddit","youtube","linkedin"]},"additionalProperties":{"type":"object","properties":{"metric":{"type":"string","maxLength":40},"min":{"type":"number","minimum":0}},"additionalProperties":false}}},"additionalProperties":false}},"additionalProperties":false}}}}},"delete":{"operationId":"delete_alert","summary":"Delete alert","description":"Delete an alert rule.","tags":["alerts"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"delete_alert","x-required-scope":"alerts:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/integrations/linkedin":{"get":{"operationId":"get_linkedin_integration","summary":"Get LinkedIn integration","description":"Get LinkedIn Page connection status and available Page choices for a project.","tags":["integrations"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"projectId","in":"query","required":true,"schema":{"type":"string","minLength":1}}],"x-mcp-tool":"get_linkedin_integration","x-required-scope":"integrations:read","x-tool-annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}},"patch":{"operationId":"select_linkedin_page","summary":"Select LinkedIn Page","description":"Choose a Page after LinkedIn authorization.","tags":["integrations"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"select_linkedin_page","x-required-scope":"integrations:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1},"organizationUrn":{"type":"string","maxLength":200,"pattern":"^urn:li:organization:.*"}},"required":["projectId","organizationUrn"],"additionalProperties":false}}}}},"delete":{"operationId":"disconnect_linkedin","summary":"Disconnect LinkedIn","description":"Disconnect LinkedIn from a project and remove its subscription.","tags":["integrations"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"disconnect_linkedin","x-required-scope":"integrations:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1}},"required":["projectId"],"additionalProperties":false}}}}}},"/integrations/linkedin/connect-url":{"post":{"operationId":"get_linkedin_connect_url","summary":"Get LinkedIn connect URL","description":"Return the secure browser URL the project owner must open to authorize LinkedIn.","tags":["integrations"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"get_linkedin_connect_url","x-required-scope":"integrations:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1}},"required":["projectId"],"additionalProperties":false}}}}}},"/integrations/linkedin/sync":{"post":{"operationId":"sync_linkedin","summary":"Sync LinkedIn now","description":"Run a metered LinkedIn sync now. Provider and workspace quotas still apply.","tags":["integrations"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"sync_linkedin","x-required-scope":"integrations:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1}},"required":["projectId"],"additionalProperties":false}}}}}},"/account":{"get":{"operationId":"get_account","summary":"Get account","description":"Get the authenticated user's Stalkr profile.","tags":["account"],"security":[{"BearerAuth":[]}],"parameters":[],"x-mcp-tool":"get_account","x-required-scope":"account:read","x-tool-annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}},"patch":{"operationId":"update_account","summary":"Update account","description":"Update the authenticated user's display name.","tags":["account"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"update_account","x-required-scope":"account:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80}},"required":["name"],"additionalProperties":false}}}}},"delete":{"operationId":"delete_account","summary":"Delete account","description":"Permanently disable the authenticated account and revoke all machine and LinkedIn credentials. Requires explicit DELETE confirmation.","tags":["account"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"delete_account","x-required-scope":"account:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"confirmation":{"type":"string","const":"DELETE"}},"required":["confirmation"],"additionalProperties":false}}}}}},"/usage":{"get":{"operationId":"get_usage","summary":"Get usage and limits","description":"Get plan, mention, keyword, source, and project usage with the same billing windows as the dashboard.","tags":["usage"],"security":[{"BearerAuth":[]}],"parameters":[],"x-mcp-tool":"get_usage","x-required-scope":"usage:read","x-tool-annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/webhooks":{"get":{"operationId":"list_webhooks","summary":"List webhooks","description":"List webhook endpoints visible to the authenticated user.","tags":["webhooks"],"security":[{"BearerAuth":[]}],"parameters":[],"x-mcp-tool":"list_webhooks","x-required-scope":"webhooks:read","x-tool-annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}},"post":{"operationId":"create_webhook","summary":"Create webhook","description":"Create a signed HTTPS webhook endpoint for workspace or project events. The signing secret is returned once.","tags":["webhooks"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"create_webhook","x-required-scope":"webhooks:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":80},"url":{"type":"string","maxLength":2048,"format":"uri"},"eventTypes":{"minItems":1,"maxItems":18,"type":"array","items":{"type":"string","enum":["mention.created","mention.updated","mention.status_changed","keyword.created","keyword.updated","keyword.deleted","alert.created","alert.updated","alert.deleted","alert.delivered","project.created","project.updated","project.archived","integration.connected","integration.disconnected","integration.sync_completed","integration.sync_failed","webhook.test"]}}},"required":["name","url","eventTypes"],"additionalProperties":false}}}}}},"/webhooks/{endpointId}":{"patch":{"operationId":"update_webhook","summary":"Update webhook","description":"Update, enable, disable, or rotate a webhook endpoint secret. A rotated secret is returned once.","tags":["webhooks"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"endpointId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"update_webhook","x-required-scope":"webhooks:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"url":{"type":"string","maxLength":2048,"format":"uri"},"eventTypes":{"minItems":1,"maxItems":18,"type":"array","items":{"type":"string","enum":["mention.created","mention.updated","mention.status_changed","keyword.created","keyword.updated","keyword.deleted","alert.created","alert.updated","alert.deleted","alert.delivered","project.created","project.updated","project.archived","integration.connected","integration.disconnected","integration.sync_completed","integration.sync_failed","webhook.test"]}},"active":{"type":"boolean"},"rotateSecret":{"type":"boolean"}},"additionalProperties":false}}}}},"delete":{"operationId":"delete_webhook","summary":"Delete webhook","description":"Delete a webhook endpoint and its retained delivery history.","tags":["webhooks"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"endpointId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"delete_webhook","x-required-scope":"webhooks:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/webhooks/{endpointId}/test":{"post":{"operationId":"test_webhook","summary":"Test webhook","description":"Queue a signed test event for exactly one webhook endpoint.","tags":["webhooks"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"endpointId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"test_webhook","x-required-scope":"webhooks:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/webhooks/{endpointId}/deliveries":{"get":{"operationId":"list_webhook_deliveries","summary":"List webhook deliveries","description":"Inspect delivery status, attempts, response codes, and bounded response previews.","tags":["webhooks"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"endpointId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"limit","in":"query","required":true,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}}],"x-mcp-tool":"list_webhook_deliveries","x-required-scope":"webhooks:read","x-tool-annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/webhooks/{endpointId}/deliveries/{deliveryId}/replay":{"post":{"operationId":"replay_webhook_delivery","summary":"Replay webhook delivery","description":"Reset and safely replay a retained webhook delivery.","tags":["webhooks"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"endpointId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"deliveryId","in":"path","required":true,"schema":{"type":"string","minLength":1}},{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 character retry key. Strongly recommended for writes.","schema":{"type":"string","minLength":8,"maxLength":128}}],"x-mcp-tool":"replay_webhook_delivery","x-required-scope":"webhooks:write","x-tool-annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/UsageLimited"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/Unavailable"}}}}},"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"Stalkr API key or OAuth access token"}},"schemas":{"SuccessEnvelope":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","required":["capability","requestId","idempotencyReplayed"],"properties":{"capability":{"type":"string"},"requestId":{"type":"string"},"idempotencyReplayed":{"type":"boolean"}}}}},"ErrorEnvelope":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","requestId"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{"type":"array","items":{"type":"object"}}}}}}},"responses":{"BadRequest":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"Unauthorized":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"UsageLimited":{"description":"Plan or safety limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"Forbidden":{"description":"Missing scope or project role","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"NotFound":{"description":"Resource not found or inaccessible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"Conflict":{"description":"Conflicting or duplicate operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"RateLimited":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"Unavailable":{"description":"A required safety dependency is unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}}