{"info":{"_postman_id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","name":"StatuteIQ Engine API (Preliminary)","description":"<html><head></head><body><div><img src=\"https://storage.googleapis.com/brownsville-web-prod-site/assets/img/logo.png\" alt=\"Brownsville Advisory\" width=\"600\"></div>\n\n<h1 id=\"statuteiq-engine-api\">StatuteIQ Engine API</h1>\n<h3 id=\"the-intelligent-compliance-engine-by-brownsville-advisory\">The Intelligent Compliance Engine, by Brownsville Advisory</h3>\n<blockquote>\n<p><em>Navigate the complex world of compliance with confidence.</em></p>\n</blockquote>\n<p><strong>Status: Preliminary.</strong> This documents the StatuteIQ engine's current and designed HTTP surface. It is <strong>not a GA contract</strong>; paths, schemas, and external authentication are still being finalized. Build-state is marked per request: <strong>LIVE</strong> (deployed today) versus <strong>DESIGNED</strong> (specified in the ENG-1 contract, not yet built).</p>\n<hr>\n<h2 id=\"what-this-is\">What this is</h2>\n<p>The <strong>API service model</strong> is direct programmatic access to the StatuteIQ <strong>Compliance and Risk engine</strong>, custom-trained reasoning hosted on Google Vertex AI. It returns <strong>grounded, cited, schema-validated</strong> results, and it <strong>refuses to answer when evidence is insufficient</strong> (<code>grounded:false</code>) rather than fabricating one.</p>\n<h2 id=\"quick-start\">Quick start</h2>\n<ol>\n<li>Select an <strong>Environment</strong> (<em>StatuteIQ - Local</em> or <em>StatuteIQ - Cloud Run</em>) so <code>baseUrl</code> is set.</li>\n<li>Set <code>access_token</code>. For local testing: <code>gcloud auth print-identity-token</code>. (Auth today is a Google OIDC identity-token bearer; external customer auth is TBD.)</li>\n<li>Send a request, or run the <strong>Workflows</strong> folder to exercise the <code>retrieve -&gt; reason</code> chain.</li>\n</ol>\n<h2 id=\"folders\">Folders</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Folder</th>\n<th>Surface</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>Tools (LIVE)</strong></td>\n<td>The deployed tool surface: <code>/tools/list</code>, <code>/tools/invoke</code>, <code>/tools/classify</code>.</td>\n</tr>\n<tr>\n<td><strong>RAG API (DESIGNED)</strong></td>\n<td><code>/api/retrieve</code> and <code>/api/reason</code> per ENG-1; live once the Knowledge Pool corpus loads.</td>\n</tr>\n<tr>\n<td><strong>Workflows (DESIGNED)</strong></td>\n<td>The canonical <code>retrieve -&gt; reason</code> flow, with evidence passed between steps.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"the-grounding-rule\">The grounding rule</h2>\n<p>When evidence is empty or insufficient, reasoning returns <code>grounded:false</code> with an empty result and empty citations. The engine never synthesizes clause text, award IDs, or docket numbers not present in the retrieved evidence. Always surface the returned citations and the pinned <code>version</code> to end users; that provenance is the product's core value.</p>\n<hr>\n<p><em>Brownsville Advisory LLC · Washington, D.C. Metro Area · <a href=\"mailto:contact@brownsvilleadvisory.com\">contact@brownsvilleadvisory.com</a></em></p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"StatuteIQ Engine API","slug":"statuteiq-engine-api"}],"owner":"56010874","collectionId":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","publishedId":"2sBXwvHTsd","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"2E5FA3"},"publishDate":"2026-06-18T18:57:20.000Z"},"item":[{"name":"Tools (LIVE)","item":[{"name":"GET /tools/list","id":"af36c55e-68e6-4eab-855c-515e7327abb8","request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer "}],"url":"https://statuteiq-engine-REPLACE.a.run.app/tools/list","description":"<p>LIVE. List callable tools with input schemas.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","name":"StatuteIQ Engine API (Preliminary)","type":"collection"}},"urlObject":{"path":["tools","list"],"host":["https://statuteiq-engine-REPLACE.a.run.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"af36c55e-68e6-4eab-855c-515e7327abb8"},{"name":"POST /tools/invoke","id":"e187f410-afcc-4eec-a969-8652f8bcb501","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer "}],"body":{"mode":"raw","raw":"{\n  \"tool\": \"explain-clause\",\n  \"input\": {\n    \"clause\": \"FAR 52.204-21\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://statuteiq-engine-REPLACE.a.run.app/tools/invoke","description":"<p>LIVE. Invoke a named tool. Tools needing the RAG endpoints degrade to a cited corpus_pending result, never fabricated.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","name":"StatuteIQ Engine API (Preliminary)","type":"collection"}},"urlObject":{"path":["tools","invoke"],"host":["https://statuteiq-engine-REPLACE.a.run.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"e187f410-afcc-4eec-a969-8652f8bcb501"},{"name":"POST /tools/classify","id":"b1c52f2b-1ae1-49c7-9edc-449808f636e3","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer "}],"body":{"mode":"raw","raw":"{\n  \"query\": \"What are my CMMC obligations under this DFARS clause?\"\n}","options":{"raw":{"language":"json"}}},"url":"https://statuteiq-engine-REPLACE.a.run.app/tools/classify","description":"<p>LIVE. Classify a natural-language query for routing (query intent, not document classification).</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","name":"StatuteIQ Engine API (Preliminary)","type":"collection"}},"urlObject":{"path":["tools","classify"],"host":["https://statuteiq-engine-REPLACE.a.run.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"b1c52f2b-1ae1-49c7-9edc-449808f636e3"}],"id":"f503d592-6efb-4d0d-87d2-ff7e76ee9238","description":"<p>Currently deployed tool surface.</p>\n","_postman_id":"f503d592-6efb-4d0d-87d2-ff7e76ee9238","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","name":"StatuteIQ Engine API (Preliminary)","type":"collection"}}},{"name":"RAG API (DESIGNED - ENG-1)","item":[{"name":"POST /api/retrieve","id":"2ae38468-af1b-408f-a104-1d8014dc8985","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer "}],"body":{"mode":"raw","raw":"{\n  \"query\": \"GAO sustain rate for organizational conflict of interest protests\",\n  \"tags\": [\n    \"protest\",\n    \"GAO\",\n    \"COFC\"\n  ],\n  \"limit\": 30,\n  \"profile\": \"win-loss\",\n  \"classification\": \"public\"\n}","options":{"raw":{"language":"json"}}},"url":"https://statuteiq-engine-REPLACE.a.run.app/api/retrieve","description":"<p>DESIGNED. Hybrid retrieval (vector + BM25 -&gt; cross-encoder rerank) over the Knowledge Pool. classification enforces the no-train boundary.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","name":"StatuteIQ Engine API (Preliminary)","type":"collection"}},"urlObject":{"path":["api","retrieve"],"host":["https://statuteiq-engine-REPLACE.a.run.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"2ae38468-af1b-408f-a104-1d8014dc8985"},{"name":"POST /api/reason","id":"a584a340-06fc-4dd8-83f9-8648d7fc200c","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer "}],"body":{"mode":"raw","raw":"{\n  \"prompt\": \"Identify winning-language patterns for OCI mitigation.\",\n  \"systemInstruction\": \"You are a federal capture analyst. Cite every pattern to source.\",\n  \"evidence\": {\n    \"chunks\": [],\n    \"retrieval\": {\n      \"profile\": \"win-loss\",\n      \"returned\": 0,\n      \"tagsMatched\": []\n    }\n  },\n  \"responseShape\": \"winning-language\"\n}","options":{"raw":{"language":"json"}}},"url":"https://statuteiq-engine-REPLACE.a.run.app/api/reason","description":"<p>DESIGNED. Vertex-grounded reasoning over evidence, validated against a named responseShape. Returns the validated object + citations + grounded flag.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","name":"StatuteIQ Engine API (Preliminary)","type":"collection"}},"urlObject":{"path":["api","reason"],"host":["https://statuteiq-engine-REPLACE.a.run.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"a584a340-06fc-4dd8-83f9-8648d7fc200c"}],"id":"8240f060-6a88-447b-a5a8-b4b2674db858","description":"<p>Specified in ENG-1; not yet built. Lights up once the Knowledge Pool corpus is loaded.</p>\n","_postman_id":"8240f060-6a88-447b-a5a8-b4b2674db858","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","name":"StatuteIQ Engine API (Preliminary)","type":"collection"}}},{"name":"Workflows (DESIGNED)","item":[{"name":"1 - Retrieve evidence","event":[{"listen":"test","script":{"type":"text/javascript","exec":["// Flow step 1: stash retrieved evidence for the Reason step.","if (pm.response.code === 200) {","  try { pm.collectionVariables.set('evidence', JSON.stringify(pm.response.json())); }","  catch (e) { pm.collectionVariables.set('evidence', '{\"chunks\":[],\"retrieval\":{}}'); }","}"]}}],"id":"afc79097-7b79-4d5f-bc9b-fd4b02505742","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer "}],"body":{"mode":"raw","raw":"{\n  \"query\": \"GAO sustain rate for organizational conflict of interest protests\",\n  \"tags\": [\n    \"protest\",\n    \"GAO\",\n    \"COFC\"\n  ],\n  \"limit\": 30,\n  \"profile\": \"win-loss\",\n  \"classification\": \"public\"\n}","options":{"raw":{"language":"json"}}},"url":"https://statuteiq-engine-REPLACE.a.run.app/api/retrieve","description":"<p>Flow step 1. On 200, saves the response to {\"chunks\":[],\"retrieval\":{}} for step 2.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","name":"StatuteIQ Engine API (Preliminary)","type":"collection"}},"urlObject":{"path":["api","retrieve"],"host":["https://statuteiq-engine-REPLACE.a.run.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"afc79097-7b79-4d5f-bc9b-fd4b02505742"},{"name":"2 - Reason over evidence","event":[{"listen":"test","script":{"type":"text/javascript","exec":["// Flow step 2: sanity-check the grounded contract.","try { pm.test('response has grounded flag', () => pm.expect(pm.response.json()).to.have.property('grounded')); } catch(e){}"]}}],"id":"1930da59-338d-4819-9194-fdf4e4bc9134","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer "}],"body":{"mode":"raw","raw":"{\n  \"prompt\": \"Identify winning-language patterns for OCI mitigation, grounded only in the retrieved evidence.\",\n  \"systemInstruction\": \"You are a federal capture analyst. Cite every pattern to source; if evidence is insufficient, return grounded:false.\",\n  \"evidence\": {\"chunks\":[],\"retrieval\":{}},\n  \"responseShape\": \"winning-language\"\n}","options":{"raw":{"language":"json"}}},"url":"https://statuteiq-engine-REPLACE.a.run.app/api/reason","description":"<p>Flow step 2. Consumes {\"chunks\":[],\"retrieval\":{}} from step 1 (passes the retrieved chunks straight through).</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","name":"StatuteIQ Engine API (Preliminary)","type":"collection"}},"urlObject":{"path":["api","reason"],"host":["https://statuteiq-engine-REPLACE.a.run.app"],"query":[],"variable":[]}},"response":[],"_postman_id":"1930da59-338d-4819-9194-fdf4e4bc9134"}],"id":"8f4ab217-b9cf-43fc-831b-bdf24d31c806","description":"<p>The canonical engine flow per ENG-1: retrieve evidence, then reason over it. Run this folder with the Collection Runner. Step 1 stashes its response into the {\"chunks\":[],\"retrieval\":{}} variable; Step 2 passes it straight into /api/reason. Both endpoints are DESIGNED (not yet live).</p>\n","_postman_id":"8f4ab217-b9cf-43fc-831b-bdf24d31c806","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","id":"6fd59f93-29c4-44d8-bd59-81309fd1f27d","name":"StatuteIQ Engine API (Preliminary)","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]}},"variable":[{"key":"baseUrl","value":"https://statuteiq-engine-REPLACE.a.run.app","type":"string"},{"key":"access_token","value":"","type":"string"},{"key":"evidence","value":"{\"chunks\":[],\"retrieval\":{}}","type":"string"}]}