{"openapi": "3.1.0", "info": {"title": "Seiche, LiquiLens and Undertow source data", "version": "1.2.0", "description": "Public funding, bank-filing and settlement research. No API key. Observation time differs from capture time. Historical values before the first capture are not point-in-time history."}, "servers": [{"url": "https://api.seiche.info/api/v2/research-data"}], "security": [], "paths": {"/workspace": {"get": {"operationId": "research_workspace", "summary": "Read the same coverage, source freshness, gaps and descriptive overview as the website. Compare snapshot_id across REST/MCP; independent source clocks remain explicit.", "parameters": [{"name": "product", "in": "query", "required": false, "schema": {"type": "string", "enum": ["seiche", "liquilens", "undertow"]}}], "responses": {"200": {"description": "Source-separated research; retain units, missing values, capture clocks and receipts.", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Invalid query; correct arguments before retrying."}, "404": {"description": "Unknown dataset or route."}, "503": {"description": "Archive temporarily unavailable; do not substitute zero."}}}}, "/series_summary": {"get": {"operationId": "research_series_summary", "summary": "Analyze the latest captured series for one exact entity, with adjacent change, trailing-window missingness, native units and source receipts. Current analytics are withheld for stale, unavailable or unverified inputs.", "parameters": [{"name": "dataset", "in": "query", "required": true, "schema": {"type": "string", "maxLength": 100}}, {"name": "series", "in": "query", "required": true, "schema": {"type": "string", "maxLength": 150}}, {"name": "entity", "in": "query", "required": false, "schema": {"type": "string", "maxLength": 150}}, {"name": "window", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 1, "maximum": 260}}], "responses": {"200": {"description": "Source-separated research; retain units, missing values, capture clocks and receipts.", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Invalid query; correct arguments before retrying."}, "404": {"description": "Unknown dataset or route."}, "503": {"description": "Archive temporarily unavailable; do not substitute zero."}}}}, "/tracked_institutions": {"get": {"operationId": "research_tracked_institutions", "summary": "Search the existing Indian dossier and RBI registry populations, retaining financial-evidence gaps and source clocks. Populations overlap and are not a global census.", "parameters": [{"name": "scope", "in": "query", "required": false, "schema": {"type": "string", "enum": ["dossiers", "rbi_registry"]}}, {"name": "q", "in": "query", "required": false, "schema": {"type": "string", "maxLength": 150}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 1, "maximum": 500}}, {"name": "offset", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 0, "maximum": 10000000}}], "responses": {"200": {"description": "Source-separated research; retain units, missing values, capture clocks and receipts.", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Invalid query; correct arguments before retrying."}, "404": {"description": "Unknown dataset or route."}, "503": {"description": "Archive temporarily unavailable; do not substitute zero."}}}}, "/catalog": {"get": {"operationId": "research_catalog", "summary": "Discover scoped funding, institution and chain-settlement datasets with coverage and rights.", "parameters": [{"name": "product", "in": "query", "required": false, "schema": {"type": "string", "enum": ["seiche", "liquilens", "undertow"]}}], "responses": {"200": {"description": "Source-separated research; retain units, missing values, capture clocks and receipts.", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Invalid query; correct arguments before retrying."}, "404": {"description": "Unknown dataset or route."}, "503": {"description": "Archive temporarily unavailable; do not substitute zero."}}}}, "/series": {"get": {"operationId": "research_series", "summary": "Search the metric catalog and native unit definitions in a dataset.", "parameters": [{"name": "dataset", "in": "query", "required": true, "schema": {"type": "string"}}, {"name": "q", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 1, "maximum": 10000}}, {"name": "offset", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 0, "maximum": 10000000}}], "responses": {"200": {"description": "Source-separated research; retain units, missing values, capture clocks and receipts.", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Invalid query; correct arguments before retrying."}, "404": {"description": "Unknown dataset or route."}, "503": {"description": "Archive temporarily unavailable; do not substitute zero."}}}}, "/entities": {"get": {"operationId": "research_entities", "summary": "Find regulator identifiers for institutions; names are not fuzzy-joined across regimes.", "parameters": [{"name": "dataset", "in": "query", "required": true, "schema": {"type": "string"}}, {"name": "q", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 1, "maximum": 10000}}, {"name": "offset", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 0, "maximum": 10000000}}], "responses": {"200": {"description": "Source-separated research; retain units, missing values, capture clocks and receipts.", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Invalid query; correct arguments before retrying."}, "404": {"description": "Unknown dataset or route."}, "503": {"description": "Archive temporarily unavailable; do not substitute zero."}}}}, "/observations": {"get": {"operationId": "research_observations", "summary": "Read cited observations or a captured historical vintage. Earlier point-in-time availability is not assumed.", "parameters": [{"name": "dataset", "in": "query", "required": true, "schema": {"type": "string"}}, {"name": "series", "in": "query", "required": true, "schema": {"type": "string"}}, {"name": "entity", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "start", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "end", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "as_known_at", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 1, "maximum": 10000}}, {"name": "offset", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 0, "maximum": 10000000}}], "responses": {"200": {"description": "Source-separated research; retain units, missing values, capture clocks and receipts.", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Invalid query; correct arguments before retrying."}, "404": {"description": "Unknown dataset or route."}, "503": {"description": "Archive temporarily unavailable; do not substitute zero."}}}}, "/analysis": {"get": {"operationId": "research_analysis", "summary": "Read descriptive funding, institution concentration and settlement analysis with input references and limits.", "parameters": [{"name": "product", "in": "query", "required": false, "schema": {"type": "string", "enum": ["seiche", "liquilens", "undertow"]}}], "responses": {"200": {"description": "Source-separated research; retain units, missing values, capture clocks and receipts.", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Invalid query; correct arguments before retrying."}, "404": {"description": "Unknown dataset or route."}, "503": {"description": "Archive temporarily unavailable; do not substitute zero."}}}}, "/export.csv": {"get": {"operationId": "research_export_csv", "summary": "Export one bounded page with source units and receipt IDs.", "parameters": [{"name": "dataset", "in": "query", "required": true, "schema": {"type": "string"}}, {"name": "series", "in": "query", "required": true, "schema": {"type": "string"}}, {"name": "entity", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "start", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "end", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "as_known_at", "in": "query", "required": false, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 1, "maximum": 10000}}, {"name": "offset", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 0, "maximum": 10000000}}], "responses": {"200": {"description": "One page; use identical query bounds to inspect observations and next_offset.", "content": {"text/csv": {"schema": {"type": "string"}}}}}}}}, "externalDocs": {"url": "https://api.seiche.info/api/v2/research-data/"}, "x-mcp": {"url": "https://api.seiche.info/api/v2/research-data/mcp"}}