-
Notifications
You must be signed in to change notification settings - Fork 0
Examples
Real-world use cases. Each shows the MCP tool call, the equivalent curl, and what to expect back.
ars_get_section(citation="16-925")
curl "https://ars.cactus.watch/api/ars/16-925"Returns the full text of A.R.S. § 16-925 (sign disclaimer law). Useful when you know exactly what you want.
ars_get_section(citation="16-121.01")
curl "https://ars.cactus.watch/api/ars/16-121.01"Decimal sections work the same way. The mirror handles both the citation form (.01) and the URL form (-01) internally.
ars_search(query="campaign contribution", title=16)
curl "https://ars.cactus.watch/api/ars/search?q=campaign+contribution&title=16"Returns ranked snippets in Title 16 (Elections). Useful when you don't know the cite.
ars_search(query="VRKA")
Returns the relevant Prop 211 sections (16-971 through 16-979). VRKA is a specific term that returns clean results.
ars_list_sections(title=16, limit=200)
Returns every section in Title 16 with its citation and section name. Useful for "what's actually in this title."
Definitions usually live in the first section of each chapter (e.g., 16-101, 16-901, 16-941, etc.) or in the title's general definitions section.
ars_search(query="definitions", title=16)
Returns sections that define terms. To get a specific definition, narrow further or just look up the section number.
ars_get_section(citation="16-901")
ars_get_section(citation="16-901.01")
Just call twice. Useful for tracking when a base section was amended or split.
ars_search(query="independent expenditure", limit=50)
Returns up to 50 sections mentioning the phrase. Use limit to control how many you scan.
ars_get_section("16-925") # the rules
ars_get_section("16-1019") # ROW provisions
ars_search("disclaimer", title=16, limit=10)
ars_get_section("39-121") # general open records statute
ars_search("public records", title=39)
ars_search("open meeting", title=38, limit=20)
ars_list_sections(title=16, limit=359) # all of Title 16
ars_search("voter registration", title=16, limit=20)
A typical multi-step civic-research loop:
-
Get oriented:
ars_list_titles()to see the landscape - Find the right title: narrow to e.g. Title 16 for elections
-
Browse:
ars_list_sections(title=16, limit=200)to see section names -
Search within:
ars_search(query="X", title=16)to find specific topics -
Read deeply:
ars_get_section(citation="16-Y")to get full text - Cross-reference: repeat for related sections
That's the standard research loop. The MCP makes each step a single tool call instead of a curl + parse + normalize cycle.
For campaign finance work specifically, pair this MCP with the SOS MCP:
- ARS MCP for "what does the law require?"
- SOS MCP for "did this committee comply?"
Example workflow:
-
ars_get_section("16-925")— read the disclaimer requirements -
sos_committee_transactions(entity_id=...)— see what a committee actually filed -
sos_vrka_search(filer_id=...)— see if they filed VRKA when they should have - Cross-reference against the statutory triggers in
ars_get_section("16-973")
That's the full civic-tech research loop.