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 yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:b4c1611ff951e2db39a719708b3ef2e7829342bc01bbc99b7899a49e9f606912 | sha256sum