{"openapi":"3.1.0","info":{"title":"Fingerprint (BYOK) API","version":"0.1.0","description":"Fingerprint (BYOK) lets an AI assistant read your own Fingerprint data through the Fingerprint API with a key you supply (Fingerprint Management API key). Read-only: 11 tools (list_api_keys, get_api_key, list_environments, list_filtering_rules, get_filtering_rule, list_webhooks, get_webhook, list_webhook_rules, list_encryption_keys, list_subdomains, get_subdomain). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-fingerprint.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-fingerprint/docs"},"termsOfService":"https://connectorbay.com/byok-fingerprint/terms"},"servers":[{"url":"https://byok-fingerprint.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-fingerprint/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_api_keys":{"post":{"operationId":"list_api_keys","summary":"List the workspace's Fingerprint API keys (public, secret, proxy) with name, type, status, rate limit and environment. K","description":"List the workspace's Fingerprint API keys (public, secret, proxy) with name, type, status, rate limit and environment. Key values are not returned by this tool. Use for \"Which Fingerprint API keys are enabled and which environment does each belong to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type":{"anyOf":[{"enum":["public","secret","proxy"],"type":"string"},{"type":"null"}],"default":null,"description":"Only keys of this type.","title":"Type"},"status":{"anyOf":[{"enum":["enabled","disabled"],"type":"string"},{"type":"null"}],"default":null,"description":"Only items with this status.","title":"Status"},"environment":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this environment ID (starts with ae_).","title":"Environment"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return per page (1 to 100, default 10).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from the previous answer's metadata.pagination.next_cursor; leave empty for the first page.","title":"Cursor"}},"title":"list_api_keysArguments","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_api_key":{"post":{"operationId":"get_api_key","summary":"Get one Fingerprint API key by ID: name, type, status, rate limit and environment. The key value is not returned by this","description":"Get one Fingerprint API key by ID: name, type, status, rate limit and environment. The key value is not returned by this tool. Use for \"Show the details of Fingerprint API key key_abc\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"API key ID from list_api_keys.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_api_keyArguments","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_environments":{"post":{"operationId":"list_environments","summary":"List environments (separate data scopes such as production and staging) with limit mode, limit value and restriction sta","description":"List environments (separate data scopes such as production and staging) with limit mode, limit value and restriction state. Use for \"Which Fingerprint environments exist and are any of them restricted\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return per page (1 to 100, default 10).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from the previous answer's metadata.pagination.next_cursor; leave empty for the first page.","title":"Cursor"}},"title":"list_environmentsArguments","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_filtering_rules":{"post":{"operationId":"list_filtering_rules","summary":"List request filtering rules that allow or deny identification requests by expression, with action, status and environme","description":"List request filtering rules that allow or deny identification requests by expression, with action, status and environment. Use for \"Which Fingerprint filtering rules deny traffic\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"environment":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this environment ID (starts with ae_).","title":"Environment"},"status":{"anyOf":[{"enum":["enabled","disabled"],"type":"string"},{"type":"null"}],"default":null,"description":"Only items with this status.","title":"Status"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only rules with this name.","title":"Name"}},"title":"list_filtering_rulesArguments","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_filtering_rule":{"post":{"operationId":"get_filtering_rule","summary":"Get one filtering rule by ID: expression, action, status and environment. Use for \"Show the Fingerprint filtering rule f","description":"Get one filtering rule by ID: expression, action, status and environment. Use for \"Show the Fingerprint filtering rule fr_abc\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Filtering rule ID from list_filtering_rules.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_filtering_ruleArguments","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_webhooks":{"post":{"operationId":"list_webhooks","summary":"List webhooks with target URL, status, verification state and enable or disable dates. Signing keys and credentials are ","description":"List webhooks with target URL, status, verification state and enable or disable dates. Signing keys and credentials are not returned by this tool. Use for \"Where does Fingerprint send webhooks and are they verified\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["enabled","disabled"],"type":"string"},{"type":"null"}],"default":null,"description":"Only items with this status.","title":"Status"},"environment":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this environment ID (starts with ae_).","title":"Environment"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return per page (1 to 100, default 10).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from the previous answer's metadata.pagination.next_cursor; leave empty for the first page.","title":"Cursor"}},"title":"list_webhooksArguments","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_webhook":{"post":{"operationId":"get_webhook","summary":"Get one webhook by ID: URL, status, verification state and dates. Signing keys and credentials are not returned by this ","description":"Get one webhook by ID: URL, status, verification state and dates. Signing keys and credentials are not returned by this tool. Use for \"Show the details of Fingerprint webhook wh_abc\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Webhook ID from list_webhooks.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_webhookArguments","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_webhook_rules":{"post":{"operationId":"list_webhook_rules","summary":"List the filter rules attached to a webhook, with name, description and rule expression. Use for \"Which rules decide wha","description":"List the filter rules attached to a webhook, with name, description and rule expression. Use for \"Which rules decide what Fingerprint webhook wh_abc receives\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"webhook_id":{"description":"Webhook ID from list_webhooks.","maxLength":200,"title":"Webhook Id","type":"string"}},"required":["webhook_id"],"title":"list_webhook_rulesArguments","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_encryption_keys":{"post":{"operationId":"list_encryption_keys","summary":"List encryption keys used for sealed client results with name, status, environment and rotation dates. Key values are no","description":"List encryption keys used for sealed client results with name, status, environment and rotation dates. Key values are not returned by this tool. Use for \"When was each Fingerprint encryption key last rotated\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["enabled","disabled"],"type":"string"},{"type":"null"}],"default":null,"description":"Only items with this status.","title":"Status"},"environment":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this environment ID (starts with ae_).","title":"Environment"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return per page (1 to 100, default 10).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from the previous answer's metadata.pagination.next_cursor; leave empty for the first page.","title":"Cursor"}},"title":"list_encryption_keysArguments","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_subdomains":{"post":{"operationId":"list_subdomains","summary":"List custom subdomains used to serve the Fingerprint agent first-party, with status and dates. Use for \"Which custom Fin","description":"List custom subdomains used to serve the Fingerprint agent first-party, with status and dates. Use for \"Which custom Fingerprint subdomains are active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["pending","active","timed_out","failed"],"type":"string"},{"type":"null"}],"default":null,"description":"Only subdomains with this status.","title":"Status"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return per page (1 to 100, default 10).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from the previous answer's metadata.pagination.next_cursor; leave empty for the first page.","title":"Cursor"}},"title":"list_subdomainsArguments","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_subdomain":{"post":{"operationId":"get_subdomain","summary":"Get one custom subdomain by ID with status, webhook URL and the DNS records that must exist for it. Use for \"Which DNS r","description":"Get one custom subdomain by ID with status, webhook URL and the DNS records that must exist for it. Use for \"Which DNS records does Fingerprint subdomain sd_abc need\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Subdomain ID from list_subdomains.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_subdomainArguments","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}}}}