Municipal Income and Expenditure Totals by Financial Year (South Africa)
municipalmoney/income-expenditure-by-year
Aggregates South Africa's Municipal Money Income and Expenditure (v2) dataset by municipality for one financial year (the calendar year in which it ends; the dataset starts with 2019-20): one row per municipality with its code, name, the number of dataset rows behind it and the sum of their amounts, plus the same two figures across all municipalities and the total municipality count for paging. The sum covers every line item, amount type (actual, budget, audited) and period in the dataset for that year, so it is a volume indicator, not net income or a surplus. National Treasury data as served by Omnial, not an official National Treasury product.
Price
$0.0026 per call
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $5.
Data source
National Treasury (South Africa)
Source: National Treasury (South Africa), Municipal Money, with publication date of the data. Terms of Use: municipaldata.treasury.gov.za/terms. Served by Eden Engine; not an official National Treasury product.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
Connect once and your AI can find and run this tool, and any other it needs.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "municipalmoney/income-expenditure-by-year" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "municipalmoney/income-expenditure-by-year" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "municipalmoney/income-expenditure-by-year", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "municipalmoney/income-expenditure-by-year", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.0026 |
- Updated
- Oct 20, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"financial_year"
],
"properties": {
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number to read, starting at 1. Leave out for the first page. Use total_cell_count and the page size to work out how many pages there are."
},
"page_size": {
"type": "integer",
"default": 50,
"maximum": 300,
"minimum": 1,
"description": "Municipalities per page, 1 to 300. Defaults to 50. A year has a little over 250 municipalities, so 300 returns them all in one page."
},
"financial_year": {
"type": "integer",
"maximum": 2100,
"minimum": 2020,
"description": "The calendar year in which the financial year ends, as the dataset records it (financial_year_end.year). 2023 selects the financial year ending in 2023. The v2 dataset starts with 2019-20, so the earliest year is 2020."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"required": [
"cells",
"total_cell_count"
],
"properties": {
"cell": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "The filter that was applied, echoed by the source."
},
"page": {
"type": "integer"
},
"cells": {
"type": "array",
"items": {
"type": "object",
"required": [
"demarcation.code",
"demarcation.label"
],
"properties": {
"_count": {
"type": "integer",
"description": "Dataset rows summed for this municipality and year."
},
"amount.sum": {
"type": "number",
"description": "Sum of amount over those rows: every line item, amount type and period together. Not net income or a surplus."
},
"demarcation.code": {
"type": "string",
"description": "Municipal Demarcation Board code; look it up with the municipality profile tool."
},
"demarcation.label": {
"type": "string",
"description": "Municipality name."
}
},
"additionalProperties": true
},
"description": "One row per municipality on this page."
},
"order": {
"type": "array",
"items": {}
},
"status": {
"type": "string"
},
"summary": {
"type": "object",
"description": "The same two figures, _count and amount.sum, over every municipality in the year.",
"additionalProperties": true
},
"page_size": {
"type": "integer"
},
"aggregates": {
"type": "array",
"items": {
"type": "string"
}
},
"attributes": {
"type": "array",
"items": {
"type": "string"
}
},
"total_cell_count": {
"type": "integer",
"description": "How many municipalities the year has, across all pages."
}
},
"description": "The aggregate as the source returns it: one cell per municipality, an all-municipality summary, and the page position.",
"additionalProperties": true
}