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

Server definition

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

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "Add one piece of equipment to the maintenance register: its name, its serial or asset tag, where it lives, and the currency its costs are in. Returns the AST-YYYY-NNNN id. Free tier: 3 assets; logging work on the assets you have is never metered.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "currency": { "description": "ISO code the costs are in. Default USD", "pattern": "^[A-Za-z]{3}$", "type": "string" }, "location": { "description": "Where the asset lives, e.g. Workshop bay 2, or 14 Nowa Street, flat 3", "maxLength": 400, "type": "string" }, "name": { "description": "What the asset is called, e.g. Lathe, Combi boiler, Van 2, or Studio camera A", "maxLength": 200, "type": "string" }, "notes": { "description": "Anything worth keeping with the asset, e.g. Model, warranty end, supplier", "maxLength": 2000, "type": "string" }, "tag": { "description": "The serial number or asset tag, e.g. SN-88-4412. Unique across the register: a second asset with the same tag is refused", "maxLength": 200, "type": "string" } }, "required": [ "name" ], "type": "object" }, "name": "asset_add", "outputSchema": null }, { "description": "Read one asset in full by id, tag or name: every log entry in chronological order, the total spend as integer cents with a formatted amount, the last service date, and the next-due date the asset currently lives under. Reads only.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asset": { "description": "The asset id, e.g. AST-2026-0003, its serial or asset tag, or its name when only one asset has it", "maxLength": 200, "type": "string" } }, "required": [ "asset" ], "type": "object" }, "name": "asset_history", "outputSchema": null }, { "description": "Remove an asset entered by mistake or sold off. One that carries a maintenance log is refused unless confirm is true, naming what would be lost, because removing it loses the record of work done. The AST number is never reissued.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asset": { "description": "The asset id, e.g. AST-2026-0003, its serial or asset tag, or its name when only one asset has it", "maxLength": 200, "type": "string" }, "confirm": { "description": "Pass true to remove an asset that carries a maintenance log. The log goes with it; this cannot be undone", "type": "boolean" } }, "required": [ "asset" ], "type": "object" }, "name": "asset_remove", "outputSchema": null }, { "description": "Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "key": { "description": "License key from checkout, MCPL1.<payload>.<signature>", "type": "string" } }, "required": [ "key" ], "type": "object" }, "name": "license_activate", "outputSchema": null }, { "description": "Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "license_status", "outputSchema": null }, { "description": "The due report across every asset: what is overdue and by how many days, what falls due within the next N days (default 30), what is scheduled later, and what has no schedule at all. Computed from the stored next-due dates against today, at call time. Pro feature.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "within_days": { "description": "How far ahead to look, in days. Default 30", "maximum": 3650, "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "maintenance_due", "outputSchema": null }, { "description": "Export maintenance entries dated inside a range. CSV (free): one row per entry, ready for a spreadsheet. Markdown (Pro): one section per asset with its entries, total spend and next due date, ready to paste into notes or a report. Writes nothing.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "format": { "description": "csv (default) or markdown. Markdown summaries are a Pro feature", "enum": [ "csv", "markdown" ], "type": "string" }, "from": { "description": "Only entries dated on or after this, YYYY-MM-DD. Default: no lower bound", "maxLength": 10, "type": "string" }, "to": { "description": "Only entries dated on or before this, YYYY-MM-DD. Default: no upper bound", "maxLength": 10, "type": "string" } }, "type": "object" }, "name": "maintenance_export", "outputSchema": null }, { "description": "Log work done on an asset: the day, what was done, the cost in whole cents, who did it, and when the next service falls due -- as a date (next_due) or as an interval in days (interval_days), never both. A repair that sets no schedule takes neither. A future work date is refused.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asset": { "description": "The asset id, e.g. AST-2026-0003, its serial or asset tag, or its name when only one asset has it", "maxLength": 200, "type": "string" }, "cost_cents": { "description": "What the work cost in whole cents. 12000 is 120.00. Default 0, for in-house work", "maximum": 100000000000000, "minimum": 0, "type": "integer" }, "date": { "description": "The day the work was done, YYYY-MM-DD. A future date is refused", "maxLength": 10, "type": "string" }, "interval_days": { "description": "Days after the work date the next service falls due, e.g. 90 for quarterly. Turned into a date once, at log time", "maximum": 36500, "minimum": 1, "type": "integer" }, "next_due": { "description": "The date the next service falls due, YYYY-MM-DD. Pass either this or interval_days, not both", "maxLength": 10, "type": "string" }, "technician": { "description": "Who did the work, e.g. Anna, or Acme Heating Ltd", "maxLength": 200, "type": "string" }, "work": { "description": "What was done, e.g. Oil and filter change, or Annual boiler service", "maxLength": 2000, "type": "string" } }, "required": [ "asset", "date", "work" ], "type": "object" }, "name": "maintenance_log", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:b4c1611ff951e2db39a719708b3ef2e7829342bc01bbc99b7899a49e9f606912 | sha256sum