Endpoints: 28,729MCP servers: 18,414Payout addresses: 2,071Paid calls: 1,562Letters: 14Defects: 1,336counted 1 min ago
teppi

Server definition

Hash
sha256:79e0c80ca855ea38c851f45641af4b4d385e4addafd1ee9342d43e8c247c63e8
What it is
What a remote MCP server returned when asked what it offers: 47 tools

The blob, as servednamed by its sha256

{ "instructions": "Discover the authenticated FieldRobin tool catalog for each new session. Request mcp:read for read tools, mcp:customers:write for direct customer creation, and mcp:jobs:write for direct job creation; mcp:write remains a broad compatibility scope. Use mcp:read only when the user intentionally wants a read-only connection. The legacy mcp:use scope remains read-only compatible. Use available tools according to their annotations and required scopes. If an operation needs more permission, use the client authorization flow instead of claiming FieldRobin cannot perform it. Create-customer and create-job persist directly only when the corresponding OAuth write scope is granted, and return an authoritative verified result.", "tools": [ { "description": "Lists complaint and recall risk records for the authenticated workspace without exposing private operational notes.", "inputSchema": { "properties": { "limit": { "default": 20, "description": "Maximum records to return.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "query": { "description": "Job title, customer name, or technician name.", "maxLength": 255, "type": [ "string", "null" ] }, "status": { "description": "Risk state; defaults to open.", "enum": [ "open", "resolved", "all" ], "type": [ "string", "null" ] } }, "type": "object" }, "name": "complaint-recall-risk", "outputSchema": null }, { "description": "Creates one customer directly in the selected FieldRobin business when the connection has customer-write permission. Search first to avoid creating a duplicate; reuse the idempotency key only when retrying the same request.", "inputSchema": { "properties": { "acquisition_source": { "description": "How the customer was acquired.", "maxLength": 100, "type": [ "string", "null" ] }, "address": { "description": "Customer address, if known.", "maxLength": 500, "type": [ "string", "null" ] }, "business_name": { "description": "Customer business name, if known.", "maxLength": 255, "type": [ "string", "null" ] }, "email": { "description": "Customer email address, if known.", "format": "email", "maxLength": 255, "type": [ "string", "null" ] }, "idempotency_key": { "description": "Opaque retry key. Reuse it only for the same request to receive the verified result without creating a duplicate.", "maxLength": 128, "minLength": 1, "type": "string" }, "lifecycle_tag": { "description": "Lifecycle tag.", "enum": [ "active", "inactive", "vip" ], "type": [ "string", "null" ] }, "location_id": { "description": "Business location for the customer.", "minimum": 1, "type": [ "integer", "null" ] }, "name": { "description": "Customer full name.", "maxLength": 255, "minLength": 1, "type": "string" }, "notes": { "description": "Internal customer notes.", "type": [ "string", "null" ] }, "phone": { "description": "Customer phone number, if known.", "maxLength": 30, "type": [ "string", "null" ] }, "trade_type": { "description": "Customer trade or service type.", "maxLength": 100, "type": [ "string", "null" ] } }, "required": [ "name", "idempotency_key" ], "type": "object" }, "name": "create-customer", "outputSchema": null }, { "description": "Creates one job directly in the selected FieldRobin business when the connection has job-write permission. Resolve the customer first and pass the verified customer ID when one is named.", "inputSchema": { "properties": { "appointment_count": { "description": "Optional appointment count.", "maximum": 99, "minimum": 1, "type": [ "integer", "null" ] }, "customer_id": { "description": "Verified customer ID, if the job belongs to an existing customer.", "minimum": 1, "type": [ "integer", "null" ] }, "description": { "description": "Readable issue and service description.", "type": [ "string", "null" ] }, "idempotency_key": { "description": "Opaque retry key. Reuse it only for the same request to receive the verified result without creating a duplicate.", "maxLength": 128, "minLength": 1, "type": "string" }, "location_id": { "description": "Business location for the job.", "minimum": 1, "type": [ "integer", "null" ] }, "scheduled_at": { "description": "Optional local wall-clock appointment date/time or ISO timestamp with offset.", "type": [ "string", "null" ] }, "service_address": { "description": "Service address, if known.", "maxLength": 2000, "type": [ "string", "null" ] }, "status": { "description": "Initial job status.", "enum": [ "lead", "pending", "quoted", "approved", "scheduled" ], "type": [ "string", "null" ] }, "technician_user_id": { "description": "Verified technician user ID, if assigned.", "minimum": 1, "type": [ "integer", "null" ] }, "title": { "description": "Short job title.", "maxLength": 255, "minLength": 1, "type": "string" }, "total_amount": { "description": "Optional quoted amount.", "minimum": 0, "type": [ "number", "null" ] }, "voice_notes": { "description": "Optional internal voice-note text.", "type": [ "string", "null" ] } }, "required": [ "title", "idempotency_key" ], "type": "object" }, "name": "create-job", "outputSchema": null }, { "description": "Lists recent active service requests associated with one authorized customer using bounded status, source, urgency, and scheduling fields.", "inputSchema": { "properties": { "customer_id": { "description": "Customer ID returned by search-customers.", "minimum": 1, "type": "integer" }, "limit": { "default": 20, "description": "Maximum number of service requests to return.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] } }, "type": "object" }, "name": "customer-service-requests", "outputSchema": null }, { "description": "Drafts a policy-aware reply for one authorized review without posting or changing the review.", "inputSchema": { "properties": { "review_id": { "description": "Review ID returned by search-reviews.", "minimum": 1, "type": "integer" }, "tone": { "description": "Draft tone.", "enum": [ "professional", "warm", "concise" ], "type": [ "string", "null" ] } }, "type": "object" }, "name": "draft-review-reply", "outputSchema": null }, { "description": "Returns one authorized customer using bounded contact and lifecycle fields; addresses and notes are excluded.", "inputSchema": { "properties": { "customer_id": { "description": "Customer ID returned by search-customers.", "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "get-customer", "outputSchema": null }, { "description": "Returns one authorized invoice with bounded customer, job, payment-state, due-date, and line-item fields; payment links, addresses, and internal notes are excluded.", "inputSchema": { "properties": { "invoice_id": { "description": "Invoice ID returned by search-invoices.", "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "get-invoice", "outputSchema": null }, { "description": "Returns the authoritative payment state for one authorized invoice without exposing payment links or provider identifiers.", "inputSchema": { "properties": { "invoice_id": { "description": "Invoice ID returned by search-invoices.", "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "get-invoice-payment-status", "outputSchema": null }, { "description": "Returns one authorized job using bounded customer, schedule, status, and technician fields; service addresses, notes, and amounts are excluded.", "inputSchema": { "properties": { "job_id": { "description": "Job ID returned by search-jobs or jobs-today.", "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "get-job", "outputSchema": null }, { "description": "Returns one authorized lead using bounded contact, source, status, and service-interest fields; notes, budget, and internal summaries are excluded.", "inputSchema": { "properties": { "lead_id": { "description": "Lead ID returned by search-leads.", "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "get-lead", "outputSchema": null }, { "description": "Returns one location and its public Google listing status. A confirmed place is not a Google Business Profile connection.", "inputSchema": { "properties": { "location_id": { "description": "Location ID.", "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "get-location", "outputSchema": null }, { "description": "Returns one authorized estimate with bounded customer, status, pricing, revision, and line-item fields; addresses, notes, and terms are excluded.", "inputSchema": { "properties": { "quote_id": { "description": "Estimate ID returned by search-quotes.", "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "get-quote", "outputSchema": null }, { "description": "Shows verified referral campaign totals and conversion activity without returning referral tokens or bearer-like links.", "inputSchema": { "properties": { "campaign_id": { "description": "Referral campaign ID returned by search-referral-campaigns.", "minimum": 1, "type": "integer" }, "days": { "default": 30, "description": "Lookback window in days.", "maximum": 180, "minimum": 1, "type": [ "integer", "null" ] } }, "type": "object" }, "name": "get-referral-campaign-attribution", "outputSchema": null }, { "description": "Returns one authorized service-request inbox record using bounded status, source, urgency, and scheduling fields without exposing request descriptions, addresses, contact channels, metadata, files, or outreach controls.", "inputSchema": { "properties": { "service_request_id": { "description": "Service-request ID returned by search-service-requests.", "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "get-service-request", "outputSchema": null }, { "description": "Returns a limited, read-only summary of the authenticated FieldRobin workspace.", "inputSchema": { "properties": {}, "type": "object" }, "name": "get-workspace-summary", "outputSchema": null }, { "description": "Lists authorized jobs scheduled for a business day, with bounded customer, schedule, status, and technician fields.", "inputSchema": { "properties": { "date": { "description": "Local business date, YYYY-MM-DD; defaults to today.", "format": "date", "type": [ "string", "null" ] }, "limit": { "default": 25, "description": "Maximum number of jobs to return.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "status": { "description": "Optional job status filter.", "maxLength": 40, "type": [ "string", "null" ] }, "technician_id": { "description": "Optional technician ID.", "minimum": 1, "type": [ "integer", "null" ] } }, "type": "object" }, "name": "jobs-today", "outputSchema": null }, { "description": "Lists authorized private photos attached to one job with protected download URLs, filenames, captions, and media types.", "inputSchema": { "properties": { "job_id": { "description": "Job ID returned by search-jobs.", "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "list-job-photos", "outputSchema": null }, { "description": "Reads bounded parts stock, technician exposure, and transaction metadata for the authenticated workspace without exposing amounts, item pricing, or private notes.", "inputSchema": { "properties": { "limit": { "default": 20, "description": "Maximum inventory, transactions, and technician balances to return.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "technician_id": { "description": "Optional same-business technician ID.", "minimum": 1, "type": [ "integer", "null" ] } }, "type": "object" }, "name": "operations-parts", "outputSchema": null }, { "description": "Reads bounded technician performance and coaching signals for the authenticated workspace without exposing coaching notes or private contact fields.", "inputSchema": { "properties": { "limit": { "default": 20, "description": "Maximum jobs sampled per technician.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "technician_id": { "description": "Optional same-business technician ID.", "minimum": 1, "type": [ "integer", "null" ] } }, "type": "object" }, "name": "operations-scorecards", "outputSchema": null }, { "description": "Lists persisted pipeline attention items for the authenticated business without changing, dismissing, or executing them.", "inputSchema": { "properties": { "action_state": { "description": "Pipeline state; defaults to open.", "enum": [ "open", "in_progress", "snoozed", "blocked", "dismissed", "done" ], "type": [ "string", "null" ] }, "action_type": { "description": "Optional exact action type.", "maxLength": 80, "type": [ "string", "null" ] }, "due_before": { "description": "Only actions due on or before this local date.", "format": "date", "type": [ "string", "null" ] }, "limit": { "default": 10, "description": "Maximum number of actions to return.", "maximum": 20, "minimum": 1, "type": [ "integer", "null" ] }, "priority": { "description": "Optional priority filter.", "enum": [ "urgent", "high", "normal", "low" ], "type": [ "string", "null" ] } }, "type": "object" }, "name": "pipeline-next-actions", "outputSchema": null }, { "description": "Lists persisted pipeline recommendations for the authenticated business without generating, editing, approving, rejecting, or executing them.", "inputSchema": { "properties": { "action_type": { "description": "Optional exact pipeline recommendation action type.", "maxLength": 80, "type": [ "string", "null" ] }, "include_draft_history": { "default": false, "description": "When true, recommendation_id is required and bounded draft edit history is returned.", "type": [ "boolean", "null" ] }, "limit": { "default": 20, "description": "Maximum recommendations to return.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "recommendation_id": { "description": "Optional exact recommendation ID.", "minimum": 1, "type": [ "integer", "null" ] }, "status": { "description": "Recommendation state; defaults to pending.", "enum": [ "pending", "approved", "rejected", "expired" ], "type": [ "string", "null" ] } }, "type": "object" }, "name": "pipeline-recommendations", "outputSchema": null }, { "description": "Previews one approved broadcast audience, including suppression and policy skips, without sending or changing records.", "inputSchema": { "properties": { "campaign_id": { "description": "Broadcast campaign ID returned by search-broadcast-campaigns.", "minimum": 1, "type": "integer" }, "limit": { "default": 25, "description": "Maximum audience items to evaluate.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] } }, "type": "object" }, "name": "preview-broadcast-campaign", "outputSchema": null }, { "description": "Calculates a deterministic invoice preview without saving, charging, sending, or creating an invoice.", "inputSchema": { "properties": { "coupon_code": { "maxLength": 100, "type": [ "string", "null" ] }, "customer_id": { "description": "Resolved customer ID; required for an invoice preview.", "minimum": 1, "type": "integer" }, "document_discount_type": { "enum": [ "none", "percentage", "fixed" ], "type": [ "string", "null" ] }, "document_discount_value": { "minimum": 0, "type": [ "number", "null" ] }, "items": { "description": "Invoice line items.", "items": { "properties": { "description": { "maxLength": 500, "type": "string" }, "discount_type": { "enum": [ "none", "percentage", "fixed" ], "type": [ "string", "null" ] }, "discount_value": { "minimum": 0, "type": [ "number", "null" ] }, "item_type": { "enum": [ "material", "labour", "service", "equipment", "fee" ], "type": [ "string", "null" ] }, "quantity": { "minimum": 0, "type": "number" }, "tax_behavior": { "enum": [ "inherit", "taxable", "non_taxable", "automatic" ], "type": [ "string", "null" ] }, "unit_price": { "minimum": 0, "type": "number" } }, "type": "object" }, "maxItems": 50, "minItems": 1, "type": "array" }, "tax_mode": { "enum": [ "none", "manual" ], "type": [ "string", "null" ] }, "tax_rate_id": { "minimum": 1, "type": [ "integer", "null" ] } }, "type": "object" }, "name": "preview-invoice", "outputSchema": null }, { "description": "Calculates a deterministic estimate preview without saving, sending, or creating a quote.", "inputSchema": { "properties": { "coupon_code": { "maxLength": 100, "type": [ "string", "null" ] }, "customer_id": { "description": "Optional resolved customer ID.", "minimum": 1, "type": [ "integer", "null" ] }, "document_discount_type": { "enum": [ "none", "percentage", "fixed" ], "type": [ "string", "null" ] }, "document_discount_value": { "minimum": 0, "type": [ "number", "null" ] }, "items": { "description": "Estimate line item.", "items": { "properties": { "description": { "maxLength": 500, "type": "string" }, "discount_type": { "enum": [ "none", "percentage", "fixed" ], "type": [ "string", "null" ] }, "discount_value": { "minimum": 0, "type": [ "number", "null" ] }, "item_type": { "enum": [ "material", "labour", "service", "equipment", "fee" ], "type": [ "string", "null" ] }, "quantity": { "minimum": 0, "type": "number" }, "tax_behavior": { "enum": [ "inherit", "taxable", "non_taxable", "automatic" ], "type": [ "string", "null" ] }, "unit_price": { "minimum": 0, "type": "number" } }, "type": "object" }, "maxItems": 50, "minItems": 1, "type": "array" }, "tax_mode": { "enum": [ "none", "manual" ], "type": [ "string", "null" ] }, "tax_rate_id": { "minimum": 1, "type": [ "integer", "null" ] } }, "type": "object" }, "name": "preview-quote", "outputSchema": null }, { "description": "Previews dormant customers eligible for one authorized reactivation campaign without sending or changing records.", "inputSchema": { "properties": { "campaign_id": { "description": "Reactivation campaign ID returned by search-reactivation-campaigns.", "minimum": 1, "type": "integer" }, "limit": { "default": 25, "description": "Maximum audience items to evaluate.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] } }, "type": "object" }, "name": "preview-reactivation-campaign", "outputSchema": null }, { "description": "Previews eligible completed jobs for one authorized referral campaign without sending or changing records.", "inputSchema": { "properties": { "campaign_id": { "description": "Referral campaign ID returned by search-referral-campaigns.", "minimum": 1, "type": "integer" }, "limit": { "default": 25, "description": "Maximum audience items to evaluate.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] } }, "type": "object" }, "name": "preview-referral-campaign", "outputSchema": null }, { "description": "Previews explicit completed jobs for review requests, including eligibility and skip reasons, without sending anything.", "inputSchema": { "properties": { "channel": { "description": "Optional review-request channel preference.", "enum": [ "sms", "email" ], "type": [ "string", "null" ] }, "job_ids": { "description": "Explicit job IDs to evaluate.", "items": { "minimum": 1, "type": "integer" }, "maxItems": 50, "minItems": 1, "type": "array" } }, "type": "object" }, "name": "preview-review-requests", "outputSchema": null }, { "description": "Validates social post copy for an authorized source review without saving or publishing it.", "inputSchema": { "properties": { "content": { "description": "Proposed social post content.", "maxLength": 1200, "minLength": 3, "type": "string" }, "platform": { "description": "Social platform.", "enum": [ "facebook", "instagram", "google_business" ], "type": [ "string", "null" ] }, "review_id": { "description": "Optional authorized source review ID.", "minimum": 1, "type": [ "integer", "null" ] } }, "type": "object" }, "name": "preview-social-draft", "outputSchema": null }, { "description": "Compares revenue, activation, retention, and review-request outcomes by physical location. Does not expose customer names, invoice rows, or mutation access. Location writes stay on the in-product assistant, not MCP.", "inputSchema": { "properties": { "period": { "default": 30, "description": "Number of days for location comparison metrics; defaults to 30.", "enum": [ 7, 30, 90, 365 ], "type": [ "integer", "null" ] } }, "type": "object" }, "name": "reports-by-location", "outputSchema": null }, { "description": "Ranks named customers by paid invoice revenue for the authenticated workspace. Uses all paid, non-sample invoices and returns aggregate customer totals without invoice rows.", "inputSchema": { "properties": { "from": { "description": "Inclusive start date when period is custom.", "type": [ "string", "null" ] }, "limit": { "default": 20, "description": "Maximum number of ranked customers to return.", "maximum": 100, "minimum": 1, "type": [ "integer", "null" ] }, "period": { "default": "all_time", "description": "Ranking window. Use all_time for to-date questions.", "enum": [ "all_time", "7", "30", "90", "365", "custom" ], "type": [ "string", "null" ] }, "to": { "description": "Inclusive end date when period is custom.", "type": [ "string", "null" ] } }, "type": "object" }, "name": "reports-customer-revenue-rank", "outputSchema": null }, { "description": "Reads aggregate revenue, receivables, job, lead, and estimate performance for the authenticated workspace without exposing customer names, addresses, invoice rows, or mutation access.", "inputSchema": { "properties": { "period": { "default": 30, "description": "Number of days for the bounded trend metrics; defaults to 30.", "enum": [ 7, 30, 90, 365 ], "type": [ "integer", "null" ] } }, "type": "object" }, "name": "reports-overview", "outputSchema": null }, { "description": "Reads a local business day route and high driving-risk stops for the authenticated workspace without exposing addresses or private route notes.", "inputSchema": { "properties": { "date": { "description": "Local business date, YYYY-MM-DD; defaults to today.", "format": "date", "type": [ "string", "null" ] }, "limit": { "default": 50, "description": "Maximum route stops to return.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "technician_id": { "description": "Optional technician filter.", "minimum": 1, "type": [ "integer", "null" ] } }, "type": "object" }, "name": "routing-driving-risk", "outputSchema": null }, { "description": "Calculates verified busy jobs and open planning windows for a local business day without scheduling or changing a job.", "inputSchema": { "properties": { "date": { "description": "Local business date, YYYY-MM-DD; defaults to today.", "format": "date", "type": [ "string", "null" ] }, "duration_minutes": { "default": 60, "description": "Requested appointment length.", "maximum": 480, "minimum": 15, "type": [ "integer", "null" ] }, "job_duration_minutes": { "default": 60, "description": "Planning duration for existing jobs.", "maximum": 480, "minimum": 15, "type": [ "integer", "null" ] }, "technician_id": { "description": "Optional same-business technician ID.", "minimum": 1, "type": [ "integer", "null" ] }, "workday_end": { "default": 20, "description": "Planning window end hour.", "maximum": 24, "minimum": 1, "type": [ "integer", "null" ] }, "workday_start": { "default": 10, "description": "Planning window start hour.", "maximum": 23, "minimum": 0, "type": [ "integer", "null" ] } }, "type": "object" }, "name": "schedule-availability", "outputSchema": null }, { "description": "Searches authorized broadcast campaigns by name, status, message channel, and bounded delivery fields.", "inputSchema": { "properties": { "limit": { "default": 20, "description": "Maximum number of campaigns to return.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "query": { "description": "Campaign name, message, or channel.", "maxLength": 255, "type": [ "string", "null" ] }, "status": { "description": "Campaign status.", "enum": [ "draft", "pending_approval", "approved", "rejected", "sent", "archived" ], "type": [ "string", "null" ] } }, "type": "object" }, "name": "search-broadcast-campaigns", "outputSchema": null }, { "description": "Searches the authenticated workspace customers without exposing addresses, notes, or other private fields.", "inputSchema": { "properties": { "limit": { "default": 10, "description": "Maximum number of customers to return.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "query": { "description": "Name, email, phone, or business name to search for.", "maxLength": 80, "type": [ "string", "null" ] } }, "type": "object" }, "name": "search-customers", "outputSchema": null }, { "description": "Searches active inventory in the authenticated workspace and can identify low-stock items without exposing internal cost or margin fields.", "inputSchema": { "properties": { "active": { "description": "Filter by active state; defaults to true.", "type": [ "boolean", "null" ] }, "limit": { "default": 20, "description": "Maximum items to return.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "low_stock": { "description": "Only items at or below minimum quantity.", "type": [ "boolean", "null" ] }, "query": { "description": "Inventory name, SKU, or description.", "maxLength": 255, "type": [ "string", "null" ] } }, "type": "object" }, "name": "search-inventory", "outputSchema": null }, { "description": "Searches authorized invoices using bounded customer, job, status, payment, due-date, and total fields; payment links and addresses are excluded.", "inputSchema": { "properties": { "customer_id": { "description": "Restrict results to one customer ID.", "minimum": 1, "type": [ "integer", "null" ] }, "job_id": { "description": "Restrict results to one job ID.", "minimum": 1, "type": [ "integer", "null" ] }, "limit": { "default": 10, "description": "Maximum number of invoices to return.", "maximum": 20, "minimum": 1, "type": [ "integer", "null" ] }, "payment_status": { "description": "Authoritative payment state, such as unpaid, pending, paid, or refunded.", "maxLength": 40, "type": [ "string", "null" ] }, "query": { "description": "Invoice number, customer name, email, phone, job title, or description.", "maxLength": 80, "type": [ "string", "null" ] }, "status": { "description": "Invoice lifecycle status.", "enum": [ "draft", "sent", "overdue", "paid", "cancelled" ], "type": [ "string", "null" ] } }, "type": "object" }, "name": "search-invoices", "outputSchema": null }, { "description": "Searches the authenticated workspace jobs using safe summary fields only; it does not return service addresses, notes, or amounts.", "inputSchema": { "properties": { "customer_id": { "description": "Restrict results to one customer ID.", "minimum": 1, "type": [ "integer", "null" ] }, "limit": { "default": 10, "description": "Maximum number of jobs to return.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "location_id": { "description": "Restrict results to one business location ID.", "minimum": 1, "type": [ "integer", "null" ] }, "query": { "description": "Customer name, email, phone, or job title.", "maxLength": 80, "type": [ "string", "null" ] }, "scheduled_from": { "description": "Inclusive scheduled date, YYYY-MM-DD.", "format": "date", "type": [ "string", "null" ] }, "scheduled_to": { "description": "Inclusive scheduled date, YYYY-MM-DD.", "format": "date", "type": [ "string", "null" ] }, "status": { "description": "Optional job status filter.", "maxLength": 40, "type": [ "string", "null" ] } }, "type": "object" }, "name": "search-jobs", "outputSchema": null }, { "description": "Searches authorized workspace leads with bounded contact, source, status, and service-interest fields; notes and estimated values are excluded.", "inputSchema": { "properties": { "customer_id": { "description": "Restrict results to a customer ID.", "minimum": 1, "type": [ "integer", "null" ] }, "limit": { "default": 10, "description": "Maximum number of leads to return.", "maximum": 20, "minimum": 1, "type": [ "integer", "null" ] }, "query": { "description": "Name, email, phone, source, or service interest.", "maxLength": 80, "type": [ "string", "null" ] }, "source": { "description": "Optional exact lead source.", "maxLength": 100, "type": [ "string", "null" ] }, "status": { "description": "Optional lead status.", "maxLength": 40, "type": [ "string", "null" ] }, "urgency": { "description": "Optional urgency: low, medium, or high.", "maxLength": 20, "type": [ "string", "null" ] } }, "type": "object" }, "name": "search-leads", "outputSchema": null }, { "description": "Lists physical locations in the authenticated workspace.", "inputSchema": { "properties": { "limit": { "default": 20, "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "query": { "description": "Location name to search for.", "maxLength": 80, "type": [ "string", "null" ] }, "status": { "description": "active, archived, or all.", "type": [ "string", "null" ] } }, "type": "object" }, "name": "search-locations", "outputSchema": null }, { "description": "Searches active customer-facing services and materials in the authenticated workspace without exposing internal cost or markup fields.", "inputSchema": { "properties": { "active": { "description": "Filter by active state; defaults to true.", "type": [ "boolean", "null" ] }, "limit": { "default": 20, "description": "Maximum items to return.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "query": { "description": "Pricebook item name or description.", "maxLength": 255, "type": [ "string", "null" ] }, "type": { "description": "Service or material.", "enum": [ "service", "material" ], "type": [ "string", "null" ] } }, "type": "object" }, "name": "search-pricebook", "outputSchema": null }, { "description": "Searches authorized estimates using bounded customer, status, title, and total fields; notes, terms, and addresses are excluded.", "inputSchema": { "properties": { "customer_id": { "description": "Restrict results to one customer ID.", "minimum": 1, "type": [ "integer", "null" ] }, "limit": { "default": 10, "description": "Maximum number of estimates to return.", "maximum": 20, "minimum": 1, "type": [ "integer", "null" ] }, "query": { "description": "Estimate title, customer name, email, or phone.", "maxLength": 80, "type": [ "string", "null" ] }, "status": { "description": "Optional estimate status.", "enum": [ "draft", "sent", "changes_requested", "approved", "rejected", "expired", "converted" ], "type": [ "string", "null" ] } }, "type": "object" }, "name": "search-quotes", "outputSchema": null }, { "description": "Searches authorized reactivation campaigns by name, status, channel, and job-type filter.", "inputSchema": { "properties": { "limit": { "default": 20, "description": "Maximum number of campaigns to return.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "query": { "description": "Campaign name, message, channel, or job type.", "maxLength": 255, "type": [ "string", "null" ] }, "status": { "description": "Campaign status.", "enum": [ "active", "paused", "archived" ], "type": [ "string", "null" ] } }, "type": "object" }, "name": "search-reactivation-campaigns", "outputSchema": null }, { "description": "Searches authorized referral campaigns by name, status, message channel, and bounded performance fields.", "inputSchema": { "properties": { "limit": { "default": 20, "description": "Maximum number of campaigns to return.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "query": { "description": "Campaign name, message, or channel.", "maxLength": 255, "type": [ "string", "null" ] }, "status": { "description": "Campaign status.", "enum": [ "active", "paused", "archived" ], "type": [ "string", "null" ] } }, "type": "object" }, "name": "search-referral-campaigns", "outputSchema": null }, { "description": "Searches authorized reviews by reviewer, customer, job, rating, platform, or reply status using bounded fields.", "inputSchema": { "properties": { "has_reply": { "description": "Filter by whether an owner reply exists.", "type": [ "boolean", "null" ] }, "limit": { "default": 20, "description": "Maximum number of reviews to return.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "platform": { "description": "Review platform.", "enum": [ "google", "facebook", "yelp", "industry", "bbb", "angi", "thumbtack", "custom" ], "type": [ "string", "null" ] }, "query": { "description": "Reviewer, customer, job title, review body, or platform.", "maxLength": 255, "type": [ "string", "null" ] }, "rating_max": { "description": "Maximum rating.", "maximum": 5, "minimum": 1, "type": [ "integer", "null" ] }, "rating_min": { "description": "Minimum rating.", "maximum": 5, "minimum": 1, "type": [ "integer", "null" ] }, "reply_status": { "description": "Reply delivery state.", "enum": [ "none", "pending", "sent", "failed" ], "type": [ "string", "null" ] } }, "type": "object" }, "name": "search-reviews", "outputSchema": null }, { "description": "Finds bounded active service-request inbox records for the authenticated business without exposing request descriptions, addresses, contact channels, or outreach controls.", "inputSchema": { "properties": { "limit": { "default": 20, "description": "Maximum number of requests to return.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "q": { "description": "Client name, service type, or request text.", "maxLength": 255, "type": [ "string", "null" ] }, "status": { "description": "Optional exact active request status.", "enum": [ "sent", "opened", "submitted", "reviewing", "scheduled", "quoted", "converted" ], "type": [ "string", "null" ] }, "urgency": { "description": "Optional urgency filter.", "enum": [ "low", "medium", "high" ], "type": [ "string", "null" ] }, "view": { "description": "Inbox view; defaults to active inbox records.", "enum": [ "inbox", "pending", "converted", "outreach", "all" ], "type": [ "string", "null" ] } }, "type": "object" }, "name": "search-service-requests", "outputSchema": null }, { "description": "Searches authorized social drafts and returns bounded content, status, platform, source-review, and approval metadata.", "inputSchema": { "properties": { "limit": { "default": 20, "description": "Maximum number of drafts to return.", "maximum": 50, "minimum": 1, "type": [ "integer", "null" ] }, "platform": { "description": "Social platform.", "enum": [ "facebook", "instagram", "google_business" ], "type": [ "string", "null" ] }, "query": { "description": "Draft content, platform, status, or ID.", "maxLength": 120, "type": [ "string", "null" ] }, "review_id": { "description": "Optional source review ID.", "minimum": 1, "type": [ "integer", "null" ] }, "status": { "description": "Draft approval state.", "enum": [ "pending_approval", "approved", "rejected", "published" ], "type": [ "string", "null" ] } }, "type": "object" }, "name": "search-social-drafts", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:79e0c80ca855ea38c851f45641af4b4d385e4addafd1ee9342d43e8c247c63e8 | sha256sum