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

Server definition

Hash
sha256:ad7d78cbf0aed692fd0acc73eadd1e1f5ba910605ea89606d913de57dff86525
What it is
What a remote MCP server returned when asked what it offers: 8 tools

The blob, as servednamed by its sha256

{ "instructions": "Read-only data on tokenized stocks: listings, issuers, chains, contract addresses and on-chain corporate actions. A stock, an instrument and a listing are three different things - a stock is the company, an instrument is one product from one issuer (one legal wrapper, one mechanic), and a listing is the copy of that product on one chain. One issuer can put the same instrument on several chains, so listings never count products. A listing is one token on one chain; some issuers use one address on more than one chain. Every result carries generatedAt, a sortKey and a notice; quote the timestamp with any figure you pass on, and carry the notice. This server never ranks, rates, scores or recommends anything, and has no tool or parameter that sorts by performance: every sortKey is registry order, alphabetical or chronological. Read mechanics.kind before reaching for any field inside mechanics, because anything that is not erc8056 has no multiplier at all; and kind is the shape reported here, not the standard a contract implements. If you wanted something this server does not have - a stock, a chain, a field, a tool - call report_gap and say so; it is counted in aggregate, nothing about you is recorded, and it is never required.", "tools": [ { "description": "What this site holds about one address: the name and category our registry records and who told us, plus what the code at that address actually is - its runtime bytecode hash, the implementation behind it if it is a proxy, and how many other addresses we track run byte-identical code. The code half is reproducible: fetch eth_getCode and take its keccak256 and you get the same hash. An address that is a token listing but not in the contract registry returns the listing (stock, issuer, chain) with no code record. This never says an address is safe, genuine or correct, and there is no field that could: check it against the issuer before you act on it.", "inputSchema": { "additionalProperties": false, "properties": { "address": { "description": "The contract address, in any case.", "type": "string" }, "chain": { "description": "Chain slug, for example ethereum or robinhood-chain. Optional. Omit it to find the address on every chain we hold it.", "type": "string" } }, "required": [ "address" ], "type": "object" }, "name": "get_contract", "outputSchema": null }, { "description": "What this service offers a machine reader: the free keyless endpoints, the bulk dataset and its price if the paid tier is live, and the licence. No human reader is ever charged or asked to connect a wallet.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "get_manifest", "outputSchema": null }, { "description": "Everything known about one stock: every instrument (one per issuer, with the mechanics union describing how it handles corporate actions), every listing under it (chain, contract address, supply, price), and the events recorded against it. Report instruments as the options; listings are addresses. Read mechanics.kind before reaching for any field inside mechanics.", "inputSchema": { "additionalProperties": false, "properties": { "ticker": { "description": "Ticker or slug, for example NVDA or nvda.", "type": "string" } }, "required": [ "ticker" ], "type": "object" }, "name": "get_stock", "outputSchema": null }, { "description": "Every chain carrying tokenized stocks, with its explorer, and the matrix of which issuer has listed what where. Registry order, which is not a ranking.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "list_chains", "outputSchema": null }, { "description": "The corporate-action tape: splits, distributions and multiplier changes read from chain state, each with a transaction hash. Newest first by the time the event took effect, which is chronology and not a ranking.", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "description": "How many events to return. Default 50, maximum 500.", "maximum": 500, "minimum": 1, "type": "integer" }, "since": { "description": "ISO 8601 date. Only return events effective on or after this date.", "type": "string" } }, "type": "object" }, "name": "list_events", "outputSchema": null }, { "description": "Every issuer whose tokens are tracked, in registry order, with the legal wrapper it uses, the chains it issues on, and a link to where that issuer publishes its own rule on who may buy. The rule itself is deliberately not included: it can change without this site noticing, so answer eligibility questions by sending the caller to eligibility.sourceUrl rather than by stating a rule.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "list_issuers", "outputSchema": null }, { "description": "Tell us you wanted something and did not get it: a stock we do not track, a chain a stock is not on, a field no endpoint carries, a tool that does not exist, a figure you believe is wrong, or a path that failed. Call this when another tool has just answered with a miss - the answer names the kind to send. THERE IS NO FREE-TEXT FIELD AND THERE WILL NOT BE ONE: a report is an enumerated kind plus a short subject, because the counts are what is useful and prose from an anonymous caller is a prompt-injection surface pointed at the people who read it. Nothing about you is recorded - no address, no header, no identifier - so a report cannot be joined to a caller and there is no reply. The report is counted in aggregate and returned to you with a prefilled link a human can open to track it. Reporting costs nothing and is never required.", "inputSchema": { "additionalProperties": false, "properties": { "kind": { "description": "What was missing. One of: missing_stock (A stock this site does not track at all.) missing_listing (A stock we track, but not on the chain the caller wanted.) missing_field (A field no endpoint carries.) missing_tool (An MCP tool that does not exist.) wrong_figure (A published figure the caller believes is wrong.) broken_endpoint (A path that failed or answered in an unusable shape.)", "enum": [ "missing_stock", "missing_listing", "missing_field", "missing_tool", "wrong_figure", "broken_endpoint" ], "type": "string" }, "subject": { "description": "What it was about - a ticker, a field name, a tool name or a path. Letters, digits, dot, slash, hyphen and underscore, up to 64 characters. Not a sentence: there is no free-text field. A wallet or contract address is refused - send the ticker or the path instead.", "type": "string" } }, "required": [ "kind", "subject" ], "type": "object" }, "name": "report_gap", "outputSchema": null }, { "description": "Find tokenized stocks by ticker or company name. Returns every match with its issuers and chains, alphabetical by ticker. If a ticker is a real stock but has not been tokenized, this reports that too, which is a correct answer rather than an empty result.", "inputSchema": { "additionalProperties": false, "properties": { "query": { "description": "A ticker (NVDA) or part of a company name (Nvidia). Case insensitive.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "search_stocks", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:ad7d78cbf0aed692fd0acc73eadd1e1f5ba910605ea89606d913de57dff86525 | sha256sum