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

Server definition

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

The blob, as servednamed by its sha256

{ "instructions": "Lead Intelligence. 7 pay-per-call tools plus one free tool, `pricing_info`.\nEvery other tool charges per call: USDC on base over x402. Attach the signed payment payload as a plain JSON object in params._meta[\"x402/payment\"] of the tools/call request. Without it the call is answered with isError:true and the payment requirements in structuredContent, and nothing is run or charged.\n`pricing_info` is free, needs no wallet, and returns every tool's price, the payTo address, the network and the scheme — call it first. Each tool's price is also in its own description.\nA settled call is final: settlement is an on-chain transfer and cannot be reversed, so treat each tools/call as a purchase, not as a retryable read. Questions, or evaluating this server without a wallet: [email protected]", "tools": [ { "description": "Resolve company domains to public Greenhouse, Lever, Ashby, Workable, Rippling, or Workday boards. Get attributed jobs, function and seniority, source evidence, confirmed zero, partial, and unresolved states. — $0.02/call, x402 (USDC on base).", "inputSchema": { "description": "Job postings by company domain: give it a bare domain and it finds that company's ATS itself across six platforms — Greenhouse, Lever, Ashby, Workable, Rippling, Workday — then returns the open roles. Says so honestly when it cannot identify one, instead of reporting a false \"no jobs\".", "properties": { "datasetId": { "description": "Pick another Actor's dataset of companies to resolve instead of typing domains directly (e.g. a company-list scraper's run). Ignored when 'domains' is set. Picking it here — not just pasting the ID — is what grants this run's token READ access to that dataset. When this Actor is added as an Integration on another Actor, this field is filled in automatically from the triggering run. Domains are read from whichever field in each row looks like one (companyDomain, domain, website, url, ...).", "editor": "resourcePicker", "example": "your_dataset_id", "resourcePermissions": [ "READ" ], "resourceType": "dataset", "title": "Dataset ID", "type": "string" }, "domains": { "description": "Plain company domains — no ATS token needed, this Actor figures out the applicant-tracking system itself (Greenhouse, Lever, Ashby, Workable, Rippling or Workday). Accepts bare domains or full URLs (\"https://www.figma.com/careers\" is normalized to \"figma.com\"). Takes priority over 'datasetId' when both are set (by presence, even if every domain in it turns out invalid). Up to 100 domains per run.", "editor": "stringList", "example": [ "apify.com", "figma.com" ], "maxItems": 100, "prefill": [ "apify.com" ], "sectionCaption": "Companies to resolve", "sectionDescription": "Enter company domains directly or select a source Dataset. Direct domains take priority and the Actor keeps ATS attribution explicit.", "title": "Company domains", "type": "array" }, "maxConcurrency": { "default": 5, "description": "How many domains to resolve in parallel, 1-20.", "example": 3, "maximum": 20, "minimum": 1, "sectionCaption": "Resolution depth and performance", "sectionDescription": "Control parallel company resolution and the disclosed depth cap for paginated Workday and Rippling boards.", "title": "Max concurrency", "type": "integer" }, "maxJobsPerCompany": { "default": 500, "description": "Depth limit for paginated sources (Workday, Rippling) — how many open roles to read per company before stopping. Non-paginated sources (Greenhouse, Lever, Ashby, Workable) already return their whole board in one call and are never capped by this. Raise it if a company's board is deeper than the default and you need the rest (e.g. a large Workday tenant) — every extra page costs real run time (Workday averages ~1.1s/page). When the cap is reached, or the source's own total is untrustworthy (a proven Workday quirk), a free 'resolved-truncated' row says so explicitly on the dataset — this Actor never silently drops jobs without disclosing it.", "example": 100, "maximum": 5000, "minimum": 1, "title": "Max jobs per company", "type": "integer" } }, "schemaVersion": 1, "title": "Careers Page Jobs Scraper input", "type": "object" }, "name": "careers-page-scraper", "outputSchema": null }, { "description": "Analyze submitted clinic websites for reception-channel gaps with exact BYOD crawling and no discovery. — $0.05/call, x402 (USDC on base).", "inputSchema": { "additionalProperties": false, "properties": { "clinics": { "description": "Buyer-submitted clinic websites to analyze.", "editor": "json", "items": { "additionalProperties": false, "properties": { "address": { "description": "Optional clinic address.", "nullable": true, "title": "Address", "type": "string" }, "name": { "description": "Public clinic name.", "maxLength": 200, "minLength": 1, "title": "Clinic name", "type": "string" }, "recordId": { "description": "Buyer-supplied record ID.", "maxLength": 128, "minLength": 1, "title": "Record ID", "type": "string" }, "websiteUrl": { "description": "Absolute clinic website URL without credentials, fragments, or nonstandard ports.", "pattern": "^(?:http://(?:[A-Za-z0-9.-]+(?::80)?|\\[[0-9A-Fa-f:]+\\](?::80)?)(?:[/?][^#\\s]*)?|https://(?:[A-Za-z0-9.-]+(?::443)?|\\[[0-9A-Fa-f:]+\\](?::443)?)(?:[/?][^#\\s]*)?)$", "title": "Website URL", "type": "string" } }, "required": [ "recordId", "name", "websiteUrl" ], "type": "object" }, "maxItems": 100, "minItems": 1, "prefill": [ { "address": null, "name": "Mayo Clinic", "recordId": "clinic-prefill-001", "websiteUrl": "https://www.mayoclinic.org/" } ], "title": "Submitted clinics", "type": "array" }, "detailLevel": { "default": "compact", "description": "Compact or evidence-rich output.", "enum": [ "compact", "evidence" ], "title": "Detail level", "type": "string" }, "freshnessMinutes": { "default": 60, "description": "Cache freshness window in minutes.", "maximum": 1440, "minimum": 0, "title": "Freshness minutes", "type": "integer" }, "maxResults": { "default": 10, "description": "Maximum useful rows to bill and return.", "maximum": 100, "minimum": 1, "title": "Max results", "type": "integer" }, "minGapScore": { "default": 40, "description": "Minimum score for a useful clinic lead.", "maximum": 100, "minimum": 0, "title": "Minimum gap score", "type": "integer" }, "requestId": { "description": "Correlation key for this run.", "editor": "textfield", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$", "prefill": "clinic-daily-prefill-001", "title": "Request ID", "type": "string" }, "schemaVersion": { "default": "1.0", "description": "Input schema version.", "enum": [ "1.0" ], "title": "Schema version", "type": "string" } }, "required": [ "schemaVersion", "requestId", "clinics" ], "schemaVersion": 1, "title": "Clinic Reception Gap Lead Finder input", "type": "object" }, "name": "clinic-reception-gap-lead-finder", "outputSchema": null }, { "description": "Find the work email a named person publishes on their own company website, confirmed by a same-document schema.org Person assertion. No pattern guessing, no SMTP probing. $0.01 only when a published match is found; no-match, role mailbox, ambiguous and partial outcomes are free. — $0.02/call, x402 (USDC on base).", "inputSchema": { "additionalProperties": false, "description": "People to match against literal emails on company websites that also publish an exact schema.org Person name-email assertion. The Actor never guesses patterns or tests a mailbox.", "properties": { "maxConcurrency": { "default": 1, "description": "People processed concurrently only in local non-monetized runs. On-platform source work and paid delivery are sequential.", "maximum": 5, "minimum": 1, "title": "Maximum concurrency", "type": "integer" }, "maxPagesPerPerson": { "default": 3, "description": "Number of pages selected from the Actor-owned fixed order: /team, /about, /contact, then /.", "maximum": 4, "minimum": 1, "title": "Maximum pages per person", "type": "integer" }, "people": { "description": "One to 50 people. Each domain must be a bare public company hostname, not a URL.", "editor": "json", "items": { "additionalProperties": false, "properties": { "companyName": { "description": "Optional company name used as an additional page-evidence signal, never to invent an address.", "maxLength": 200, "title": "Company name", "type": "string" }, "domain": { "description": "Bare public company hostname such as example.com; schemes, paths, credentials and IP literals are rejected.", "maxLength": 253, "minLength": 4, "pattern": "^(?=.{4,253}$)(?:[a-zA-Z0-9¡-￿](?:[a-zA-Z0-9¡-￿-]{0,61}[a-zA-Z0-9¡-￿])?\\.)+[a-zA-Z¡-￿](?:[a-zA-Z0-9¡-￿-]{0,61}[a-zA-Z0-9¡-￿])?$", "title": "Company domain", "type": "string" }, "fullName": { "description": "The person's real first and last name as it should appear on the company website.", "maxLength": 160, "minLength": 3, "pattern": "^\\s*\\S+(?:\\s+\\S+)+\\s*$", "title": "Full name", "type": "string" }, "inputRef": { "description": "Optional opaque CRM or workflow reference copied to the result row exactly, including leading, trailing, repeated, and tab whitespace.", "maxLength": 200, "title": "Caller reference", "type": "string" } }, "required": [ "fullName", "domain" ], "type": "object" }, "maxItems": 50, "minItems": 1, "prefill": [ { "companyName": "Visionwide", "domain": "visionwide.co", "fullName": "King Lee" } ], "title": "People and company domains", "type": "array" } }, "required": [ "people" ], "schemaVersion": 1, "title": "Domain to Verified Work Email input", "type": "object" }, "name": "domain-to-verified-work-email", "outputSchema": null }, { "description": "Turn a Greenhouse or Lever vacancy into the named hiring owner behind it, with a provider-verified work address from your own BYOK enrichment key. You pay $0.02 only for a verified hiring contact; ambiguous company matches, unsupported boards and empty results are free. — $0.02/call, x402 (USDC on base).", "inputSchema": { "additionalProperties": false, "description": "Vacancies to resolve to the person who owns hiring for them. The Actor reads public ATS boards without a key, and returns an address only when your own contact-data provider confirms it. It never guesses a pattern and never tests a mailbox.", "properties": { "jobs": { "description": "One to 100 vacancies. Give either a direct ATS posting URL, or a company domain plus the exact job title.", "editor": "json", "items": { "additionalProperties": false, "properties": { "companyDomain": { "description": "Bare public company hostname such as example.com. Used to probe supported boards for that company; schemes, paths, credentials and IP literals are rejected.", "maxLength": 253, "minLength": 4, "pattern": "^(?=.{4,253}$)(?:[a-zA-Z0-9¡-￿](?:[a-zA-Z0-9¡-￿-]{0,61}[a-zA-Z0-9¡-￿])?\\.)+[a-zA-Z¡-￿](?:[a-zA-Z0-9¡-￿-]{0,61}[a-zA-Z0-9¡-￿])?$", "title": "Company domain", "type": "string" }, "department": { "description": "Optional department used only to disambiguate and to rank role relevance, never to invent a match.", "maxLength": 200, "title": "Department", "type": "string" }, "inputRef": { "description": "Optional opaque CRM or workflow reference copied to the result row exactly, including leading, trailing, repeated, and tab whitespace.", "maxLength": 200, "title": "Caller reference", "type": "string" }, "jobTitle": { "description": "The vacancy title as the board publishes it. Required together with a company domain; matching is exact after whitespace and case normalization, never fuzzy.", "maxLength": 200, "minLength": 2, "title": "Exact job title", "type": "string" }, "jobUrl": { "description": "Direct posting link on a supported board, such as boards.greenhouse.io or jobs.lever.co. Board token and job identifier are parsed from the URL, never guessed.", "maxLength": 2048, "minLength": 12, "pattern": "^https://[a-zA-Z0-9¡-￿][a-zA-Z0-9¡-￿.-]{0,252}/\\S*$", "title": "ATS posting URL", "type": "string" }, "location": { "description": "Optional location used only to disambiguate two vacancies sharing one title, never to invent a match.", "maxLength": 200, "title": "Location", "type": "string" } }, "type": "object" }, "maxItems": 100, "minItems": 1, "prefill": [ { "companyDomain": "stripe.com", "jobTitle": "Account Executive, Bridge" } ], "title": "Vacancies", "type": "array" }, "maxConcurrency": { "default": 1, "description": "Vacancies processed concurrently only in local non-monetized runs. On-platform source work and paid delivery are sequential, and Lever pacing stays at one request per second regardless of this value.", "maximum": 5, "minimum": 1, "title": "Maximum concurrency", "type": "integer" }, "providerApiKey": { "description": "Your own key, used on your own quota. It is never stored, never logged, never reused across runs and never redistributed. Without it, no owner lookup is attempted and the vacancy returns free.", "editor": "textfield", "isSecret": true, "title": "Your provider API key", "type": "string" }, "providerName": { "description": "Which provider your key belongs to. Only meaningful together with a provider API key.", "enum": [ "hunter", "apollo", "prospeo", "snov", "rocketreach" ], "enumTitles": [ "Hunter", "Apollo", "Prospeo", "Snov.io", "RocketReach" ], "title": "Contact-data provider", "type": "string" } }, "required": [ "jobs" ], "schemaVersion": 1, "title": "Job Posting to Hiring Manager Email input", "type": "object" }, "name": "job-posting-to-hiring-manager-email", "outputSchema": null }, { "description": "Normalize mixed lead rows, deduplicate domains and emails, check DNS/MX evidence, score retained leads, and return every rejection, confidence gap, safe action, and run summary for auditable CRM staging. — $0.02/call, x402 (USDC on base).", "inputSchema": { "description": "Turn any scraper's raw dataset into a clean, scored lead list — dedupe rows, kill dead emails and dead domains, rank the rest by hotness. Runs standalone or as an Integration bolted onto Google Maps / lead scrapers.", "properties": { "checks": { "default": [ "dedupe", "email", "domain", "score" ], "description": "Pipeline stages to run, in order. 'dedupe' collapses rows sharing the same domain/email. 'email' verifies syntax + MX. 'domain' verifies the domain is alive. 'score' computes the hotness score used for the 'minScore' cutoff.", "editor": "select", "example": [ "dedupe", "email", "domain", "score" ], "items": { "enum": [ "dedupe", "email", "domain", "score" ], "enumTitles": [ "Dedupe", "Email verify (syntax + MX)", "Domain alive check", "Hotness score" ], "type": "string" }, "prefill": [ "dedupe", "email", "domain", "score" ], "sectionCaption": "Cleaning and scoring policy", "sectionDescription": "Choose deterministic pipeline stages, the buyer-owned score threshold, and a hard row cap. Disabled checks remain visible evidence gaps.", "title": "Checks to run", "type": "array" }, "datasetId": { "description": "Pick another Actor's dataset to clean (e.g. a Google Maps or lead-scraper run). Ignored when 'items' is set. Picking it here — not just pasting the ID — is what grants this run's token READ access to that dataset. When this Actor is added as an Integration on another Actor, this field is filled in automatically from the triggering run.", "editor": "resourcePicker", "example": "your_dataset_id", "resourcePermissions": [ "READ" ], "resourceType": "dataset", "sectionCaption": "Choose one lead source", "sectionDescription": "Use direct Items, a Dataset selected with READ permission, or a public JSON URL. Direct Items take priority; leave unused source fields empty.", "title": "Dataset ID", "type": "string" }, "datasetUrl": { "description": "Public URL returning a JSON array of lead rows. Used only when both 'items' and 'datasetId' are empty.", "editor": "textfield", "example": "https://api.apify.com/v2/datasets/YOUR_PUBLIC_DATASET_ID/items?clean=true", "title": "Dataset URL", "type": "string" }, "items": { "description": "Raw lead rows to clean directly, one object per lead — any shape works (Google Maps scraper export, CSV turned into JSON, anything with an email/website/phone somewhere in it). Takes priority over 'datasetId' and 'datasetUrl'.", "editor": "json", "example": [ { "email": "[email protected]", "name": "Example Co", "website": "https://example.com" } ], "items": { "type": "object" }, "prefill": [ { "categoryName": "Software company", "phone": "+1 888-746-7439", "title": "Shopify", "url": "https://www.google.com/maps/place/Shopify", "website": "https://www.shopify.com" }, { "email": "[email protected]", "link": "https://www.hubspot.com", "name": "HubSpot", "phoneNumber": "+1 888-482-7768" }, { "companyName": "Zoom Video Communications", "description": "Video conferencing platform. Contact us at [email protected] for enterprise sales.", "domain": "zoom.us" }, { "phone": "+1 888-746-7439", "title": "Shopify Inc", "website": "https://shopify.com" }, { "categoryName": "Payment processor", "emails": [ "[email protected]" ], "phone": "+1 888-926-2289", "title": "Stripe", "website": "https://stripe.com" } ], "title": "Items", "type": "array" }, "maxRows": { "default": 1000, "description": "Safety cap on how many input rows this run will process, regardless of source.", "example": 100, "maximum": 100000, "minimum": 1, "title": "Max rows", "type": "integer" }, "minScore": { "default": 0, "description": "Drop leads scoring below this threshold (0-100) from the clean, billed output. They still show up as free rejected rows with a reason.", "example": 40, "maximum": 100, "minimum": 0, "title": "Minimum score", "type": "integer" } }, "schemaVersion": 1, "title": "Lead List Cleaner input", "type": "object" }, "name": "lead-list-cleaner", "outputSchema": null }, { "description": "Detect commercial permit and license openings from five fixed Socrata datasets and return evidence-backed signals. — $0.03/call, x402 (USDC on base).", "inputSchema": { "additionalProperties": false, "properties": { "detailLevel": { "default": "compact", "description": "Compact or evidence-rich output.", "enum": [ "compact", "evidence" ], "title": "Detail level", "type": "string" }, "freshnessMinutes": { "default": 60, "description": "Cache freshness window in minutes.", "maximum": 1440, "minimum": 0, "title": "Freshness minutes", "type": "integer" }, "lookbackDays": { "default": 30, "description": "Maximum permit age in days.", "maximum": 90, "minimum": 1, "title": "Lookback days", "type": "integer" }, "maxResults": { "default": 10, "description": "Maximum useful rows to bill and return.", "maximum": 100, "minimum": 1, "title": "Max results", "type": "integer" }, "requestId": { "description": "Correlation key for this run.", "editor": "textfield", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$", "prefill": "permit-daily-prefill-001", "title": "Request ID", "type": "string" }, "schemaVersion": { "default": "1.0", "description": "Input schema version.", "enum": [ "1.0" ], "title": "Schema version", "type": "string" } }, "required": [ "schemaVersion", "requestId" ], "schemaVersion": 1, "title": "New Opening Permit Lead Radar input", "type": "object" }, "name": "new-opening-permit-lead-radar", "outputSchema": null }, { "description": "Free — list every paid tool in the 'lead-intelligence' bundle with its price, payTo address and network. Call this first if you don't have a wallet ready yet.", "inputSchema": { "properties": {}, "type": "object" }, "name": "pricing_info", "outputSchema": null }, { "description": "Analyze submitted restaurant websites for booking-channel gaps with exact BYOD crawling and no discovery. — $0.05/call, x402 (USDC on base).", "inputSchema": { "additionalProperties": false, "properties": { "detailLevel": { "default": "compact", "description": "Compact or evidence-rich output.", "enum": [ "compact", "evidence" ], "title": "Detail level", "type": "string" }, "freshnessMinutes": { "default": 60, "description": "Cache freshness window in minutes.", "maximum": 1440, "minimum": 0, "title": "Freshness minutes", "type": "integer" }, "maxResults": { "default": 10, "description": "Maximum useful rows to bill and return.", "maximum": 100, "minimum": 1, "title": "Max results", "type": "integer" }, "minGapScore": { "default": 45, "description": "Minimum score for a useful restaurant lead.", "maximum": 100, "minimum": 0, "title": "Minimum gap score", "type": "integer" }, "requestId": { "description": "Correlation key for this run.", "editor": "textfield", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$", "prefill": "restaurant-daily-prefill-001", "title": "Request ID", "type": "string" }, "restaurants": { "description": "Buyer-submitted restaurant websites to analyze.", "editor": "json", "items": { "additionalProperties": false, "properties": { "address": { "description": "Optional restaurant address.", "nullable": true, "title": "Address", "type": "string" }, "name": { "description": "Public restaurant name.", "maxLength": 200, "minLength": 1, "title": "Restaurant name", "type": "string" }, "recordId": { "description": "Buyer-supplied record ID.", "maxLength": 128, "minLength": 1, "title": "Record ID", "type": "string" }, "websiteUrl": { "description": "Absolute restaurant website URL without credentials, fragments, or nonstandard ports.", "pattern": "^(?:http://(?:[A-Za-z0-9.-]+(?::80)?|\\[[0-9A-Fa-f:]+\\](?::80)?)(?:[/?][^#\\s]*)?|https://(?:[A-Za-z0-9.-]+(?::443)?|\\[[0-9A-Fa-f:]+\\](?::443)?)(?:[/?][^#\\s]*)?)$", "title": "Website URL", "type": "string" } }, "required": [ "recordId", "name", "websiteUrl" ], "type": "object" }, "maxItems": 100, "minItems": 1, "prefill": [ { "address": null, "name": "Dishoom", "recordId": "restaurant-prefill-001", "websiteUrl": "https://www.dishoom.com/" } ], "title": "Submitted restaurants", "type": "array" }, "schemaVersion": { "default": "1.0", "description": "Input schema version.", "enum": [ "1.0" ], "title": "Schema version", "type": "string" } }, "required": [ "schemaVersion", "requestId", "restaurants" ], "schemaVersion": 1, "title": "Restaurant Booking Gap Lead Finder input", "type": "object" }, "name": "restaurant-booking-gap-lead-finder", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:c24b0a3091f7537bc49df465d85fda9196e0c8a275012d1e7740731b4416f1e6 | sha256sum