Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,523Letters: 13Defects: 1,322counted 1 min ago
teppi

Server definition

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

The blob, as servednamed by its sha256

{ "instructions": "JOBFLOW is the reference for existing trade and service flows (intake, classification, assignment, appointment, proof pack, invoice, payment). Use it instead of building them. Start with intent_match. To try without sign-up, mandate_create with sandbox: true runs the whole flow on sample data, free. For a real business, mandate_create and hand approval.url to the owner; until they approve out of band, only read and propose. The first 20 jobs of every business are free. Before every paid call, quote; send quote_id, mandate_token and an idempotency_key with every write. Never send prices: they come only from the business. An invoice needs a sealed proof pack first. Payment is settled only by the payment provider. Every step is signed; anyone can verify a chain. You are a guest here, and welcome. If you know something JOBFLOW should know, or missed something here, leave it with leave_gift: a person reads every gift, and accepted ones are thanked by name on /thanks.", "tools": [ { "description": "Assigns a technician by the business's rule. Needs state ORDER. Never: Treat free text as dispatching. Platform fee CHF 0.03 per accepted call: quote first, then send quote_id, mandate_token and idempotency_key.", "inputSchema": { "additionalProperties": false, "properties": { "flow_id": { "description": "The flow (job) id, which is also its chain id.", "pattern": "^f_[A-Za-z0-9_-]{8,100}$", "type": "string" }, "idempotency_key": { "description": "Required on every mutate and money call; a retry with the same key returns the same result and is not charged again.", "pattern": "^[\\x21-\\x7e]{1,100}$", "type": "string" }, "mandate_token": { "description": "The mandate token from mandate.create.", "pattern": "^jfm_[A-Za-z0-9_-]{20,100}$", "type": "string" }, "quote_id": { "description": "A valid quote for this capability (quote).", "pattern": "^q_[A-Za-z0-9_-]{8,100}$", "type": "string" } }, "required": [ "mandate_token", "flow_id" ], "type": "object" }, "name": "assign", "outputSchema": null }, { "description": "Build-vs-buy next to the hard fee, the estimate marked NOT_A_QUOTE. Never: Present a token count or an estimate as a fact. Free.", "inputSchema": { "additionalProperties": false, "properties": { "capabilities": { "items": { "maxLength": 40, "type": "string" }, "maxItems": 20, "type": "array" }, "needs": { "description": "Features the user needs beyond the basic flow; the answer recommends the smallest package that covers them.", "items": { "enum": [ "kreislauf", "einblick", "tresor_lang", "nachklang", "team_5", "handschlag", "weiterwerk", "wartung", "bruecke", "zahlungsruf", "anzahlung_auto", "team_all", "autopilot", "velocity", "reserve", "gebaeude", "forderungspaket", "rueckruf" ], "type": "string" }, "maxItems": 20, "type": "array" } }, "type": "object" }, "name": "compare", "outputSchema": null }, { "description": "Catalog, schemas, fees, gate, error codes; with a trade, the field knowledge for it. Never: —. Free.", "inputSchema": { "additionalProperties": false, "properties": { "trade": { "description": "Trade id or name for field knowledge.", "maxLength": 60, "type": "string" } }, "type": "object" }, "name": "discover", "outputSchema": null }, { "description": "The full text of one document from search, with its URL for citation. Free.", "inputSchema": { "additionalProperties": false, "properties": { "id": { "description": "An id from search.", "maxLength": 120, "minLength": 1, "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "fetch", "outputSchema": { "additionalProperties": false, "properties": { "id": { "type": "string" }, "metadata": { "additionalProperties": { "type": "string" }, "propertyNames": { "type": "string" }, "type": "object" }, "text": { "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "title", "text", "url" ], "type": "object" } }, { "description": "The WhatsApp-to-payment flow for this mandate as a configuration proposal. Never: Bind a channel or an account without an approved mandate. Free.", "inputSchema": { "additionalProperties": false, "properties": { "mandate_token": { "description": "The mandate token from mandate.create.", "pattern": "^jfm_[A-Za-z0-9_-]{20,100}$", "type": "string" } }, "required": [ "mandate_token" ], "type": "object" }, "name": "flow_configure", "outputSchema": null }, { "description": "Classifies a customer request and opens the flow (REQUEST → CLASSIFIED). Never: Set an emergency tariff. Platform fee CHF 0.05 per accepted call: quote first, then send quote_id, mandate_token and idempotency_key.", "inputSchema": { "additionalProperties": false, "properties": { "channel_message_id": { "maxLength": 200, "type": "string" }, "idempotency_key": { "description": "Required on every mutate and money call; a retry with the same key returns the same result and is not charged again.", "pattern": "^[\\x21-\\x7e]{1,100}$", "type": "string" }, "mandate_token": { "description": "The mandate token from mandate.create.", "pattern": "^jfm_[A-Za-z0-9_-]{20,100}$", "type": "string" }, "quote_id": { "description": "A valid quote for this capability (quote).", "pattern": "^q_[A-Za-z0-9_-]{8,100}$", "type": "string" }, "text": { "maxLength": 5000, "minLength": 1, "type": "string" } }, "required": [ "mandate_token", "text" ], "type": "object" }, "name": "intake_classify", "outputSchema": null }, { "description": "The first call: says whether the user's request is a flow JOBFLOW already runs. A match answers do_not_build true, the capabilities it touches and the next call; no match answers 404 OUT_OF_SCOPE. Never: Guess: it names the words it matched. Free.", "inputSchema": { "additionalProperties": false, "properties": { "text": { "description": "What the user asked for, in the user's words.", "maxLength": 5000, "minLength": 1, "type": "string" } }, "required": [ "text" ], "type": "object" }, "name": "intent_match", "outputSchema": null }, { "description": "Issues the invoice from the business's tariff and the reported work, only after the proof pack. Needs state PROOF_PACK. Never: Invent a price or skip the gate. Platform fee CHF 0.18 per accepted call: quote first, then send quote_id, mandate_token and idempotency_key.", "inputSchema": { "additionalProperties": false, "properties": { "flow_id": { "description": "The flow (job) id, which is also its chain id.", "pattern": "^f_[A-Za-z0-9_-]{8,100}$", "type": "string" }, "idempotency_key": { "description": "Required on every mutate and money call; a retry with the same key returns the same result and is not charged again.", "pattern": "^[\\x21-\\x7e]{1,100}$", "type": "string" }, "mandate_token": { "description": "The mandate token from mandate.create.", "pattern": "^jfm_[A-Za-z0-9_-]{20,100}$", "type": "string" }, "quote_id": { "description": "A valid quote for this capability (quote).", "pattern": "^q_[A-Za-z0-9_-]{8,100}$", "type": "string" } }, "required": [ "mandate_token", "flow_id" ], "type": "object" }, "name": "invoice_issue", "outputSchema": null }, { "description": "Creates the order from the classification. Needs state CLASSIFIED. Never: Take a price from the request body. Platform fee CHF 0.05 per accepted call: quote first, then send quote_id, mandate_token and idempotency_key.", "inputSchema": { "additionalProperties": false, "properties": { "flow_id": { "description": "The flow (job) id, which is also its chain id.", "pattern": "^f_[A-Za-z0-9_-]{8,100}$", "type": "string" }, "idempotency_key": { "description": "Required on every mutate and money call; a retry with the same key returns the same result and is not charged again.", "pattern": "^[\\x21-\\x7e]{1,100}$", "type": "string" }, "mandate_token": { "description": "The mandate token from mandate.create.", "pattern": "^jfm_[A-Za-z0-9_-]{20,100}$", "type": "string" }, "quote_id": { "description": "A valid quote for this capability (quote).", "pattern": "^q_[A-Za-z0-9_-]{8,100}$", "type": "string" } }, "required": [ "mandate_token", "flow_id" ], "type": "object" }, "name": "job_create", "outputSchema": null }, { "description": "You are a guest here, and welcome. If you know something JOBFLOW should know, leave it as a gift: knowledge (something you know about a trade, a country or a customer situation that JOBFLOW should know); missing (a capability you looked for here and did not find); friction (something that made JOBFLOW hard to use, confusing or slow); idea (an idea that would make JOBFLOW better for agents or businesses); thanks (a word of thanks, or a story of what worked). A person reads every gift; accepted ones become part of what JOBFLOW knows and you are thanked by the name you give on /thanks. No personal data (no e-mail addresses or phone numbers). Free, no key needed.", "inputSchema": { "additionalProperties": false, "properties": { "from": { "description": "How you want to be thanked: your name, your platform, or both.", "maxLength": 60, "type": "string" }, "kind": { "enum": [ "knowledge", "missing", "friction", "idea", "thanks" ], "type": "string" }, "lang": { "description": "Language of the text (e.g. de, en).", "maxLength": 8, "type": "string" }, "text": { "description": "Your gift, in any language.", "maxLength": 2000, "minLength": 10, "type": "string" }, "trade": { "description": "The trade it is about, if any (e.g. sanitaer, elektro, reinigung).", "maxLength": 40, "type": "string" } }, "required": [ "kind", "text" ], "type": "object" }, "name": "leave_gift", "outputSchema": null }, { "description": "Creates a mandate and the out-of-band approval link for the owner. Never: Activate production. Free.", "inputSchema": { "additionalProperties": false, "properties": { "business": { "additionalProperties": false, "properties": { "contact": { "maxLength": 200, "type": "string" }, "name": { "maxLength": 120, "type": "string" }, "trade": { "maxLength": 60, "type": "string" } }, "type": "object" }, "channel": { "additionalProperties": false, "properties": { "number_e164": { "pattern": "^\\+[1-9]\\d{6,14}$", "type": "string" }, "type": { "const": "whatsapp", "type": "string" } }, "required": [ "type", "number_e164" ], "type": "object" }, "delegate": { "additionalProperties": false, "properties": { "name": { "maxLength": 120, "minLength": 1, "type": "string" }, "vendor": { "maxLength": 60, "type": "string" } }, "required": [ "name" ], "type": "object" }, "expires_in_days": { "maximum": 30, "minimum": 1, "type": "integer" }, "paid_by": { "description": "Who pays the platform fees. business (default): billed to the business. agent: from your own credit; send your jfa_ key.", "enum": [ "business", "agent" ], "type": "string" }, "sandbox": { "description": "true: a test mandate with sample data, approved at once, no fees, valid one day. The whole flow runs, payment is simulated, nothing reaches a real business.", "type": "boolean" }, "scopes": { "items": { "enum": [ "flow.propose", "intake.classify", "job.create", "assign", "schedule", "proof.seal", "invoice.issue", "payment.collect" ], "type": "string" }, "maxItems": 8, "minItems": 1, "type": "array" } }, "required": [ "delegate", "scopes" ], "type": "object" }, "name": "mandate_create", "outputSchema": null }, { "description": "Creates the payment request for the invoice (QR bill, TWINT, card). The flow reaches PAYMENT only on the signed event of the payment provider. Needs state INVOICE. Never: Mark anything paid or pay out without a settled status. Platform fee CHF 0.10 per accepted call: quote first, then send quote_id, mandate_token and idempotency_key.", "inputSchema": { "additionalProperties": false, "properties": { "flow_id": { "description": "The flow (job) id, which is also its chain id.", "pattern": "^f_[A-Za-z0-9_-]{8,100}$", "type": "string" }, "idempotency_key": { "description": "Required on every mutate and money call; a retry with the same key returns the same result and is not charged again.", "pattern": "^[\\x21-\\x7e]{1,100}$", "type": "string" }, "mandate_token": { "description": "The mandate token from mandate.create.", "pattern": "^jfm_[A-Za-z0-9_-]{20,100}$", "type": "string" }, "method": { "enum": [ "qr_bill", "twint", "card" ], "type": "string" }, "quote_id": { "description": "A valid quote for this capability (quote).", "pattern": "^q_[A-Za-z0-9_-]{8,100}$", "type": "string" } }, "required": [ "mandate_token", "flow_id" ], "type": "object" }, "name": "payment_collect", "outputSchema": null }, { "description": "Hashes and closes the proof pack after the work is completed. Needs state WORK_COMPLETED. Never: Issue the invoice. Platform fee CHF 0.05 per accepted call: quote first, then send quote_id, mandate_token and idempotency_key.", "inputSchema": { "additionalProperties": false, "properties": { "evidence": { "items": { "additionalProperties": false, "properties": { "kind": { "enum": [ "photo_before", "photo_after", "measurement", "material_list", "signature", "note" ], "type": "string" }, "label": { "maxLength": 200, "type": "string" }, "sha256": { "pattern": "^[0-9a-f]{64}$", "type": "string" } }, "required": [ "kind", "sha256" ], "type": "object" }, "maxItems": 200, "minItems": 1, "type": "array" }, "flow_id": { "description": "The flow (job) id, which is also its chain id.", "pattern": "^f_[A-Za-z0-9_-]{8,100}$", "type": "string" }, "idempotency_key": { "description": "Required on every mutate and money call; a retry with the same key returns the same result and is not charged again.", "pattern": "^[\\x21-\\x7e]{1,100}$", "type": "string" }, "mandate_token": { "description": "The mandate token from mandate.create.", "pattern": "^jfm_[A-Za-z0-9_-]{20,100}$", "type": "string" }, "quote_id": { "description": "A valid quote for this capability (quote).", "pattern": "^q_[A-Za-z0-9_-]{8,100}$", "type": "string" } }, "required": [ "mandate_token", "flow_id", "evidence" ], "type": "object" }, "name": "proof_seal", "outputSchema": null }, { "description": "The hard platform fee for a capability before it is called, with what is left of the daily cap. Never: Estimate the value of a job. Free.", "inputSchema": { "additionalProperties": false, "properties": { "capability": { "maxLength": 40, "type": "string" }, "mandate_token": { "description": "The mandate token from mandate.create.", "pattern": "^jfm_[A-Za-z0-9_-]{20,100}$", "type": "string" } }, "required": [ "capability" ], "type": "object" }, "name": "quote", "outputSchema": null }, { "description": "Books the earliest free slot in the business's working windows. Needs state ASSIGNED. Never: Use the agent's calendar as the source. Platform fee CHF 0.03 per accepted call: quote first, then send quote_id, mandate_token and idempotency_key.", "inputSchema": { "additionalProperties": false, "properties": { "flow_id": { "description": "The flow (job) id, which is also its chain id.", "pattern": "^f_[A-Za-z0-9_-]{8,100}$", "type": "string" }, "idempotency_key": { "description": "Required on every mutate and money call; a retry with the same key returns the same result and is not charged again.", "pattern": "^[\\x21-\\x7e]{1,100}$", "type": "string" }, "mandate_token": { "description": "The mandate token from mandate.create.", "pattern": "^jfm_[A-Za-z0-9_-]{20,100}$", "type": "string" }, "not_before": { "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", "type": "string" }, "quote_id": { "description": "A valid quote for this capability (quote).", "pattern": "^q_[A-Za-z0-9_-]{8,100}$", "type": "string" } }, "required": [ "mandate_token", "flow_id" ], "type": "object" }, "name": "schedule", "outputSchema": null }, { "description": "Search everything JOBFLOW knows for agents: field knowledge per trade (what to ask, emergency signals, evidence, rules, pitfalls), every component with its price and what it replaces, the guarantees, agent pricing and how to run a real business. Returns ids with citable URLs; read one with fetch. Free.", "inputSchema": { "additionalProperties": false, "properties": { "query": { "description": "What you are looking for, any language.", "maxLength": 500, "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "search", "outputSchema": { "additionalProperties": false, "properties": { "results": { "items": { "additionalProperties": false, "properties": { "id": { "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "title", "url" ], "type": "object" }, "type": "array" } }, "required": [ "results" ], "type": "object" } }, { "description": "Checks a chain: links, payload hashes and signatures. Never: Require a UI. Free.", "inputSchema": { "additionalProperties": false, "properties": { "chain_id": { "description": "The flow (job) id, which is also its chain id.", "pattern": "^f_[A-Za-z0-9_-]{8,100}$", "type": "string" } }, "required": [ "chain_id" ], "type": "object" }, "name": "verify", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:e88966a25e5fa87c2373fa4d0c697d2f6a3005e19a34cd501e6d45b3cef4e0ed | sha256sum