Skip to main content
Glama
ryanduguid

Aus Accounting MCP

Refuse an unsupported Division 7A matter

refuse_div7a
Read-onlyIdempotent

Refuses Division 7A queries lacking loan facts, returning an explicit policy error instead of calculating a repayment. Use when no borrower, lender, or principal is provided.

Instructions

Return an explicit refusal for unsupported Division 7A matters.

Takes no arguments: the questions this server refuses arrive with no loan facts, so do not invent a borrower, a lender or a principal to reach it.

Use review_div7a_loan for reviewed s 109N/s 109E loan facts, or get_div7a_benchmark_rate for a reviewed rate. This tool always returns ERR_POLICY_DIV7A_SCOPE_REFUSED with the scope explanation; it never calculates a repayment. No network, writes or lodgements.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYesUnsupported request was refused.
codeYesMachine-readable refusal code.
reasonYesSupported alternatives and excluded matters.
availableYesThis compatibility tool cannot calculate a repayment.
reviewed_engineYesSeparate tools expose the reviewed engine scope.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv0.1.13
    • removedInput schema / properties / borrower_name
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Legacy borrower label; ignored. Omit it. This refusal tool does not look up a borrower or calculate a repayment.",
      -  "title": "Borrower Name"
      -}
    • removedInput schema / properties / is_secured_25_year
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "boolean"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Legacy secured-loan flag; ignored. Omit it. Does not establish eligibility or enable a calculation.",
      -  "title": "Is Secured 25 Year"
      -}
    • removedInput schema / properties / lender_entity_name
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Legacy lender label; ignored. Omit it. No entity record is looked up or written.",
      -  "title": "Lender Entity Name"
      -}
    • removedInput schema / properties / loan_principal
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Legacy principal; ignored beyond validation, and this tool always refuses unsupported scope. Omit it rather than inventing a figure. When supplied: AUD decimal string, e.g. \"1000.00\"; finite, at most 2 decimal places, absolute value at most 1000000000000.00.",
      -  "title": "Loan Principal"
      -}
    • removedInput schema / properties / start_fy
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Legacy financial-year value; ignored. Omit it. Use review_div7a_loan with explicit income years for supported reviews.",
      -  "title": "Start Fy"
      -}
  2. Changed1 schema field changedv0.1.10
    • addedInput schema / additionalProperties
      Added value: +false
  3. Changed21 schema fields changedv0.1.9
    • addedInput schema / properties / borrower_name / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / borrower_name / default
      Added value: +null
    • changedInput schema / properties / borrower_name / description
      Previous value: -"Legacy borrower label; ignored. This refusal tool does not look up a borrower or calculate a repayment."New value: +"Legacy borrower label; ignored. Omit it. This refusal tool does not look up a borrower or calculate a repayment."
    • removedInput schema / properties / borrower_name / type
      Removed value: -"string"
    • addedInput schema / properties / is_secured_25_year / anyOf
      Added value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / is_secured_25_year / default
      Previous value: -falseNew value: +null
    • changedInput schema / properties / is_secured_25_year / description
      Previous value: -"Legacy secured-loan flag; defaults to false and is ignored. Does not establish eligibility or enable a calculation."New value: +"Legacy secured-loan flag; ignored. Omit it. Does not establish eligibility or enable a calculation."
    • removedInput schema / properties / is_secured_25_year / type
      Removed value: -"boolean"
    • addedInput schema / properties / lender_entity_name / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / lender_entity_name / default
      Added value: +null
    • changedInput schema / properties / lender_entity_name / description
      Previous value: -"Legacy lender label; ignored. No entity record is looked up or written."New value: +"Legacy lender label; ignored. Omit it. No entity record is looked up or written."
    • removedInput schema / properties / lender_entity_name / type
      Removed value: -"string"
    • addedInput schema / properties / loan_principal / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / loan_principal / default
      Added value: +null
    • changedInput schema / properties / loan_principal / description
      Previous value: -"Legacy principal, validated then discarded; this tool always refuses unsupported scope. AUD decimal string, e.g. \"1000.00\"; finite, at most 2 decimal places, absolute value at most 1000000000000.00."New value: +"Legacy principal; ignored beyond validation, and this tool always refuses unsupported scope. Omit it rather than inventing a figure. When supplied: AUD decimal string, e.g. \"1000.00\"; finite, at most 2 decimal places, absolute value at most 1000000000000.00."
    • removedInput schema / properties / loan_principal / type
      Removed value: -"string"
    • addedInput schema / properties / start_fy / anyOf
      Added value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / start_fy / default
      Previous value: -2025New value: +null
    • changedInput schema / properties / start_fy / description
      Previous value: -"Legacy financial-year value; defaults to 2025 and is ignored. Use review_div7a_loan with explicit income years for supported reviews."New value: +"Legacy financial-year value; ignored. Omit it. Use review_div7a_loan with explicit income years for supported reviews."
    • removedInput schema / properties / start_fy / type
      Removed value: -"integer"
    • removedInput schema / required
      Removed value: -[
      -  "borrower_name",
      -  "lender_entity_name",
      -  "loan_principal"
      -]
  4. Changed3 schema fields changedv0.1.8
    • addedOutput schema / properties
      Added value: +{
      +  "available": {
      +    "const": false,
      +    "description": "This compatibility tool cannot calculate a repayment.",
      +    "title": "Available",
      +    "type": "boolean"
      +  },
      +  "code": {
      +    "const": "ERR_POLICY_DIV7A_SCOPE_REFUSED",
      +    "description": "Machine-readable refusal code.",
      +    "title": "Code",
      +    "type": "string"
      +  },
      +  "ok": {
      +    "const": false,
      +    "description": "Unsupported request was refused.",
      +    "title": "Ok",
      +    "type": "boolean"
      +  },
      +  "reason": {
      +    "description": "Supported alternatives and excluded matters.",
      +    "title": "Reason",
      +    "type": "string"
      +  },
      +  "reviewed_engine": {
      +    "const": true,
      +    "description": "Separate tools expose the reviewed engine scope.",
      +    "title": "Reviewed Engine",
      +    "type": "boolean"
      +  }
      +}
    • addedOutput schema / required
      Added value: +[
      +  "ok",
      +  "available",
      +  "reviewed_engine",
      +  "code",
      +  "reason"
      +]
    • changedOutput schema / title
      Previous value: -"refuse_div7aDictOutput"New value: +"ScopeRefusal"
  5. Changed5 schema fields changedv0.1.7
    • addedInput schema / properties / borrower_name / description
      Added value: +"Legacy borrower label; ignored. This refusal tool does not look up a borrower or calculate a repayment."
    • addedInput schema / properties / is_secured_25_year / description
      Added value: +"Legacy secured-loan flag; defaults to false and is ignored. Does not establish eligibility or enable a calculation."
    • addedInput schema / properties / lender_entity_name / description
      Added value: +"Legacy lender label; ignored. No entity record is looked up or written."
    • addedInput schema / properties / loan_principal / description
      Added value: +"Legacy principal, validated then discarded; this tool always refuses unsupported scope. AUD decimal string, e.g. \"1000.00\"; finite, at most 2 decimal places, absolute value at most 1000000000000.00."
    • addedInput schema / properties / start_fy / description
      Added value: +"Legacy financial-year value; defaults to 2025 and is ignored. Use review_div7a_loan with explicit income years for supported reviews."
  6. First observedv0.1.6

TDQS

A5/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds the specific error code returned (ERR_POLICY_DIV7A_SCOPE_REFUSED) and the guarantee of no network, writes, or lodgements. It also instructs the agent not to invent loan facts, providing behavioral guardrails.

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 concise (three short paragraphs) and front-loaded with the core purpose. Every sentence adds value: purpose, no-argument rationale, alternatives, error behavior, and side-effect guarantees. No filler or redundancy.

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?

The tool is simple (zero params) and the description covers purpose, usage, alternatives, return value, and side effects. The output schema exists (per context signal), and the description need not explain return values further. Everything an agent needs to call correctly is present.

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?

With zero parameters, the description explains why there are no arguments ('the questions this server refuses arrive with no loan facts') and explicitly warns against inventing facts. This adds meaning beyond the empty schema, exceeding the baseline for no-parameter tools.

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 states the tool's purpose clearly: 'Return an explicit refusal for unsupported Division 7A matters.' It distinguishes from siblings by naming review_div7a_loan and get_div7a_benchmark_rate as alternatives for supported matters, so an agent can tell when to use this tool vs others.

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?

Explicitly states when to use this tool (for unsupported matters) and when to use alternatives (review_div7a_loan for reviewed loan facts, get_div7a_benchmark_rate for a reviewed rate). It also clarifies what the tool does not do ('never calculates a repayment'), leaving no ambiguity.

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