{"openapi":"3.1.0","info":{"title":"Red Sift Certificates (BYOK) API","version":"0.1.0","description":"Red Sift Certificates (BYOK) lets an AI assistant read your own Red Sift Certificates data through the Red Sift Certificates API with a key you supply (Red Sift Certificates API key). Read-only: 9 tools (list_hosts, list_certs, get_cert, list_expiring_certs, list_issues, get_issue_stats, list_groups, list_events, list_report_cards). The BYOK key travels with each request, is used for that one...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-redsift-certificates.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-redsift-certificates/docs"},"termsOfService":"https://connectorbay.com/byok-redsift-certificates/terms"},"servers":[{"url":"https://byok-redsift-certificates.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-redsift-certificates/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/list_hosts":{"post":{"operationId":"list_hosts","summary":"List the hosts monitored in the account with status, origin, groups, tags, registrar and expiry of the domain registrati","description":"List the hosts monitored in the account with status, origin, groups, tags, registrar and expiry of the domain registration. Use for \"Which hosts are we monitoring and which are idle\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only hosts in this group.","title":"Group"},"hostname":{"anyOf":[{"maxLength":253,"type":"string"},{"type":"null"}],"default":null,"description":"Only hosts matching this name (subdomains included by default).","title":"Hostname"},"status":{"anyOf":[{"enum":["monitored","idle","archived"],"type":"string"},{"type":"null"}],"default":null,"description":"Only hosts with this status.","title":"Status"},"origin":{"anyOf":[{"enum":["cert","ct","hdb","manual"],"type":"string"},{"type":"null"}],"default":null,"description":"Only hosts with this origin.","title":"Origin"},"tag":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only hosts with this tag.","title":"Tag"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of items to return.","title":"Limit"},"total_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Include the total number of matching rows in pagination.total.","title":"Total Count"}},"title":"list_hostsArguments","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/list_certs":{"post":{"operationId":"list_certs","summary":"List TLS certificates known to the account with subject, issuer, validity dates, key and signature algorithm, covered ho","description":"List TLS certificates known to the account with subject, issuer, validity dates, key and signature algorithm, covered hosts and ownership (certificate bodies are left out). Use for \"Which of our certificates are active and when do they expire\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Only active (true) or inactive (false) certificates.","title":"Active"},"expired":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Only expired (true) or non-expired (false) certificates.","title":"Expired"},"expire_in_days":{"anyOf":[{"maximum":3650,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only certificates already expired or expiring within this many days.","title":"Expire In Days"},"host":{"anyOf":[{"maxLength":253,"type":"string"},{"type":"null"}],"default":null,"description":"Only certificates valid for this hostname.","title":"Host"},"new_since":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only certificates added since this date or timestamp.","title":"New Since"},"exclude_duplicates":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Return only non-duplicate certificates.","title":"Exclude Duplicates"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of items to return.","title":"Limit"}},"title":"list_certsArguments","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_cert":{"post":{"operationId":"get_cert","summary":"Get one certificate by its SHA-256 hash with subject, issuer, validity, algorithms, hosts, CT compliance and ownership. ","description":"Get one certificate by its SHA-256 hash with subject, issuer, validity, algorithms, hosts, CT compliance and ownership. Use for \"Show certificate ab12 and tell me when it expires\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sha256":{"description":"SHA-256 hash of the certificate (hex).","maxLength":200,"title":"Sha256","type":"string"}},"required":["sha256"],"title":"get_certArguments","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/list_expiring_certs":{"post":{"operationId":"list_expiring_certs","summary":"List certificates about to expire for the hosts of a group (use the group label from list_groups). Use for \"Which certif","description":"List certificates about to expire for the hosts of a group (use the group label from list_groups). Use for \"Which certificates in the prod group expire soon\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group_label":{"description":"Group label whose hosts to check.","maxLength":200,"title":"Group Label","type":"string"},"interval":{"anyOf":[{"maximum":3650,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only certificates expiring within this many days.","title":"Interval"},"ignore_expired_days":{"anyOf":[{"maximum":3650,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Skip certificates that expired more than this many days ago.","title":"Ignore Expired Days"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of items to return.","title":"Limit"}},"required":["group_label"],"title":"list_expiring_certsArguments","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/list_issues":{"post":{"operationId":"list_issues","summary":"List detected issues (misconfigurations and expiring items) with title, category, severity, status and affected subject;","description":"List detected issues (misconfigurations and expiring items) with title, category, severity, status and affected subject; details are left out. Use for \"What high severity issues are open on our hosts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"open":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Only open (true) or closed (false) issues.","title":"Open"},"status":{"anyOf":[{"enum":["abandoned","active","bogus","completed","deprecated","ignored","orphaned","snoozed"],"type":"string"},{"type":"null"}],"default":null,"description":"Only issues with this status.","title":"Status"},"severities":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated severities to include.","title":"Severities"},"categories":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated categories to include.","title":"Categories"},"updated_since":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only issues created or updated since this timestamp.","title":"Updated Since"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of items to return.","title":"Limit"},"total_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Include the total number of matching rows in pagination.total.","title":"Total Count"}},"title":"list_issuesArguments","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_issue_stats":{"post":{"operationId":"get_issue_stats","summary":"Get issue counts grouped by status, category, severity and issue definition. Use for \"How many issues do we have by seve","description":"Get issue counts grouped by status, category, severity and issue definition. Use for \"How many issues do we have by severity\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"open":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Only open (true) or closed (false) issues.","title":"Open"},"severities":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated severities to include.","title":"Severities"},"categories":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated categories to include.","title":"Categories"}},"title":"get_issue_statsArguments","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/list_groups":{"post":{"operationId":"list_groups","summary":"List the host groups used by the organization with active host counts. Use for \"Which host groups do we have\".","description":"List the host groups used by the organization with active host counts. Use for \"Which host groups do we have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_groupsArguments","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/list_events":{"post":{"operationId":"list_events","summary":"List recent account events (earliest first, up to 100) with id, type and time. Use for \"What events happened in Hardeniz","description":"List recent account events (earliest first, up to 100) with id, type and time. Use for \"What events happened in Hardenize since yesterday\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"since":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only events after this timestamp.","title":"Since"},"type":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only events of this type.","title":"Type"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many events (1 to 100, default 100).","title":"Limit"}},"title":"list_eventsArguments","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/list_report_cards":{"post":{"operationId":"list_report_cards","summary":"List the security report cards per domain (availability, timestamp and graded sections). Use for \"Show the latest Harden","description":"List the security report cards per domain (availability, timestamp and graded sections). Use for \"Show the latest Hardenize report cards\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only report cards in this group.","title":"Group"},"new_since":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only report cards added since this date.","title":"New Since"}},"title":"list_report_cardsArguments","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}}}}