Skip to main content

Overview

SILO’s remote MCP server gives an agent the read API as tools. There is one tool per published function or view, and each one sends exactly one request to the Data API with the shared publishable key. There is nothing to sign up for and no key to paste. The server does not restate the contract. Each tool’s description is generated from the same openapi.json as the Endpoints reference, and the rules live on Conventions & limits. The catalog tool returns the full contract as JSON.

Connect

claude.ai / Claude Desktop: Settings → Connectors → Add custom connector. Paste the URL, leave authentication empty.Claude Code:
Any other MCP client that supports streamable HTTP connects the same way: give it the URL and no credentials. To check the server from a shell, list its tools:

What a result looks like

On success, every tool returns one text block. It starts with the row count and a provenance line, followed by the rows exactly as PostgREST returned them:
The server never trims rows. View tools (short_interest, investor_flow, quotes, …) also report Content-Range. If PostgREST cut the page, the result says PARTIAL PAGE and how many rows matched, so a cut page can’t pass as the whole series. Page with order + offset. View tools take filters (column → PostgREST operator, e.g. {"ticker": "eq.PETR4", "trade_date": "gte.2026-09-01"}), select, order, limit and offset. They take nothing else. There are no or= trees, no SQL and no write path.

Errors are information

A PostgREST error comes back as a tool error (isError: true). The response body is included verbatim, with the endpoint and parameters that caused it. The server makes one request per call and never retries.
  • 22023 means the request crossed a stated ceiling: the 1,000-row page, the anonymous id ceiling, or a screen’s threshold range. Narrow the query, or page with p_after where the function offers it. Retrying the same call will not produce a different answer.
  • NULL means the source did not declare the value, or the field does not apply to that fund family. Never fill it or read it as zero. See null semantics.
  • as_of vs complete_through (from coverage): as_of is the newest period that has elapsed; complete_through is how much the source has published in full. A gap between them reflects Brazil’s filing calendar, not an outage.

Limits

The server always calls the API at the anonymous tier. It never forwards your credentials, so the anonymous ceilings apply: 3 panel ids, 25 search_funds rows, 200 option-chain rows, and no panel universe mode. For the signed-in ceilings, call the Data API directly with a user token. Rows per response are 1,000 at every tier.

Suggested first prompt

Using the SILO tools: call catalog and coverage, then tell me which FIDCs match the evergreen-aging screen and how their senior tranches performed. Treat every screen row as a signal, not a finding.