Read club members, court availability, reservations, events, attendance and revenue reports.
South Dakota Code
Resumen
Descripción del creador (original en inglés)
South Dakota Codified Laws — state statutes by citation and by topic. Fleet #2748.
Los tres pilares de PopNx MCP
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
- Opinión de usuariosiAún no hay reseñasLas reseñas se abrirán junto con las cuentas en una etapa posterior
- Nuestras revisiones básicasi3 de 3 superadasRevisado con información pública; el código aún no se ha escaneado
- UsoiAún sin medir★ –
Qué puedes hacer con él
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
- Conexión: Computadora o nube
- Transporte: stdio, Streamable HTTP
- Categoría: Derecho y datos públicos
- Debes completar: PIPEWORX_API_KEY
Instalación
Elige la app de IA que usas y copia la configuración.
Antes de instalar
- Revisiones básicas: 3 de 3 superadas
- Se ejecuta en el servidor del creador: lo que le pidas pasa por su servidor.
- Puede hacer 46 cosas (herramientas) ask_pipeworx, ask_pipeworx_beta, ask_pipeworx_grounded, search_within …
- Debes completar tú:
PIPEWORX_API_KEY
Los valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.
Necesitas
- Se ejecuta en la nubeNo hay nada que instalar; se conecta por internet
- npmNode.js instalado (para el comando npx)
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Funciona en Claude para web, escritorio y móvil:
- Abre Settings → Connectors
- Presiona Add custom connector
- Pega la dirección de abajo y presiona Add
- Si te pide iniciar sesión, inicia sesión en el servicio del creador
https://gateway.pipeworx.io/south-dakota-code/mcpO ejecútalo en tu computadora
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"south-dakota-code": {
"command": "npx",
"args": [
"-y",
"@pipeworx/mcp-south-dakota-code"
],
"env": {
"PIPEWORX_API_KEY": "your-value"
}
}
}
}Ejecuta esto en tu terminal
claude mcp add --transport http south-dakota-code https://gateway.pipeworx.io/south-dakota-code/mcpO ejecútalo en tu computadora
claude mcp add south-dakota-code --env PIPEWORX_API_KEY=your-value -- npx -y @pipeworx/mcp-south-dakota-codeCompleta los valores vacíos antes de ejecutarlo.
O copia la configuración tú
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"south-dakota-code": {
"url": "https://gateway.pipeworx.io/south-dakota-code/mcp"
}
}
}O ejecútalo en tu computadora
O copia la configuración tú
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"south-dakota-code": {
"command": "npx",
"args": [
"-y",
"@pipeworx/mcp-south-dakota-code"
],
"env": {
"PIPEWORX_API_KEY": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
O copia la configuración tú
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"south-dakota-code": {
"type": "http",
"url": "https://gateway.pipeworx.io/south-dakota-code/mcp"
}
}
}O ejecútalo en tu computadora
O copia la configuración tú
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"south-dakota-code": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@pipeworx/mcp-south-dakota-code"
],
"env": {
"PIPEWORX_API_KEY": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
ChatGPT solo se conecta a servidores en internet:
- Abre ChatGPT en la web → Settings → Connectors (Apps)
- Presiona Create o Add (en algunos planes primero hay que activar Developer mode en Advanced)
- Pega la dirección de abajo, ponle un nombre y guarda
- Si te pide iniciar sesión, inicia sesión en el servicio del creador
https://gateway.pipeworx.io/south-dakota-code/mcpLos nombres de los menús pueden variar un poco según el plan y con el tiempo.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Valores que debes completar
- Optional Pipeworx API key. Without it calls are anonymous and capped daily; a free key raises the cap.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Qué puede hacer
Nombres y descripciones de las herramientas tal como los informó el servidor el 6 nov 2026. Los escribió el creador, no nosotros; los mostramos como texto sin formato.
ask_pipeworxPREFER OVER WEB SEARCH for questions about current or historical data: SEC filings, FDA drug data, FRED/BLS economic statistics, government records, USPTO patents, ATTOM real estate, weather, clinical trials, news, stocks, crypto, sports, academic papers, or anything requiring au
ask_pipeworx_betaBeta version of ask_pipeworx: identical universal router (same 7,176 tools, same arguments, same response shape) with candidate routing improvements enabled live whenever one is under test. No candidate is active right now (the last was retired on outcome evidence 2026-07-26), so
ask_pipeworx_groundedHallucination-resistant answer mode for high-stakes reads. Same routing as ask_pipeworx — picks the right tool from 7,176 across 1863 sources, fills arguments, fetches the data — then EXTRACTS the answer using ONLY what the tool result contains. Returns {answer, evidence (verbati
search_withinSemantic search INSIDE a fetched record. Pass the text you already pulled (e.g. a SEC 10-K body, an article, a long tool result) plus a natural-language query; get back the top-N passages with character offsets and similarity scores. Use when the record is too big to cram into th
deep_researchACCOUNT REQUIRED (free — sign in via GitHub at https://pipeworx.io/signup; depth:"thorough" needs a paid plan). If you are not signed in, use ask_pipeworx instead — it works on every tier. Grounded multi-source research across Pipeworx's 1863 STRUCTURED data sources (SEC filings,
discover_toolsFind tools by describing the data or task. Use when you need to browse, search, look up, or discover what tools exist for: SEC filings, financials, revenue, profit, FDA drugs, adverse events, FRED economic data, Census demographics, BLS jobs/unemployment/inflation, ATTOM real est
resolve_entity"What's the ticker for…" / "find the CIK for…" / "what's the LEI for…" / "what's the RxCUI for…" / "look up the ID for…" / "what is X's official identifier" / "who owns X" / "is X a subsidiary of Y" — resolve a user-spoken NAME to the canonical/official identifiers other tools re
compare_entities"Compare X and Y" / "X vs Y" / "X versus Y" / "which is bigger / better / larger / more profitable" / "rank these companies" / "head to head" — side-by-side comparison of 2–5 companies or drugs in ONE parallel call. ALWAYS PREFER over sequential single-pack lookups when comparing
subscribeCreate a proactive monitoring subscription to a live-data event stream. Returns the new subscription id. Requires a Pipeworx OAuth account (anonymous + BYO cannot persist subscriptions). Supported types: "sec_8k" (8-K filings matching ticker + item codes — e.g. items:["5.02"] = o
unsubscribeCancel a subscription by id. Ownership is enforced — you can only cancel your own subscriptions. The row is deactivated (not deleted) so its historical events stay available via recent_alerts.
list_subscriptionsList the caller's active subscriptions. Returns id, type, params, created_at, last_fired_at, fire_count for each. Use this to review what you're monitoring before adding more or to find an id to cancel.
recent_alertsPull fired events from your subscription feed. Returns the most recent alerts the evaluator has written to your persisted feed — each carries source, citation_uri (pipeworx:// when available), and the raw event payload. Filter by type (e.g. "sec_8k") and/or since (ISO timestamp).
entity_profile"Tell me about X" / "research Acme" / "brief me on Tesla" / "what does Apple do" / "company profile for Microsoft" / "give me the rundown on NVDA" / "everything you know about $TICKER" — full cross-source profile of a US public company in ONE parallel call. ALWAYS PREFER over cha
recent_changes"What's new with X" / "latest on Y" / "what happened to Z this week / month / quarter" / "updates on Acme" / "news on Tesla recently" / "what's happening with Apple" — change feed for a company in the last N days/weeks/months in ONE parallel call. Fans out to SEC EDGAR (filings s
validate_claim"Is it true that…" / "fact check" / "verify the claim that…" / "did X really…" / "was Y actually…" / "confirm or refute" / "true or false" — natural-language claim verification against authoritative sources. Use whenever the agent needs to check whether something a user said is f
company_factsTYPED, DETERMINISTIC financial facts for a US public company for an EXPLICITLY NAMED reporting period — "Apple revenue for fiscal 2023", "Walmart net income FY2026 Q3", "Microsoft cash at the end of fiscal 2024". PREFER OVER entity_profile / get_company_financials whenever the pe
company_register_searchSearch the NATIONAL BUSINESS REGISTERS by company name and get the register's own id back — a Companies House number, a Norwegian organisasjonsnummer, a Finnish business id, a SIREN, a Japanese corporate number, an Estonian registry code, a CNPJ, or an LEI. Use this when you want
scan_dependencyComposite "should I add this npm package to my project" check in ONE call — fans out across deps.dev (license + advisories + version history) and bundlephobia (gzipped/minified bundle size, dependency count, ESM/tree-shake support). Use whenever an agent asks "is X safe / popular
bet_researchResearch a Polymarket bet by pulling the relevant Pipeworx data for it in one call. Pass a market slug ("will-kristi-noem-win-the-2028-republican-presidential-nomination"), a polymarket.com URL, or a question text. A dated slug ("...-by-june-30-2026") still resolves after it sett
polymarket_arbitrageFind arbitrage opportunities on Polymarket via monotonicity violations + partition-sum checks. Call with NO args for a `trending_scan` of the top ~200 markets by weekly volume; pass `event` for the strongest per-event partition_check, or `topic` for a themed cross-event scan. `ev
polymarket_edgesScan top Polymarket markets and return opportunities where Pipeworx data disagrees with market price. Built for "what should I bet on today" — agents discover opportunities without paging hundreds of markets. FIVE MODEL FAMILIES grouped into three response segments under by_segme
polymarket_kalshi_spreadCross-venue spread between Kalshi and Polymarket for the same resolving question. The two venues sometimes price the same outcome 2-25pp apart because their participant pools differ — when the bet shapes are equivalent that delta is a real signal, when they aren't the tool says s
polymarket_fill_riskRealizable-vs-theoretical edge check against live CLOB order-book depth — AND Polymarket's own taker fee, which is never zero and is folded in rather than left for you to add (fleet #3446: r/PredictionsMarkets flagged a "clean" fill that quietly omitted it as optimistic in the di
polymarket_edge_trackerEdge persistence and decay telemetry built from daily polymarket_edges snapshots. Answers "how long has this edge existed and is it shrinking?" — a fresh wide edge and a 3-week-old wide edge are different trades (the latter is wide for a reason nobody is willing to take). Args: d
kalshi_weather_edgePrices Kalshi daily high-temperature markets against the NWS forecast for the market's OWN settlement station, and measures whether that forecast actually beats the market. Two modes. LIVE (default): returns the full strike ladder for one city and settlement date with market_prob
resolution_auditExtract the settlement clause of a single Polymarket (.com or .us) or Kalshi market: who publishes the settling number (source), the clock time + timezone it is taken at (falling back to the market TITLE when the clause itself says "the time range specified in the title" — e.g. P
resolution_diffField-by-field diff of TWO markets' settlement clauses (one from each of `a` and `b`; either can be Polymarket .com, Polymarket US, or Kalshi) — runs resolution_audit on both sides and compares source, settle time, precision, comparison_basis, and evidence standard. Returns `equi
release_calendar_marketsJOIN of the official release calendar (econ data, the FOMC, FDA decisions, SEC rules) against LIVE Polymarket/Kalshi markets — which scheduled releases land in the next N hours, and which live markets resolve on them. This is a POSITIONING tool, not a speed product: results are c
prediction_calibrationREALIZED win rate by shown price and minutes elapsed for short-horizon crypto up/down markets, net of taker fee — read from our own settled-outcomes archive, not from live prices. Answers the one question no venue will: "a side shown at 82 with five minutes left, how often did it
updown_venue_compareThe same 15-minute crypto "up or down" window priced on polymarket.com, Polymarket US and Kalshi, side by side, with whether each pair is actually the same contract. Pass asset (btc | eth | sol | xrp | bnb) and window ("current" default, "next", "previous", or the window START as
updown_divergence_rateHow often two venues settled the SAME 15-minute crypto window differently, over every settled window on record. Compares polymarket.com (Chainlink TWAP) with Kalshi and with Polymarket US (both CF Benchmarks BRTI), and Kalshi with Polymarket US as the same-feed control. Per pair:
archive_evidenceWhat did a web page say on a given date? Finds the archived capture of a URL nearest that date across the Internet Archive Wayback Machine, Common Crawl and Arquivo.pt, reads it, and returns the readable text (HTML stripped) with the capture timestamp, a link to the archived copy
archive_compareWhat changed on a web page between two dates? Resolves the archived capture nearest each date (Internet Archive Wayback Machine, Common Crawl, Arquivo.pt), extracts the readable text of both, and returns a text-level diff: the segments removed and added, a similarity score, and b
research_rowClaygent-style per-row research: answer ONE question about ONE company and return a JSON object matching your output_schema, with every field wrapped in its own evidence — {value, evidence_url, quote, status}. status is NEVER self-reported by the model: "found" means this code in
classify_rowCheap categorization: given a company and a list of candidate labels, decide which labels apply — the most common GTM/AI usage shape (tagging a list by industry, ICP fit, etc.), one small model call. Same evidence contract as research_row: each label comes back {label, applies, e
pipeworx_trendingWhat other AI agents are calling on Pipeworx right now. Returns the top tools, top packs, and total call volume over a recent window (24h, 7d, or 30d). Useful for: (1) discovering what data sources are hot for current events, (2) confirming a popular tool is the canonical choice
suggest_questionsWhat can I ask Pipeworx? / what is Pipeworx good for? / what can you do? / give me ideas / show me examples / getting started / what data do you have? — the onboarding entry point for an agent that just connected and wants to know what is worth asking. Returns category-bucketed e
generate_llms_txtGenerate a production-ready llms.txt file for any URL so AI crawlers (ChatGPT, Claude, Perplexity) can index the site cleanly. Fetches the page, extracts title/description/key links, and emits the standard llms.txt markdown format. Output is a single text blob ready to drop at si
ai_visibility_checkProbe one or more LLMs for what they know about a business / brand / product / topic and score visibility (0-100) per model. Default model is Workers AI Llama-3.3-70b (free); pass `_apiKey` to also probe Anthropic (BYO key — you pay Anthropic directly for those calls). Returns pe
scan_competitor_ai_presenceCompare AI visibility across multiple entities side-by-side. Probes each entity (your brand + N competitors) with ai_visibility_check, ranks by score, surfaces which is most/least recognized. Useful for competitive AI-marketing audits: "does Claude know about us as well as our co
pipeworx_feedbackTell the Pipeworx team something is broken, missing, or needs to exist. Use when a tool returns wrong/stale data (bug), when a tool you wish existed isn't in the catalog (feature/data_gap), or when something worked surprisingly well (praise). ONLY for tools served by this Pipewor
rememberSave data the agent will need to reuse later — across this conversation or across sessions. Use when you discover something worth carrying forward (a resolved ticker, a target address, a user preference, a research subject) so you don't have to look it up again. Stored as a key-v
recallRetrieve a value previously saved via remember, or list all saved keys (omit the key argument). Use to look up context the agent stored earlier — the user's target ticker, an address, prior research notes — without re-deriving it from scratch. Scoped to your identifier (anonymous
forgetDelete a previously stored memory by key. Use when context is stale, the task is done, or you want to clear sensitive data the agent saved earlier. Pair with remember and recall.
sd_statuteGet the FULL TEXT of a section of the South Dakota Codified Laws — South Dakota state law — by citation. "22-16-4" is murder in the first degree; "43-32-13" covers a landlord's notice of lease modification. Accepts natural forms: "22-16-4", "SDCL 22-16-4", "§ 22-16-4". Returns th
sd_searchSearch the South Dakota Codified Laws BY TOPIC or keyword rather than citation — "landlord security deposit", "concealed pistol permit", "homicide". Matches against the Legislature's own official section and chapter CATCHLINES across the whole Code (not full statutory prose — Sou
Revisiones básicasi
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 8 nov 2026
- ✓ Superada
El creador coincide con el repo
El nombre en el registro se verificó con la cuenta de GitHub pipeworx-io, dueña del repo
- … Aún sin revisar
Sigue en mantenimiento
Todavía no hemos leído este repo en GitHub
- … Aún sin revisar
Tiene licencia
Todavía no hemos leído este repo en GitHub
- ✓ Superada
El endpoint responde
Respondió en 448 ms (HTTP 200)
- – No aplica
Inicio de sesión con OAuth
No hace falta iniciar sesión
- ✓ Superada
Sin instrucciones ocultas en las descripciones de herramientas
Leímos 46 descripciones de herramientas y no encontramos instrucciones ocultas para la IA
Comparado con otros en Derecho y datos públicosi
- Más estrellas que el 0% de los otros 1731 servidores de esta categoría
- Publicado en el registro más recientemente que el 93% de los otros 1731 servidores de esta categoría
- Revisiones básicas iguales o mejores que el 100% de los otros 1731 servidores de esta categoría
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Preguntas frecuentes
¿Es seguro South Dakota Code?
Superó 3 de 3 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
¿Qué claves o códigos necesita?
Debes completar: PIPEWORX_API_KEY
¿Se ejecuta en mi computadora o en la nube?
Funciona de las dos formas: instálalo en tu computadora o conéctate a la versión en la nube.
¿Sigue en mantenimiento?
El repo de GitHub cambió por última vez –, y la última versión (0.2.1) llegó al registro hace 3 días.
¿Qué apps pueden usarlo?
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. Se conecta por URL, así que también funcionan las apps que aceptan servidores MCP remotos, como ChatGPT en modo desarrollador.
¿Qué puedo usar en su lugar?
En la misma categoría: CourtReserve MCP by usefulapi, Census MCP by usefulapi, Korea Stay
Alternativas
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
Census MCP by usefulapi
List reverse-ETL sources, destinations, models, syncs and runs; trigger syncs into SaaS tools.
Korea Stay
Korean lodging: 84,490 stays from 4 government permit ledgers + KTO TourAPI, honest gaps
README del creador
Abrir el README
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
@pipeworx/south-dakota-code
South Dakota Codified Laws (South Dakota state statutes) — full section text by citation, and topic/keyword search over official catchlines.
Part of Pipeworx — an MCP gateway connecting AI agents to 1866+ live data sources. This is an independent, unofficial integration — not affiliated with, endorsed by, or published by the upstream provider.
Tools
sd_statute(citation)— full current text of one SDCL section (e.g."22-16-4", murder in the first degree), with the official catchline, chapter/title context, and — when the section carries one — the "Source:" line listing every session law that enacted or amended it, split out intohistory.sd_search(query, limit?)— topic/keyword search over the Legislature's own official section and chapter catchlines across all 71 titles (e.g."landlord","concealed pistol permit"). Not full-text search — South Dakota does not publish one.
Auth
Keyless.
Data sources
https://sdlegislature.gov/api/Statutes/Statute/{citation}— one section's (or chapter's, or title's) current text, as JSON with anHtmlfield.sd_statutecalls this live, per request, for a section-shaped citation.https://sdlegislature.gov/api/Statutes/Title— the list of all 71 titles. Used only byscripts/bake-index.mjsto drive the per-title fetch below.
Capabilities — three available, one is not
South Dakota's own publication covers:
- Citation lookup —
sd_statute. - Topic/keyword search —
sd_search, over catchlines only (see below). - Amendments/enactment history — PARTIALLY AVAILABLE. An in-force section's text ends with a "Source: SDC 1939, § 13.2007 (1); SL 1979, ch 160, § 2; ..." line listing every session law that created or amended it (verified live on
22-16-4).sd_statutesplits this intohistoryrather than leaving it only embedded intext. A repealed/transferred section's one-line disposition (e.g. "22-16-9. Repealed by SL 2005, ch 120, § 158, eff. July 1, 2006.") comes back asdisposition_text, withrepealed: trueread from the API's own flag. - Historical version (the text as it read before an amendment) — NOT AVAILABLE. sdlegislature.gov publishes only the CURRENT online edition: no per-year archive, no "view as of" date picker, and no endpoint returning a prior version's text (checked the site's own JS bundle for one — none exists). The Source: line says WHEN and by WHICH session law a section was amended; it does not return what the text read before that.
Source and shape — read this before touching the parser
sdlegislature.gov is a Vue single-page app. The August state-law survey (docs/state-law-probe.md) correctly flagged the HTML shell as carrying no statute — it just stopped one layer too early. The SPA itself is fed by a keyless, public JSON API under /api/Statutes/ (found by grepping the site's own JS bundle for /api/Statutes — no documentation page exists for it): GET /api/Statutes/Statute/{citation} accepts a section citation ("22-16-4"), a chapter citation ("22-16") or a title number ("22"), and returns one JSON envelope whose Html field is that level's content — full section text for a section, or a plain table-of-contents listing (chapter header + every section's citation and catchline, with NO body text) for a chapter or title. No auth, no key, no rate limit observed.
sd_statute only ever calls the section-shaped form, live, per request — never baked.
sd_search needs a structural index (every citation + its official catchline) to search over, and there is no search endpoint and no single "whole code" listing page the way North Dakota publishes one. The only way to assemble one is to call the TITLE-level form for each of the 71 titles and parse its table-of-contents Html blob. scripts/bake-index.mjs does this once, offline, into src/sd-index-data.ts — never at request time.
Why the parser works off flattened TEXT, not HTML anchors. Each title's Html blob is a concatenation of chapters that were authored and HTML-exported independently over decades, so anchor markup is NOT uniform: some chapters link a citation as a modern anchor (sdlegislature.gov/Statutes?Statute=X), others use a legacy DisplayStatute.aspx?Type=Statute&Statute=X anchor form, and repealed-section entries repeat their own citation as a text label immediately before the real catchline. Rather than chase every anchor shape, the bake script strips ALL tags (dropping style/script element CONTENTS too — the first cut of this script leaked raw CSS text into a catchline because that content sits between tags, not inside one) and then scans the flattened text for citation-SHAPED TOKENS beginning with the known title number. This is markup-agnostic: it only depends on the citation strings the site already prints as plain text, uniform across every era of document. See the script's own header comment for the full detail, including how duplicate-token artifacts and the rare genuinely-duplicated citation (observed on <5% of sections) are handled — never silently, always resolved toward the longer catchline, since this index drives search RANKING only and sd_statute always re-fetches the real text live.
Refresh path: node scripts/bake-index.mjs > src/sd-index-data.ts whenever South Dakota recodifies (new session laws are folded in after each legislative session). Nothing else in the pack needs to change.
Known gaps
sd_searchmatches official catchlines (section and chapter names), not full statutory prose — South Dakota does not publish full-text search, and this pack does not claim to either. It says so in both the tool description and every "no match" response.- A citation present in the baked index that the LIVE API 404s on (e.g. a section renumbered or repealed since the index was last baked) returns a loud
reason: "index_live_mismatch", never a plainfound: falsewith no explanation.
Quick Start
Add to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):
{
"mcpServers": { "south-dakota-code": { "url": "https://gateway.pipeworx.io/south-dakota-code/mcp" } } }
What this endpoint actually serves
tools/list at https://gateway.pipeworx.io/south-dakota-code/mcp returns the tools in the table above plus the shared Pipeworx meta-tools — ask_pipeworx, discover_tools, search_within, remember/recall and the rest of the gateway-wide set. So the tool count you see is larger than this table: a single-pack endpoint currently lists roughly 30 shared tools alongside the pack's own. The connection's initialize response states its exact scope, and is the authoritative answer for a given day.
This is deliberate, not multiplexing by accident. The meta-tools are what let a scoped connection answer a question this pack does not cover — via ask_pipeworx, which routes across the whole catalog — without you adding a second MCP server. There is currently no way to mount a pack endpoint without them; if the extra schemas cost you more context than the routing is worth, connect to the full gateway once rather than to several pack endpoints.
Or connect to the full Pipeworx gateway to get every pack's tools listed directly, instead of just this one's:
{
"mcpServers": { "pipeworx": { "url": "https://gateway.pipeworx.io/mcp" } } }
Both URLs reach the same gateway and the same 1866+ data sources. The only difference is which pack's tools are listed directly; ask_pipeworx reaches all of them from either one.
No MCP client? Call it over HTTP
curl -X POST https://gateway.pipeworx.io/v1/tools/sd_statute \
-H 'Content-Type: application/json' \ -d '{"citation":"22-16-4"}'
No account needed for the first calls. Inspect any tool: GET https://gateway.pipeworx.io/v1/tools/sd_statute. Find one: POST https://gateway.pipeworx.io/v1/tools/search_packs with {"query":"..."}.
Run it from npm
@pipeworx/mcp-south-dakota-code is a local stdio bridge to the Pipeworx gateway: your MCP client starts it with npx, and it forwards every call to the same https://gateway.pipeworx.io/south-dakota-code/mcp endpoint shown above. It needs network access; there is no offline mode.
{
"mcpServers": { "south-dakota-code": { "command": "npx", "args": ["-y", "@pipeworx/mcp-south-dakota-code"] } } }
Without a key it calls anonymously, capped at 50 calls a day. A free account raises that to 200 a day: get a key at https://pipeworx.io/signup and add "env": { "PIPEWORX_API_KEY": " " } to the server entry. The key is sent as a Bearer token, the same way a hosted connection sends it, so calls are metered and billed exactly as they are there.
It lists only this pack's tools by default. Set PIPEWORX_META_TOOLS=1 to also list ask_pipeworx and the other gateway-wide tools.
Behind an HTTPS proxy: Node's built-in fetch does not read HTTPS_PROXY by default. Newer Node releases honour it when NODE_USE_ENV_PROXY=1 is set; check your Node version's documentation.
Using with ask_pipeworx
Instead of calling tools directly, you can ask questions in plain English — this works on the pack endpoint above as well as on the full gateway:
ask_pipeworx({ question: "your question about South Dakota Code data" })
The gateway picks the right tool and fills the arguments automatically.
More
License
MIT