FieldRobin

Authenticated FieldRobin workspace tools, including scope-authorized customer and job creation.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
99%
Vollständigkeit des Schemas
88%
Qualität der Benennung
64%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (49)

  • LOWTool 'get-invoice-payment-status' description lacks action verbin get-invoice-payment-status
  • LOWTool 'create-customer' doesn't follow camelCase/snake_casein create-customer
  • LOWTool 'create-job' doesn't follow camelCase/snake_casein create-job
  • LOWTool 'get-workspace-summary' doesn't follow camelCase/snake_casein get-workspace-summary
  • LOWTool 'search-locations' doesn't follow camelCase/snake_casein search-locations
  • LOWTool 'get-location' doesn't follow camelCase/snake_casein get-location
  • LOWTool 'search-customers' doesn't follow camelCase/snake_casein search-customers
  • LOWTool 'search-jobs' doesn't follow camelCase/snake_casein search-jobs
  • LOWTool 'get-customer' doesn't follow camelCase/snake_casein get-customer
  • LOWTool 'get-job' doesn't follow camelCase/snake_casein get-job

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

Kontextkosten

~7,414Tokens (Tool-Definitionen)
~1.3 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (5.79% 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": {
    "fieldrobin": {
      "url": "https://fieldrobin.com/api/v1/mcp"
    }
  }
}

Remote-Endpunkte

https://fieldrobin.com/api/v1/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (47)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟡create-customer(name, phone, email, address, business_name, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Customer full name.",
      "minLength": 1,
      "maxLength": 255,
      "type": "string"
    },
    "phone": {
      "description": "Customer phone number, if known.",
      "maxLength": 30,
      "type": [
        "string",
        "null"
      ]
    },
    "email": {
      "description": "Customer email address, if known.",
      "maxLength": 255,
      "format": "email",
      "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"
      ]
    },
    "trade_type": {
      "description": "Customer trade or service type.",
      "maxLength": 100,
      "type": [
        "string",
        "null"
      ]
    },
    "lifecycle_tag": {
      "description": "Lifecycle tag.",
      "enum": [
        "active",
        "inactive",
        "vip"
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "acquisition_source": {
      "description": "How the customer was acquired.",
      "maxLength": 100,
      "type": [
        "string",
        "null"
      ]
    },
    "notes": {
      "description": "Internal customer notes.",
      "type": [
        "string",
        "null"
      ]
    },
    "location_id": {
      "description": "Business location for the customer.",
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "idempotency_key": {
      "description": "Opaque retry key. Reuse it only for the same request to receive the verified result without creating a duplicate.",
      "minLength": 1,
      "maxLength": 128,
      "type": "string"
    }
  },
  "required": [
    "name",
    "idempotency_key"
  ]
}
🟡create-job(customer_id, title, description, service_address, total_amount, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "description": "Verified customer ID, if the job belongs to an existing customer.",
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "title": {
      "description": "Short job title.",
      "minLength": 1,
      "maxLength": 255,
      "type": "string"
    },
    "description": {
      "description": "Readable issue and service description.",
      "type": [
        "string",
        "null"
      ]
    },
    "service_address": {
      "description": "Service address, if known.",
      "maxLength": 2000,
      "type": [
        "string",
        "null"
      ]
    },
    "total_amount": {
      "description": "Optional quoted amount.",
      "minimum": 0,
      "type": [
        "number",
        "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"
      ]
    },
    "scheduled_at": {
      "description": "Optional local wall-clock appointment date/time or ISO timestamp with offset.",
      "type": [
        "string",
        "null"
      ]
    },
    "appointment_count": {
      "description": "Optional appointment count.",
      "minimum": 1,
      "maximum": 99,
      "type": [
        "integer",
        "null"
      ]
    },
    "voice_notes": {
      "description": "Optional internal voice-note text.",
      "type": [
        "string",
        "null"
      ]
    },
    "location_id": {
      "description": "Business location for the job.",
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "idempotency_key": {
      "description": "Opaque retry key. Reuse it only for the same request to receive the verified result without creating a duplicate.",
      "minLength": 1,
      "maxLength": 128,
      "type": "string"
    }
  },
  "required": [
    "title",
    "idempotency_key"
  ]
}
🟢get-workspace-summary

Returns a limited, read-only summary of the authenticated FieldRobin workspace.

Eingabe-Schema

{
  "type": "object",
  "properties": {}
}
🟢search-locations(query, status, limit)

Lists physical locations in the authenticated workspace.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Location name to search for.",
      "maxLength": 80,
      "type": [
        "string",
        "null"
      ]
    },
    "status": {
      "description": "active, archived, or all.",
      "type": [
        "string",
        "null"
      ]
    },
    "limit": {
      "default": 20,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢get-location(location_id)

Returns one location and its public Google listing status. A confirmed place is not a Google Business Profile connection.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "location_id": {
      "description": "Location ID.",
      "minimum": 1,
      "type": "integer"
    }
  }
}
🟢search-customers(query, limit)

Searches the authenticated workspace customers without exposing addresses, notes, or other private fields.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Name, email, phone, or business name to search for.",
      "maxLength": 80,
      "type": [
        "string",
        "null"
      ]
    },
    "limit": {
      "description": "Maximum number of customers to return.",
      "default": 10,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢search-jobs(query, customer_id, scheduled_from, scheduled_to, status, ...)

Searches the authenticated workspace jobs using safe summary fields only; it does not return service addresses, notes, or amounts.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Customer name, email, phone, or job title.",
      "maxLength": 80,
      "type": [
        "string",
        "null"
      ]
    },
    "customer_id": {
      "description": "Restrict results to one customer ID.",
      "minimum": 1,
      "type": [
        "integer",
        "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"
      ]
    },
    "location_id": {
      "description": "Restrict results to one business location ID.",
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "limit": {
      "description": "Maximum number of jobs to return.",
      "default": 10,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢get-customer(customer_id)

Returns one authorized customer using bounded contact and lifecycle fields; addresses and notes are excluded.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "description": "Customer ID returned by search-customers.",
      "minimum": 1,
      "type": "integer"
    }
  }
}
🟢get-job(job_id)

Returns one authorized job using bounded customer, schedule, status, and technician fields; service addresses, notes, and amounts are excluded.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "job_id": {
      "description": "Job ID returned by search-jobs or jobs-today.",
      "minimum": 1,
      "type": "integer"
    }
  }
}
🟢search-leads(query, status, urgency, source, customer_id, ...)

Searches authorized workspace leads with bounded contact, source, status, and service-interest fields; notes and estimated values are excluded.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Name, email, phone, source, or service interest.",
      "maxLength": 80,
      "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"
      ]
    },
    "source": {
      "description": "Optional exact lead source.",
      "maxLength": 100,
      "type": [
        "string",
        "null"
      ]
    },
    "customer_id": {
      "description": "Restrict results to a customer ID.",
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "limit": {
      "description": "Maximum number of leads to return.",
      "default": 10,
      "minimum": 1,
      "maximum": 20,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢jobs-today(date, technician_id, status, limit)

Lists authorized jobs scheduled for a business day, with bounded customer, schedule, status, and technician fields.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "date": {
      "description": "Local business date, YYYY-MM-DD; defaults to today.",
      "format": "date",
      "type": [
        "string",
        "null"
      ]
    },
    "technician_id": {
      "description": "Optional technician ID.",
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "status": {
      "description": "Optional job status filter.",
      "maxLength": 40,
      "type": [
        "string",
        "null"
      ]
    },
    "limit": {
      "description": "Maximum number of jobs to return.",
      "default": 25,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢get-lead(lead_id)

Returns one authorized lead using bounded contact, source, status, and service-interest fields; notes, budget, and internal summaries are excluded.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "lead_id": {
      "description": "Lead ID returned by search-leads.",
      "minimum": 1,
      "type": "integer"
    }
  }
}
🟢search-quotes(query, status, customer_id, limit)

Searches authorized estimates using bounded customer, status, title, and total fields; notes, terms, and addresses are excluded.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "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"
      ]
    },
    "customer_id": {
      "description": "Restrict results to one customer ID.",
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "limit": {
      "description": "Maximum number of estimates to return.",
      "default": 10,
      "minimum": 1,
      "maximum": 20,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢get-quote(quote_id)

Returns one authorized estimate with bounded customer, status, pricing, revision, and line-item fields; addresses, notes, and terms are excluded.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "quote_id": {
      "description": "Estimate ID returned by search-quotes.",
      "minimum": 1,
      "type": "integer"
    }
  }
}
🟢preview-quote(customer_id, items, document_discount_type, document_discount_value, coupon_code, ...)

Calculates a deterministic estimate preview without saving, sending, or creating a quote.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "description": "Optional resolved customer ID.",
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "items": {
      "description": "Estimate line item.",
      "minItems": 1,
      "maxItems": 50,
      "items": {
        "properties": {
          "description": {
            "maxLength": 500,
            "type": "string"
          },
          "quantity": {
            "minimum": 0,
            "type": "number"
          },
          "unit_price": {
            "minimum": 0,
            "type": "number"
          },
          "item_type": {
            "enum": [
              "material",
              "labour",
              "service",
              "equipment",
              "fee"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "discount_type": {
            "enum": [
              "none",
              "percentage",
              "fixed"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "discount_value": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "tax_behavior": {
            "enum": [
              "inherit",
              "taxable",
              "non_taxable",
              "automatic"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "type": "array"
    },
    "document_discount_type": {
      "enum": [
        "none",
        "percentage",
        "fixed"
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "document_discount_value": {
      "minimum": 0,
      "type": [
        "number",
        "null"
      ]
    },
    "coupon_code": {
      "maxLength": 100,
      "type": [
        "string",
        "null"
      ]
    },
    "tax_mode": {
      "enum": [
        "none",
        "manual"
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "tax_rate_id": {
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢search-invoices(query, status, payment_status, customer_id, job_id, ...)

Searches authorized invoices using bounded customer, job, status, payment, due-date, and total fields; payment links and addresses are excluded.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "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"
      ]
    },
    "payment_status": {
      "description": "Authoritative payment state, such as unpaid, pending, paid, or refunded.",
      "maxLength": 40,
      "type": [
        "string",
        "null"
      ]
    },
    "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": {
      "description": "Maximum number of invoices to return.",
      "default": 10,
      "minimum": 1,
      "maximum": 20,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢get-invoice(invoice_id)

Returns one authorized invoice with bounded customer, job, payment-state, due-date, and line-item fields; payment links, addresses, and internal notes are excluded.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "invoice_id": {
      "description": "Invoice ID returned by search-invoices.",
      "minimum": 1,
      "type": "integer"
    }
  }
}
🟢preview-invoice(customer_id, items, document_discount_type, document_discount_value, coupon_code, ...)

Calculates a deterministic invoice preview without saving, charging, sending, or creating an invoice.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "description": "Resolved customer ID; required for an invoice preview.",
      "minimum": 1,
      "type": "integer"
    },
    "items": {
      "description": "Invoice line items.",
      "minItems": 1,
      "maxItems": 50,
      "items": {
        "properties": {
          "description": {
            "maxLength": 500,
            "type": "string"
          },
          "quantity": {
            "minimum": 0,
            "type": "number"
          },
          "unit_price": {
            "minimum": 0,
            "type": "number"
          },
          "item_type": {
            "enum": [
              "material",
              "labour",
              "service",
              "equipment",
              "fee"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "discount_type": {
            "enum": [
              "none",
              "percentage",
              "fixed"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "discount_value": {
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "tax_behavior": {
            "enum": [
              "inherit",
              "taxable",
              "non_taxable",
              "automatic"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "type": "array"
    },
    "document_discount_type": {
      "enum": [
        "none",
        "percentage",
        "fixed"
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "document_discount_value": {
      "minimum": 0,
      "type": [
        "number",
        "null"
      ]
    },
    "coupon_code": {
      "maxLength": 100,
      "type": [
        "string",
        "null"
      ]
    },
    "tax_mode": {
      "enum": [
        "none",
        "manual"
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "tax_rate_id": {
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢schedule-availability(date, technician_id, duration_minutes, job_duration_minutes, workday_start, ...)

Calculates verified busy jobs and open planning windows for a local business day without scheduling or changing a job.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "date": {
      "description": "Local business date, YYYY-MM-DD; defaults to today.",
      "format": "date",
      "type": [
        "string",
        "null"
      ]
    },
    "technician_id": {
      "description": "Optional same-business technician ID.",
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "duration_minutes": {
      "description": "Requested appointment length.",
      "default": 60,
      "minimum": 15,
      "maximum": 480,
      "type": [
        "integer",
        "null"
      ]
    },
    "job_duration_minutes": {
      "description": "Planning duration for existing jobs.",
      "default": 60,
      "minimum": 15,
      "maximum": 480,
      "type": [
        "integer",
        "null"
      ]
    },
    "workday_start": {
      "description": "Planning window start hour.",
      "default": 10,
      "minimum": 0,
      "maximum": 23,
      "type": [
        "integer",
        "null"
      ]
    },
    "workday_end": {
      "description": "Planning window end hour.",
      "default": 20,
      "minimum": 1,
      "maximum": 24,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢pipeline-next-actions(action_state, priority, action_type, due_before, limit)

Lists persisted pipeline attention items for the authenticated business without changing, dismissing, or executing them.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "action_state": {
      "description": "Pipeline state; defaults to open.",
      "enum": [
        "open",
        "in_progress",
        "snoozed",
        "blocked",
        "dismissed",
        "done"
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "priority": {
      "description": "Optional priority filter.",
      "enum": [
        "urgent",
        "high",
        "normal",
        "low"
      ],
      "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": {
      "description": "Maximum number of actions to return.",
      "default": 10,
      "minimum": 1,
      "maximum": 20,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢pipeline-recommendations(recommendation_id, status, action_type, limit, include_draft_history)

Lists persisted pipeline recommendations for the authenticated business without generating, editing, approving, rejecting, or executing them.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "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"
      ]
    },
    "action_type": {
      "description": "Optional exact pipeline recommendation action type.",
      "maxLength": 80,
      "type": [
        "string",
        "null"
      ]
    },
    "limit": {
      "description": "Maximum recommendations to return.",
      "default": 20,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    },
    "include_draft_history": {
      "description": "When true, recommendation_id is required and bounded draft edit history is returned.",
      "default": false,
      "type": [
        "boolean",
        "null"
      ]
    }
  }
}
🟢customer-service-requests(customer_id, limit)

Lists recent active service requests associated with one authorized customer using bounded status, source, urgency, and scheduling fields.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "description": "Customer ID returned by search-customers.",
      "minimum": 1,
      "type": "integer"
    },
    "limit": {
      "description": "Maximum number of service requests to return.",
      "default": 20,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢search-service-requests(q, view, status, urgency, limit)

Finds bounded active service-request inbox records for the authenticated business without exposing request descriptions, addresses, contact channels, or outreach controls.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "q": {
      "description": "Client name, service type, or request text.",
      "maxLength": 255,
      "type": [
        "string",
        "null"
      ]
    },
    "view": {
      "description": "Inbox view; defaults to active inbox records.",
      "enum": [
        "inbox",
        "pending",
        "converted",
        "outreach",
        "all"
      ],
      "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"
      ]
    },
    "limit": {
      "description": "Maximum number of requests to return.",
      "default": 20,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢get-service-request(service_request_id)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "service_request_id": {
      "description": "Service-request ID returned by search-service-requests.",
      "minimum": 1,
      "type": "integer"
    }
  }
}
🟢get-invoice-payment-status(invoice_id)

Returns the authoritative payment state for one authorized invoice without exposing payment links or provider identifiers.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "invoice_id": {
      "description": "Invoice ID returned by search-invoices.",
      "minimum": 1,
      "type": "integer"
    }
  }
}
🟢preview-review-requests(job_ids, channel)

Previews explicit completed jobs for review requests, including eligibility and skip reasons, without sending anything.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "job_ids": {
      "description": "Explicit job IDs to evaluate.",
      "minItems": 1,
      "maxItems": 50,
      "items": {
        "minimum": 1,
        "type": "integer"
      },
      "type": "array"
    },
    "channel": {
      "description": "Optional review-request channel preference.",
      "enum": [
        "sms",
        "email"
      ],
      "type": [
        "string",
        "null"
      ]
    }
  }
}
🟢search-reviews(query, platform, rating_min, rating_max, has_reply, ...)

Searches authorized reviews by reviewer, customer, job, rating, platform, or reply status using bounded fields.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Reviewer, customer, job title, review body, or platform.",
      "maxLength": 255,
      "type": [
        "string",
        "null"
      ]
    },
    "platform": {
      "description": "Review platform.",
      "enum": [
        "google",
        "facebook",
        "yelp",
        "industry",
        "bbb",
        "angi",
        "thumbtack",
        "custom"
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "rating_min": {
      "description": "Minimum rating.",
      "minimum": 1,
      "maximum": 5,
      "type": [
        "integer",
        "null"
      ]
    },
    "rating_max": {
      "description": "Maximum rating.",
      "minimum": 1,
      "maximum": 5,
      "type": [
        "integer",
        "null"
      ]
    },
    "has_reply": {
      "description": "Filter by whether an owner reply exists.",
      "type": [
        "boolean",
        "null"
      ]
    },
    "reply_status": {
      "description": "Reply delivery state.",
      "enum": [
        "none",
        "pending",
        "sent",
        "failed"
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "limit": {
      "description": "Maximum number of reviews to return.",
      "default": 20,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢draft-review-reply(review_id, tone)

Drafts a policy-aware reply for one authorized review without posting or changing the review.

Eingabe-Schema

{
  "type": "object",
  "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"
      ]
    }
  }
}
🟢search-referral-campaigns(query, status, limit)

Searches authorized referral campaigns by name, status, message channel, and bounded performance fields.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Campaign name, message, or channel.",
      "maxLength": 255,
      "type": [
        "string",
        "null"
      ]
    },
    "status": {
      "description": "Campaign status.",
      "enum": [
        "active",
        "paused",
        "archived"
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "limit": {
      "description": "Maximum number of campaigns to return.",
      "default": 20,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢get-referral-campaign-attribution(campaign_id, days)

Shows verified referral campaign totals and conversion activity without returning referral tokens or bearer-like links.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "description": "Referral campaign ID returned by search-referral-campaigns.",
      "minimum": 1,
      "type": "integer"
    },
    "days": {
      "description": "Lookback window in days.",
      "default": 30,
      "minimum": 1,
      "maximum": 180,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢preview-referral-campaign(campaign_id, limit)

Previews eligible completed jobs for one authorized referral campaign without sending or changing records.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "description": "Referral campaign ID returned by search-referral-campaigns.",
      "minimum": 1,
      "type": "integer"
    },
    "limit": {
      "description": "Maximum audience items to evaluate.",
      "default": 25,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢search-reactivation-campaigns(query, status, limit)

Searches authorized reactivation campaigns by name, status, channel, and job-type filter.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "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"
      ]
    },
    "limit": {
      "description": "Maximum number of campaigns to return.",
      "default": 20,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢preview-reactivation-campaign(campaign_id, limit)

Previews dormant customers eligible for one authorized reactivation campaign without sending or changing records.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "description": "Reactivation campaign ID returned by search-reactivation-campaigns.",
      "minimum": 1,
      "type": "integer"
    },
    "limit": {
      "description": "Maximum audience items to evaluate.",
      "default": 25,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢search-broadcast-campaigns(query, status, limit)

Searches authorized broadcast campaigns by name, status, message channel, and bounded delivery fields.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "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"
      ]
    },
    "limit": {
      "description": "Maximum number of campaigns to return.",
      "default": 20,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢preview-broadcast-campaign(campaign_id, limit)

Previews one approved broadcast audience, including suppression and policy skips, without sending or changing records.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "description": "Broadcast campaign ID returned by search-broadcast-campaigns.",
      "minimum": 1,
      "type": "integer"
    },
    "limit": {
      "description": "Maximum audience items to evaluate.",
      "default": 25,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢search-social-drafts(query, status, platform, review_id, limit)

Searches authorized social drafts and returns bounded content, status, platform, source-review, and approval metadata.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Draft content, platform, status, or ID.",
      "maxLength": 120,
      "type": [
        "string",
        "null"
      ]
    },
    "status": {
      "description": "Draft approval state.",
      "enum": [
        "pending_approval",
        "approved",
        "rejected",
        "published"
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "platform": {
      "description": "Social platform.",
      "enum": [
        "facebook",
        "instagram",
        "google_business"
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "review_id": {
      "description": "Optional source review ID.",
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "limit": {
      "description": "Maximum number of drafts to return.",
      "default": 20,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢preview-social-draft(content, platform, review_id)

Validates social post copy for an authorized source review without saving or publishing it.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "content": {
      "description": "Proposed social post content.",
      "minLength": 3,
      "maxLength": 1200,
      "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"
      ]
    }
  }
}
🟢list-job-photos(job_id)

Lists authorized private photos attached to one job with protected download URLs, filenames, captions, and media types.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "job_id": {
      "description": "Job ID returned by search-jobs.",
      "minimum": 1,
      "type": "integer"
    }
  }
}
🟢search-inventory(query, low_stock, active, limit)

Searches active inventory in the authenticated workspace and can identify low-stock items without exposing internal cost or margin fields.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Inventory name, SKU, or description.",
      "maxLength": 255,
      "type": [
        "string",
        "null"
      ]
    },
    "low_stock": {
      "description": "Only items at or below minimum quantity.",
      "type": [
        "boolean",
        "null"
      ]
    },
    "active": {
      "description": "Filter by active state; defaults to true.",
      "type": [
        "boolean",
        "null"
      ]
    },
    "limit": {
      "description": "Maximum items to return.",
      "default": 20,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢search-pricebook(query, type, active, limit)

Searches active customer-facing services and materials in the authenticated workspace without exposing internal cost or markup fields.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Pricebook item name or description.",
      "maxLength": 255,
      "type": [
        "string",
        "null"
      ]
    },
    "type": {
      "description": "Service or material.",
      "enum": [
        "service",
        "material"
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "active": {
      "description": "Filter by active state; defaults to true.",
      "type": [
        "boolean",
        "null"
      ]
    },
    "limit": {
      "description": "Maximum items to return.",
      "default": 20,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢complaint-recall-risk(query, status, limit)

Lists complaint and recall risk records for the authenticated workspace without exposing private operational notes.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "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"
      ]
    },
    "limit": {
      "description": "Maximum records to return.",
      "default": 20,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢routing-driving-risk(date, technician_id, limit)

Reads a local business day route and high driving-risk stops for the authenticated workspace without exposing addresses or private route notes.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "date": {
      "description": "Local business date, YYYY-MM-DD; defaults to today.",
      "format": "date",
      "type": [
        "string",
        "null"
      ]
    },
    "technician_id": {
      "description": "Optional technician filter.",
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "limit": {
      "description": "Maximum route stops to return.",
      "default": 50,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢operations-parts(technician_id, limit)

Reads bounded parts stock, technician exposure, and transaction metadata for the authenticated workspace without exposing amounts, item pricing, or private notes.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "technician_id": {
      "description": "Optional same-business technician ID.",
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "limit": {
      "description": "Maximum inventory, transactions, and technician balances to return.",
      "default": 20,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢operations-scorecards(technician_id, limit)

Reads bounded technician performance and coaching signals for the authenticated workspace without exposing coaching notes or private contact fields.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "technician_id": {
      "description": "Optional same-business technician ID.",
      "minimum": 1,
      "type": [
        "integer",
        "null"
      ]
    },
    "limit": {
      "description": "Maximum jobs sampled per technician.",
      "default": 20,
      "minimum": 1,
      "maximum": 50,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢reports-overview(period)

Reads aggregate revenue, receivables, job, lead, and estimate performance for the authenticated workspace without exposing customer names, addresses, invoice rows, or mutation access.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "period": {
      "description": "Number of days for the bounded trend metrics; defaults to 30.",
      "default": 30,
      "enum": [
        7,
        30,
        90,
        365
      ],
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢reports-by-location(period)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "period": {
      "description": "Number of days for location comparison metrics; defaults to 30.",
      "default": 30,
      "enum": [
        7,
        30,
        90,
        365
      ],
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
🟢reports-customer-revenue-rank(period, from, to, limit)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "period": {
      "description": "Ranking window. Use all_time for to-date questions.",
      "default": "all_time",
      "enum": [
        "all_time",
        "7",
        "30",
        "90",
        "365",
        "custom"
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "from": {
      "description": "Inclusive start date when period is custom.",
      "type": [
        "string",
        "null"
      ]
    },
    "to": {
      "description": "Inclusive end date when period is custom.",
      "type": [
        "string",
        "null"
      ]
    },
    "limit": {
      "description": "Maximum number of ranked customers to return.",
      "default": 20,
      "minimum": 1,
      "maximum": 100,
      "type": [
        "integer",
        "null"
      ]
    }
  }
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet47 Tools
verifiziertVersion nicht aufgezeichnet47 Tools