get_provision_tree
Returns the structure of a title, starting at its top-level Chapters, Parts and Schedules. Use it to find the provision you need, then read it with get_provision_text.
| Fact | Value |
|---|---|
| Tool | get_provision_tree |
| Partner scope required | legislation:read |
| Subscriber tier required | AI Pro |
Accepts as_at | no |
Parameters
| Name | Type | Required | Default |
|---|---|---|---|
legislation_id | string | yes | |
depth | integer | no | 1 |
node_id | string | no | null |
cursor | string | no | null |
response_format | string | no | "concise" |
limit | integer | no | 75 |
Notes
- Start with no
node_idto see the top level, then pass a node'sidback asnode_idto expand it. depthis how many levels to descend below the starting point, and with nonode_idthe starting point is every root node. Sodepth=1on a wide Act returns its roots and all their children.- Pages.
limitcaps the nodes per page (default 75, server maximum 400) andcursorcontinues. A byte budget also applies; the response reportslimit_requestedandlimit_applied. response_format="concise"(default) givesid,pinpoint,headingandchild_count."detailed"addstype,number,parent_id,sequenceandword_count.
Request (get_provision_tree with {"legislation_id":"C2004A03712"})
Python SDK
import asyncio, os
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async def main():
headers = {"Authorization": f"Bearer {os.environ['LAWATLAS_API_KEY']}"}
async with streamablehttp_client("https://advisor.lawatlas.ai/api/mcp-http/mcp", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
result = await session.call_tool("get_provision_tree", {
"legislation_id": "C2004A03712"
})
print(result.content[0].text)
asyncio.run(main())
curl
curl -s https://advisor.lawatlas.ai/api/mcp-http/mcp \
-H "Authorization: Bearer $LAWATLAS_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_provision_tree","arguments":{"legislation_id":"C2004A03712"}}}'
Response, as Advisor returned it on 10 October 2026. The tool's result is the JSON text of result.content[0].text; lists and long text are trimmed where marked "...".
{
"schema_version": "3.5",
"result": [
{
"id": "4afcfb70-4a2b-4d88-a56b-b51395da10c8",
"pinpoint": "Long Title",
"heading": "Long Title",
"child_count": 0
},
{
"id": "3cbed345-a365-4bb0-b21b-24f9511fc836",
"pinpoint": "Part I",
"heading": "Preliminary",
"child_count": 8
},
{
"id": "fda9778f-8023-4464-abdc-c0ff62196162",
"pinpoint": "Part II",
"heading": "Interpretation",
"child_count": 3
},
"... 72 more"
],
"page": {
"returned": 75,
"total": 109,
"next_cursor": "eyJvIjogNzV9",
"truncated": false,
"limit_requested": 75,
"limit_applied": 75
},
"legislation_id": "eae28dff-3ff5-48eb-af3f-38686e6f650e",
"node_id": null,
"depth": 1,
"notes": [
"Expand any node with node_id=<id>. Nodes with children here include: Part I (8), Part II (3), Part III (3), Part IIIA (8), Part IIIB (4)."
],
"usage": "Structure only - no provision text. Fetch a provision with get_provision_text, or find one by concept with search_provisions."
}
Data currency: Advisor serves the text of titles that the Federal Register of Legislation records as in force. It does not return the text of a repealed, ceased or sunset title, for any date.
- A title or a served provision carries a status block (
status, orin_forcein a list) within_force,frl_statusandconfirmed_with_frl_at: when Advisor last confirmed the status with the Federal Register.- Served text and search hits carry a
compilationblock withregister_id,compilation_no,check_dateandstate.stateis one of four values:
current: the Federal Register's latest list names the compilation the text comes from.not_current: the Federal Register lists a newer compilation. Tell the user, and use thefrl_linkin the response.pending_compilation: amendments have commenced that are not yet compiled, so the text does not include them.not_confirmed: the Federal Register lists no current compilation, or Advisor holds no record of one. Treat it as unknown.TITLE_NOT_IN_FORCEandCOMPILATION_NOT_CURRENTare answers, not failures. Show the user the Federal Register link in the response and do not fill the gap from another source.
Errors
| Code | Meaning | What to do |
|---|---|---|
TITLE_NOT_IN_FORCE | The title is not in force; its structure is not served | Show the user the frl_link in the response |
NOT_FOUND | No title or node has this id | Check the id |