SNAPDocumentation

SNAP / MCP

MCP Reference

Read the request and response contracts without signing in. Run requests in the signed-in SNAP workspace.

Specification11 tools
TransportStreamable HTTP
ExecutionAuthenticated
Source and version

Contract source: backend commit 7692846. Deployment versions and available features may differ. Downloaded JSON retains its source language; MCP descriptions follow your selected language.

Time zones and date field migration

timeZone applies only to timestamp-bearing Spot, Forward, Term Structure, Swap Point, Zero Rate and Discount Factor APIs and their MCP tools. Use a GET query or the calculate-forward JSON body. Omission or JSON null means UTC. Use an IANA ID such as Asia/Seoul. Empty values, whitespace, KST, numeric offsets and unknown IDs return HTTP 400/code 4000.

2026-01-01T00:00:00.000Z and 2026-01-01T09:00:00.000+09:00 represent the same instant. DST follows the zone at that instant. referenceAt is source reference time and is not refreshed by fetching again. The REST Spot lastAt uses the same millisecond format, but the trade clock has second resolution so the fraction is always .000, and its inferred trade date can be inaccurate after market closures. YYYY-MM-DD dates and prices stay unchanged; referenceDate keeps the source UTC date.

Every success and error response uses UTC millisecond timestamps for meta.requestAt and meta.responseAt, independent of the requested timeZone. meta.requestId is a server-generated UUID. meta.clientRequestId is the incoming X-Request-ID value or null. retrievedAt is not part of the public contract.

JSON
{
  "timeZone": "Asia/Seoul",
  "referenceAt": "2026-01-01T09:00:00.000+09:00",
  "maturityDate": "2026-09-24"
}

Use the names on the right. REST quote responses no longer carry lastTradedAtKst, lastTradedAt, points[].maturity, nearMaturity or farMaturity; only the curve date remains as a deprecated alias. MCP tool results still carry the old names. Curve requests take either maturityDate or tenor; sending both date and maturityDate is an error.

JSON
{
  "asOf": "referenceAt",
  "lastTradedAtKst": "lastAt",
  "lastTradedAt": "lastAt",
  "points[].maturity": "points[].maturityDate",
  "nearMaturity": "nearMaturityDate",
  "farMaturity": "farMaturityDate",
  "curve date": "maturityDate"
}

https://snap-api.kustodyfi.com/mcp / Streamable HTTP / JSON-RPC

Connections and calls require OAuth authentication. The available tools depend on granted scopes. This reference captures tools/list with the full rates-read scope.

MCP connection guide

TOOLget_tenors

Supported Tenors

/v1/fx/tenors. Lists supported tenors separately for USD interest rates (usdRate) and FX forwards (fxForward). The lists are independent of quote availability and can differ; a rate tenor does not imply an FX forward tenor.

Input schema

inputSchema JSON
JSON
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": true
}

Result

codeintegerRequired

성공은 0. 실패는 에러 번호(4000·4220·5000).

dataobject | null

payload. 실패 응답에서는 항상 null이다.

Nested fields
fxForwardstring[]Required
usdRatestring[]Required
messagestringRequired

성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지.

metaobject | objectRequired
Nested fields

object

clientRequestIdstring | nullRequired

Client correlation value received in X-Request-ID; null when absent.

requestAtstringRequired

UTC time when the server received the request.

requestIdstringRequired

Server-generated UUID for response and log correlation.

responseAtstringRequired

UTC time when the response envelope was created.

object

JSON
{
  "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
}
outputSchema JSON
JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$defs": {
    "Tenor": {
      "type": "string",
      "enum": [
        "1D",
        "SN",
        "1W",
        "2W",
        "3W",
        "1M",
        "2M",
        "3M",
        "4M",
        "5M",
        "6M",
        "7M",
        "8M",
        "9M",
        "10M",
        "11M",
        "1Y",
        "12M"
      ]
    }
  },
  "type": "object",
  "properties": {
    "code": {
      "type": "integer",
      "description": "성공은 `0`. 실패는 에러 번호(`4000`·`4220`·`5000`)."
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "fxForward": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tenor"
          }
        },
        "usdRate": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tenor"
          }
        }
      },
      "required": [
        "fxForward",
        "usdRate"
      ],
      "description": "payload. 실패 응답에서는 항상 `null`이다."
    },
    "message": {
      "type": "string",
      "description": "성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지."
    },
    "meta": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "clientRequestId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Client correlation value received in X-Request-ID; null when absent."
            },
            "requestAt": {
              "type": "string",
              "description": "UTC time when the server received the request."
            },
            "requestId": {
              "type": "string",
              "description": "Server-generated UUID for response and log correlation."
            },
            "responseAt": {
              "type": "string",
              "description": "UTC time when the response envelope was created."
            }
          },
          "required": [
            "clientRequestId",
            "requestAt",
            "requestId",
            "responseAt"
          ],
          "description": "Request-response metadata shared by REST and MCP results."
        },
        {
          "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
        }
      ]
    }
  },
  "required": [
    "code",
    "message",
    "meta"
  ],
  "description": "\n        SNAP 응답 래퍼. 성공은 `code: 0` · `message: \"\"`이고 payload는 `data`에 담긴다.\n        프런트엔드는 `code`로 분기한다.\n\n        **\"데이터 없음\"은 실패가 아니다.** 요청이 유효한데 스냅샷이 아직 안 들어왔거나 요청한\n        만기가 커브 범위 밖이면 `code: 0`으로 응답하고 `data` 안쪽 필드를 `null`로 둔다.\n    "
}
Tool annotations
JSON
{
  "title": "Supported Tenors",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": true
}

TOOLget_currency_pairs

Supported Currency Pairs

/v1/fx/currency-pairs. Lists currencies and currency pairs published by the calculation conventions. The plural list keys are currencies and pairs. Returns USDKRW and USDJPY in pairs, with JPY, KRW and USD in currencies. Spot and forward quote availability is described by each quote operation. Currency and pair conventions are available from /v1/fx/config.

Input schema

inputSchema JSON
JSON
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": true
}

Result

codeintegerRequired

성공은 0. 실패는 에러 번호(4000·4220·5000).

dataobject | null

payload. 실패 응답에서는 항상 null이다.

Nested fields
currenciesstring[]Required
pairsstring[]Required
messagestringRequired

성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지.

metaobject | objectRequired
Nested fields

object

clientRequestIdstring | nullRequired

Client correlation value received in X-Request-ID; null when absent.

requestAtstringRequired

UTC time when the server received the request.

requestIdstringRequired

Server-generated UUID for response and log correlation.

responseAtstringRequired

UTC time when the response envelope was created.

object

JSON
{
  "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
}
outputSchema JSON
JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "code": {
      "type": "integer",
      "description": "성공은 `0`. 실패는 에러 번호(`4000`·`4220`·`5000`)."
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "currencies": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "JPY",
              "KRW",
              "USD"
            ]
          }
        },
        "pairs": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "USDKRW",
              "USDJPY",
              "JPYKRW"
            ]
          }
        }
      },
      "required": [
        "currencies",
        "pairs"
      ],
      "description": "payload. 실패 응답에서는 항상 `null`이다."
    },
    "message": {
      "type": "string",
      "description": "성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지."
    },
    "meta": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "clientRequestId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Client correlation value received in X-Request-ID; null when absent."
            },
            "requestAt": {
              "type": "string",
              "description": "UTC time when the server received the request."
            },
            "requestId": {
              "type": "string",
              "description": "Server-generated UUID for response and log correlation."
            },
            "responseAt": {
              "type": "string",
              "description": "UTC time when the response envelope was created."
            }
          },
          "required": [
            "clientRequestId",
            "requestAt",
            "requestId",
            "responseAt"
          ],
          "description": "Request-response metadata shared by REST and MCP results."
        },
        {
          "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
        }
      ]
    }
  },
  "required": [
    "code",
    "message",
    "meta"
  ],
  "description": "\n        SNAP 응답 래퍼. 성공은 `code: 0` · `message: \"\"`이고 payload는 `data`에 담긴다.\n        프런트엔드는 `code`로 분기한다.\n\n        **\"데이터 없음\"은 실패가 아니다.** 요청이 유효한데 스냅샷이 아직 안 들어왔거나 요청한\n        만기가 커브 범위 밖이면 `code: 0`으로 응답하고 `data` 안쪽 필드를 `null`로 둔다.\n    "
}
Tool annotations
JSON
{
  "title": "Supported Currency Pairs",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": true
}

TOOLget_config

Calculation Conventions

/v1/fx/config. Returns currency day-count conventions and calendars in currencies, and base currency, quote currency, spot lag and point factor in pairs. A currency listed here has published conventions; it does not follow that every product accepts it. JPY conventions are listed while zero-rate and discount-factor still serve USD and KRW only.

currencies carries one row per currency, identified by currency. curveMethod describes the active production calculation path: OIS_BOOTSTRAP builds USD from SOFR OIS quotes, while FX_SWAP_IMPLIED derives KRW and JPY from the USD curve and FX spot and swap points. daycount is the convention used to report rates from that curve. It does not advertise an OIS convention that the production curve builder does not use.

pointFactor converts a quote-currency change to swap points: points = (outright - spot) * pointFactor. Convert points back to quote-currency units with outright = spot + points / pointFactor. Both USDKRW and USDJPY currently use 100. These are reference conventions; quote responses provide their applicable settlement dates.

Input schema

inputSchema JSON
JSON
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": true
}

Result

codeintegerRequired

성공은 0. 실패는 에러 번호(4000·4220·5000).

dataobject | null

payload. 실패 응답에서는 항상 null이다.

Nested fields
currenciesobject[]Required
Nested fields
calendarstringRequired

USD_NEWYORK | KRW_SEOUL | JPY_TOKYO

currencystringRequired

JPY | KRW | USD

curveMethodstringRequired

Method used to construct the published curve for this currency.

OIS_BOOTSTRAP | FX_SWAP_IMPLIED

daycountstringRequired

Actual-day convention used when reporting rates from this curve.

ACT/360 | ACT/365

pairsobject[]Required
Nested fields
basestringRequired

JPY | KRW | USD

pairstringRequired

USDKRW | USDJPY | JPYKRW

pointFactornumberRequired

Multiplier from the quote-currency change to swap points: points = (outright - spot) * pointFactor. Convert points back by dividing by this value.

quotestringRequired

JPY | KRW | USD

spotLagintegerRequired
messagestringRequired

성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지.

metaobject | objectRequired
Nested fields

object

clientRequestIdstring | nullRequired

Client correlation value received in X-Request-ID; null when absent.

requestAtstringRequired

UTC time when the server received the request.

requestIdstringRequired

Server-generated UUID for response and log correlation.

responseAtstringRequired

UTC time when the response envelope was created.

object

JSON
{
  "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
}
outputSchema JSON
JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$defs": {
    "Currency": {
      "type": "string",
      "enum": [
        "JPY",
        "KRW",
        "USD"
      ]
    }
  },
  "type": "object",
  "properties": {
    "code": {
      "type": "integer",
      "description": "성공은 `0`. 실패는 에러 번호(`4000`·`4220`·`5000`)."
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "currencies": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "calendar": {
                "type": "string",
                "enum": [
                  "USD_NEWYORK",
                  "KRW_SEOUL",
                  "JPY_TOKYO"
                ]
              },
              "currency": {
                "$ref": "#/$defs/Currency"
              },
              "curveMethod": {
                "type": "string",
                "enum": [
                  "OIS_BOOTSTRAP",
                  "FX_SWAP_IMPLIED"
                ],
                "description": "Method used to construct the published curve for this currency."
              },
              "daycount": {
                "type": "string",
                "enum": [
                  "ACT/360",
                  "ACT/365"
                ],
                "description": "Actual-day convention used when reporting rates from this curve."
              }
            },
            "required": [
              "calendar",
              "currency",
              "curveMethod",
              "daycount"
            ]
          }
        },
        "pairs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "base": {
                "$ref": "#/$defs/Currency"
              },
              "pair": {
                "type": "string",
                "enum": [
                  "USDKRW",
                  "USDJPY",
                  "JPYKRW"
                ]
              },
              "pointFactor": {
                "type": "number",
                "description": "Multiplier from the quote-currency change to swap points: points = (outright - spot) * pointFactor. Convert points back by dividing by this value."
              },
              "quote": {
                "$ref": "#/$defs/Currency"
              },
              "spotLag": {
                "type": "integer"
              }
            },
            "required": [
              "base",
              "pair",
              "pointFactor",
              "quote",
              "spotLag"
            ]
          }
        }
      },
      "required": [
        "currencies",
        "pairs"
      ],
      "description": "payload. 실패 응답에서는 항상 `null`이다."
    },
    "message": {
      "type": "string",
      "description": "성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지."
    },
    "meta": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "clientRequestId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Client correlation value received in X-Request-ID; null when absent."
            },
            "requestAt": {
              "type": "string",
              "description": "UTC time when the server received the request."
            },
            "requestId": {
              "type": "string",
              "description": "Server-generated UUID for response and log correlation."
            },
            "responseAt": {
              "type": "string",
              "description": "UTC time when the response envelope was created."
            }
          },
          "required": [
            "clientRequestId",
            "requestAt",
            "requestId",
            "responseAt"
          ],
          "description": "Request-response metadata shared by REST and MCP results."
        },
        {
          "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
        }
      ]
    }
  },
  "required": [
    "code",
    "message",
    "meta"
  ],
  "description": "\n        SNAP 응답 래퍼. 성공은 `code: 0` · `message: \"\"`이고 payload는 `data`에 담긴다.\n        프런트엔드는 `code`로 분기한다.\n\n        **\"데이터 없음\"은 실패가 아니다.** 요청이 유효한데 스냅샷이 아직 안 들어왔거나 요청한\n        만기가 커브 범위 밖이면 `code: 0`으로 응답하고 `data` 안쪽 필드를 `null`로 둔다.\n    "
}
Tool annotations
JSON
{
  "title": "Calculation Conventions",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": true
}

TOOLcalculate_dates

Settlement and Maturity Dates

/v1/fx/calculate-dates. Calculates spotDate from tradeDate and the currency pair's spot lag, then adds the tenor and adjusts to obtain maturityDate. Business days require both New York and Seoul to be open. isTradeDateBusinessDay, isSpotDateEom and eomRuleApplied explain the result; end of month means the last business day, not necessarily the last calendar day. spotDays overrides the default lag. Disabling eomRule skips the end-of-month rule. For OVERNIGHT, TOM_NEXT and SPOT_NEXT anchors, business-day offsets replace the tenor. Calendar coverage is currently limited to 2026; unavailable coverage returns error code 5000 without estimating dates. Calculation conventions and holiday data are provisional and results may change.

Input schema

anchorstring

SPOT | OVERNIGHT | TOM_NEXT | SPOT_NEXT

Default: SPOT

eomRuleboolean

Applies to month and year tenors only. Day and week tenors roll Following and are unaffected by this flag; eomRuleApplied reports what was used.

Default: true

pairstring

Default: USDKRW

spotDaysinteger | null
tenorstringRequired

1D | SN | 1W | 2W | 3W | 1M | 2M | 3M | 4M | 5M | 6M | 7M | 8M | 9M | 10M | 11M | 1Y | 12M

tradeDatestring / dateRequired
inputSchema JSON
JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "anchor": {
      "type": "string",
      "enum": [
        "SPOT",
        "OVERNIGHT",
        "TOM_NEXT",
        "SPOT_NEXT"
      ],
      "default": "SPOT"
    },
    "eomRule": {
      "type": "boolean",
      "description": "Applies to month and year tenors only. Day and week tenors roll Following and are unaffected by this flag; `eomRuleApplied` reports what was used.",
      "default": true
    },
    "pair": {
      "type": "string",
      "default": "USDKRW"
    },
    "spotDays": {
      "type": [
        "integer",
        "null"
      ]
    },
    "tenor": {
      "type": "string",
      "enum": [
        "1D",
        "SN",
        "1W",
        "2W",
        "3W",
        "1M",
        "2M",
        "3M",
        "4M",
        "5M",
        "6M",
        "7M",
        "8M",
        "9M",
        "10M",
        "11M",
        "1Y",
        "12M"
      ]
    },
    "tradeDate": {
      "type": "string",
      "format": "date"
    }
  },
  "required": [
    "tenor",
    "tradeDate"
  ]
}

Result

codeintegerRequired

성공은 0. 실패는 에러 번호(4000·4220·5000).

dataobject | null

payload. 실패 응답에서는 항상 null이다.

Nested fields
businessDaysinteger | null
calendarsstring[]Required
daysToMaturityinteger | null
eomRuleAppliedbooleanRequired
isSpotDateEomboolean | null
isTradeDateBusinessDayboolean | null
maturityDatestring | null / date
pairstringRequired
spotDatestring | null / date
spotDaysintegerRequired
tenorstringRequired

1D | SN | 1W | 2W | 3W | 1M | 2M | 3M | 4M | 5M | 6M | 7M | 8M | 9M | 10M | 11M | 1Y | 12M

tradeDatestring / dateRequired
messagestringRequired

성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지.

metaobject | objectRequired
Nested fields

object

clientRequestIdstring | nullRequired

Client correlation value received in X-Request-ID; null when absent.

requestAtstringRequired

UTC time when the server received the request.

requestIdstringRequired

Server-generated UUID for response and log correlation.

responseAtstringRequired

UTC time when the response envelope was created.

object

JSON
{
  "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
}
outputSchema JSON
JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "code": {
      "type": "integer",
      "description": "성공은 `0`. 실패는 에러 번호(`4000`·`4220`·`5000`)."
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "businessDays": {
          "type": [
            "integer",
            "null"
          ]
        },
        "calendars": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "daysToMaturity": {
          "type": [
            "integer",
            "null"
          ]
        },
        "eomRuleApplied": {
          "type": "boolean"
        },
        "isSpotDateEom": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "isTradeDateBusinessDay": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "maturityDate": {
          "type": [
            "string",
            "null"
          ],
          "format": "date"
        },
        "pair": {
          "type": "string"
        },
        "spotDate": {
          "type": [
            "string",
            "null"
          ],
          "format": "date"
        },
        "spotDays": {
          "type": "integer"
        },
        "tenor": {
          "type": "string",
          "enum": [
            "1D",
            "SN",
            "1W",
            "2W",
            "3W",
            "1M",
            "2M",
            "3M",
            "4M",
            "5M",
            "6M",
            "7M",
            "8M",
            "9M",
            "10M",
            "11M",
            "1Y",
            "12M"
          ]
        },
        "tradeDate": {
          "type": "string",
          "format": "date"
        }
      },
      "required": [
        "calendars",
        "eomRuleApplied",
        "pair",
        "spotDays",
        "tenor",
        "tradeDate"
      ],
      "description": "payload. 실패 응답에서는 항상 `null`이다."
    },
    "message": {
      "type": "string",
      "description": "성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지."
    },
    "meta": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "clientRequestId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Client correlation value received in X-Request-ID; null when absent."
            },
            "requestAt": {
              "type": "string",
              "description": "UTC time when the server received the request."
            },
            "requestId": {
              "type": "string",
              "description": "Server-generated UUID for response and log correlation."
            },
            "responseAt": {
              "type": "string",
              "description": "UTC time when the response envelope was created."
            }
          },
          "required": [
            "clientRequestId",
            "requestAt",
            "requestId",
            "responseAt"
          ],
          "description": "Request-response metadata shared by REST and MCP results."
        },
        {
          "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
        }
      ]
    }
  },
  "required": [
    "code",
    "message",
    "meta"
  ],
  "description": "\n        SNAP 응답 래퍼. 성공은 `code: 0` · `message: \"\"`이고 payload는 `data`에 담긴다.\n        프런트엔드는 `code`로 분기한다.\n\n        **\"데이터 없음\"은 실패가 아니다.** 요청이 유효한데 스냅샷이 아직 안 들어왔거나 요청한\n        만기가 커브 범위 밖이면 `code: 0`으로 응답하고 `data` 안쪽 필드를 `null`로 둔다.\n    "
}
Tool annotations
JSON
{
  "title": "Settlement and Maturity Dates",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": true
}

TOOLget_spot

Spot Exchange Rate

/v1/fx/spot. Returns the spot exchange rate and settlement date for a currency pair. USDKRW is supported; USDJPY is available when its spot service is enabled. Spot availability does not imply support for other calculations. bid and ask are quotes per USD 1; spotRate is their midpoint, or the available single rate. Missing or expired quotes produce null price fields and null referenceAt. referenceAt is the observation time of the quote, not a retrieval time, and uses ISO-8601 with milliseconds in timeZone (UTC when omitted or null). lastTradedPrice and lastTradedAt describe the last available USDKRW trade, independently of quote expiry. The trade timestamp includes the date and requested timeZone offset; lastTradedAtKst remains KST-fixed. Its date is inferred from the observation date and may be inaccurate for trades retransmitted after a market closure. Missing trade values are null; a last trade does not necessarily represent a recent trade.

Input schema

pairstring

통화쌍

Default: USDKRW

timeZonestring | null

IANA area/location time zone for response timestamps, for example Asia/Seoul. Omitted or null means UTC. Calendar dates and prices are unchanged.

Default: UTC

inputSchema JSON
JSON
{
  "type": "object",
  "properties": {
    "pair": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "description": "통화쌍",
      "default": "USDKRW"
    },
    "timeZone": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": [
        "string",
        "null"
      ],
      "description": "IANA area/location time zone for response timestamps, for example Asia/Seoul. Omitted or null means UTC. Calendar dates and prices are unchanged.",
      "default": "UTC"
    }
  },
  "required": [],
  "additionalProperties": true
}

Result

codeintegerRequired

성공은 0. 실패는 에러 번호(4000·4220·5000).

dataobject | null

payload. 실패 응답에서는 항상 null이다.

Nested fields
asknumber | null

Ask in KRW or JPY per USD; null when this side is not provided.

bidnumber | null

Bid in KRW or JPY per USD; null when this side is not provided.

lastTradedAtstring | null / date-time

Estimated trade date and time in timeZone (default UTC), with seconds; null without a trade clock. Date is inferred from the observation and can be inaccurate after closures.

lastTradedAtKststring | null / date-time

KST-fixed legacy timestamp. Use lastTradedAt for the requested timeZone.

lastTradedPricenumber | null

Last traded price from the latest priced LS observation; USDKRW only, otherwise null.

pairstringRequired
referenceAtstring | null / date-time

Snapshot observation time in timeZone (default UTC), with milliseconds; null when no snapshot exists.

spotDatestring | null / date
spotRatenumber | null
messagestringRequired

성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지.

metaobject | objectRequired
Nested fields

object

clientRequestIdstring | nullRequired

Client correlation value received in X-Request-ID; null when absent.

requestAtstringRequired

UTC time when the server received the request.

requestIdstringRequired

Server-generated UUID for response and log correlation.

responseAtstringRequired

UTC time when the response envelope was created.

object

JSON
{
  "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
}
outputSchema JSON
JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "code": {
      "type": "integer",
      "description": "성공은 `0`. 실패는 에러 번호(`4000`·`4220`·`5000`)."
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "ask": {
          "type": [
            "number",
            "null"
          ],
          "description": "Ask in KRW or JPY per USD; null when this side is not provided."
        },
        "bid": {
          "type": [
            "number",
            "null"
          ],
          "description": "Bid in KRW or JPY per USD; null when this side is not provided."
        },
        "lastTradedAt": {
          "type": [
            "string",
            "null"
          ],
          "description": "Estimated trade date and time in timeZone (default UTC), with seconds; null without a trade clock. Date is inferred from the observation and can be inaccurate after closures.",
          "format": "date-time"
        },
        "lastTradedAtKst": {
          "type": [
            "string",
            "null"
          ],
          "description": "KST-fixed legacy timestamp. Use lastTradedAt for the requested timeZone.",
          "format": "date-time"
        },
        "lastTradedPrice": {
          "type": [
            "number",
            "null"
          ],
          "description": "Last traded price from the latest priced LS observation; USDKRW only, otherwise null."
        },
        "pair": {
          "type": "string"
        },
        "referenceAt": {
          "type": [
            "string",
            "null"
          ],
          "description": "Snapshot observation time in timeZone (default UTC), with milliseconds; null when no snapshot exists.",
          "format": "date-time"
        },
        "spotDate": {
          "type": [
            "string",
            "null"
          ],
          "format": "date"
        },
        "spotRate": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "required": [
        "pair"
      ],
      "description": "payload. 실패 응답에서는 항상 `null`이다."
    },
    "message": {
      "type": "string",
      "description": "성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지."
    },
    "meta": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "clientRequestId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Client correlation value received in X-Request-ID; null when absent."
            },
            "requestAt": {
              "type": "string",
              "description": "UTC time when the server received the request."
            },
            "requestId": {
              "type": "string",
              "description": "Server-generated UUID for response and log correlation."
            },
            "responseAt": {
              "type": "string",
              "description": "UTC time when the response envelope was created."
            }
          },
          "required": [
            "clientRequestId",
            "requestAt",
            "requestId",
            "responseAt"
          ],
          "description": "Request-response metadata shared by REST and MCP results."
        },
        {
          "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
        }
      ]
    }
  },
  "required": [
    "code",
    "message",
    "meta"
  ],
  "description": "\n        SNAP 응답 래퍼. 성공은 `code: 0` · `message: \"\"`이고 payload는 `data`에 담긴다.\n        프런트엔드는 `code`로 분기한다.\n\n        **\"데이터 없음\"은 실패가 아니다.** 요청이 유효한데 스냅샷이 아직 안 들어왔거나 요청한\n        만기가 커브 범위 밖이면 `code: 0`으로 응답하고 `data` 안쪽 필드를 `null`로 둔다.\n    "
}
Tool annotations
JSON
{
  "title": "Spot Exchange Rate",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": true
}

TOOLcalculate_forward

Forward Exchange Rate

/v1/fx/calculate-forward. Calculates swap points and a forward exchange rate between spotDate and the later targetDate. The requested spot date anchors the calculation; points are the difference between the curve values at both dates. Standard tenors use available values and intermediate dates use linear interpolation in calendar days. There is no extrapolation beyond the curve: unavailable points or forward rates are null. midPoints is in pips and mid is in currency units (midPoints / pointFactor). Read pointFactor for the pair from GET /v1/fx/config. referenceAt is the observation time in timeZone (UTC when omitted or null); calendar dates are unchanged.

Input schema

pairstring

Default: USDKRW

spotDatestring / dateRequired
targetDatestring / dateRequired
timeZonestring | null

IANA area/location time zone for response timestamps, for example Asia/Seoul. Omitted or null means UTC. Calendar dates and prices are unchanged.

Default: UTC

inputSchema JSON
JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "pair": {
      "type": "string",
      "default": "USDKRW"
    },
    "spotDate": {
      "type": "string",
      "format": "date"
    },
    "targetDate": {
      "type": "string",
      "format": "date"
    },
    "timeZone": {
      "type": [
        "string",
        "null"
      ],
      "description": "IANA area/location time zone for response timestamps, for example Asia/Seoul. Omitted or null means UTC. Calendar dates and prices are unchanged.",
      "default": "UTC"
    }
  },
  "required": [
    "spotDate",
    "targetDate"
  ]
}

Result

codeintegerRequired

성공은 0. 실패는 에러 번호(4000·4220·5000).

dataobject | null

payload. 실패 응답에서는 항상 null이다.

Nested fields
daysintegerRequired
midnumber | null
midForwardnumber | null
midPointsnumber | null
pairstringRequired
referenceAtstring | null / date-time

Observation time of the source values in timeZone (default UTC), with milliseconds; null when no observation backs the response.

spotDatestring / dateRequired
spotRatenumber | null
targetDatestring / dateRequired
messagestringRequired

성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지.

metaobject | objectRequired
Nested fields

object

clientRequestIdstring | nullRequired

Client correlation value received in X-Request-ID; null when absent.

requestAtstringRequired

UTC time when the server received the request.

requestIdstringRequired

Server-generated UUID for response and log correlation.

responseAtstringRequired

UTC time when the response envelope was created.

object

JSON
{
  "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
}
outputSchema JSON
JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "code": {
      "type": "integer",
      "description": "성공은 `0`. 실패는 에러 번호(`4000`·`4220`·`5000`)."
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "days": {
          "type": "integer"
        },
        "mid": {
          "type": [
            "number",
            "null"
          ]
        },
        "midForward": {
          "type": [
            "number",
            "null"
          ]
        },
        "midPoints": {
          "type": [
            "number",
            "null"
          ]
        },
        "pair": {
          "type": "string"
        },
        "referenceAt": {
          "type": [
            "string",
            "null"
          ],
          "description": "Observation time of the source values in timeZone (default UTC), with milliseconds; null when no observation backs the response.",
          "format": "date-time"
        },
        "spotDate": {
          "type": "string",
          "format": "date"
        },
        "spotRate": {
          "type": [
            "number",
            "null"
          ]
        },
        "targetDate": {
          "type": "string",
          "format": "date"
        }
      },
      "required": [
        "days",
        "pair",
        "spotDate",
        "targetDate"
      ],
      "description": "payload. 실패 응답에서는 항상 `null`이다."
    },
    "message": {
      "type": "string",
      "description": "성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지."
    },
    "meta": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "clientRequestId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Client correlation value received in X-Request-ID; null when absent."
            },
            "requestAt": {
              "type": "string",
              "description": "UTC time when the server received the request."
            },
            "requestId": {
              "type": "string",
              "description": "Server-generated UUID for response and log correlation."
            },
            "responseAt": {
              "type": "string",
              "description": "UTC time when the response envelope was created."
            }
          },
          "required": [
            "clientRequestId",
            "requestAt",
            "requestId",
            "responseAt"
          ],
          "description": "Request-response metadata shared by REST and MCP results."
        },
        {
          "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
        }
      ]
    }
  },
  "required": [
    "code",
    "message",
    "meta"
  ],
  "description": "\n        SNAP 응답 래퍼. 성공은 `code: 0` · `message: \"\"`이고 payload는 `data`에 담긴다.\n        프런트엔드는 `code`로 분기한다.\n\n        **\"데이터 없음\"은 실패가 아니다.** 요청이 유효한데 스냅샷이 아직 안 들어왔거나 요청한\n        만기가 커브 범위 밖이면 `code: 0`으로 응답하고 `data` 안쪽 필드를 `null`로 둔다.\n    "
}
Tool annotations
JSON
{
  "title": "Forward Exchange Rate",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": true
}

TOOLget_term_structure

Swap Point Term Structure

/v1/fx/term-structure. Returns available swap points by tenor for the currency pair. Missing tenors are omitted. bid, ask and mid are quote-currency units per USD 1; negative and zero points are valid. mid is the average of available two-sided quotes. Single-value quotes can have null bid and ask. midPips is mid converted to pips using the pair's pointFactor from GET /v1/fx/config. An omitted spotDate uses the standard spot settlement date. days is the calendar-day interval to maturity; spPerDay is mid / days and is null for missing or nonpositive days. Missing dates are not estimated. With no available quotes, points is empty and referenceAt is null. referenceDate is the UTC date of the source observation, independent of timeZone. Timestamps use timeZone (default UTC); calendar dates are unchanged.

Input schema

pairstring

통화쌍

Default: USDKRW

spotDatestring / date

기준 결제일. 생략하면 스냅샷의 결제일

timeZonestring | null

IANA area/location time zone for response timestamps, for example Asia/Seoul. Omitted or null means UTC. Calendar dates and prices are unchanged.

Default: UTC

inputSchema JSON
JSON
{
  "type": "object",
  "properties": {
    "pair": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "description": "통화쌍",
      "default": "USDKRW"
    },
    "spotDate": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "format": "date",
      "description": "기준 결제일. 생략하면 스냅샷의 결제일"
    },
    "timeZone": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": [
        "string",
        "null"
      ],
      "description": "IANA area/location time zone for response timestamps, for example Asia/Seoul. Omitted or null means UTC. Calendar dates and prices are unchanged.",
      "default": "UTC"
    }
  },
  "required": [],
  "additionalProperties": true
}

Result

codeintegerRequired

성공은 0. 실패는 에러 번호(4000·4220·5000).

dataobject | null

payload. 실패 응답에서는 항상 null이다.

Nested fields
pairstringRequired
pointsobject[]Required
Nested fields
asknumber | null
bidnumber | null
daysinteger | null
maturitystring | null / date

Use maturityDate.

midnumber | null
midPipsnumber | null
spPerDaynumber | null
tenorstringRequired
referenceAtstring | null / date-time

Observation time of the source values in timeZone (default UTC), with milliseconds; null when no observation backs the response.

referenceDatestring | null / date
spotDatestring | null / date
spotRatenumber | null
messagestringRequired

성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지.

metaobject | objectRequired
Nested fields

object

clientRequestIdstring | nullRequired

Client correlation value received in X-Request-ID; null when absent.

requestAtstringRequired

UTC time when the server received the request.

requestIdstringRequired

Server-generated UUID for response and log correlation.

responseAtstringRequired

UTC time when the response envelope was created.

object

JSON
{
  "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
}
outputSchema JSON
JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "code": {
      "type": "integer",
      "description": "성공은 `0`. 실패는 에러 번호(`4000`·`4220`·`5000`)."
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "pair": {
          "type": "string"
        },
        "points": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "ask": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "bid": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "days": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "maturity": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date",
                "description": "Use maturityDate."
              },
              "mid": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "midPips": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "spPerDay": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "tenor": {
                "type": "string"
              }
            },
            "required": [
              "tenor"
            ]
          }
        },
        "referenceAt": {
          "type": [
            "string",
            "null"
          ],
          "description": "Observation time of the source values in timeZone (default UTC), with milliseconds; null when no observation backs the response.",
          "format": "date-time"
        },
        "referenceDate": {
          "type": [
            "string",
            "null"
          ],
          "format": "date"
        },
        "spotDate": {
          "type": [
            "string",
            "null"
          ],
          "format": "date"
        },
        "spotRate": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "required": [
        "pair",
        "points"
      ],
      "description": "payload. 실패 응답에서는 항상 `null`이다."
    },
    "message": {
      "type": "string",
      "description": "성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지."
    },
    "meta": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "clientRequestId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Client correlation value received in X-Request-ID; null when absent."
            },
            "requestAt": {
              "type": "string",
              "description": "UTC time when the server received the request."
            },
            "requestId": {
              "type": "string",
              "description": "Server-generated UUID for response and log correlation."
            },
            "responseAt": {
              "type": "string",
              "description": "UTC time when the response envelope was created."
            }
          },
          "required": [
            "clientRequestId",
            "requestAt",
            "requestId",
            "responseAt"
          ],
          "description": "Request-response metadata shared by REST and MCP results."
        },
        {
          "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
        }
      ]
    }
  },
  "required": [
    "code",
    "message",
    "meta"
  ],
  "description": "\n        SNAP 응답 래퍼. 성공은 `code: 0` · `message: \"\"`이고 payload는 `data`에 담긴다.\n        프런트엔드는 `code`로 분기한다.\n\n        **\"데이터 없음\"은 실패가 아니다.** 요청이 유효한데 스냅샷이 아직 안 들어왔거나 요청한\n        만기가 커브 범위 밖이면 `code: 0`으로 응답하고 `data` 안쪽 필드를 `null`로 둔다.\n    "
}
Tool annotations
JSON
{
  "title": "Swap Point Term Structure",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": true
}

TOOLget_swap_point

Forward Swap Points

/v1/fx/swap-point. Returns forward-starting swap points between nearDate and farDate, as far-leg points minus near-leg points. nearDate must follow spotDate and farDate must follow nearDate. Each leg uses the same interpolation as the forward calculation. If either leg is unavailable or outside the curve, fxf is null. referenceAt is the observation time in timeZone (UTC when omitted or null); calendar dates are unchanged.

Input schema

pairstring

통화쌍

Default: USDKRW

nearDatestring / dateRequired

near leg 만기

farDatestring / dateRequired

far leg 만기

spotDatestring / date

기준 결제일. 생략하면 스냅샷의 결제일

timeZonestring | null

IANA area/location time zone for response timestamps, for example Asia/Seoul. Omitted or null means UTC. Calendar dates and prices are unchanged.

Default: UTC

inputSchema JSON
JSON
{
  "type": "object",
  "properties": {
    "pair": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "description": "통화쌍",
      "default": "USDKRW"
    },
    "nearDate": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "format": "date",
      "description": "near leg 만기"
    },
    "farDate": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "format": "date",
      "description": "far leg 만기"
    },
    "spotDate": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "format": "date",
      "description": "기준 결제일. 생략하면 스냅샷의 결제일"
    },
    "timeZone": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": [
        "string",
        "null"
      ],
      "description": "IANA area/location time zone for response timestamps, for example Asia/Seoul. Omitted or null means UTC. Calendar dates and prices are unchanged.",
      "default": "UTC"
    }
  },
  "required": [
    "nearDate",
    "farDate"
  ],
  "additionalProperties": true
}

Result

codeintegerRequired

성공은 0. 실패는 에러 번호(4000·4220·5000).

dataobject | null

payload. 실패 응답에서는 항상 null이다.

Nested fields
farobjectRequired
Nested fields
fwdMidnumber | null
midnumber | null
farDaysintegerRequired
farMaturitystring / dateRequired

Use farMaturityDate.

fxfobjectRequired
Nested fields
midnumber | null
midPipsnumber | null
nearobjectRequired
Nested fields
fwdMidnumber | null
midnumber | null
nearDaysintegerRequired
nearMaturitystring / dateRequired

Use nearMaturityDate.

pairstringRequired
referenceAtstring | null / date-time

Observation time of the source values in timeZone (default UTC), with milliseconds; null when no observation backs the response.

spotDatestring | null / date
spotRatenumber | null
messagestringRequired

성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지.

metaobject | objectRequired
Nested fields

object

clientRequestIdstring | nullRequired

Client correlation value received in X-Request-ID; null when absent.

requestAtstringRequired

UTC time when the server received the request.

requestIdstringRequired

Server-generated UUID for response and log correlation.

responseAtstringRequired

UTC time when the response envelope was created.

object

JSON
{
  "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
}
outputSchema JSON
JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$defs": {
    "SwapPointLeg": {
      "type": "object",
      "properties": {
        "fwdMid": {
          "type": [
            "number",
            "null"
          ]
        },
        "mid": {
          "type": [
            "number",
            "null"
          ]
        }
      }
    }
  },
  "type": "object",
  "properties": {
    "code": {
      "type": "integer",
      "description": "성공은 `0`. 실패는 에러 번호(`4000`·`4220`·`5000`)."
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "far": {
          "$ref": "#/$defs/SwapPointLeg"
        },
        "farDays": {
          "type": "integer"
        },
        "farMaturity": {
          "type": "string",
          "format": "date",
          "description": "Use farMaturityDate."
        },
        "fxf": {
          "type": "object",
          "properties": {
            "mid": {
              "type": [
                "number",
                "null"
              ]
            },
            "midPips": {
              "type": [
                "number",
                "null"
              ]
            }
          }
        },
        "near": {
          "$ref": "#/$defs/SwapPointLeg"
        },
        "nearDays": {
          "type": "integer"
        },
        "nearMaturity": {
          "type": "string",
          "format": "date",
          "description": "Use nearMaturityDate."
        },
        "pair": {
          "type": "string"
        },
        "referenceAt": {
          "type": [
            "string",
            "null"
          ],
          "description": "Observation time of the source values in timeZone (default UTC), with milliseconds; null when no observation backs the response.",
          "format": "date-time"
        },
        "spotDate": {
          "type": [
            "string",
            "null"
          ],
          "format": "date"
        },
        "spotRate": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "required": [
        "far",
        "farDays",
        "farMaturity",
        "fxf",
        "near",
        "nearDays",
        "nearMaturity",
        "pair"
      ],
      "description": "payload. 실패 응답에서는 항상 `null`이다."
    },
    "message": {
      "type": "string",
      "description": "성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지."
    },
    "meta": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "clientRequestId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Client correlation value received in X-Request-ID; null when absent."
            },
            "requestAt": {
              "type": "string",
              "description": "UTC time when the server received the request."
            },
            "requestId": {
              "type": "string",
              "description": "Server-generated UUID for response and log correlation."
            },
            "responseAt": {
              "type": "string",
              "description": "UTC time when the response envelope was created."
            }
          },
          "required": [
            "clientRequestId",
            "requestAt",
            "requestId",
            "responseAt"
          ],
          "description": "Request-response metadata shared by REST and MCP results."
        },
        {
          "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
        }
      ]
    }
  },
  "required": [
    "code",
    "message",
    "meta"
  ],
  "description": "\n        SNAP 응답 래퍼. 성공은 `code: 0` · `message: \"\"`이고 payload는 `data`에 담긴다.\n        프런트엔드는 `code`로 분기한다.\n\n        **\"데이터 없음\"은 실패가 아니다.** 요청이 유효한데 스냅샷이 아직 안 들어왔거나 요청한\n        만기가 커브 범위 밖이면 `code: 0`으로 응답하고 `data` 안쪽 필드를 `null`로 둔다.\n    "
}
Tool annotations
JSON
{
  "title": "Forward Swap Points",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": true
}

TOOLget_zero_rate

Zero Rate

/v1/fx/zero-rate. Returns a zero rate for USD or KRW, for exactly one of maturityDate or tenor. The deprecated date alias is accepted only without maturityDate. A tenor resolves to a maturity date using the convention that built that curve: SOFR OIS termination for USD, the FX forward value date for the implied KRW curve. Other currencies are unsupported and answer 4000, which is different from a supported currency with no value. The rate is derived from the discount factor using simple interest: DF = 1 / (1 + r * yf). curveBaseDate is the curve's base date and may differ from the FX settlement date. On the curve base date, zeroRate is null because the period is zero. Missing data or dates outside the curve produce null values; there is no extrapolation. referenceAt is the observation time of the curve inputs in timeZone (default UTC); calendar dates are unchanged.

Input schema

currencystringRequired

통화. USD와 KRW. tenor는 그 커브를 세운 관례로 만기일이 된다

datestring / dateDeprecated

Deprecated alias for maturityDate. Do not supply both date names.

tenorstring

만기. maturityDate와 택일

1D | SN | 1W | 2W | 3W | 1M | 2M | 3M | 4M | 5M | 6M | 7M | 8M | 9M | 10M | 11M | 1Y | 12M

timeZonestring | null

IANA area/location time zone for response timestamps, for example Asia/Seoul. Omitted or null means UTC. Calendar dates and prices are unchanged.

Default: UTC

maturityDatestring / date

Maturity calendar date. Use either maturityDate or tenor, not both.

inputSchema JSON
JSON
{
  "type": "object",
  "properties": {
    "currency": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "description": "통화. USD와 KRW. `tenor`는 그 커브를 세운 관례로 만기일이 된다"
    },
    "date": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "format": "date",
      "deprecated": true,
      "description": "Deprecated alias for maturityDate. Do not supply both date names."
    },
    "tenor": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "enum": [
        "1D",
        "SN",
        "1W",
        "2W",
        "3W",
        "1M",
        "2M",
        "3M",
        "4M",
        "5M",
        "6M",
        "7M",
        "8M",
        "9M",
        "10M",
        "11M",
        "1Y",
        "12M"
      ],
      "description": "만기. `maturityDate`와 택일"
    },
    "timeZone": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": [
        "string",
        "null"
      ],
      "description": "IANA area/location time zone for response timestamps, for example Asia/Seoul. Omitted or null means UTC. Calendar dates and prices are unchanged.",
      "default": "UTC"
    },
    "maturityDate": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "format": "date",
      "description": "Maturity calendar date. Use either maturityDate or tenor, not both."
    }
  },
  "required": [
    "currency"
  ],
  "additionalProperties": true
}

Result

codeintegerRequired

성공은 0. 실패는 에러 번호(4000·4220·5000).

dataobject | null | object
Nested fields

object | null

currencystringRequired

JPY | KRW | USD

curveBaseDatestring | null / date
datestring | null / date

Use maturityDate.

daycountnull | string
Nested fields

null

JSON
{
  "type": "null"
}

string

JSON
{
  "type": "string",
  "enum": [
    "ACT/360",
    "ACT/365"
  ]
}
referenceAtstring | null / date-time

Observation time of the source values in timeZone (default UTC), with milliseconds; null when no observation backs the response.

tenornull | string
Nested fields

null

JSON
{
  "type": "null"
}

string

JSON
{
  "type": "string",
  "enum": [
    "1D",
    "SN",
    "1W",
    "2W",
    "3W",
    "1M",
    "2M",
    "3M",
    "4M",
    "5M",
    "6M",
    "7M",
    "8M",
    "9M",
    "10M",
    "11M",
    "1Y",
    "12M"
  ]
}
yearFractionnumber | null
zeroRatenumber | null

object

JSON
{
  "description": "payload. 실패 응답에서는 항상 `null`이다."
}
messagestringRequired

성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지.

metaobject | objectRequired
Nested fields

object

clientRequestIdstring | nullRequired

Client correlation value received in X-Request-ID; null when absent.

requestAtstringRequired

UTC time when the server received the request.

requestIdstringRequired

Server-generated UUID for response and log correlation.

responseAtstringRequired

UTC time when the response envelope was created.

object

JSON
{
  "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
}
outputSchema JSON
JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "code": {
      "type": "integer",
      "description": "성공은 `0`. 실패는 에러 번호(`4000`·`4220`·`5000`)."
    },
    "data": {
      "allOf": [
        {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "currency": {
              "type": "string",
              "enum": [
                "JPY",
                "KRW",
                "USD"
              ]
            },
            "curveBaseDate": {
              "type": [
                "string",
                "null"
              ],
              "format": "date"
            },
            "date": {
              "type": [
                "string",
                "null"
              ],
              "format": "date",
              "description": "Use maturityDate."
            },
            "daycount": {
              "anyOf": [
                {
                  "type": "null"
                },
                {
                  "type": "string",
                  "enum": [
                    "ACT/360",
                    "ACT/365"
                  ]
                }
              ]
            },
            "referenceAt": {
              "type": [
                "string",
                "null"
              ],
              "description": "Observation time of the source values in timeZone (default UTC), with milliseconds; null when no observation backs the response.",
              "format": "date-time"
            },
            "tenor": {
              "anyOf": [
                {
                  "type": "null"
                },
                {
                  "type": "string",
                  "enum": [
                    "1D",
                    "SN",
                    "1W",
                    "2W",
                    "3W",
                    "1M",
                    "2M",
                    "3M",
                    "4M",
                    "5M",
                    "6M",
                    "7M",
                    "8M",
                    "9M",
                    "10M",
                    "11M",
                    "1Y",
                    "12M"
                  ]
                }
              ]
            },
            "yearFraction": {
              "type": [
                "number",
                "null"
              ]
            },
            "zeroRate": {
              "type": [
                "number",
                "null"
              ]
            }
          },
          "required": [
            "currency"
          ],
          "description": "지정 통화·날짜의 zero rate. 커브 범위 밖이면 `zeroRate`가 `null`이다."
        },
        {
          "description": "payload. 실패 응답에서는 항상 `null`이다."
        }
      ]
    },
    "message": {
      "type": "string",
      "description": "성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지."
    },
    "meta": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "clientRequestId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Client correlation value received in X-Request-ID; null when absent."
            },
            "requestAt": {
              "type": "string",
              "description": "UTC time when the server received the request."
            },
            "requestId": {
              "type": "string",
              "description": "Server-generated UUID for response and log correlation."
            },
            "responseAt": {
              "type": "string",
              "description": "UTC time when the response envelope was created."
            }
          },
          "required": [
            "clientRequestId",
            "requestAt",
            "requestId",
            "responseAt"
          ],
          "description": "Request-response metadata shared by REST and MCP results."
        },
        {
          "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
        }
      ]
    }
  },
  "required": [
    "code",
    "message",
    "meta"
  ],
  "description": "\n        SNAP 응답 래퍼. 성공은 `code: 0` · `message: \"\"`이고 payload는 `data`에 담긴다.\n        프런트엔드는 `code`로 분기한다.\n\n        **\"데이터 없음\"은 실패가 아니다.** 요청이 유효한데 스냅샷이 아직 안 들어왔거나 요청한\n        만기가 커브 범위 밖이면 `code: 0`으로 응답하고 `data` 안쪽 필드를 `null`로 둔다.\n    "
}
Tool annotations
JSON
{
  "title": "Zero Rate",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": true
}

TOOLget_discount_factor

Discount Factor

/v1/fx/discount-factor. Returns a discount factor and corresponding simple-interest zero rate for USD or KRW, for exactly one of maturityDate or tenor. The deprecated date alias is accepted only without maturityDate. A tenor resolves to a maturity date using the convention that built that curve: SOFR OIS termination for USD, the FX forward value date for the implied KRW curve. Other currencies are unsupported and answer 4000, which is different from a supported currency with no value. curveBaseDate is the curve's base date and may differ from the FX settlement date. On the curve base date, the discount factor is 1.0 and zeroRate is null. Missing data or dates outside the curve produce null values; there is no extrapolation. referenceAt is the observation time of the curve inputs in timeZone (default UTC); calendar dates are unchanged.

Input schema

currencystringRequired

통화. USD와 KRW. tenor는 그 커브를 세운 관례로 만기일이 된다

datestring / dateDeprecated

Deprecated alias for maturityDate. Do not supply both date names.

tenorstring

만기. maturityDate와 택일

1D | SN | 1W | 2W | 3W | 1M | 2M | 3M | 4M | 5M | 6M | 7M | 8M | 9M | 10M | 11M | 1Y | 12M

timeZonestring | null

IANA area/location time zone for response timestamps, for example Asia/Seoul. Omitted or null means UTC. Calendar dates and prices are unchanged.

Default: UTC

maturityDatestring / date

Maturity calendar date. Use either maturityDate or tenor, not both.

inputSchema JSON
JSON
{
  "type": "object",
  "properties": {
    "currency": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "description": "통화. USD와 KRW. `tenor`는 그 커브를 세운 관례로 만기일이 된다"
    },
    "date": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "format": "date",
      "deprecated": true,
      "description": "Deprecated alias for maturityDate. Do not supply both date names."
    },
    "tenor": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "enum": [
        "1D",
        "SN",
        "1W",
        "2W",
        "3W",
        "1M",
        "2M",
        "3M",
        "4M",
        "5M",
        "6M",
        "7M",
        "8M",
        "9M",
        "10M",
        "11M",
        "1Y",
        "12M"
      ],
      "description": "만기. `maturityDate`와 택일"
    },
    "timeZone": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": [
        "string",
        "null"
      ],
      "description": "IANA area/location time zone for response timestamps, for example Asia/Seoul. Omitted or null means UTC. Calendar dates and prices are unchanged.",
      "default": "UTC"
    },
    "maturityDate": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "format": "date",
      "description": "Maturity calendar date. Use either maturityDate or tenor, not both."
    }
  },
  "required": [
    "currency"
  ],
  "additionalProperties": true
}

Result

codeintegerRequired

성공은 0. 실패는 에러 번호(4000·4220·5000).

dataobject | null

payload. 실패 응답에서는 항상 null이다.

Nested fields
currencystringRequired

JPY | KRW | USD

curveBaseDatestring | null / date
datestring | null / date

Use maturityDate.

daycountnull | string
Nested fields

null

JSON
{
  "type": "null"
}

string

JSON
{
  "type": "string",
  "enum": [
    "ACT/360",
    "ACT/365"
  ]
}
discountFactornumber | null
referenceAtstring | null / date-time

Observation time of the source values in timeZone (default UTC), with milliseconds; null when no observation backs the response.

tenornull | string
Nested fields

null

JSON
{
  "type": "null"
}

string

JSON
{
  "type": "string",
  "enum": [
    "1D",
    "SN",
    "1W",
    "2W",
    "3W",
    "1M",
    "2M",
    "3M",
    "4M",
    "5M",
    "6M",
    "7M",
    "8M",
    "9M",
    "10M",
    "11M",
    "1Y",
    "12M"
  ]
}
yearFractionnumber | null
zeroRatenumber | null
messagestringRequired

성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지.

metaobject | objectRequired
Nested fields

object

clientRequestIdstring | nullRequired

Client correlation value received in X-Request-ID; null when absent.

requestAtstringRequired

UTC time when the server received the request.

requestIdstringRequired

Server-generated UUID for response and log correlation.

responseAtstringRequired

UTC time when the response envelope was created.

object

JSON
{
  "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
}
outputSchema JSON
JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "code": {
      "type": "integer",
      "description": "성공은 `0`. 실패는 에러 번호(`4000`·`4220`·`5000`)."
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "currency": {
          "type": "string",
          "enum": [
            "JPY",
            "KRW",
            "USD"
          ]
        },
        "curveBaseDate": {
          "type": [
            "string",
            "null"
          ],
          "format": "date"
        },
        "date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "Use maturityDate."
        },
        "daycount": {
          "anyOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": [
                "ACT/360",
                "ACT/365"
              ]
            }
          ]
        },
        "discountFactor": {
          "type": [
            "number",
            "null"
          ]
        },
        "referenceAt": {
          "type": [
            "string",
            "null"
          ],
          "description": "Observation time of the source values in timeZone (default UTC), with milliseconds; null when no observation backs the response.",
          "format": "date-time"
        },
        "tenor": {
          "anyOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": [
                "1D",
                "SN",
                "1W",
                "2W",
                "3W",
                "1M",
                "2M",
                "3M",
                "4M",
                "5M",
                "6M",
                "7M",
                "8M",
                "9M",
                "10M",
                "11M",
                "1Y",
                "12M"
              ]
            }
          ]
        },
        "yearFraction": {
          "type": [
            "number",
            "null"
          ]
        },
        "zeroRate": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "required": [
        "currency"
      ],
      "description": "payload. 실패 응답에서는 항상 `null`이다."
    },
    "message": {
      "type": "string",
      "description": "성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지."
    },
    "meta": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "clientRequestId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Client correlation value received in X-Request-ID; null when absent."
            },
            "requestAt": {
              "type": "string",
              "description": "UTC time when the server received the request."
            },
            "requestId": {
              "type": "string",
              "description": "Server-generated UUID for response and log correlation."
            },
            "responseAt": {
              "type": "string",
              "description": "UTC time when the response envelope was created."
            }
          },
          "required": [
            "clientRequestId",
            "requestAt",
            "requestId",
            "responseAt"
          ],
          "description": "Request-response metadata shared by REST and MCP results."
        },
        {
          "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
        }
      ]
    }
  },
  "required": [
    "code",
    "message",
    "meta"
  ],
  "description": "\n        SNAP 응답 래퍼. 성공은 `code: 0` · `message: \"\"`이고 payload는 `data`에 담긴다.\n        프런트엔드는 `code`로 분기한다.\n\n        **\"데이터 없음\"은 실패가 아니다.** 요청이 유효한데 스냅샷이 아직 안 들어왔거나 요청한\n        만기가 커브 범위 밖이면 `code: 0`으로 응답하고 `data` 안쪽 필드를 `null`로 둔다.\n    "
}
Tool annotations
JSON
{
  "title": "Discount Factor",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": true
}

TOOLget_business_day

Business Day

/v1/calendars/business-day. Returns the business day at offset business days from date in the selected calendar. offset 0 returns date itself when it is a business day, and the next business day otherwise. Positive values move forward and negative values move backward; the range is -30 to 30. isBusinessDay and reason describe the requested date; resultDate is the answer. certainty describes resultDate: PREDICTED when any day the search passed through comes from a rule-generated revision, so the answer can move once the real holiday schedule is published. Dates outside the calendar's published coverage return an error.

Input schema

datestring / dateRequired
calendarstringRequired

USD_NEWYORK | KRW_SEOUL | JPY_TOKYO

offsetinteger

Default: 0

inputSchema JSON
JSON
{
  "type": "object",
  "properties": {
    "date": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "format": "date"
    },
    "calendar": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "string",
      "enum": [
        "USD_NEWYORK",
        "KRW_SEOUL",
        "JPY_TOKYO"
      ]
    },
    "offset": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "integer",
      "default": 0
    }
  },
  "required": [
    "date",
    "calendar"
  ],
  "additionalProperties": true
}

Result

codeintegerRequired

성공은 0. 실패는 에러 번호(4000·4220·5000).

dataobject | null

payload. 실패 응답에서는 항상 null이다.

Nested fields
calendarstringRequired

USD_NEWYORK | KRW_SEOUL | JPY_TOKYO

certaintystringRequired
datestring / dateRequired
isBusinessDaybooleanRequired
reasonstringRequired
resultDatestring / dateRequired
messagestringRequired

성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지.

metaobject | objectRequired
Nested fields

object

clientRequestIdstring | nullRequired

Client correlation value received in X-Request-ID; null when absent.

requestAtstringRequired

UTC time when the server received the request.

requestIdstringRequired

Server-generated UUID for response and log correlation.

responseAtstringRequired

UTC time when the response envelope was created.

object

JSON
{
  "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
}
outputSchema JSON
JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "code": {
      "type": "integer",
      "description": "성공은 `0`. 실패는 에러 번호(`4000`·`4220`·`5000`)."
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "calendar": {
          "type": "string",
          "enum": [
            "USD_NEWYORK",
            "KRW_SEOUL",
            "JPY_TOKYO"
          ]
        },
        "certainty": {
          "type": "string"
        },
        "date": {
          "type": "string",
          "format": "date"
        },
        "isBusinessDay": {
          "type": "boolean"
        },
        "reason": {
          "type": "string"
        },
        "resultDate": {
          "type": "string",
          "format": "date"
        }
      },
      "required": [
        "calendar",
        "certainty",
        "date",
        "isBusinessDay",
        "reason",
        "resultDate"
      ],
      "description": "payload. 실패 응답에서는 항상 `null`이다."
    },
    "message": {
      "type": "string",
      "description": "성공은 빈 문자열. 실패는 유저에게 노출해도 되는 메시지."
    },
    "meta": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "clientRequestId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Client correlation value received in X-Request-ID; null when absent."
            },
            "requestAt": {
              "type": "string",
              "description": "UTC time when the server received the request."
            },
            "requestId": {
              "type": "string",
              "description": "Server-generated UUID for response and log correlation."
            },
            "responseAt": {
              "type": "string",
              "description": "UTC time when the response envelope was created."
            }
          },
          "required": [
            "clientRequestId",
            "requestAt",
            "requestId",
            "responseAt"
          ],
          "description": "Request-response metadata shared by REST and MCP results."
        },
        {
          "description": "REST와 MCP가 공유하는 요청·응답 처리 메타데이터."
        }
      ]
    }
  },
  "required": [
    "code",
    "message",
    "meta"
  ],
  "description": "\n        SNAP 응답 래퍼. 성공은 `code: 0` · `message: \"\"`이고 payload는 `data`에 담긴다.\n        프런트엔드는 `code`로 분기한다.\n\n        **\"데이터 없음\"은 실패가 아니다.** 요청이 유효한데 스냅샷이 아직 안 들어왔거나 요청한\n        만기가 커브 범위 밖이면 `code: 0`으로 응답하고 `data` 안쪽 필드를 `null`로 둔다.\n    "
}
Tool annotations
JSON
{
  "title": "Business Day",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": true
}

Call results and errors

tools/call returns content in result.content. Treat isError: true as a failed call. Valid requests can return code 0 with null fields when market data is unavailable. Do not turn null into zero. structuredContent and content JSON follow the REST response envelope and its meta contract. The X-Request-ID sent with tools/call returns as meta.clientRequestId and differs from the server UUID in meta.requestId.