Lead Intelligence

Pay-per-call lead intelligence tools with free MCP discovery and x402 payments.

Sollte ich dies verwenden

Qualität und Sicherheit

B
Qualität der Beschreibung
90%
Vollständigkeit des Schemas
89%
Qualität der Benennung
46%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (10)

  • LOWTool 'careers-page-scraper' doesn't follow camelCase/snake_casein careers-page-scraper
  • LOWTool 'clinic-reception-gap-lead-finder' doesn't follow camelCase/snake_casein clinic-reception-gap-lead-finder
  • LOWTool 'clinic-reception-gap-lead-finder' name length outside 3-30 rangein clinic-reception-gap-lead-finder
  • LOWTool 'domain-to-verified-work-email' doesn't follow camelCase/snake_casein domain-to-verified-work-email
  • LOWTool 'job-posting-to-hiring-manager-email' doesn't follow camelCase/snake_casein job-posting-to-hiring-manager-email
  • LOWTool 'job-posting-to-hiring-manager-email' name length outside 3-30 rangein job-posting-to-hiring-manager-email
  • LOWTool 'lead-list-cleaner' doesn't follow camelCase/snake_casein lead-list-cleaner
  • LOWTool 'new-opening-permit-lead-radar' doesn't follow camelCase/snake_casein new-opening-permit-lead-radar
  • LOWTool 'restaurant-booking-gap-lead-finder' doesn't follow camelCase/snake_casein restaurant-booking-gap-lead-finder
  • LOWTool 'restaurant-booking-gap-lead-finder' name length outside 3-30 rangein restaurant-booking-gap-lead-finder

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~5,037Tokens (Tool-Definitionen)
~6.5 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (3.94% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "lead-intelligence": {
      "url": "https://api.timzinin.com/mcp/lead-intelligence"
    }
  }
}

Remote-Endpunkte

https://api.timzinin.com/mcp/lead-intelligencestreamable-http

Was es kann

Tool-Inventar

Tools (8)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢pricing_info

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {}
}
🟢careers-page-scraper(domains, datasetId, maxConcurrency, maxJobsPerCompany)

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).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "domains": {
      "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",
      "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.",
      "maxItems": 100,
      "editor": "stringList",
      "prefill": [
        "apify.com"
      ],
      "example": [
        "apify.com",
        "figma.com"
      ]
    },
    "datasetId": {
      "title": "Dataset ID",
      "type": "string",
      "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",
      "resourceType": "dataset",
      "resourcePermissions": [
        "READ"
      ],
      "example": "your_dataset_id"
    },
    "maxConcurrency": {
      "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",
      "description": "How many domains to resolve in parallel, 1-20.",
      "default": 5,
      "example": 3,
      "minimum": 1,
      "maximum": 20
    },
    "maxJobsPerCompany": {
      "title": "Max jobs per company",
      "type": "integer",
      "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.",
      "default": 500,
      "example": 100,
      "minimum": 1,
      "maximum": 5000
    }
  },
  "title": "Careers Page Jobs Scraper input",
  "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\".",
  "schemaVersion": 1
}
🟢clinic-reception-gap-lead-finder(schemaVersion, requestId, maxResults, freshnessMinutes, detailLevel, ...)

Analyze submitted clinic websites for reception-channel gaps with exact BYOD crawling and no discovery. — $0.05/call, x402 (USDC on base).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "schemaVersion": {
      "title": "Schema version",
      "description": "Input schema version.",
      "type": "string",
      "enum": [
        "1.0"
      ],
      "default": "1.0"
    },
    "requestId": {
      "title": "Request ID",
      "description": "Correlation key for this run.",
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
      "editor": "textfield",
      "prefill": "clinic-daily-prefill-001"
    },
    "maxResults": {
      "title": "Max results",
      "description": "Maximum useful rows to bill and return.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 10
    },
    "freshnessMinutes": {
      "title": "Freshness minutes",
      "description": "Cache freshness window in minutes.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1440,
      "default": 60
    },
    "detailLevel": {
      "title": "Detail level",
      "description": "Compact or evidence-rich output.",
      "type": "string",
      "enum": [
        "compact",
        "evidence"
      ],
      "default": "compact"
    },
    "minGapScore": {
      "title": "Minimum gap score",
      "description": "Minimum score for a useful clinic lead.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100,
      "default": 40
    },
    "clinics": {
      "title": "Submitted clinics",
      "description": "Buyer-submitted clinic websites to analyze.",
      "type": "array",
      "editor": "json",
      "prefill": [
        {
          "recordId": "clinic-prefill-001",
          "name": "Mayo Clinic",
          "websiteUrl": "https://www.mayoclinic.org/",
          "address": null
        }
      ],
      "minItems": 1,
      "maxItems": 100,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "recordId": {
            "title": "Record ID",
            "description": "Buyer-supplied record ID.",
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "name": {
            "title": "Clinic name",
            "description": "Public clinic name.",
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "websiteUrl": {
            "title": "Website URL",
            "description": "Absolute clinic website URL without credentials, fragments, or nonstandard ports.",
            "type": "string",
            "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]*)?)$"
          },
          "address": {
            "title": "Address",
            "description": "Optional clinic address.",
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "recordId",
          "name",
          "websiteUrl"
        ]
      }
    }
  },
  "required": [
    "schemaVersion",
    "requestId",
    "clinics"
  ],
  "title": "Clinic Reception Gap Lead Finder input",
  "schemaVersion": 1,
  "additionalProperties": false
}
🟢domain-to-verified-work-email(people, maxPagesPerPerson, maxConcurrency)

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).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "people": {
      "title": "People and company domains",
      "type": "array",
      "description": "One to 50 people. Each domain must be a bare public company hostname, not a URL.",
      "editor": "json",
      "minItems": 1,
      "maxItems": 50,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "fullName": {
            "type": "string",
            "title": "Full name",
            "description": "The person's real first and last name as it should appear on the company website.",
            "minLength": 3,
            "maxLength": 160,
            "pattern": "^\\s*\\S+(?:\\s+\\S+)+\\s*$"
          },
          "domain": {
            "type": "string",
            "title": "Company domain",
            "description": "Bare public company hostname such as example.com; schemes, paths, credentials and IP literals are rejected.",
            "minLength": 4,
            "maxLength": 253,
            "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¡-￿])?$"
          },
          "companyName": {
            "type": "string",
            "title": "Company name",
            "description": "Optional company name used as an additional page-evidence signal, never to invent an address.",
            "maxLength": 200
          },
          "inputRef": {
            "type": "string",
            "title": "Caller reference",
            "description": "Optional opaque CRM or workflow reference copied to the result row exactly, including leading, trailing, repeated, and tab whitespace.",
            "maxLength": 200
          }
        },
        "required": [
          "fullName",
          "domain"
        ]
      },
      "prefill": [
        {
          "fullName": "King Lee",
          "domain": "visionwide.co",
          "companyName": "Visionwide"
        }
      ]
    },
    "maxPagesPerPerson": {
      "title": "Maximum pages per person",
      "type": "integer",
      "description": "Number of pages selected from the Actor-owned fixed order: /team, /about, /contact, then /.",
      "default": 3,
      "minimum": 1,
      "maximum": 4
    },
    "maxConcurrency": {
      "title": "Maximum concurrency",
      "type": "integer",
      "description": "People processed concurrently only in local non-monetized runs. On-platform source work and paid delivery are sequential.",
      "default": 1,
      "minimum": 1,
      "maximum": 5
    }
  },
  "required": [
    "people"
  ],
  "title": "Domain to Verified Work Email input",
  "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.",
  "schemaVersion": 1,
  "additionalProperties": false
}
⚪job-posting-to-hiring-manager-email(jobs, providerName, providerApiKey, maxConcurrency)

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).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "jobs": {
      "title": "Vacancies",
      "type": "array",
      "description": "One to 100 vacancies. Give either a direct ATS posting URL, or a company domain plus the exact job title.",
      "editor": "json",
      "minItems": 1,
      "maxItems": 100,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "jobUrl": {
            "type": "string",
            "title": "ATS posting URL",
            "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.",
            "minLength": 12,
            "maxLength": 2048,
            "pattern": "^https://[a-zA-Z0-9¡-￿][a-zA-Z0-9¡-￿.-]{0,252}/\\S*$"
          },
          "companyDomain": {
            "type": "string",
            "title": "Company domain",
            "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.",
            "minLength": 4,
            "maxLength": 253,
            "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¡-￿])?$"
          },
          "jobTitle": {
            "type": "string",
            "title": "Exact job title",
            "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.",
            "minLength": 2,
            "maxLength": 200
          },
          "location": {
            "type": "string",
            "title": "Location",
            "description": "Optional location used only to disambiguate two vacancies sharing one title, never to invent a match.",
            "maxLength": 200
          },
          "department": {
            "type": "string",
            "title": "Department",
            "description": "Optional department used only to disambiguate and to rank role relevance, never to invent a match.",
            "maxLength": 200
          },
          "inputRef": {
            "type": "string",
            "title": "Caller reference",
            "description": "Optional opaque CRM or workflow reference copied to the result row exactly, including leading, trailing, repeated, and tab whitespace.",
            "maxLength": 200
          }
        }
      },
      "prefill": [
        {
          "companyDomain": "stripe.com",
          "jobTitle": "Account Executive, Bridge"
        }
      ]
    },
    "providerName": {
      "title": "Contact-data provider",
      "type": "string",
      "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"
      ]
    },
    "providerApiKey": {
      "title": "Your provider API key",
      "type": "string",
      "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
    },
    "maxConcurrency": {
      "title": "Maximum concurrency",
      "type": "integer",
      "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.",
      "default": 1,
      "minimum": 1,
      "maximum": 5
    }
  },
  "required": [
    "jobs"
  ],
  "title": "Job Posting to Hiring Manager Email input",
  "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.",
  "schemaVersion": 1,
  "additionalProperties": false
}
🟢lead-list-cleaner(datasetId, datasetUrl, items, checks, minScore, ...)

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).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "datasetId": {
      "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",
      "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",
      "resourceType": "dataset",
      "resourcePermissions": [
        "READ"
      ],
      "example": "your_dataset_id"
    },
    "datasetUrl": {
      "title": "Dataset URL",
      "type": "string",
      "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"
    },
    "items": {
      "title": "Items",
      "type": "array",
      "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",
      "items": {
        "type": "object"
      },
      "prefill": [
        {
          "title": "Shopify",
          "categoryName": "Software company",
          "website": "https://www.shopify.com",
          "phone": "+1 888-746-7439",
          "url": "https://www.google.com/maps/place/Shopify"
        },
        {
          "name": "HubSpot",
          "email": "[email protected]",
          "phoneNumber": "+1 888-482-7768",
          "link": "https://www.hubspot.com"
        },
        {
          "companyName": "Zoom Video Communications",
          "description": "Video conferencing platform. Contact us at [email protected] for enterprise sales.",
          "domain": "zoom.us"
        },
        {
          "title": "Shopify Inc",
          "website": "https://shopify.com",
          "phone": "+1 888-746-7439"
        },
        {
          "title": "Stripe",
          "categoryName": "Payment processor",
          "website": "https://stripe.com",
          "phone": "+1 888-926-2289",
          "emails": [
            "[email protected]"
          ]
        }
      ],
      "example": [
        {
          "name": "Example Co",
          "email": "[email protected]",
          "website": "https://example.com"
        }
      ]
    },
    "checks": {
      "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",
      "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",
      "items": {
        "type": "string",
        "enum": [
          "dedupe",
          "email",
          "domain",
          "score"
        ],
        "enumTitles": [
          "Dedupe",
          "Email verify (syntax + MX)",
          "Domain alive check",
          "Hotness score"
        ]
      },
      "default": [
        "dedupe",
        "email",
        "domain",
        "score"
      ],
      "prefill": [
        "dedupe",
        "email",
        "domain",
        "score"
      ],
      "example": [
        "dedupe",
        "email",
        "domain",
        "score"
      ]
    },
    "minScore": {
      "title": "Minimum score",
      "type": "integer",
      "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.",
      "default": 0,
      "example": 40,
      "minimum": 0,
      "maximum": 100
    },
    "maxRows": {
      "title": "Max rows",
      "type": "integer",
      "description": "Safety cap on how many input rows this run will process, regardless of source.",
      "default": 1000,
      "example": 100,
      "minimum": 1,
      "maximum": 100000
    }
  },
  "title": "Lead List Cleaner input",
  "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.",
  "schemaVersion": 1
}
⚪new-opening-permit-lead-radar(schemaVersion, requestId, maxResults, freshnessMinutes, detailLevel, ...)

Detect commercial permit and license openings from five fixed Socrata datasets and return evidence-backed signals. — $0.03/call, x402 (USDC on base).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "schemaVersion": {
      "title": "Schema version",
      "description": "Input schema version.",
      "type": "string",
      "enum": [
        "1.0"
      ],
      "default": "1.0"
    },
    "requestId": {
      "title": "Request ID",
      "description": "Correlation key for this run.",
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
      "editor": "textfield",
      "prefill": "permit-daily-prefill-001"
    },
    "maxResults": {
      "title": "Max results",
      "description": "Maximum useful rows to bill and return.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 10
    },
    "freshnessMinutes": {
      "title": "Freshness minutes",
      "description": "Cache freshness window in minutes.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1440,
      "default": 60
    },
    "detailLevel": {
      "title": "Detail level",
      "description": "Compact or evidence-rich output.",
      "type": "string",
      "enum": [
        "compact",
        "evidence"
      ],
      "default": "compact"
    },
    "lookbackDays": {
      "title": "Lookback days",
      "description": "Maximum permit age in days.",
      "type": "integer",
      "minimum": 1,
      "maximum": 90,
      "default": 30
    }
  },
  "required": [
    "schemaVersion",
    "requestId"
  ],
  "title": "New Opening Permit Lead Radar input",
  "schemaVersion": 1,
  "additionalProperties": false
}
🟢restaurant-booking-gap-lead-finder(schemaVersion, requestId, maxResults, freshnessMinutes, detailLevel, ...)

Analyze submitted restaurant websites for booking-channel gaps with exact BYOD crawling and no discovery. — $0.05/call, x402 (USDC on base).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "schemaVersion": {
      "title": "Schema version",
      "description": "Input schema version.",
      "type": "string",
      "enum": [
        "1.0"
      ],
      "default": "1.0"
    },
    "requestId": {
      "title": "Request ID",
      "description": "Correlation key for this run.",
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
      "editor": "textfield",
      "prefill": "restaurant-daily-prefill-001"
    },
    "maxResults": {
      "title": "Max results",
      "description": "Maximum useful rows to bill and return.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 10
    },
    "freshnessMinutes": {
      "title": "Freshness minutes",
      "description": "Cache freshness window in minutes.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1440,
      "default": 60
    },
    "detailLevel": {
      "title": "Detail level",
      "description": "Compact or evidence-rich output.",
      "type": "string",
      "enum": [
        "compact",
        "evidence"
      ],
      "default": "compact"
    },
    "minGapScore": {
      "title": "Minimum gap score",
      "description": "Minimum score for a useful restaurant lead.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100,
      "default": 45
    },
    "restaurants": {
      "title": "Submitted restaurants",
      "description": "Buyer-submitted restaurant websites to analyze.",
      "type": "array",
      "editor": "json",
      "prefill": [
        {
          "recordId": "restaurant-prefill-001",
          "name": "Dishoom",
          "websiteUrl": "https://www.dishoom.com/",
          "address": null
        }
      ],
      "minItems": 1,
      "maxItems": 100,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "recordId": {
            "title": "Record ID",
            "description": "Buyer-supplied record ID.",
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "name": {
            "title": "Restaurant name",
            "description": "Public restaurant name.",
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "websiteUrl": {
            "title": "Website URL",
            "description": "Absolute restaurant website URL without credentials, fragments, or nonstandard ports.",
            "type": "string",
            "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]*)?)$"
          },
          "address": {
            "title": "Address",
            "description": "Optional restaurant address.",
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "recordId",
          "name",
          "websiteUrl"
        ]
      }
    }
  },
  "required": [
    "schemaVersion",
    "requestId",
    "restaurants"
  ],
  "title": "Restaurant Booking Gap Lead Finder input",
  "schemaVersion": 1,
  "additionalProperties": false
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet8 Tools
verifiziertVersion nicht aufgezeichnet8 Tools