Client quote/proof approvals. Start free (account required): https://kurodalab.com/en/approval-link/
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Save a new unsent version after a customer requests changes. The prior sent version stays intact.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Save a new unsent version after a customer requests changes. The prior sent version stays intact.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| content* | object | |
| deadlineAt* | string | |
| expectedRowVersion* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"expectedRowVersion",
"deadlineAt",
"content"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"content": {
"type": "object",
"required": [
"items",
"quote",
"disclosureText"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"spec"
],
"properties": {
"spec": {
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"additionalProperties": {
"type": "string",
"maxLength": 2000
}
},
"label": {
"type": "string",
"maxLength": 200,
"minLength": 1
}
}
},
"maxItems": 50
},
"quote": {
"anyOf": [
{
"type": "object",
"required": [
"currency",
"depositPercent",
"notes",
"options"
],
"properties": {
"notes": {
"type": "string",
"maxLength": 6000
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"label",
"lines"
],
"properties": {
"id": {
"type": "string",
"maxLength": 128,
"minLength": 1
},
"label": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"lines": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"quantity",
"unitAmountMinor"
],
"properties": {
"label": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"quantity": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"unitAmountMinor": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"maxItems": 100,
"minItems": 1
}
}
},
"maxItems": 3,
"minItems": 1
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"depositPercent": {
"type": "integer",
"maximum": 100,
"minimum": 0
}
}
},
{
"type": "null"
}
]
},
"disclosureText": {
"type": "string",
"maxLength": 10000
}
}
},
"deadlineAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"expectedRowVersion": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
}Email the customer a work-progress update after approval.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| note* | string | |
| stage* | string | |
| expectedStage* | string | |
| expectedRowVersion* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"expectedRowVersion",
"expectedStage",
"stage",
"note"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"note": {
"type": "string",
"maxLength": 6000,
"minLength": 1
},
"stage": {
"enum": [
"READY",
"COMPLETED"
],
"type": "string"
},
"expectedStage": {
"enum": [
"IN_PROGRESS",
"READY"
],
"type": "string"
},
"expectedRowVersion": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
}Email a named person a decision link and record their response. Provide one person or personId.
| Argument | Type | Description |
|---|---|---|
| kind* | string | |
| title* | string | |
| person | object | |
| prompt* | string | |
| choices | array | |
| personId | string | |
| expiresAt* | string | |
| idempotencyKey* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"idempotencyKey",
"title",
"prompt",
"kind",
"expiresAt"
],
"properties": {
"kind": {
"enum": [
"YES_NO",
"CHOICE",
"TEXT"
],
"type": "string"
},
"title": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"person": {
"type": "object",
"required": [
"name",
"email"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254
}
}
},
"prompt": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"choices": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 8,
"minItems": 2
},
"personId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"expiresAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 8
}
}
}Cancel a direct approval request and record why it was cancelled.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| reason* | string | |
| expectedRowVersion* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"expectedRowVersion",
"reason"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"reason": {
"type": "string",
"maxLength": 6000,
"minLength": 1
},
"expectedRowVersion": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
}Save a customer quote or proof as a draft. This does not send an email.
| Argument | Type | Description |
|---|---|---|
| type* | string | |
| title* | string | |
| content* | object | |
| message | string | |
| recipient* | object | |
| deadlineAt* | string | |
| creationKey* | string | |
| expiryPolicy | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"creationKey",
"type",
"recipient",
"title",
"deadlineAt",
"content"
],
"properties": {
"type": {
"enum": [
"PROOF",
"QUOTE",
"PROOF_AND_QUOTE"
],
"type": "string"
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"content": {
"type": "object",
"required": [
"items",
"quote",
"disclosureText"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"spec"
],
"properties": {
"spec": {
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"additionalProperties": {
"type": "string",
"maxLength": 2000
}
},
"label": {
"type": "string",
"maxLength": 200,
"minLength": 1
}
}
},
"maxItems": 50
},
"quote": {
"anyOf": [
{
"type": "object",
"required": [
"currency",
"depositPercent",
"notes",
"options"
],
"properties": {
"notes": {
"type": "string",
"maxLength": 6000
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"label",
"lines"
],
"properties": {
"id": {
"type": "string",
"maxLength": 128,
"minLength": 1
},
"label": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"lines": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"quantity",
"unitAmountMinor"
],
"properties": {
"label": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"quantity": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"unitAmountMinor": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
},
"maxItems": 100,
"minItems": 1
}
}
},
"maxItems": 3,
"minItems": 1
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"depositPercent": {
"type": "integer",
"maximum": 100,
"minimum": 0
}
}
},
{
"type": "null"
}
]
},
"disclosureText": {
"type": "string",
"maxLength": 10000
}
}
},
"message": {
"type": "string",
"maxLength": 6000
},
"recipient": {
"type": "object",
"required": [
"name",
"email"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254
}
}
},
"deadlineAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"creationKey": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"expiryPolicy": {
"enum": [
"HOLD",
"EXPIRE"
],
"type": "string"
}
}
}Return the PDF record for a completed customer approval as an embedded document.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| decisionId | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"decisionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Read one approval request, its current version, decisions, and delivery states.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Read the latest answer or deadline status for one internal decision.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Page through this workspace’s approval requests and their recorded statuses.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| status | string | |
| beforeAt | string | |
| beforeId | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"status": {
"enum": [
"DRAFT",
"SENT",
"APPROVED",
"CHANGES_REQUESTED",
"DECLINED",
"EXPIRED",
"CANCELLED"
],
"type": "string"
},
"beforeAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"beforeId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Page through this workspace’s internal ask_person decisions. Filter by current status; notification state is separate from the answer.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| status | string | |
| beforeAt | string | |
| beforeId | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"status": {
"enum": [
"PENDING",
"ANSWERED",
"EXPIRED"
],
"type": "string"
},
"beforeAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"beforeId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}List people who can answer a decision in this workspace.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| afterId | string | |
| afterName | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"afterId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"afterName": {
"type": "string",
"maxLength": 100,
"minLength": 1
}
}
}Email a confirmed draft to its customer. Recheck the current recipient and version before sending.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| recipientEmail* | string | |
| expectedRowVersion* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"expectedRowVersion",
"recipientEmail"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"recipientEmail": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254
},
"expectedRowVersion": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
}Wait up to 20 seconds for an internal answer or customer approval response. A pending timeout is not approval.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| waitMs | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"waitMs": {
"type": "integer",
"default": 15000,
"maximum": 20000,
"minimum": 0
}
}
}