BFSI bank operations source system: branch control tower (opening checklists, pending approvals, escalations, operational-risk register) and trade finance (letters of credit with milestones/bottlenecks, bank guarantees). Records carry a `country` (IN | AU | US); trade-finance records link to retail-banking `customer_id`.
---
**Acting as a user (`X-PS-Impersonate-User`).** Every endpoint accepts an optional `X-PS-Impersonate-User` request header whose value is the email of the instance user to act as. The effective user resolves in this order: the header if present, else the instance's configured default MCP user, else none. User-scoped paths additionally accept the literal `me` in place of an email, and Graph-style apps also serve `/me/…` twins of their `/users/{email}/…` paths that resolve the same way. This header is honored by all operations but is intentionally omitted from each operation's parameter list so it is not surfaced as a per-tool argument by MCP clients; see the `ImpersonateUser` entry under `components.parameters`.
BFSI bank operations source system: branch control tower (opening checklists, pending approvals, escalations, operational-risk register) and trade finance (letters of credit with milestones/bottlenecks, bank guarantees). Records carry a `country` (IN | AU | US); trade-finance records link to retail-banking `customer_id`.
---
**Acting as a user (`X-PS-Impersonate-User`).** Every endpoint accepts an optional `X-PS-Impersonate-User` request header whose value is the email of the instance user to act as. The effective user resolves in this order: the header if present, else the instance's configured default MCP user, else none. User-scoped paths additionally accept the literal `me` in place of an email, and Graph-style apps also serve `/me/…` twins of their `/users/{email}/…` paths that resolve the same way. This header is honored by all operations but is intentionally omitted from each operation's parameter list so it is not surfaced as a per-tool argument by MCP clients; see the `ImpersonateUser` entry under `components.parameters`.
Operations
GET /branches
List retail bank branches
Physical branches of the Purple Bank Ops bank — name, city, region, country (IN | AU | US | GB | KR | DE), today's opening status and branch manager. Branch ids (BR-###) key this app's checklists, approvals, escalations and operational risks. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …).
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "List retail bank branches",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "integer",
"default": 50
},
"description": "Max items per page (default 50)"
},
{
"in": "query",
"name": "cursor",
"schema": {
"type": "string"
},
"description": "Pass the previous response's nextCursor to fetch the next page"
},
{
"in": "query",
"name": "$filter",
"schema": {
"type": "string"
},
"description": "OData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: \"status eq 'active'\"; \"salary gt 50000 and department eq 'Engineering'\"; \"contains(tolower(name),'acme')\"; \"closeDate gt 2026-01-01\"."
},
{
"in": "query",
"name": "$select",
"schema": {
"type": "string"
},
"description": "Comma-separated list of fields to return, e.g. \"id,firstName,email\". Nested fields via slash (\"pto_balance/vacation_days\"). The id field is always included."
},
{
"in": "query",
"name": "$orderby",
"schema": {
"type": "string"
},
"description": "Sort clause(s), comma-separated, each \"field [asc|desc]\" (asc is the default). Example: \"createdAt desc, lastName asc\". Null values sort last."
},
{
"in": "query",
"name": "$search",
"schema": {
"type": "string"
},
"description": "Free-text, case-insensitive substring match across the resource's searchable fields."
},
{
"in": "query",
"name": "$top",
"schema": {
"type": "integer"
},
"description": "Maximum number of items to return (page size)."
},
{
"in": "query",
"name": "$skip",
"schema": {
"type": "integer"
},
"description": "Number of matching items to skip before returning results (offset paging). Combine with $top."
},
{
"in": "query",
"name": "$count",
"schema": {
"type": "boolean"
},
"description": "When true, include @odata.count (total matches after $filter/$search, before paging) in the response."
},
{
"in": "query",
"name": "country",
"required": false,
"schema": {
"type": "string",
"enum": [
"IN",
"AU",
"US",
"GB",
"KR",
"DE"
]
},
"description": "Filter to a single country (IN | AU | US)"
},
{
"in": "query",
"name": "status",
"required": false,
"schema": {
"type": "string",
"enum": [
"open",
"closed_today",
"limited"
]
},
"description": "Filter by status"
},
{
"in": "query",
"name": "region",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by region"
}
],
"responses": {
"200": {
"description": "Paginated list",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Branch"
}
},
"nextCursor": {
"type": "string",
"nullable": true
},
"total": {
"type": "integer"
}
}
}
}
}
}
},
"description": "Physical branches of the Purple Bank Ops bank — name, city, region, country (IN | AU | US | GB | KR | DE), today's opening status and branch manager. Branch ids (BR-###) key this app's checklists, approvals, escalations and operational risks. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …)."
}
POST /branches
Create branch
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Create branch",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Branch"
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Branch"
}
}
}
}
}
}
GET /branches/{id}
Get branch
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Get branch",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Branch"
}
}
}
},
"404": {
"description": "Not found"
}
}
}
PATCH /branches/{id}
Update branch
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Update branch",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "Fields to update (partial)",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Branch"
}
}
}
},
"responses": {
"200": {
"description": "Updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Branch"
}
}
}
},
"404": {
"description": "Not found"
}
}
}
DELETE /branches/{id}
Delete branch
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Delete branch",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Deleted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"id": {
"type": "string"
}
}
}
}
}
},
"404": {
"description": "Not found"
}
}
}
GET /branches/{id}/control-tower
Get a branch's control-tower briefing
One call that assembles a single Purple Bank Ops branch's operational picture: today's opening checklist, approvals still pending, unresolved escalations, and operational risks due today. Prefer this over separately listing each collection when the question is about one branch (BR-### id).
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Get a branch's control-tower briefing",
"description": "One call that assembles a single Purple Bank Ops branch's operational picture: today's opening checklist, approvals still pending, unresolved escalations, and operational risks due today. Prefer this over separately listing each collection when the question is about one branch (BR-### id).",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Aggregated control tower",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"branch": {
"$ref": "#/components/schemas/Branch"
},
"todays_checklist": {
"$ref": "#/components/schemas/BranchChecklist"
},
"pending_approvals": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BranchApproval"
}
},
"open_escalations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Escalation"
}
},
"operational_risks_due_today": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OperationalRisk"
}
}
}
}
}
}
},
"404": {
"description": "Branch not found"
}
}
}
GET /branch_checklists
List daily branch-opening checklists
Branch-opening checklists in Purple Bank Ops — one per branch per date, each holding line items (cash count, vault, ATM, …) in pending | done | blocked plus a rolled-up overall_status. Tick individual items off with the checklist complete-item tool rather than patching the record. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …).
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "List daily branch-opening checklists",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "integer",
"default": 50
},
"description": "Max items per page (default 50)"
},
{
"in": "query",
"name": "cursor",
"schema": {
"type": "string"
},
"description": "Pass the previous response's nextCursor to fetch the next page"
},
{
"in": "query",
"name": "$filter",
"schema": {
"type": "string"
},
"description": "OData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: \"status eq 'active'\"; \"salary gt 50000 and department eq 'Engineering'\"; \"contains(tolower(name),'acme')\"; \"closeDate gt 2026-01-01\"."
},
{
"in": "query",
"name": "$select",
"schema": {
"type": "string"
},
"description": "Comma-separated list of fields to return, e.g. \"id,firstName,email\". Nested fields via slash (\"pto_balance/vacation_days\"). The id field is always included."
},
{
"in": "query",
"name": "$orderby",
"schema": {
"type": "string"
},
"description": "Sort clause(s), comma-separated, each \"field [asc|desc]\" (asc is the default). Example: \"createdAt desc, lastName asc\". Null values sort last."
},
{
"in": "query",
"name": "$search",
"schema": {
"type": "string"
},
"description": "Free-text, case-insensitive substring match across the resource's searchable fields."
},
{
"in": "query",
"name": "$top",
"schema": {
"type": "integer"
},
"description": "Maximum number of items to return (page size)."
},
{
"in": "query",
"name": "$skip",
"schema": {
"type": "integer"
},
"description": "Number of matching items to skip before returning results (offset paging). Combine with $top."
},
{
"in": "query",
"name": "$count",
"schema": {
"type": "boolean"
},
"description": "When true, include @odata.count (total matches after $filter/$search, before paging) in the response."
},
{
"in": "query",
"name": "country",
"required": false,
"schema": {
"type": "string",
"enum": [
"IN",
"AU",
"US",
"GB",
"KR",
"DE"
]
},
"description": "Filter to a single country (IN | AU | US)"
},
{
"in": "query",
"name": "branch_id",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by branch id"
},
{
"in": "query",
"name": "overall_status",
"required": false,
"schema": {
"type": "string",
"enum": [
"pending",
"complete"
]
},
"description": "Filter by overall status"
}
],
"responses": {
"200": {
"description": "Paginated list",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BranchChecklist"
}
},
"nextCursor": {
"type": "string",
"nullable": true
},
"total": {
"type": "integer"
}
}
}
}
}
}
},
"description": "Branch-opening checklists in Purple Bank Ops — one per branch per date, each holding line items (cash count, vault, ATM, …) in pending | done | blocked plus a rolled-up overall_status. Tick individual items off with the checklist complete-item tool rather than patching the record. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …)."
}
POST /branch_checklists
Create branch checklist
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Create branch checklist",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BranchChecklist"
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BranchChecklist"
}
}
}
}
}
}
GET /branch_checklists/{id}
Get branch checklist
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Get branch checklist",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BranchChecklist"
}
}
}
},
"404": {
"description": "Not found"
}
}
}
PATCH /branch_checklists/{id}
Update branch checklist
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Update branch checklist",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "Fields to update (partial)",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BranchChecklist"
}
}
}
},
"responses": {
"200": {
"description": "Updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BranchChecklist"
}
}
}
},
"404": {
"description": "Not found"
}
}
}
DELETE /branch_checklists/{id}
Delete branch checklist
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Delete branch checklist",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Deleted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"id": {
"type": "string"
}
}
}
}
}
},
"404": {
"description": "Not found"
}
}
}
POST /branch_checklists/{id}/complete-item
Complete (or block) a checklist item
Sets a checklist item to done | blocked | pending and recomputes overall_status.
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Complete (or block) a checklist item",
"description": "Sets a checklist item to done | blocked | pending and recomputes overall_status.",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"item_id": {
"type": "string",
"example": "cash_count"
},
"status": {
"type": "string",
"enum": [
"pending",
"done",
"blocked"
]
},
"completed_by": {
"type": "string"
}
},
"required": [
"item_id",
"status"
]
}
}
}
},
"responses": {
"200": {
"description": "Updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BranchChecklist"
}
}
}
},
"400": {
"description": "Invalid body"
},
"404": {
"description": "Not found"
}
}
}
GET /branch_approvals
List branch approval requests
Decisions a branch needs from an approver in Purple Bank Ops — limit overrides, fee waivers, large withdrawals and loan exceptions, with the requester, amount and status (pending | approved | rejected). These are banking operational approvals, not IT or HR approvals (see the itsm and hrbp apps). Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …).
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "List branch approval requests",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "integer",
"default": 50
},
"description": "Max items per page (default 50)"
},
{
"in": "query",
"name": "cursor",
"schema": {
"type": "string"
},
"description": "Pass the previous response's nextCursor to fetch the next page"
},
{
"in": "query",
"name": "$filter",
"schema": {
"type": "string"
},
"description": "OData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: \"status eq 'active'\"; \"salary gt 50000 and department eq 'Engineering'\"; \"contains(tolower(name),'acme')\"; \"closeDate gt 2026-01-01\"."
},
{
"in": "query",
"name": "$select",
"schema": {
"type": "string"
},
"description": "Comma-separated list of fields to return, e.g. \"id,firstName,email\". Nested fields via slash (\"pto_balance/vacation_days\"). The id field is always included."
},
{
"in": "query",
"name": "$orderby",
"schema": {
"type": "string"
},
"description": "Sort clause(s), comma-separated, each \"field [asc|desc]\" (asc is the default). Example: \"createdAt desc, lastName asc\". Null values sort last."
},
{
"in": "query",
"name": "$search",
"schema": {
"type": "string"
},
"description": "Free-text, case-insensitive substring match across the resource's searchable fields."
},
{
"in": "query",
"name": "$top",
"schema": {
"type": "integer"
},
"description": "Maximum number of items to return (page size)."
},
{
"in": "query",
"name": "$skip",
"schema": {
"type": "integer"
},
"description": "Number of matching items to skip before returning results (offset paging). Combine with $top."
},
{
"in": "query",
"name": "$count",
"schema": {
"type": "boolean"
},
"description": "When true, include @odata.count (total matches after $filter/$search, before paging) in the response."
},
{
"in": "query",
"name": "country",
"required": false,
"schema": {
"type": "string",
"enum": [
"IN",
"AU",
"US",
"GB",
"KR",
"DE"
]
},
"description": "Filter to a single country (IN | AU | US)"
},
{
"in": "query",
"name": "branch_id",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by branch id"
},
{
"in": "query",
"name": "type",
"required": false,
"schema": {
"type": "string",
"enum": [
"limit_override",
"fee_waiver",
"large_withdrawal",
"loan_exception"
]
},
"description": "Filter by type"
},
{
"in": "query",
"name": "status",
"required": false,
"schema": {
"type": "string",
"enum": [
"pending",
"approved",
"rejected"
]
},
"description": "Filter by status"
}
],
"responses": {
"200": {
"description": "Paginated list",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BranchApproval"
}
},
"nextCursor": {
"type": "string",
"nullable": true
},
"total": {
"type": "integer"
}
}
}
}
}
}
},
"description": "Decisions a branch needs from an approver in Purple Bank Ops — limit overrides, fee waivers, large withdrawals and loan exceptions, with the requester, amount and status (pending | approved | rejected). These are banking operational approvals, not IT or HR approvals (see the itsm and hrbp apps). Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …)."
}
POST /branch_approvals
Create branch approval
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Create branch approval",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BranchApproval"
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BranchApproval"
}
}
}
}
}
}
GET /branch_approvals/{id}
Get branch approval
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Get branch approval",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BranchApproval"
}
}
}
},
"404": {
"description": "Not found"
}
}
}
PATCH /branch_approvals/{id}
Update branch approval
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Update branch approval",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "Fields to update (partial)",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BranchApproval"
}
}
}
},
"responses": {
"200": {
"description": "Updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BranchApproval"
}
}
}
},
"404": {
"description": "Not found"
}
}
}
DELETE /branch_approvals/{id}
Delete branch approval
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Delete branch approval",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Deleted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"id": {
"type": "string"
}
}
}
}
}
},
"404": {
"description": "Not found"
}
}
}
POST /branch_approvals/{id}/transition
Approve or reject a pending approval
Sets a pending approval to approved | rejected. Already-decided approvals cannot be changed.
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Approve or reject a pending approval",
"description": "Sets a pending approval to approved | rejected. Already-decided approvals cannot be changed.",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"approved",
"rejected"
]
},
"reason": {
"type": "string"
}
},
"required": [
"status"
]
}
}
}
},
"responses": {
"200": {
"description": "Updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BranchApproval"
}
}
}
},
"400": {
"description": "Invalid status"
},
"404": {
"description": "Not found"
},
"422": {
"description": "Already decided"
}
}
}
GET /escalations
List branch escalations
Operational issues raised by a branch in Purple Bank Ops — service, fraud, system_outage or compliance — with severity, owner, a summary, an optional linked fraud/complaint reference, and status open → acknowledged → resolved. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …).
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "List branch escalations",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "integer",
"default": 50
},
"description": "Max items per page (default 50)"
},
{
"in": "query",
"name": "cursor",
"schema": {
"type": "string"
},
"description": "Pass the previous response's nextCursor to fetch the next page"
},
{
"in": "query",
"name": "$filter",
"schema": {
"type": "string"
},
"description": "OData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: \"status eq 'active'\"; \"salary gt 50000 and department eq 'Engineering'\"; \"contains(tolower(name),'acme')\"; \"closeDate gt 2026-01-01\"."
},
{
"in": "query",
"name": "$select",
"schema": {
"type": "string"
},
"description": "Comma-separated list of fields to return, e.g. \"id,firstName,email\". Nested fields via slash (\"pto_balance/vacation_days\"). The id field is always included."
},
{
"in": "query",
"name": "$orderby",
"schema": {
"type": "string"
},
"description": "Sort clause(s), comma-separated, each \"field [asc|desc]\" (asc is the default). Example: \"createdAt desc, lastName asc\". Null values sort last."
},
{
"in": "query",
"name": "$search",
"schema": {
"type": "string"
},
"description": "Free-text, case-insensitive substring match across the resource's searchable fields."
},
{
"in": "query",
"name": "$top",
"schema": {
"type": "integer"
},
"description": "Maximum number of items to return (page size)."
},
{
"in": "query",
"name": "$skip",
"schema": {
"type": "integer"
},
"description": "Number of matching items to skip before returning results (offset paging). Combine with $top."
},
{
"in": "query",
"name": "$count",
"schema": {
"type": "boolean"
},
"description": "When true, include @odata.count (total matches after $filter/$search, before paging) in the response."
},
{
"in": "query",
"name": "country",
"required": false,
"schema": {
"type": "string",
"enum": [
"IN",
"AU",
"US",
"GB",
"KR",
"DE"
]
},
"description": "Filter to a single country (IN | AU | US)"
},
{
"in": "query",
"name": "branch_id",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by branch id"
},
{
"in": "query",
"name": "category",
"required": false,
"schema": {
"type": "string",
"enum": [
"service",
"fraud",
"system_outage",
"compliance"
]
},
"description": "Filter by category"
},
{
"in": "query",
"name": "severity",
"required": false,
"schema": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"critical"
]
},
"description": "Filter by severity"
},
{
"in": "query",
"name": "status",
"required": false,
"schema": {
"type": "string",
"enum": [
"open",
"acknowledged",
"resolved"
]
},
"description": "Filter by status"
}
],
"responses": {
"200": {
"description": "Paginated list",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Escalation"
}
},
"nextCursor": {
"type": "string",
"nullable": true
},
"total": {
"type": "integer"
}
}
}
}
}
}
},
"description": "Operational issues raised by a branch in Purple Bank Ops — service, fraud, system_outage or compliance — with severity, owner, a summary, an optional linked fraud/complaint reference, and status open → acknowledged → resolved. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …)."
}
POST /escalations
Create escalation
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Create escalation",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Escalation"
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Escalation"
}
}
}
}
}
}
GET /escalations/{id}
Get escalation
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Get escalation",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Escalation"
}
}
}
},
"404": {
"description": "Not found"
}
}
}
PATCH /escalations/{id}
Update escalation
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Update escalation",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "Fields to update (partial)",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Escalation"
}
}
}
},
"responses": {
"200": {
"description": "Updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Escalation"
}
}
}
},
"404": {
"description": "Not found"
}
}
}
DELETE /escalations/{id}
Delete escalation
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Delete escalation",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Deleted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"id": {
"type": "string"
}
}
}
}
}
},
"404": {
"description": "Not found"
}
}
}
POST /escalations/{id}/transition
Transition an escalation
Moves an escalation through open → acknowledged → resolved. Resolved is terminal.
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Transition an escalation",
"description": "Moves an escalation through open → acknowledged → resolved. Resolved is terminal.",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"open",
"acknowledged",
"resolved"
]
},
"owner": {
"type": "string"
}
},
"required": [
"status"
]
}
}
}
},
"responses": {
"200": {
"description": "Updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Escalation"
}
}
}
},
"400": {
"description": "Invalid status"
},
"404": {
"description": "Not found"
},
"422": {
"description": "Already resolved"
}
}
}
GET /operational_risks
List the branch operational-risk register
Branch-level op-risk entries in Purple Bank Ops — cash_shortage, sla_breach, staffing or control_gap — with severity, mitigation plan, a due_today flag and status open → mitigating → closed. This is day-to-day branch risk, distinct from the enterprise risk-compliance app. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …).
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "List the branch operational-risk register",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "integer",
"default": 50
},
"description": "Max items per page (default 50)"
},
{
"in": "query",
"name": "cursor",
"schema": {
"type": "string"
},
"description": "Pass the previous response's nextCursor to fetch the next page"
},
{
"in": "query",
"name": "$filter",
"schema": {
"type": "string"
},
"description": "OData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: \"status eq 'active'\"; \"salary gt 50000 and department eq 'Engineering'\"; \"contains(tolower(name),'acme')\"; \"closeDate gt 2026-01-01\"."
},
{
"in": "query",
"name": "$select",
"schema": {
"type": "string"
},
"description": "Comma-separated list of fields to return, e.g. \"id,firstName,email\". Nested fields via slash (\"pto_balance/vacation_days\"). The id field is always included."
},
{
"in": "query",
"name": "$orderby",
"schema": {
"type": "string"
},
"description": "Sort clause(s), comma-separated, each \"field [asc|desc]\" (asc is the default). Example: \"createdAt desc, lastName asc\". Null values sort last."
},
{
"in": "query",
"name": "$search",
"schema": {
"type": "string"
},
"description": "Free-text, case-insensitive substring match across the resource's searchable fields."
},
{
"in": "query",
"name": "$top",
"schema": {
"type": "integer"
},
"description": "Maximum number of items to return (page size)."
},
{
"in": "query",
"name": "$skip",
"schema": {
"type": "integer"
},
"description": "Number of matching items to skip before returning results (offset paging). Combine with $top."
},
{
"in": "query",
"name": "$count",
"schema": {
"type": "boolean"
},
"description": "When true, include @odata.count (total matches after $filter/$search, before paging) in the response."
},
{
"in": "query",
"name": "country",
"required": false,
"schema": {
"type": "string",
"enum": [
"IN",
"AU",
"US",
"GB",
"KR",
"DE"
]
},
"description": "Filter to a single country (IN | AU | US)"
},
{
"in": "query",
"name": "branch_id",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by branch id"
},
{
"in": "query",
"name": "risk_type",
"required": false,
"schema": {
"type": "string",
"enum": [
"cash_shortage",
"sla_breach",
"staffing",
"control_gap"
]
},
"description": "Filter by risk type"
},
{
"in": "query",
"name": "status",
"required": false,
"schema": {
"type": "string",
"enum": [
"open",
"mitigating",
"closed"
]
},
"description": "Filter by status"
}
],
"responses": {
"200": {
"description": "Paginated list",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OperationalRisk"
}
},
"nextCursor": {
"type": "string",
"nullable": true
},
"total": {
"type": "integer"
}
}
}
}
}
}
},
"description": "Branch-level op-risk entries in Purple Bank Ops — cash_shortage, sla_breach, staffing or control_gap — with severity, mitigation plan, a due_today flag and status open → mitigating → closed. This is day-to-day branch risk, distinct from the enterprise risk-compliance app. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …)."
}
POST /operational_risks
Create operational risk
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Create operational risk",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationalRisk"
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationalRisk"
}
}
}
}
}
}
GET /operational_risks/{id}
Get operational risk
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Get operational risk",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationalRisk"
}
}
}
},
"404": {
"description": "Not found"
}
}
}
PATCH /operational_risks/{id}
Update operational risk
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Update operational risk",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "Fields to update (partial)",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationalRisk"
}
}
}
},
"responses": {
"200": {
"description": "Updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationalRisk"
}
}
}
},
"404": {
"description": "Not found"
}
}
}
DELETE /operational_risks/{id}
Delete operational risk
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Delete operational risk",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Deleted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"id": {
"type": "string"
}
}
}
}
}
},
"404": {
"description": "Not found"
}
}
}
POST /operational_risks/{id}/transition
Transition an operational risk
Moves a risk through open → mitigating → closed. Closing clears due_today. Closed is terminal.
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Transition an operational risk",
"description": "Moves a risk through open → mitigating → closed. Closing clears due_today. Closed is terminal.",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"open",
"mitigating",
"closed"
]
},
"mitigation_plan": {
"type": "string"
}
},
"required": [
"status"
]
}
}
}
},
"responses": {
"200": {
"description": "Updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationalRisk"
}
}
}
},
"400": {
"description": "Invalid status"
},
"404": {
"description": "Not found"
},
"422": {
"description": "Already closed"
}
}
}
GET /letters_of_credit
List trade-finance letters of credit
Letters of credit issued for a bank customer in Purple Bank Ops — applicant, beneficiary, amount, incoterm, expiry — each carrying a milestone chain (application → issuance → shipment → doc_presentation → payment) with bottleneck notes, and a status from issued through settled. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …).
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "List trade-finance letters of credit",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "integer",
"default": 50
},
"description": "Max items per page (default 50)"
},
{
"in": "query",
"name": "cursor",
"schema": {
"type": "string"
},
"description": "Pass the previous response's nextCursor to fetch the next page"
},
{
"in": "query",
"name": "$filter",
"schema": {
"type": "string"
},
"description": "OData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: \"status eq 'active'\"; \"salary gt 50000 and department eq 'Engineering'\"; \"contains(tolower(name),'acme')\"; \"closeDate gt 2026-01-01\"."
},
{
"in": "query",
"name": "$select",
"schema": {
"type": "string"
},
"description": "Comma-separated list of fields to return, e.g. \"id,firstName,email\". Nested fields via slash (\"pto_balance/vacation_days\"). The id field is always included."
},
{
"in": "query",
"name": "$orderby",
"schema": {
"type": "string"
},
"description": "Sort clause(s), comma-separated, each \"field [asc|desc]\" (asc is the default). Example: \"createdAt desc, lastName asc\". Null values sort last."
},
{
"in": "query",
"name": "$search",
"schema": {
"type": "string"
},
"description": "Free-text, case-insensitive substring match across the resource's searchable fields."
},
{
"in": "query",
"name": "$top",
"schema": {
"type": "integer"
},
"description": "Maximum number of items to return (page size)."
},
{
"in": "query",
"name": "$skip",
"schema": {
"type": "integer"
},
"description": "Number of matching items to skip before returning results (offset paging). Combine with $top."
},
{
"in": "query",
"name": "$count",
"schema": {
"type": "boolean"
},
"description": "When true, include @odata.count (total matches after $filter/$search, before paging) in the response."
},
{
"in": "query",
"name": "country",
"required": false,
"schema": {
"type": "string",
"enum": [
"IN",
"AU",
"US",
"GB",
"KR",
"DE"
]
},
"description": "Filter to a single country (IN | AU | US)"
},
{
"in": "query",
"name": "customer_id",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by customer id"
},
{
"in": "query",
"name": "status",
"required": false,
"schema": {
"type": "string",
"enum": [
"issued",
"docs_presented",
"under_review",
"accepted",
"discrepant",
"settled"
]
},
"description": "Filter by status"
}
],
"responses": {
"200": {
"description": "Paginated list",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/LetterOfCredit"
}
},
"nextCursor": {
"type": "string",
"nullable": true
},
"total": {
"type": "integer"
}
}
}
}
}
}
},
"description": "Letters of credit issued for a bank customer in Purple Bank Ops — applicant, beneficiary, amount, incoterm, expiry — each carrying a milestone chain (application → issuance → shipment → doc_presentation → payment) with bottleneck notes, and a status from issued through settled. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …)."
}
POST /letters_of_credit
Create letter of credit
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Create letter of credit",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LetterOfCredit"
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LetterOfCredit"
}
}
}
}
}
}
GET /letters_of_credit/{id}
Get letter of credit
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Get letter of credit",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LetterOfCredit"
}
}
}
},
"404": {
"description": "Not found"
}
}
}
PATCH /letters_of_credit/{id}
Update letter of credit
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Update letter of credit",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "Fields to update (partial)",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LetterOfCredit"
}
}
}
},
"responses": {
"200": {
"description": "Updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LetterOfCredit"
}
}
}
},
"404": {
"description": "Not found"
}
}
}
DELETE /letters_of_credit/{id}
Delete letter of credit
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Delete letter of credit",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Deleted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"id": {
"type": "string"
}
}
}
}
}
},
"404": {
"description": "Not found"
}
}
}
POST /letters_of_credit/{id}/advance-milestone
Advance a letter-of-credit milestone
Updates a milestone (application | issuance | shipment | doc_presentation | payment), optionally recording a bottleneck_note, and optionally advances the LC status. A settled LC is terminal.
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Advance a letter-of-credit milestone",
"description": "Updates a milestone (application | issuance | shipment | doc_presentation | payment), optionally recording a bottleneck_note, and optionally advances the LC status. A settled LC is terminal.",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"milestone": {
"type": "string",
"enum": [
"application",
"issuance",
"shipment",
"doc_presentation",
"payment"
]
},
"status": {
"type": "string",
"example": "complete"
},
"bottleneck_note": {
"type": "string"
},
"lc_status": {
"type": "string",
"enum": [
"issued",
"docs_presented",
"under_review",
"accepted",
"discrepant",
"settled"
]
}
},
"required": [
"milestone"
]
}
}
}
},
"responses": {
"200": {
"description": "Updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LetterOfCredit"
}
}
}
},
"400": {
"description": "Invalid milestone/status"
},
"404": {
"description": "Not found"
},
"422": {
"description": "LC already settled"
}
}
}
GET /bank_guarantees
List trade-finance bank guarantees
Guarantees the bank has issued on behalf of a customer in Purple Bank Ops — performance, financial or bid_bond — with amount, expiry date and status (active | invoked | expired | released). Guarantees back a customer's obligation; letters of credit settle a trade shipment. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …).
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "List trade-finance bank guarantees",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "integer",
"default": 50
},
"description": "Max items per page (default 50)"
},
{
"in": "query",
"name": "cursor",
"schema": {
"type": "string"
},
"description": "Pass the previous response's nextCursor to fetch the next page"
},
{
"in": "query",
"name": "$filter",
"schema": {
"type": "string"
},
"description": "OData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: \"status eq 'active'\"; \"salary gt 50000 and department eq 'Engineering'\"; \"contains(tolower(name),'acme')\"; \"closeDate gt 2026-01-01\"."
},
{
"in": "query",
"name": "$select",
"schema": {
"type": "string"
},
"description": "Comma-separated list of fields to return, e.g. \"id,firstName,email\". Nested fields via slash (\"pto_balance/vacation_days\"). The id field is always included."
},
{
"in": "query",
"name": "$orderby",
"schema": {
"type": "string"
},
"description": "Sort clause(s), comma-separated, each \"field [asc|desc]\" (asc is the default). Example: \"createdAt desc, lastName asc\". Null values sort last."
},
{
"in": "query",
"name": "$search",
"schema": {
"type": "string"
},
"description": "Free-text, case-insensitive substring match across the resource's searchable fields."
},
{
"in": "query",
"name": "$top",
"schema": {
"type": "integer"
},
"description": "Maximum number of items to return (page size)."
},
{
"in": "query",
"name": "$skip",
"schema": {
"type": "integer"
},
"description": "Number of matching items to skip before returning results (offset paging). Combine with $top."
},
{
"in": "query",
"name": "$count",
"schema": {
"type": "boolean"
},
"description": "When true, include @odata.count (total matches after $filter/$search, before paging) in the response."
},
{
"in": "query",
"name": "country",
"required": false,
"schema": {
"type": "string",
"enum": [
"IN",
"AU",
"US",
"GB",
"KR",
"DE"
]
},
"description": "Filter to a single country (IN | AU | US)"
},
{
"in": "query",
"name": "customer_id",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by customer id"
},
{
"in": "query",
"name": "type",
"required": false,
"schema": {
"type": "string",
"enum": [
"performance",
"financial",
"bid_bond"
]
},
"description": "Filter by type"
},
{
"in": "query",
"name": "status",
"required": false,
"schema": {
"type": "string",
"enum": [
"active",
"invoked",
"expired",
"released"
]
},
"description": "Filter by status"
}
],
"responses": {
"200": {
"description": "Paginated list",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BankGuarantee"
}
},
"nextCursor": {
"type": "string",
"nullable": true
},
"total": {
"type": "integer"
}
}
}
}
}
}
},
"description": "Guarantees the bank has issued on behalf of a customer in Purple Bank Ops — performance, financial or bid_bond — with amount, expiry date and status (active | invoked | expired | released). Guarantees back a customer's obligation; letters of credit settle a trade shipment. Supports server-side querying with _filter/_search/_orderby/_select/_top/_skip/_count (OData $-params, renamed with a leading underscore for MCP), plus this tool's simple equality params (country, branch_id, status, …)."
}
POST /bank_guarantees
Create bank guarantee
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Create bank guarantee",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BankGuarantee"
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BankGuarantee"
}
}
}
}
}
}
GET /bank_guarantees/{id}
Get bank guarantee
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Get bank guarantee",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BankGuarantee"
}
}
}
},
"404": {
"description": "Not found"
}
}
}
PATCH /bank_guarantees/{id}
Update bank guarantee
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Update bank guarantee",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "Fields to update (partial)",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BankGuarantee"
}
}
}
},
"responses": {
"200": {
"description": "Updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BankGuarantee"
}
}
}
},
"404": {
"description": "Not found"
}
}
}
DELETE /bank_guarantees/{id}
Delete bank guarantee
Authentication
[
{
"patAuth": []
}
]
Request, responses and operation details
{
"summary": "Delete bank guarantee",
"parameters": [
{
"$ref": "#/components/parameters/InstanceId"
},
{
"in": "path",
"name": "id",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Deleted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"id": {
"type": "string"
}
}
}
}
}
},
"404": {
"description": "Not found"
}
}
}