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

Server definition

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

The blob, as servednamed by its sha256

{ "instructions": "SecondAppraisal helps vehicle owners whose insurer declared their car a total loss get a fair settlement.\nUse `submit_total_loss_intake` when a user wants help with a total-loss offer: send at least a phone or email, plus whatever vehicle / loss / offer details you have. Read `customer_message` back to the user verbatim — it carries the confirm link and tells them we will call to confirm.\nContact policy, stated to the customer: \"We will attempt to call you to confirm that you want our free appraisal consultation and to confirm this request came from you or your representative/agent.\"\nUse `get_preliminary_estimate` for a no-commitment market read before submitting, and `get_state_total_loss_rules` to answer state-specific questions (thresholds, appraisal-clause rights, hotlines).", "tools": [ { "description": "Fetch the current receipt for a submitted intake (status, confirm link while still confirmable, preliminary).", "inputSchema": { "additionalProperties": false, "properties": { "intake_id": { "description": "The `intake_id` from a previous submission.", "minLength": 1, "type": "string" }, "poll_token": { "description": "The `poll_token` returned once on that submission.", "minLength": 1, "type": "string" } }, "required": [ "intake_id", "poll_token" ], "type": "object" }, "name": "get_intake_status", "outputSchema": null }, { "description": "A no-commitment early market read for a vehicle: comparable listing prices near the customer (10th percentile / median / 90th), an odometer-adjusted mid, and the gap vs the insurer's offer. Not an appraisal. Nothing is stored about the customer.", "inputSchema": { "additionalProperties": false, "properties": { "acv_offer_cents": { "description": "Insurer's offer in cents, to report the gap.", "minimum": 0, "type": "integer" }, "make": { "maxLength": 60, "minLength": 1, "type": "string" }, "model": { "maxLength": 80, "minLength": 1, "type": "string" }, "odometer": { "maximum": 2000000, "minimum": 0, "type": "integer" }, "state": { "description": "Two-letter state; used when no zip is given.", "maxLength": 2, "minLength": 2, "type": "string" }, "trim": { "maxLength": 80, "minLength": 1, "type": "string" }, "year": { "maximum": 2100, "minimum": 1900, "type": "integer" }, "zip": { "description": "Preferred; searches comparables near here.", "pattern": "^\\d{5}(-\\d{4})?$", "type": "string" } }, "required": [ "year", "make", "model" ], "type": "object" }, "name": "get_preliminary_estimate", "outputSchema": null }, { "description": "State-specific total-loss facts: threshold and method, whether an independent appraiser must be licensed there, whether third-party appraisals are allowed, statute citations, must-know rights, common pitfalls, and the consumer hotline.", "inputSchema": { "additionalProperties": false, "properties": { "state": { "description": "Two-letter code (TX) or state name (Texas).", "maxLength": 40, "minLength": 2, "type": "string" } }, "required": [ "state" ], "type": "object" }, "name": "get_state_total_loss_rules", "outputSchema": null }, { "description": "Submit a vehicle owner's total-loss situation to SecondAppraisal on their behalf. Minimum: one of customer.phone / customer.email, your `agent` self-identification, and a `consent.attestation`. Returns a receipt with `customer_confirmation_url` (one tap confirms), a relayable `customer_message`, an optional `preliminary` market read, `contact_policy` (we will email/text a welcome and a person will call to confirm the request came from the customer or their agent), and `pricing` — the consultation is free; if the owner wants more, Appraisal Research is $199 (paid up front, no guarantee) or Appraisal Research + Negotiation is $495 with a $25 discount for customers you send ($470; a card HOLD captured only after the settlement improves by $1,000+, otherwise nothing is charged). The $25 applies to representation only. You may quote `pricing` verbatim; payment always happens on our site by the customer's own click (`checkout` links appear once they have confirmed) — never collect card details. Read `customer_message` to the user verbatim.", "inputSchema": { "additionalProperties": false, "description": "Submit a vehicle owner's total-loss situation on their behalf.", "properties": { "agent": { "additionalProperties": false, "description": "Who is calling. Required — an intake without self-identification is refused.", "properties": { "name": { "allOf": [ { "maxLength": 120, "type": "string" }, { "maxLength": 120, "minLength": 1, "type": "string" } ], "description": "Human-readable name of the agent or product submitting on the customer's behalf (e.g. \"OpenClaw\", \"Acme Claims Copilot\"). Shown to the customer." }, "operator_url": { "description": "Homepage or documentation URL of the agent operator.", "format": "uri", "maxLength": 300, "type": "string" }, "platform": { "description": "Platform slug for attribution. Known values: openclaw, chatgpt, claude, gemini, copilot, perplexity, custom. Any lowercase slug is accepted.", "pattern": "^[a-z0-9][a-z0-9-]{0,59}$", "type": "string" }, "version": { "description": "Agent / integration version string.", "maxLength": 60, "minLength": 1, "type": "string" } }, "required": [ "name", "platform" ], "type": "object" }, "consent": { "additionalProperties": false, "description": "Consent basis. Attestation wording version 2026-09-16.1.", "properties": { "attestation": { "description": "The agent's attestation, in its own words, that the customer asked for this submission and knows SecondAppraisal will email/text and call to confirm. Stored verbatim on the intake.", "maxLength": 1000, "minLength": 20, "type": "string" }, "attestor_name": { "allOf": [ { "maxLength": 120, "type": "string" }, { "maxLength": 120, "minLength": 1, "type": "string" } ], "description": "Who is attesting (the agent, or the person operating it)." }, "mode": { "default": "customer_directed", "description": "customer_directed: the customer asked their agent to submit this. warm_handoff: a registered agent attests the customer asked to be contacted now (priority callback; requires an API key).", "enum": [ "customer_directed", "warm_handoff" ], "type": "string" }, "notify_customer": { "default": true, "description": "true (default): we send the customer our welcome email/text with the confirm link. false: you relay `customer_message` and `customer_confirmation_url` yourself and we send nothing until they confirm or we call.", "type": "boolean" } }, "required": [ "attestation" ], "type": "object" }, "customer": { "additionalProperties": false, "description": "The vehicle owner. At least one of email / phone is required; everything else is optional.", "properties": { "email": { "description": "Customer email address.", "format": "email", "maxLength": 254, "type": "string" }, "first_name": { "allOf": [ { "maxLength": 80, "type": "string" }, { "maxLength": 80, "minLength": 1, "type": "string" } ] }, "last_name": { "allOf": [ { "maxLength": 80, "type": "string" }, { "maxLength": 80, "minLength": 1, "type": "string" } ] }, "phone": { "allOf": [ { "type": "string" }, { "pattern": "^[2-9]\\d{9}$", "type": "string" } ], "description": "US mobile or landline number. Punctuation and a leading +1 are tolerated." } }, "type": "object" }, "external_ref": { "description": "Your reference id; echoed in every response.", "maxLength": 120, "minLength": 1, "type": "string" }, "idempotency_key": { "description": "Any unique string per logical submission; a replay returns the original receipt.", "maxLength": 255, "minLength": 1, "type": "string" }, "loss": { "additionalProperties": false, "description": "When and where the loss happened.", "properties": { "date_of_loss": { "description": "Calendar date, YYYY-MM-DD.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "insurance_path": { "description": "Whose insurance is handling it: own (customer's carrier), at-fault (the other driver's carrier), unknown, or none (no insurance claim — valuation only).", "enum": [ "own", "at-fault", "unknown", "none" ], "type": "string" }, "loss_state": { "description": "State where the loss occurred / the policy is written.", "maxLength": 2, "minLength": 2, "type": "string" }, "zip": { "description": "US ZIP code (5 or 5+4). Used to search comparable vehicles near the customer.", "pattern": "^\\d{5}(-\\d{4})?$", "type": "string" } }, "type": "object" }, "offer": { "additionalProperties": false, "description": "The insurer's position so far, if any.", "properties": { "acv_offer": { "description": "Insurer's Actual Cash Value offer in dollars. Converted to cents server-side.", "maximum": 1000000, "minimum": 0, "type": "number" }, "acv_offer_cents": { "description": "Insurer's Actual Cash Value offer in cents. `acv_offer` (dollars) is also accepted.", "maximum": 100000000, "minimum": 0, "type": "integer" }, "claim_number": { "maxLength": 60, "minLength": 1, "type": "string" }, "insurer": { "allOf": [ { "maxLength": 120, "type": "string" }, { "maxLength": 120, "minLength": 1, "type": "string" } ], "description": "Insurance company handling the total loss." } }, "type": "object" }, "vehicle": { "additionalProperties": false, "description": "The vehicle. A VIN (or plate + plate_state) is best; year/make/model works too.", "properties": { "make": { "allOf": [ { "maxLength": 60, "type": "string" }, { "maxLength": 60, "minLength": 1, "type": "string" } ] }, "model": { "allOf": [ { "maxLength": 80, "type": "string" }, { "maxLength": 80, "minLength": 1, "type": "string" } ] }, "odometer": { "description": "Odometer reading in miles at the time of loss.", "maximum": 2000000, "minimum": 0, "type": "integer" }, "plate": { "description": "License plate. Requires plate_state to resolve a VIN.", "maxLength": 12, "minLength": 1, "type": "string" }, "plate_state": { "description": "Two-letter US state code, e.g. TX.", "maxLength": 2, "minLength": 2, "type": "string" }, "trim": { "allOf": [ { "maxLength": 80, "type": "string" }, { "maxLength": 80, "minLength": 1, "type": "string" } ] }, "vin": { "allOf": [ { "type": "string" }, { "maxLength": 17, "minLength": 11, "type": "string" } ], "description": "Vehicle Identification Number. A full 17-character VIN lets us decode year/make/model/trim." }, "year": { "maximum": 2100, "minimum": 1900, "type": "integer" } }, "type": "object" } }, "required": [ "agent", "customer", "consent" ], "type": "object" }, "name": "submit_total_loss_intake", "outputSchema": null }, { "description": "Attach the insurer's Market Valuation Report (CCC / Mitchell PDF) to a submitted intake. We parse it (vehicle, mileage, offer, insurer, loss date) and refresh the preliminary. Allow up to two minutes.", "inputSchema": { "additionalProperties": false, "properties": { "file_base64": { "description": "The PDF bytes, base64-encoded (standard or URL-safe alphabet). Up to 15 MB decoded.", "minLength": 1, "type": "string" }, "file_name": { "description": "Original file name, e.g. valuation-report.pdf.", "maxLength": 200, "minLength": 1, "type": "string" }, "intake_id": { "description": "The `intake_id` from a previous submission.", "minLength": 1, "type": "string" }, "poll_token": { "description": "The `poll_token` returned once on that submission.", "minLength": 1, "type": "string" } }, "required": [ "intake_id", "poll_token", "file_name", "file_base64" ], "type": "object" }, "name": "upload_valuation_report", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:340d0d902c7299aa22e5c141c64d352c6b486c7e32bc0378fff89ee4966abaf4 | sha256sum