Skip to content
HOA Power Tools

Special Assessment Calculator

Turn a project cost into a clear funding gap and payment options per home.

Using this tool from an agent

The same operations this page runs, over HTTP or MCP. Schemas are the ones the server enforces, so what is written here is what will actually be accepted.

Operations

OperationEngineCost
special_assessment.calculate
MCP tool name: special_assessment_calculate
deterministicNo key needed
No credential needed. Deterministic arithmetic, so it costs no allowance and is rate limited by address.

Calling it

curl -X POST https://tools.rodri.ai/api/agent/tools/special_assessment/runs \
  -H "Content-Type: application/json" \
  -d '{"operation": "special_assessment.calculate", "input": { … }}'
Input schema: special_assessment.calculate
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "projectLabel": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "communityName": {
      "type": "string",
      "maxLength": 120
    },
    "currency": {
      "default": "USD",
      "type": "string",
      "enum": [
        "USD",
        "EUR",
        "GBP",
        "CAD",
        "MXN"
      ]
    },
    "costLines": {
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "amount": {
            "type": "string",
            "pattern": "^\\d{1,12}(\\.\\d{1,4})?$"
          },
          "inContingencyBasis": {
            "default": true,
            "type": "boolean"
          }
        },
        "required": [
          "label",
          "amount"
        ]
      }
    },
    "contingencyPercent": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{1,3}(\\.\\d{1,4})?$"
        },
        {
          "type": "string",
          "const": ""
        }
      ]
    },
    "reserveDraw": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{1,12}(\\.\\d{1,4})?$"
        },
        {
          "type": "string",
          "const": ""
        }
      ]
    },
    "availableReserveBalance": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{1,12}(\\.\\d{1,4})?$"
        },
        {
          "type": "string",
          "const": ""
        }
      ]
    },
    "otherFunding": {
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "amount": {
            "type": "string",
            "pattern": "^\\d{1,12}(\\.\\d{1,4})?$"
          }
        },
        "required": [
          "label",
          "amount"
        ]
      }
    },
    "unitCount": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 20000
    },
    "allocationMode": {
      "default": "equal",
      "type": "string",
      "enum": [
        "equal",
        "classes"
      ]
    },
    "unitClasses": {
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 60
          },
          "unitCount": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 20000
          },
          "weightPerUnit": {
            "type": "string",
            "pattern": "^\\d{1,7}(\\.\\d{1,6})?$"
          }
        },
        "required": [
          "name",
          "unitCount",
          "weightPerUnit"
        ]
      }
    },
    "allocationBasisNote": {
      "type": "string",
      "maxLength": 400
    },
    "paymentOptions": {
      "maxItems": 3,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "installmentCount": {
            "type": "integer",
            "minimum": 1,
            "maximum": 60
          },
          "spacing": {
            "default": "monthly",
            "type": "string",
            "enum": [
              "monthly",
              "quarterly"
            ]
          }
        },
        "required": [
          "id",
          "installmentCount"
        ]
      }
    },
    "firstPaymentDate": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        {
          "type": "string",
          "const": ""
        }
      ]
    },
    "approvalStatus": {
      "default": "proposed",
      "type": "string",
      "enum": [
        "proposed",
        "approved_per_user",
        "unknown"
      ]
    },
    "locale": {
      "default": "en",
      "type": "string",
      "enum": [
        "en",
        "es"
      ]
    }
  },
  "required": [
    "projectLabel",
    "costLines",
    "unitCount"
  ]
}