{"openapi":"3.1.0","info":{"title":"Sprinto (BYOK) API","version":"0.1.0","description":"Sprinto (BYOK) lets an AI assistant read your own Sprinto data through the Sprinto API with a key you supply (Sprinto Developer API key). Read-only: 5 tools (get_framework_readiness, list_vendors, list_vendors_due_diligence, get_vendor, get_vendor_custom_fields). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever sent to...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-sprinto.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-sprinto/docs"},"termsOfService":"https://connectorbay.com/byok-sprinto/terms"},"servers":[{"url":"https://byok-sprinto.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-sprinto/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_framework_readiness":{"post":{"operationId":"get_framework_readiness","summary":"Get per-framework control counts, number of controls set up and average readiness percentage (0 to 100), keyed by framew","description":"Get per-framework control counts, number of controls set up and average readiness percentage (0 to 100), keyed by framework ID. The vendor limits the API to 10 requests per minute. Use for \"How ready is each of my Sprinto compliance frameworks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"enabled_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) to return only enabled frameworks, as the Sprinto dashboard does; false includes the whole catalogue.","title":"Enabled Only"},"disabled_or_global":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include disabled or global frameworks.","title":"Disabled Or Global"}},"title":"get_framework_readinessArguments","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_vendors":{"post":{"operationId":"list_vendors","summary":"List vendors (cursor paged) with name, category, risk level and active flag. Use for \"Which vendors does Sprinto track a","description":"List vendors (cursor paged) with name, category, risk level and active flag. Use for \"Which vendors does Sprinto track and what is their risk level\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"first":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many vendors to return.","title":"First"},"after":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: pageInfo.endCursor from the previous answer.","title":"After"},"search_query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search vendors by name.","title":"Search Query"},"is_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True for archived vendors, false for active ones.","title":"Is Archived"}},"title":"list_vendorsArguments","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_vendors_due_diligence":{"post":{"operationId":"list_vendors_due_diligence","summary":"List vendors with their due-diligence status (OPTIONAL, PENDING, COMPLETED, COMPLETED_APPROVED, COMPLETED_REJECTED, SKIP","description":"List vendors with their due-diligence status (OPTIONAL, PENDING, COMPLETED, COMPLETED_APPROVED, COMPLETED_REJECTED, SKIPPED or NA). Use for \"Which vendors still have due diligence pending\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"first":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many vendors to return.","title":"First"},"after":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: pageInfo.endCursor from the previous answer.","title":"After"},"search_query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search vendors by name.","title":"Search Query"},"is_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True for archived vendors, false for active ones.","title":"Is Archived"},"include_due_diligence_status":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) to include each vendor's due-diligence status.","title":"Include Due Diligence Status"}},"title":"list_vendors_due_diligenceArguments","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_vendor":{"post":{"operationId":"get_vendor","summary":"Get one vendor by primary key: name, category, risk level, active flag and due-diligence status. Use for \"What is the du","description":"Get one vendor by primary key: name, category, risk level, active flag and due-diligence status. Use for \"What is the due-diligence status of this vendor in Sprinto\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"vendor_pk":{"description":"Vendor primary key (UUID) from list_vendors.","maxLength":64,"title":"Vendor Pk","type":"string"},"include_due_diligence_status":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) to include the due-diligence status.","title":"Include Due Diligence Status"}},"required":["vendor_pk"],"title":"get_vendorArguments","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_vendor_custom_fields":{"post":{"operationId":"get_vendor_custom_fields","summary":"Get a vendor's custom field values (name, type and the typed value, for example a contract expiry date). Use for \"What c","description":"Get a vendor's custom field values (name, type and the typed value, for example a contract expiry date). Use for \"What custom fields are filled in for this vendor in Sprinto\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"vendor_pk":{"description":"Vendor primary key (UUID) from list_vendors.","maxLength":64,"title":"Vendor Pk","type":"string"},"include_custom_attributes":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) to include the custom field values.","title":"Include Custom Attributes"}},"required":["vendor_pk"],"title":"get_vendor_custom_fieldsArguments","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}}}}