Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,562Letters: 14Defects: 1,336counted 4 min ago
teppi

Server definition

Hash
sha256:0818ca1b095630b4568d490ab793cda4a4b30b51a041ff7c53c06dff942f7ea9
What it is
What a remote MCP server returned when asked what it offers: 5 tools

The blob, as servednamed by its sha256

{ "instructions": "Dryos serves real, reconciled data — US power markets (ERCOT, MISO, PJM, SPP, CAISO, NYISO, ISO-NE), weather, and building permits — collected live from the source. Every stream is checked against the source it came from.\n\nHow to answer a question:\n1. list_streams to find the stream (filter by domain, operator or a word).\n2. describe_stream to read its columns, entity column, measure and unit.\n3. find_entities to look up a node, zone or station name. Never guess one: names are verbatim, inner spaces included (`ALDENE 230 KV T-10`).\n4. query_stream for rows. Past a day or so of five-minute data, pass interval (15m, 1h, 1d, all) and agg (avg, min, max, sum) instead of raw rows. Each bucket carries `samples`; a low count is a collection gap, not a quiet hour. For the current value at every node, zone or station, pass newest=true: one row per entity at its most recent interval, rather than guessing a row limit.\n\nBuilding an app: every query_stream result carries `restUrl`, the same request as a plain GET against the public REST API. Relative times (start=-24h) stay relative in it, so it keeps working. Give that URL to whoever is wiring the data into their code rather than re-deriving one.\n\nRules that prevent wrong answers:\n- Every timestamp is UTC. interval_start_utc is the start of the interval. Convert only for display: ERCOT and SPP are US Central; MISO is EST all year (never EDT); PJM, NYISO and ISO-NE are US Eastern with daylight saving; CAISO is US Pacific.\n- start is inclusive, end exclusive.\n- Forecasts keep every publication. By default each interval's newest vintage is returned; never average vintages together.\n- Null means the source did not report it — never zero.\n- where filters a text column (`column=value`; repeat one column for OR, different columns AND). search is a case-insensitive substring (`column:text`).\n- Cite the stream slug and the interval timestamps behind any number you report.\n", "tools": [ { "description": "The distinct values of one text column, most rows first — what a filter can be.\n\n Args:\n slug: The stream.\n column: A text column from describe_stream (not the entity — use find_entities).\n where: Filters as `column=value`, the same as query_stream's.\n search: `column:text`, a case-insensitive substring.\n limit: At most this many (1–500).\n ", "inputSchema": { "properties": { "column": { "title": "Column", "type": "string" }, "limit": { "default": 40, "title": "Limit", "type": "integer" }, "search": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Search" }, "slug": { "title": "Slug", "type": "string" }, "where": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Where" } }, "required": [ "slug", "column" ], "title": "column_valuesArguments", "type": "object" }, "name": "column_values", "outputSchema": { "additionalProperties": true, "title": "column_valuesDictOutput", "type": "object" } }, { "description": "One stream in full: every column, the primary key, the source and its health.\n\n Also what changed in the collector recently — a change in the collector is\n a change in the data, and a step in a series may be one.\n\n Args:\n slug: The stream, e.g. ercot-realtime-lmp (list_streams names them).\n ", "inputSchema": { "properties": { "slug": { "title": "Slug", "type": "string" } }, "required": [ "slug" ], "title": "describe_streamArguments", "type": "object" }, "name": "describe_stream", "outputSchema": { "additionalProperties": true, "title": "describe_streamDictOutput", "type": "object" } }, { "description": "Look up the nodes, zones, stations or fuels in a stream, with how far back each goes.\n\n Use it before query_stream: names are verbatim and never to be guessed.\n `facets` counts the entities by type.\n\n Args:\n slug: The stream.\n search: Case-insensitive substring of the entity name (\"HOUSTON\", \"HB_\", \"KAUS\").\n entity_type: Only one type — HUB, LOAD_ZONE, RESOURCE_NODE, INTERFACE…\n limit: At most this many (1–2000).\n ", "inputSchema": { "properties": { "entity_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Entity Type" }, "limit": { "default": 50, "title": "Limit", "type": "integer" }, "search": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Search" }, "slug": { "title": "Slug", "type": "string" } }, "required": [ "slug" ], "title": "find_entitiesArguments", "type": "object" }, "name": "find_entities", "outputSchema": { "additionalProperties": true, "title": "find_entitiesDictOutput", "type": "object" } }, { "description": "Every stream Dryos collects, with its entity column and headline measure.\n\n Args:\n domain: Energy, Weather or Property.\n operator: A grid operator — ERCOT, MISO, PJM, SPP, CAISO, NYISO or ISO-NE.\n search: A word matched against the slug, name and tagline (\"lmp\", \"wind\", \"permits\").\n ", "inputSchema": { "properties": { "domain": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Domain" }, "operator": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Operator" }, "search": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Search" } }, "title": "list_streamsArguments", "type": "object" }, "name": "list_streams", "outputSchema": { "additionalProperties": true, "title": "list_streamsDictOutput", "type": "object" } }, { "description": "Read rows from a stream — raw (newest first), each entity's newest, or a rollup.\n\n The result carries `restUrl`: this same request as a plain GET on the\n public REST API, ready to put in an app.\n\n Args:\n slug: The stream.\n node: The entity, whatever the stream calls it (node, zone, station, fuel).\n System-level streams have none.\n start: Inclusive, ISO-8601 or relative to now (-24h, -7d). UTC.\n end: Exclusive, same forms.\n interval: Bucket size — 5m, 15m, 1h, 1d, 7d, or all for one bucket.\n Absent means raw rows.\n agg: How a bucket is reduced.\n by: What a rollup splits by: a text column, or none for one series. Default the entity.\n where: Filters as column=value on text columns. Repeat a column for OR.\n search: column:text, a case-insensitive substring.\n vintages: latest is each interval's newest forecast; all keeps every publication.\n stamp: noon labels a daily bucket at noon UTC so its date reads right in US zones.\n newest: One reading per entity — each one's most recent interval, so \"the price\n at every hub right now\" is one call. Not with interval.\n limit: At most this many rows (1–2000).\n ", "inputSchema": { "properties": { "agg": { "default": "avg", "enum": [ "avg", "min", "max", "sum" ], "title": "Agg", "type": "string" }, "by": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "By" }, "end": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "End" }, "interval": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Interval" }, "limit": { "default": 100, "title": "Limit", "type": "integer" }, "newest": { "default": false, "title": "Newest", "type": "boolean" }, "node": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Node" }, "search": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Search" }, "slug": { "title": "Slug", "type": "string" }, "stamp": { "default": "start", "enum": [ "start", "noon" ], "title": "Stamp", "type": "string" }, "start": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Start" }, "vintages": { "default": "latest", "enum": [ "latest", "all" ], "title": "Vintages", "type": "string" }, "where": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Where" } }, "required": [ "slug" ], "title": "query_streamArguments", "type": "object" }, "name": "query_stream", "outputSchema": { "additionalProperties": true, "title": "query_streamDictOutput", "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:0818ca1b095630b4568d490ab793cda4a4b30b51a041ff7c53c06dff942f7ea9 | sha256sum