kikin MCP documentation
Model Context Protocol

Kikin MCP

Connect your assistant to Kikin and explore the tools available to your company.

Connect to Kikin

  1. Use a client that supports remote MCP over Streamable HTTP and OAuth.
  2. Add Kikin as a remote MCP server using this URL:
https://api.kikin.io/mcp

Complete the Kikin sign-in flow when your client prompts you to connect. Your client manages the access token, and tools use the permissions of the signed-in Kikin user.

Authentication is required for tool discovery and every tool call, including ping.

Tool reference

Inputs, outputs and annotations match the server’s published tool contracts.

ping

Is Kikin responding? Returns "pong" when the connection is working. Takes no arguments. Read only.

Read only:
Yes
Idempotent:
Yes
Destructive:
No
Open world:
No
Input schema
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

Returns text content. See the tool description for the result.

whoami

Which Kikin account am I connected to? Returns your stored full person name and company name, each null when absent. Takes no arguments. Use it to confirm the account before reading company data. Read only.

Read only:
Yes
Idempotent:
Yes
Destructive:
No
Open world:
No
Input schema
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
Result schema
{
  "type": "object",
  "required": [
    "personName",
    "companyName"
  ],
  "properties": {
    "personName": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "The stored full user name, or null when absent."
    },
    "companyName": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "The stored company or draft name, or null when absent."
    }
  },
  "additionalProperties": false,
  "description": "The current caller’s stored person and company names."
}

facilityUtilisation

How much of our facility is available? Returns your company’s maximum credit, used principal, available funds, utilisation and approval state. Available to company owners and members. Amounts are GBP pence (£10,000 = 1000000); percentage is a fraction from 0 to 1. Available funds do not subtract pending deductions. When isApproved is false, maximum credit and available funds represent potential credit. Takes no arguments. Read only.

Read only:
Yes
Idempotent:
Yes
Destructive:
No
Open world:
No
Input schema
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
Result schema
{
  "type": "object",
  "required": [
    "extendedAmount",
    "maxAvailableCredit",
    "percentage",
    "availableFunds",
    "isApproved"
  ],
  "properties": {
    "extendedAmount": {
      "type": "integer",
      "description": "Money in integer minor units (pence) as a JSON number, not bigint. £10,000 = 1_000_000.",
      "title": "nonNegative",
      "minimum": 0
    },
    "maxAvailableCredit": {
      "type": "integer",
      "description": "Money in integer minor units (pence) as a JSON number, not bigint. £10,000 = 1_000_000.",
      "title": "nonNegative",
      "minimum": 0
    },
    "percentage": {
      "type": "number",
      "description": "a number between 0 and 1",
      "title": "between(0, 1)",
      "minimum": 0,
      "maximum": 1
    },
    "availableFunds": {
      "type": "integer",
      "description": "Money in integer minor units (pence) as a JSON number, not bigint. £10,000 = 1_000_000.",
      "title": "nonNegative",
      "minimum": 0
    },
    "isApproved": {
      "type": "boolean"
    }
  },
  "additionalProperties": false,
  "description": "Company facility position. Money is GBP pence; percentage is a utilisation fraction from 0 to 1."
}

repayments

What repayments are coming up, and how much will they total? Returns your company’s active instalments (APPROXIMATE, SCHEDULED, COMMITTED), earliest charge first, from today UTC through the end of the day 30 days ahead, inclusive. Available to company owners and members. Amounts are GBP pence; chargeAt is an ISO timestamp. APPROXIMATE dates are not provider-confirmed. repaymentScheduleId groups instalments from the same schedule. The summary covers the whole window, independently of pagination. Defaults to page 1 with 20 repayments, maximum 100 per page. Read only.

Read only:
Yes
Idempotent:
Yes
Destructive:
No
Open world:
No
Input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "pagination": {
      "type": "object",
      "required": [],
      "properties": {
        "pageNumber": {
          "type": "integer",
          "description": "an integer",
          "title": "int",
          "exclusiveMinimum": 0
        },
        "pageSize": {
          "type": "integer",
          "description": "a number less than or equal to 100",
          "title": "lessThanOrEqualTo(100)",
          "exclusiveMinimum": 0,
          "maximum": 100
        }
      },
      "additionalProperties": false,
      "description": "Page-based pagination: defaults to page 1 with 20 items; maximum 100 items per page."
    }
  },
  "additionalProperties": false,
  "description": "Tool discovery arguments for upcoming repayments with the same pagination bounds."
}
Result schema
{
  "type": "object",
  "required": [
    "items",
    "pagination",
    "summary"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "amount",
          "repaymentScheduleId",
          "currentStatus",
          "chargeAt"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The internal instalment id"
          },
          "amount": {
            "type": "number",
            "description": "The total instalment amount in GBP pence"
          },
          "repaymentScheduleId": {
            "type": "string",
            "description": "The repayment schedule this instalment belongs to"
          },
          "currentStatus": {
            "type": "string",
            "enum": [
              "APPROXIMATE",
              "SCHEDULED",
              "COMMITTED"
            ],
            "description": "Instalment statuses eligible for the upcoming repayments window."
          },
          "chargeAt": {
            "type": "string",
            "description": "a string to be decoded into a Date"
          }
        },
        "additionalProperties": false,
        "description": "Public active repayment item with its due-charge ISO timestamp."
      },
      "description": "an array of at most 100 item(s)",
      "title": "maxItems(100)",
      "maxItems": 100
    },
    "pagination": {
      "type": "object",
      "required": [
        "pageNumber",
        "pageSize",
        "totalCount",
        "totalPages"
      ],
      "properties": {
        "pageNumber": {
          "type": "integer",
          "description": "an integer",
          "title": "int",
          "exclusiveMinimum": 0
        },
        "pageSize": {
          "type": "integer",
          "description": "a number less than or equal to 100",
          "title": "lessThanOrEqualTo(100)",
          "exclusiveMinimum": 0,
          "maximum": 100
        },
        "totalCount": {
          "type": "integer",
          "description": "an integer",
          "title": "int",
          "minimum": 0
        },
        "totalPages": {
          "type": "integer",
          "description": "an integer",
          "title": "int",
          "minimum": 0
        }
      },
      "additionalProperties": false
    },
    "summary": {
      "type": "object",
      "required": [
        "totalAmount",
        "loansCount"
      ],
      "properties": {
        "totalAmount": {
          "type": "number",
          "description": "Total GBP pence across the whole repayment window, independently of pagination."
        },
        "loansCount": {
          "type": "integer",
          "description": "Number of loans represented in the whole repayment window.",
          "title": "nonNegative",
          "minimum": 0
        }
      },
      "additionalProperties": false,
      "description": "Totals across the whole filtered instalment window, before pagination."
    }
  },
  "additionalProperties": false,
  "description": "Upcoming active repayments and totals for the full window. Amounts are GBP pence."
}

loans

What borrowing do we have? Lists existing loans for your company, including invoice financing and drawdowns, newest first. One flat item per loan. Principal is the original amount borrowed in GBP pence (£10,000 = 1000000), excluding fees and repayments; it is not an outstanding balance. Invoice loans include invoice number and supplier; drawdowns include their intended use. Pending applications are excluded. Omit filters for both types and all loan statuses. Pagination defaults to page 1 with 20 loans, maximum 100 per page. Read only.

Read only:
Yes
Idempotent:
Yes
Destructive:
No
Open world:
No
Input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "filter": {
      "type": "object",
      "required": [],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "INVOICE",
            "DRAWDOWN"
          ],
          "description": "Whether borrowing originated from invoice financing or a drawdown."
        },
        "loanId": {
          "type": "string",
          "description": "a non empty string",
          "title": "nonEmptyString",
          "minLength": 1
        }
      },
      "additionalProperties": false
    },
    "pagination": {
      "type": "object",
      "required": [],
      "properties": {
        "pageNumber": {
          "type": "integer",
          "description": "an integer",
          "title": "int",
          "exclusiveMinimum": 0
        },
        "pageSize": {
          "type": "integer",
          "description": "a number less than or equal to 100",
          "title": "lessThanOrEqualTo(100)",
          "exclusiveMinimum": 0,
          "maximum": 100
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false,
  "description": "Tool discovery loan selection and bounded pagination arguments."
}
Result schema
{
  "type": "object",
  "required": [
    "items",
    "pagination"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "object",
            "required": [
              "loanId",
              "status",
              "principal",
              "currency",
              "type",
              "invoiceId",
              "invoiceNumber",
              "supplierName"
            ],
            "properties": {
              "loanId": {
                "type": "string",
                "description": "a non empty string",
                "title": "nonEmptyString",
                "minLength": 1
              },
              "status": {
                "type": "string",
                "enum": [
                  "ACTIVE",
                  "COMPLETED",
                  "DEFAULTED"
                ],
                "description": "The state of an existing loan, rather than a loan application."
              },
              "principal": {
                "type": "integer",
                "description": "Original principal in GBP pence, excluding fees and repayments.",
                "title": "nonNegative",
                "minimum": 0
              },
              "currency": {
                "type": "string",
                "enum": [
                  "GBP"
                ]
              },
              "type": {
                "type": "string",
                "enum": [
                  "INVOICE"
                ]
              },
              "invoiceId": {
                "type": "string",
                "description": "a non empty string",
                "title": "nonEmptyString",
                "minLength": 1
              },
              "invoiceNumber": {
                "type": "string"
              },
              "supplierName": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "description": "Existing invoice financing with its invoice and supplier provenance."
          },
          {
            "type": "object",
            "required": [
              "loanId",
              "status",
              "principal",
              "currency",
              "type",
              "drawdownId",
              "intendedUse"
            ],
            "properties": {
              "loanId": {
                "type": "string",
                "description": "a non empty string",
                "title": "nonEmptyString",
                "minLength": 1
              },
              "status": {
                "type": "string",
                "enum": [
                  "ACTIVE",
                  "COMPLETED",
                  "DEFAULTED"
                ],
                "description": "The state of an existing loan, rather than a loan application."
              },
              "principal": {
                "type": "integer",
                "description": "Original principal in GBP pence, excluding fees and repayments.",
                "title": "nonNegative",
                "minimum": 0
              },
              "currency": {
                "type": "string",
                "enum": [
                  "GBP"
                ]
              },
              "type": {
                "type": "string",
                "enum": [
                  "DRAWDOWN"
                ]
              },
              "drawdownId": {
                "type": "string",
                "description": "a non empty string",
                "title": "nonEmptyString",
                "minLength": 1
              },
              "intendedUse": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "description": "Existing drawdown borrowing with its intended use."
          }
        ],
        "description": "An actual invoice or drawdown loan in the public tool response."
      },
      "description": "an array of at most 100 item(s)",
      "title": "maxItems(100)",
      "maxItems": 100
    },
    "pagination": {
      "type": "object",
      "required": [
        "pageNumber",
        "pageSize",
        "totalCount",
        "totalPages"
      ],
      "properties": {
        "pageNumber": {
          "type": "integer",
          "description": "an integer",
          "title": "int",
          "exclusiveMinimum": 0
        },
        "pageSize": {
          "type": "integer",
          "description": "a number less than or equal to 100",
          "title": "lessThanOrEqualTo(100)",
          "exclusiveMinimum": 0,
          "maximum": 100
        },
        "totalCount": {
          "type": "integer",
          "description": "an integer",
          "title": "int",
          "minimum": 0
        },
        "totalPages": {
          "type": "integer",
          "description": "an integer",
          "title": "int",
          "minimum": 0
        }
      },
      "additionalProperties": false,
      "description": "Selected page and full matching loan count with derived total pages."
    }
  },
  "additionalProperties": false,
  "description": "One flat item per actual loan. Principal is original GBP pence, excluding fees and repayments."
}

questions

What does Kikin still need us to answer? Returns your company’s current questions, newest first. Defaults to unanswered; filter.responseState can select answered or all, and filter.questionId selects one question. Includes exact question text and the latest saved answer when present. A saved answer does not imply acceptance, and no unanswered questions does not imply underwriting is complete. Read only.

Read only:
Yes
Idempotent:
Yes
Destructive:
No
Open world:
No
Input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "filter": {
      "type": "object",
      "required": [],
      "properties": {
        "questionId": {
          "type": "string",
          "description": "a non empty string",
          "title": "nonEmptyString",
          "minLength": 1
        },
        "responseState": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "unanswered",
                "answered"
              ],
              "description": "Whether this question has a current saved answer."
            },
            {
              "type": "string",
              "enum": [
                "all"
              ],
              "description": "Both answered and unanswered customer-visible questions."
            }
          ],
          "description": "Defaults to unanswered; all includes both response states."
        }
      },
      "additionalProperties": false
    },
    "pagination": {
      "type": "object",
      "required": [],
      "properties": {
        "pageSize": {
          "type": "integer",
          "description": "a number less than or equal to 100",
          "title": "lessThanOrEqualTo(100)",
          "exclusiveMinimum": 0,
          "maximum": 100
        },
        "pageNumber": {
          "type": "integer",
          "description": "a number less than or equal to 9007199254740991",
          "title": "lessThanOrEqualTo(9007199254740991)",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
Result schema
{
  "type": "object",
  "required": [
    "items",
    "pagination",
    "selection"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "object",
            "required": [
              "questionId",
              "text",
              "createdAt",
              "responseState",
              "latestAnswer"
            ],
            "properties": {
              "questionId": {
                "type": "string",
                "description": "a non empty string",
                "title": "nonEmptyString",
                "minLength": 1
              },
              "text": {
                "type": "string"
              },
              "createdAt": {
                "type": "string",
                "description": "a string to be decoded into a Date"
              },
              "responseState": {
                "type": "string",
                "enum": [
                  "unanswered"
                ],
                "description": "No current saved answer."
              },
              "latestAnswer": {
                "type": "null"
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "questionId",
              "text",
              "createdAt",
              "responseState",
              "latestAnswer"
            ],
            "properties": {
              "questionId": {
                "type": "string",
                "description": "a non empty string",
                "title": "nonEmptyString",
                "minLength": 1
              },
              "text": {
                "type": "string"
              },
              "createdAt": {
                "type": "string",
                "description": "a string to be decoded into a Date"
              },
              "responseState": {
                "type": "string",
                "enum": [
                  "answered"
                ],
                "description": "A current saved answer exists."
              },
              "latestAnswer": {
                "type": "object",
                "required": [
                  "id",
                  "response",
                  "createdAt"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "a non empty string",
                    "title": "nonEmptyString",
                    "minLength": 1
                  },
                  "response": {
                    "type": "string"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "a string to be decoded into a Date"
                  }
                },
                "additionalProperties": false,
                "description": "The latest saved answer and its timestamp; saving is not underwriting acceptance."
              }
            },
            "additionalProperties": false
          }
        ],
        "description": "One customer-visible question and its latest answer, or null when unanswered."
      },
      "description": "an array of at most 100 item(s)",
      "title": "maxItems(100)",
      "maxItems": 100
    },
    "pagination": {
      "type": "object",
      "required": [
        "totalCount",
        "pageNumber",
        "pageSize",
        "totalPages"
      ],
      "properties": {
        "totalCount": {
          "type": "integer",
          "description": "an integer",
          "title": "int",
          "minimum": 0
        },
        "pageNumber": {
          "type": "integer",
          "description": "an integer",
          "title": "int",
          "exclusiveMinimum": 0
        },
        "pageSize": {
          "type": "integer",
          "description": "a number less than or equal to 100",
          "title": "lessThanOrEqualTo(100)",
          "exclusiveMinimum": 0,
          "maximum": 100
        },
        "totalPages": {
          "type": "integer",
          "description": "an integer",
          "title": "int",
          "minimum": 0
        }
      },
      "additionalProperties": false,
      "description": "Selected page and full matching question count."
    },
    "selection": {
      "type": "object",
      "required": [],
      "properties": {
        "filter": {
          "type": "object",
          "required": [],
          "properties": {
            "questionId": {
              "type": "string",
              "description": "a non empty string",
              "title": "nonEmptyString",
              "minLength": 1
            },
            "responseState": {
              "anyOf": [
                {
                  "type": "string",
                  "enum": [
                    "unanswered",
                    "answered"
                  ],
                  "description": "Whether this question has a current saved answer."
                },
                {
                  "type": "string",
                  "enum": [
                    "all"
                  ],
                  "description": "Both answered and unanswered customer-visible questions."
                }
              ],
              "description": "Defaults to unanswered; all includes both response states."
            }
          },
          "additionalProperties": false,
          "description": "Exact question and response state within the same company and visibility scope."
        },
        "pagination": {
          "type": "object",
          "required": [],
          "properties": {
            "pageSize": {
              "type": "integer",
              "description": "a number less than or equal to 100",
              "title": "lessThanOrEqualTo(100)",
              "exclusiveMinimum": 0,
              "maximum": 100
            },
            "pageNumber": {
              "type": "integer",
              "description": "a number less than or equal to 9007199254740991",
              "title": "lessThanOrEqualTo(9007199254740991)",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            }
          },
          "additionalProperties": false,
          "description": "Page 1 and 20 items by default; positive integers, at most 100 items."
        }
      },
      "additionalProperties": false,
      "description": "Selection and pagination for the authenticated company’s questions."
    }
  },
  "additionalProperties": false,
  "description": "Questions and applied selection; an empty page does not imply underwriting is complete."
}

feedback

Share one feedback message about KikinMCP. Takes text containing a non-whitespace character, at most 4,000 JavaScript string-length units. Returns an acceptance acknowledgement; this does not create a support ticket or guarantee delivery to a person.

Read only:
No
Idempotent:
No
Destructive:
No
Open world:
No
Input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "description": "One nonblank feedback message, at most 4,000 JavaScript string-length units. Preserved exactly as submitted.",
      "title": "maxLength(4000)",
      "maxLength": 4000,
      "pattern": "\\S"
    }
  },
  "additionalProperties": false,
  "description": "One feedback message about KikinMCP."
}
Result schema
{
  "type": "object",
  "required": [
    "accepted"
  ],
  "properties": {
    "accepted": {
      "type": "boolean",
      "enum": [
        true
      ],
      "description": "The feedback handler accepted the message."
    }
  },
  "additionalProperties": false,
  "description": "Handling acknowledgement, without a support ticket or a guarantee of durable storage or remote trace delivery."
}