---
title: "Yield Curve & G-Spread"
method: POST
path: "/v1/tools/build_yield_curve_gspread"
tags: ["yield_curve", "g_spread", "fixed-income", "par-curve", "interpolation", "monotone-cubic-hermite", "fritsch-carlson", "benchmark-spread", "tvm-primitive", "mcp:build_yield_curve_gspread"]
---

# Yield Curve & G-Spread

`POST /v1/tools/build_yield_curve_gspread`

## Request

- Base URL: `https://ainumbers.co`
- URL: `https://ainumbers.co/v1/tools/build_yield_curve_gspread`
- Auth: none declared

Builds a par yield curve from caller-supplied benchmark points (at least 2, strictly increasing tenors; no live data) under a named, versioned interpolation, linear (linear@1) or monotone cubic Hermite with Fritsch-Carlson 1980 tangents (monotone_cubic_hermite@1), and reports the G-spread of a bond against that curve: the interpolated benchmark yield at the bond’s maturity and (bond yield minus benchmark yield) x 100 in basis points. A bond maturity outside the benchmark tenor range is refused naming the range, never extrapolated. Every assumption is named in plain sentences in the output.

**Tool URL:** https://ainumbers.co/chaingraph/art-706-yield-curve-gspread.html
**AP2/Policy Mandate export:** yes

## Request body

- object
  - `benchmark_points` object[], required: Caller-supplied benchmark points [{ tenor_years, yield_pct }]: at least 2, strictly increasing tenors, used exactly as given (no live data).
    - `tenor_years` number
    - `yield_pct` number
  - `benchmark_name` string, required: Non-empty string naming the caller-supplied benchmark, echoed into the output curve.
  - `interpolation` 'linear' | 'monotone_cubic_hermite': Named interpolation: 'linear' (linear@1) or 'monotone_cubic_hermite' (monotone_cubic_hermite@1, Fritsch-Carlson 1980). Defaults to linear.
  - `bond` object, required: { maturity_years, yield_pct } of the bond. A maturity_years outside the benchmark tenor range is refused naming the range, never extrapolated.
    - `maturity_years` number
    - `yield_pct` number

## Response `200`

Successful tool execution result

- object
  - `assumptions` string[], required
  - `benchmark_yield_at_maturity_pct` number, nullable, required
  - `curve` object, nullable, required
  - `detail` string
  - `domain_errors` object[]
    - `code` 'BENCHMARK_POINTS_TOO_FEW' | 'MATURITY_OUTSIDE_CURVE_RANGE' | 'TENORS_NOT_STRICTLY_INCREASING', required
    - `text` string, required
  - `error` 'benchmark_points_too_few' | 'maturity_outside_curve_range' | 'tenors_not_strictly_increasing'
  - `g_spread_bp` number, nullable, required
  - `note` string
  - `regulatory_basis` string

---

[API](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite.md) · [All operations](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite/llms.txt) · [OpenAPI document](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite/revisions/b462e4f5bb28?raw)
