Skip to main content
Glama
ryanduguid

Australian Accounting MCP

Get the Division 7A benchmark rate

get_div7a_benchmark_rate
Read-onlyIdempotent

Retrieve the reviewed Division 7A benchmark rate for a specified income year (YYYY-YY) to test minimum yearly repayments. Returns UNKNOWN for unreviewed years; includes optional full provenance.

Instructions

Return the reviewed s 109N(2) rate for a year, or UNKNOWN.

Years use the YYYY-YY form, such as 2026-27. Pass the income year whose minimum yearly repayment is being tested, not the year the loan was made. The delegated engine fails closed outside its reviewed frozen table and does not read the network. response_detail defaults to summary; pass full for the complete provenance and statutory trace. Use review_div7a_loan to review supplied loan facts. Returns cited data without writes; not advice or a live rate lookup.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
year_of_incomeYesIncome year being reviewed, YYYY-YY, e.g. "2025-26". Years outside the engine reviewed rate table return UNKNOWN.
response_detailNo"summary" (default) returns the concise result; "full" includes the complete engine audit and provenance.summary

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv0.1.13
    • addedInput schema / properties / year_of_income / maxLength
      Added value: +7
    • addedOutput schema / $defs / Manifest
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Which statutory tables a figure was computed from, and their digests.",
      +  "properties": {
      +    "rate_table_uris": {
      +      "description": "Statutory rate tables this answer consumed, each with the digest of what was read. Empty when no rate table was consulted.",
      +      "items": {
      +        "$ref": "#/$defs/RateTableSource"
      +      },
      +      "title": "Rate Table Uris",
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "rate_table_uris"
      +  ],
      +  "title": "Manifest",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / RateFull / properties / manifest
      Added value: +{
      +  "$ref": "#/$defs/Manifest"
      +}
    • changedOutput schema / $defs / RateFull / required
      Previous value: -[
      -  "ok",
      -  "engine",
      -  "engine_version",
      -  "law_content_date",
      -  "law_compilation",
      -  "disclaimer",
      -  "year_of_income",
      -  "verdict",
      -  "benchmark_rate",
      -  "reason",
      -  "provenance",
      -  "statutory_trace"
      -]New value: +[
      +  "ok",
      +  "engine",
      +  "engine_version",
      +  "law_content_date",
      +  "law_compilation",
      +  "disclaimer",
      +  "year_of_income",
      +  "verdict",
      +  "benchmark_rate",
      +  "reason",
      +  "provenance",
      +  "manifest",
      +  "statutory_trace"
      +]
    • addedOutput schema / $defs / RateTableSource
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "sha256": {
      +      "description": "SHA-256 of the table text the figure was computed from.",
      +      "title": "Sha256",
      +      "type": "string"
      +    },
      +    "uri": {
      +      "description": "The rate table the engine read.",
      +      "title": "Uri",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "uri",
      +    "sha256"
      +  ],
      +  "title": "RateTableSource",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / VerificationSource / properties / rate_table_uris
      Added value: +{
      +  "description": "Statutory rate tables this answer consumed, each with the digest of what was read. Empty when the figure came from the request alone.",
      +  "items": {
      +    "$ref": "#/$defs/RateTableSource"
      +  },
      +  "title": "Rate Table Uris",
      +  "type": "array"
      +}
    • changedOutput schema / $defs / VerificationSource / required
      Previous value: -[
      -  "verify_at"
      -]New value: +[
      +  "verify_at",
      +  "rate_table_uris"
      +]
  2. Changed1 schema field changedv0.1.10
    • addedInput schema / additionalProperties
      Added value: +false
  3. Changed4 schema fields changedv0.1.8
    • addedOutput schema / $defs
      Added value: +{
      +  "RateFull": {
      +    "additionalProperties": true,
      +    "not": {
      +      "required": [
      +        "response_detail"
      +      ]
      +    },
      +    "properties": {
      +      "benchmark_rate": {
      +        "anyOf": [
      +          {
      +            "description": "Finite engine decimal string, including exponent notation; retain its precision.",
      +            "pattern": "^[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Decimal fraction, e.g. 0.08 means 8%; null if UNKNOWN.",
      +        "title": "Benchmark Rate"
      +      },
      +      "disclaimer": {
      +        "description": "Experimental scope and human-review requirements.",
      +        "title": "Disclaimer",
      +        "type": "string"
      +      },
      +      "engine": {
      +        "description": "Delegated distribution that produced this result.",
      +        "title": "Engine",
      +        "type": "string"
      +      },
      +      "engine_version": {
      +        "description": "Installed version of that engine.",
      +        "title": "Engine Version",
      +        "type": "string"
      +      },
      +      "law_compilation": {
      +        "description": "Compiled law identified by the engine.",
      +        "title": "Law Compilation",
      +        "type": "string"
      +      },
      +      "law_content_date": {
      +        "description": "Date in YYYY-MM-DD form.",
      +        "format": "date",
      +        "pattern": "^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$",
      +        "title": "Law Content Date",
      +        "type": "string"
      +      },
      +      "ok": {
      +        "const": true,
      +        "description": "The review ran; this does not mean compliance or a known verdict.",
      +        "title": "Ok",
      +        "type": "boolean"
      +      },
      +      "provenance": {
      +        "additionalProperties": true,
      +        "description": "Unmodified engine source metadata and review provenance.",
      +        "title": "Provenance",
      +        "type": "object"
      +      },
      +      "reason": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Engine explanation when the rate is unavailable; otherwise null.",
      +        "title": "Reason"
      +      },
      +      "statutory_trace": {
      +        "description": "Engine statutory citations and audit trace; full only.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "title": "Statutory Trace",
      +        "type": "array"
      +      },
      +      "verdict": {
      +        "description": "Whether the engine has a reviewed rate.",
      +        "enum": [
      +          "KNOWN",
      +          "UNKNOWN"
      +        ],
      +        "title": "Verdict",
      +        "type": "string"
      +      },
      +      "year_of_income": {
      +        "description": "Income or dataset year in YYYY-YY form.",
      +        "pattern": "^[0-9]{4}-[0-9]{2}$",
      +        "title": "Year Of Income",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "ok",
      +      "engine",
      +      "engine_version",
      +      "law_content_date",
      +      "law_compilation",
      +      "disclaimer",
      +      "year_of_income",
      +      "verdict",
      +      "benchmark_rate",
      +      "reason",
      +      "provenance",
      +      "statutory_trace"
      +    ],
      +    "title": "RateFull",
      +    "type": "object"
      +  },
      +  "RateSummary": {
      +    "additionalProperties": true,
      +    "description": "Concise rate result with source link.",
      +    "properties": {
      +      "benchmark_rate": {
      +        "anyOf": [
      +          {
      +            "description": "Finite engine decimal string, including exponent notation; retain its precision.",
      +            "pattern": "^[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Decimal fraction, e.g. 0.08 means 8%; null if UNKNOWN.",
      +        "title": "Benchmark Rate"
      +      },
      +      "disclaimer": {
      +        "description": "Experimental scope and human-review requirements.",
      +        "title": "Disclaimer",
      +        "type": "string"
      +      },
      +      "engine": {
      +        "description": "Delegated distribution that produced this result.",
      +        "title": "Engine",
      +        "type": "string"
      +      },
      +      "engine_version": {
      +        "description": "Installed version of that engine.",
      +        "title": "Engine Version",
      +        "type": "string"
      +      },
      +      "law_compilation": {
      +        "description": "Compiled law identified by the engine.",
      +        "title": "Law Compilation",
      +        "type": "string"
      +      },
      +      "law_content_date": {
      +        "description": "Date in YYYY-MM-DD form.",
      +        "format": "date",
      +        "pattern": "^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$",
      +        "title": "Law Content Date",
      +        "type": "string"
      +      },
      +      "ok": {
      +        "const": true,
      +        "description": "The review ran; this does not mean compliance or a known verdict.",
      +        "title": "Ok",
      +        "type": "boolean"
      +      },
      +      "reason": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Engine explanation when the rate is unavailable; otherwise null.",
      +        "title": "Reason"
      +      },
      +      "response_detail": {
      +        "const": "summary",
      +        "description": "Summary response marker.",
      +        "title": "Response Detail",
      +        "type": "string"
      +      },
      +      "source": {
      +        "$ref": "#/$defs/VerificationSource",
      +        "description": "Concise verification source."
      +      },
      +      "verdict": {
      +        "description": "Whether the engine has a reviewed rate.",
      +        "enum": [
      +          "KNOWN",
      +          "UNKNOWN"
      +        ],
      +        "title": "Verdict",
      +        "type": "string"
      +      },
      +      "year_of_income": {
      +        "description": "Income or dataset year in YYYY-YY form.",
      +        "pattern": "^[0-9]{4}-[0-9]{2}$",
      +        "title": "Year Of Income",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "ok",
      +      "engine",
      +      "engine_version",
      +      "law_content_date",
      +      "law_compilation",
      +      "disclaimer",
      +      "year_of_income",
      +      "verdict",
      +      "benchmark_rate",
      +      "reason",
      +      "response_detail",
      +      "source"
      +    ],
      +    "title": "RateSummary",
      +    "type": "object"
      +  },
      +  "VerificationSource": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "verify_at": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Engine verification URL; empty or null when none is available.",
      +        "title": "Verify At"
      +      }
      +    },
      +    "required": [
      +      "verify_at"
      +    ],
      +    "title": "VerificationSource",
      +    "type": "object"
      +  }
      +}
    • removedOutput schema / additionalProperties
      Removed value: -true
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "$ref": "#/$defs/RateSummary"
      +  },
      +  {
      +    "$ref": "#/$defs/RateFull"
      +  }
      +]
    • changedOutput schema / title
      Previous value: -"get_div7a_benchmark_rateDictOutput"New value: +"Div7aRate"
  4. Changed2 schema fields changedv0.1.7
    • addedInput schema / properties / response_detail / description
      Added value: +"\"summary\" (default) returns the concise result; \"full\" includes the complete engine audit and provenance."
    • addedInput schema / properties / year_of_income / description
      Added value: +"Income year being reviewed, YYYY-YY, e.g. \"2025-26\". Years outside the engine reviewed rate table return UNKNOWN."
  5. Added

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses that the delegated engine fails closed, is limited to a reviewed frozen table, and does not read the network. This is material behavioral context because it tells the agent the result may be UNKNOWN and is not a live rate. It also clarifies that the tool makes no writes and is not advice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the primary result is in the first sentence, followed by parameter usage, behavioral constraints, and alternatives. Every sentence adds operational value and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with full schema coverage, an output schema, and strong annotations, the description is complete. It tells the agent what to pass, how to interpret the result, what the detail switch does, when to use the sibling tool, and what the tool will and will not do.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds critical parameter meaning: the year_of_income must be the income year being tested, not the loan origination year. It also explains response_detail's behavior beyond the schema, saying 'full' provides complete provenance and statutory trace.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Return the reviewed s 109N(2) rate for a year, or UNKNOWN.' This immediately distinguishes the tool from siblings like review_div7a_loan and get_ato_benchmarks by clarifying that it returns a single benchmark rate rather than performing a loan review or a general benchmark lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: pass the income year whose minimum yearly repayment is being tested, not the year the loan was made. It also names the alternative sibling, review_div7a_loan, for reviewing supplied loan facts, and states what the tool is not (not advice, not a live rate lookup).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.