{"openapi":"3.1.0","info":{"title":"Pulsedive (BYOK) API","version":"0.1.0","description":"Pulsedive (BYOK) lets an AI assistant read your own Pulsedive data through the Pulsedive API with a key you supply (Pulsedive API key). Read-only: 8 tools (get_indicator, get_indicator_by_id, get_indicator_links_or_properties, search_dataset, get_threat, get_threat_linked_indicators_summary, get_feed, get_feed_linked_indicators). The BYOK key travels with each request, is used for that one call...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-pulsedive.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-pulsedive/docs"},"termsOfService":"https://connectorbay.com/byok-pulsedive/terms"},"servers":[{"url":"https://byok-pulsedive.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-pulsedive/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_indicator":{"post":{"operationId":"get_indicator","summary":"Look up an IP address, domain or URL in Pulsedive: risk rating, risk factors, linked threats and feeds, ports, technolog","description":"Look up an IP address, domain or URL in Pulsedive: risk rating, risk factors, linked threats and feeds, ports, technologies, geolocation, TLS certificate and DNS data. Only reads existing data; it does not start a scan. Use for \"How risky is the domain example.com according to Pulsedive\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"indicator":{"description":"IP address, domain or URL to look up.","maxLength":2000,"title":"Indicator","type":"string"},"historical":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":0,"description":"1 to include properties from previous scans (default 0, latest only).","title":"Historical"}},"required":["indicator"],"title":"get_indicatorArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_indicator_by_id":{"post":{"operationId":"get_indicator_by_id","summary":"Get a Pulsedive indicator by its numeric indicator ID (iid): risk, threats, feeds, attributes and properties. Use for \"S","description":"Get a Pulsedive indicator by its numeric indicator ID (iid): risk, threats, feeds, attributes and properties. Use for \"Show the Pulsedive indicator with ID 47936201\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"iid":{"description":"Indicator ID, for example '47936201'.","maxLength":20,"title":"Iid","type":"string"},"historical":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":0,"description":"1 to include properties from previous scans (default 0, latest only).","title":"Historical"}},"required":["iid"],"title":"get_indicator_by_idArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_indicator_links_or_properties":{"post":{"operationId":"get_indicator_links_or_properties","summary":"Get the indicators linked to an indicator (get=links) or its detailed properties (get=properties) by indicator ID. Answe","description":"Get the indicators linked to an indicator (get=links) or its detailed properties (get=properties) by indicator ID. Answers are grouped under dynamic keys by link or property type. Use for \"Which indicators are linked to Pulsedive indicator 47936201\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"iid":{"description":"Indicator ID, for example '47936201'.","maxLength":20,"title":"Iid","type":"string"},"get":{"description":"links for linked indicators, properties for detailed properties.","enum":["links","properties"],"title":"Get","type":"string"},"historical":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":0,"description":"1 to include properties from previous scans (default 0, latest only).","title":"Historical"}},"required":["iid","get"],"title":"get_indicator_links_or_propertiesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_dataset":{"post":{"operationId":"search_dataset","summary":"Search the Pulsedive dataset with its query language (for example 'risk=high AND type=domain'), returning indicators or ","description":"Search the Pulsedive dataset with its query language (for example 'risk=high AND type=domain'), returning indicators or threats. The default number of results depends on the plan (10 without a key, 50 on the free plan). Use for \"Find high-risk domains in Pulsedive\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"q":{"description":"Pulsedive Explore query, for example 'risk=high type=domain'. See the query language page of the Pulsedive docs.","maxLength":500,"title":"Q","type":"string"},"type":{"anyOf":[{"enum":["indicators","threats"],"type":"string"},{"type":"null"}],"default":null,"description":"What to search: indicators (default) or threats.","title":"Type"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of results (minimum 1; the plan caps it).","title":"Limit"}},"required":["q"],"title":"search_datasetArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_threat":{"post":{"operationId":"get_threat","summary":"Get a threat (malware family, actor or campaign) by name: category, risk, description, other names, related threats and ","description":"Get a threat (malware family, actor or campaign) by name: category, risk, description, other names, related threats and techniques. Use for \"What does Pulsedive say about the Zeus threat\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"threat":{"description":"Threat name, for example 'zeus'.","maxLength":200,"title":"Threat","type":"string"}},"required":["threat"],"title":"get_threatArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_threat_linked_indicators_summary":{"post":{"operationId":"get_threat_linked_indicators_summary","summary":"Summarize the indicators linked to a threat by ID: counts by risk, technology, port, protocol and feed. Uses get=links. ","description":"Summarize the indicators linked to a threat by ID: counts by risk, technology, port, protocol and feed. Uses get=links. Use for \"Summarize the indicators linked to Pulsedive threat 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tid":{"description":"Threat ID, for example '1'.","maxLength":20,"title":"Tid","type":"string"},"get":{"const":"links","description":"Must be links.","title":"Get","type":"string"},"summary":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":null,"description":"1 for a summary (counts), 0 for full results.","title":"Summary"},"splitrisk":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":null,"description":"1 to split counts by risk level.","title":"Splitrisk"}},"required":["tid","get"],"title":"get_threat_linked_indicators_summaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_feed":{"post":{"operationId":"get_feed","summary":"Get a threat feed by feed name and organization: category, schedule, description, last update and indicator counts by ri","description":"Get a threat feed by feed name and organization: category, schedule, description, last update and indicator counts by risk. Use for \"Tell me about a feed in Pulsedive\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"feed":{"description":"Feed name.","maxLength":200,"title":"Feed","type":"string"},"organization":{"description":"Name of the feed's organization.","maxLength":200,"title":"Organization","type":"string"}},"required":["feed","organization"],"title":"get_feedArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_feed_linked_indicators":{"post":{"operationId":"get_feed_linked_indicators","summary":"List the indicators linked to a feed by feed ID, paged, or a summary of their counts. Uses get=links. Use for \"Which ind","description":"List the indicators linked to a feed by feed ID, paged, or a summary of their counts. Uses get=links. Use for \"Which indicators does Pulsedive feed 1 contain\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"fid":{"description":"Feed ID, for example '1'.","maxLength":20,"title":"Fid","type":"string"},"get":{"const":"links","description":"Must be links.","title":"Get","type":"string"},"summary":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":null,"description":"1 for a summary (counts), 0 for full results.","title":"Summary"}},"required":["fid","get"],"title":"get_feed_linked_indicatorsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}