Skip to content
HOA Power Tools

Meeting Quorum & Participation Calculator

See whether the participation you entered reaches your rule, and how much more is needed.

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
meeting_quorum.calculate
MCP tool name: meeting_quorum_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/meeting_quorum/runs \
  -H "Content-Type: application/json" \
  -d '{"operation": "meeting_quorum.calculate", "input": { … }}'
Input schema: meeting_quorum.calculate
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "communityName": {
      "type": "string",
      "maxLength": 120
    },
    "meetingType": {
      "default": "owner",
      "type": "string",
      "enum": [
        "owner",
        "board"
      ]
    },
    "snapshotKind": {
      "default": "planning",
      "type": "string",
      "enum": [
        "planning",
        "opening",
        "during"
      ]
    },
    "snapshotLabel": {
      "type": "string",
      "maxLength": 80
    },
    "measurement": {
      "default": "equal_votes",
      "type": "string",
      "enum": [
        "equal_votes",
        "weighted_power"
      ]
    },
    "totalEligible": {
      "type": "string",
      "pattern": "^\\d{1,9}(\\.\\d{1,6})?$"
    },
    "representedPower": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{1,9}(\\.\\d{1,6})?$"
        },
        {
          "type": "string",
          "const": ""
        }
      ]
    },
    "pendingPower": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{1,9}(\\.\\d{1,6})?$"
        },
        {
          "type": "string",
          "const": ""
        }
      ]
    },
    "quorumRule": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "fraction"
            },
            "numerator": {
              "type": "string",
              "pattern": "^\\d{1,9}$"
            },
            "denominator": {
              "type": "string",
              "pattern": "^\\d{1,9}$"
            },
            "comparison": {
              "type": "string",
              "enum": [
                "at_least",
                "more_than"
              ]
            }
          },
          "required": [
            "kind",
            "numerator",
            "denominator",
            "comparison"
          ]
        },
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "const": "fixed"
            },
            "amount": {
              "type": "string",
              "pattern": "^\\d{1,9}(\\.\\d{1,6})?$"
            },
            "comparison": {
              "type": "string",
              "enum": [
                "at_least",
                "more_than"
              ]
            }
          },
          "required": [
            "kind",
            "amount",
            "comparison"
          ]
        }
      ]
    },
    "denominatorDisputed": {
      "type": "boolean"
    },
    "rosterMode": {
      "default": "none",
      "type": "string",
      "enum": [
        "none",
        "full",
        "represented_subset"
      ]
    },
    "roster": {
      "maxItems": 1000,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "weight": {
            "type": "string",
            "pattern": "^\\d{1,9}(\\.\\d{1,6})?$"
          },
          "represented": {
            "type": "boolean"
          },
          "participationNote": {
            "type": "string",
            "maxLength": 80
          }
        },
        "required": [
          "identifier",
          "weight",
          "represented"
        ]
      }
    },
    "ruleReference": {
      "type": "string",
      "maxLength": 1000
    },
    "approval": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "threshold": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "fraction"
                    },
                    "numerator": {
                      "type": "string",
                      "pattern": "^\\d{1,9}$"
                    },
                    "denominator": {
                      "type": "string",
                      "pattern": "^\\d{1,9}$"
                    },
                    "comparison": {
                      "type": "string",
                      "enum": [
                        "at_least",
                        "more_than"
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "numerator",
                    "denominator",
                    "comparison"
                  ]
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "fixed"
                    },
                    "amount": {
                      "type": "string",
                      "pattern": "^\\d{1,9}(\\.\\d{1,6})?$"
                    },
                    "comparison": {
                      "type": "string",
                      "enum": [
                        "at_least",
                        "more_than"
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "amount",
                    "comparison"
                  ]
                }
              ]
            },
            "basis": {
              "type": "string",
              "enum": [
                "yes_no",
                "represented",
                "all_eligible"
              ]
            },
            "yes": {
              "type": "string",
              "pattern": "^\\d{1,9}(\\.\\d{1,6})?$"
            },
            "no": {
              "type": "string",
              "pattern": "^\\d{1,9}(\\.\\d{1,6})?$"
            },
            "abstain": {
              "default": "0",
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\d{1,9}(\\.\\d{1,6})?$"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            "notVoting": {
              "default": "0",
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\d{1,9}(\\.\\d{1,6})?$"
                },
                {
                  "type": "string",
                  "const": ""
                }
              ]
            },
            "tallyComplete": {
              "default": false,
              "type": "boolean"
            }
          },
          "required": [
            "threshold",
            "basis",
            "yes",
            "no"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "locale": {
      "default": "en",
      "type": "string",
      "enum": [
        "en",
        "es"
      ]
    }
  },
  "required": [
    "totalEligible",
    "quorumRule"
  ]
}