FieldRobin
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Authenticated FieldRobin workspace tools, including scope-authorized customer and job creation.
| Author | com.fieldrobin |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 149 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"FieldRobin": {
"url": "https://fieldrobin.com/api/v1/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (47)
create-customerCreates 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.
Parameters:
name(required) — string — Customer full name.idempotency_key(required) — string — Opaque retry key. Reuse it only for the same request to receive the verified result without creating a duplicate.email— ['string', 'null'] — Customer email address, if known.notes— ['string', 'null'] — Internal customer notes.phone— ['string', 'null'] — Customer phone number, if known.address— ['string', 'null'] — Customer address, if known.trade_type— ['string', 'null'] — Customer trade or service type.location_id— ['integer', 'null'] — Business location for the customer.business_name— ['string', 'null'] — Customer business name, if known.lifecycle_tag— ['string', 'null'] — Lifecycle tag.acquisition_source— ['string', 'null'] — How the customer was acquired.
Hints: read-only no · destructive no · idempotent yes · open-world no
create-jobCreates 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.
Parameters:
title(required) — string — Short job title.idempotency_key(required) — string — Opaque retry key. Reuse it only for the same request to receive the verified result without creating a duplicate.status— ['string', 'null'] — Initial job status.customer_id— ['integer', 'null'] — Verified customer ID, if the job belongs to an existing customer.description— ['string', 'null'] — Readable issue and service description.location_id— ['integer', 'null'] — Business location for the job.voice_notes— ['string', 'null'] — Optional internal voice-note text.scheduled_at— ['string', 'null'] — Optional local wall-clock appointment date/time or ISO timestamp with offset.total_amount— ['number', 'null'] — Optional quoted amount.service_address— ['string', 'null'] — Service address, if known.appointment_count— ['integer', 'null'] — Optional appointment count.technician_user_id— ['integer', 'null'] — Verified technician user ID, if assigned.
Hints: read-only no · destructive no · idempotent yes · open-world no
get-workspace-summaryread-onlyReturns a limited, read-only summary of the authenticated FieldRobin workspace.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search-locationsread-onlyLists physical locations in the authenticated workspace.
Parameters:
limit— ['integer', 'null']query— ['string', 'null'] — Location name to search for.status— ['string', 'null'] — active, archived, or all.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get-locationread-onlyReturns one location and its public Google listing status. A confirmed place is not a Google Business Profile connection.
Parameters:
location_id— integer — Location ID.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search-customersread-onlySearches the authenticated workspace customers without exposing addresses, notes, or other private fields.
Parameters:
limit— ['integer', 'null'] — Maximum number of customers to return.query— ['string', 'null'] — Name, email, phone, or business name to search for.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search-jobsread-onlySearches the authenticated workspace jobs using safe summary fields only; it does not return service addresses, notes, or amounts.
Parameters:
limit— ['integer', 'null'] — Maximum number of jobs to return.query— ['string', 'null'] — Customer name, email, phone, or job title.status— ['string', 'null'] — Optional job status filter.customer_id— ['integer', 'null'] — Restrict results to one customer ID.location_id— ['integer', 'null'] — Restrict results to one business location ID.scheduled_to— ['string', 'null'] — Inclusive scheduled date, YYYY-MM-DD.scheduled_from— ['string', 'null'] — Inclusive scheduled date, YYYY-MM-DD.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get-customerread-onlyReturns one authorized customer using bounded contact and lifecycle fields; addresses and notes are excluded.
Parameters:
customer_id— integer — Customer ID returned by search-customers.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get-jobread-onlyReturns one authorized job using bounded customer, schedule, status, and technician fields; service addresses, notes, and amounts are excluded.
Parameters:
job_id— integer — Job ID returned by search-jobs or jobs-today.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search-leadsread-onlySearches authorized workspace leads with bounded contact, source, status, and service-interest fields; notes and estimated values are excluded.
Parameters:
limit— ['integer', 'null'] — Maximum number of leads to return.query— ['string', 'null'] — Name, email, phone, source, or service interest.source— ['string', 'null'] — Optional exact lead source.status— ['string', 'null'] — Optional lead status.urgency— ['string', 'null'] — Optional urgency: low, medium, or high.customer_id— ['integer', 'null'] — Restrict results to a customer ID.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
jobs-todayread-onlyLists authorized jobs scheduled for a business day, with bounded customer, schedule, status, and technician fields.
Parameters:
date— ['string', 'null'] — Local business date, YYYY-MM-DD; defaults to today.limit— ['integer', 'null'] — Maximum number of jobs to return.status— ['string', 'null'] — Optional job status filter.technician_id— ['integer', 'null'] — Optional technician ID.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get-leadread-onlyReturns one authorized lead using bounded contact, source, status, and service-interest fields; notes, budget, and internal summaries are excluded.
Parameters:
lead_id— integer — Lead ID returned by search-leads.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search-quotesread-onlySearches authorized estimates using bounded customer, status, title, and total fields; notes, terms, and addresses are excluded.
Parameters:
limit— ['integer', 'null'] — Maximum number of estimates to return.query— ['string', 'null'] — Estimate title, customer name, email, or phone.status— ['string', 'null'] — Optional estimate status.customer_id— ['integer', 'null'] — Restrict results to one customer ID.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get-quoteread-onlyReturns one authorized estimate with bounded customer, status, pricing, revision, and line-item fields; addresses, notes, and terms are excluded.
Parameters:
quote_id— integer — Estimate ID returned by search-quotes.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
preview-quoteread-onlyCalculates a deterministic estimate preview without saving, sending, or creating a quote.
Parameters:
items— array — Estimate line item.tax_mode— ['string', 'null']coupon_code— ['string', 'null']customer_id— ['integer', 'null'] — Optional resolved customer ID.tax_rate_id— ['integer', 'null']document_discount_type— ['string', 'null']document_discount_value— ['number', 'null']
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search-invoicesread-onlySearches authorized invoices using bounded customer, job, status, payment, due-date, and total fields; payment links and addresses are excluded.
Parameters:
limit— ['integer', 'null'] — Maximum number of invoices to return.query— ['string', 'null'] — Invoice number, customer name, email, phone, job title, or description.job_id— ['integer', 'null'] — Restrict results to one job ID.status— ['string', 'null'] — Invoice lifecycle status.customer_id— ['integer', 'null'] — Restrict results to one customer ID.payment_status— ['string', 'null'] — Authoritative payment state, such as unpaid, pending, paid, or refunded.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get-invoiceread-onlyReturns one authorized invoice with bounded customer, job, payment-state, due-date, and line-item fields; payment links, addresses, and internal notes are excluded.
Parameters:
invoice_id— integer — Invoice ID returned by search-invoices.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
preview-invoiceread-onlyCalculates a deterministic invoice preview without saving, charging, sending, or creating an invoice.
Parameters:
items— array — Invoice line items.tax_mode— ['string', 'null']coupon_code— ['string', 'null']customer_id— integer — Resolved customer ID; required for an invoice preview.tax_rate_id— ['integer', 'null']document_discount_type— ['string', 'null']document_discount_value— ['number', 'null']
Hints: read-only yes · destructive no · idempotent not declared · open-world no
schedule-availabilityread-onlyCalculates verified busy jobs and open planning windows for a local business day without scheduling or changing a job.
Parameters:
date— ['string', 'null'] — Local business date, YYYY-MM-DD; defaults to today.workday_end— ['integer', 'null'] — Planning window end hour.technician_id— ['integer', 'null'] — Optional same-business technician ID.workday_start— ['integer', 'null'] — Planning window start hour.duration_minutes— ['integer', 'null'] — Requested appointment length.job_duration_minutes— ['integer', 'null'] — Planning duration for existing jobs.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
pipeline-next-actionsread-onlyLists persisted pipeline attention items for the authenticated business without changing, dismissing, or executing them.
Parameters:
limit— ['integer', 'null'] — Maximum number of actions to return.priority— ['string', 'null'] — Optional priority filter.due_before— ['string', 'null'] — Only actions due on or before this local date.action_type— ['string', 'null'] — Optional exact action type.action_state— ['string', 'null'] — Pipeline state; defaults to open.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
pipeline-recommendationsread-onlyLists persisted pipeline recommendations for the authenticated business without generating, editing, approving, rejecting, or executing them.
Parameters:
limit— ['integer', 'null'] — Maximum recommendations to return.status— ['string', 'null'] — Recommendation state; defaults to pending.action_type— ['string', 'null'] — Optional exact pipeline recommendation action type.recommendation_id— ['integer', 'null'] — Optional exact recommendation ID.include_draft_history— ['boolean', 'null'] — When true, recommendation_id is required and bounded draft edit history is returned.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
customer-service-requestsread-onlyLists recent active service requests associated with one authorized customer using bounded status, source, urgency, and scheduling fields.
Parameters:
limit— ['integer', 'null'] — Maximum number of service requests to return.customer_id— integer — Customer ID returned by search-customers.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search-service-requestsread-onlyFinds bounded active service-request inbox records for the authenticated business without exposing request descriptions, addresses, contact channels, or outreach controls.
Parameters:
q— ['string', 'null'] — Client name, service type, or request text.view— ['string', 'null'] — Inbox view; defaults to active inbox records.limit— ['integer', 'null'] — Maximum number of requests to return.status— ['string', 'null'] — Optional exact active request status.urgency— ['string', 'null'] — Optional urgency filter.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get-service-requestread-onlyReturns 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.
Parameters:
service_request_id— integer — Service-request ID returned by search-service-requests.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get-invoice-payment-statusread-onlyReturns the authoritative payment state for one authorized invoice without exposing payment links or provider identifiers.
Parameters:
invoice_id— integer — Invoice ID returned by search-invoices.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
preview-review-requestsread-onlyPreviews explicit completed jobs for review requests, including eligibility and skip reasons, without sending anything.
Parameters:
channel— ['string', 'null'] — Optional review-request channel preference.job_ids— array — Explicit job IDs to evaluate.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search-reviewsread-onlySearches authorized reviews by reviewer, customer, job, rating, platform, or reply status using bounded fields.
Parameters:
limit— ['integer', 'null'] — Maximum number of reviews to return.query— ['string', 'null'] — Reviewer, customer, job title, review body, or platform.platform— ['string', 'null'] — Review platform.has_reply— ['boolean', 'null'] — Filter by whether an owner reply exists.rating_max— ['integer', 'null'] — Maximum rating.rating_min— ['integer', 'null'] — Minimum rating.reply_status— ['string', 'null'] — Reply delivery state.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
draft-review-replyread-onlyDrafts a policy-aware reply for one authorized review without posting or changing the review.
Parameters:
tone— ['string', 'null'] — Draft tone.review_id— integer — Review ID returned by search-reviews.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search-referral-campaignsread-onlySearches authorized referral campaigns by name, status, message channel, and bounded performance fields.
Parameters:
limit— ['integer', 'null'] — Maximum number of campaigns to return.query— ['string', 'null'] — Campaign name, message, or channel.status— ['string', 'null'] — Campaign status.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get-referral-campaign-attributionread-onlyShows verified referral campaign totals and conversion activity without returning referral tokens or bearer-like links.
Parameters:
days— ['integer', 'null'] — Lookback window in days.campaign_id— integer — Referral campaign ID returned by search-referral-campaigns.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
preview-referral-campaignread-onlyPreviews eligible completed jobs for one authorized referral campaign without sending or changing records.
Parameters:
limit— ['integer', 'null'] — Maximum audience items to evaluate.campaign_id— integer — Referral campaign ID returned by search-referral-campaigns.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search-reactivation-campaignsread-onlySearches authorized reactivation campaigns by name, status, channel, and job-type filter.
Parameters:
limit— ['integer', 'null'] — Maximum number of campaigns to return.query— ['string', 'null'] — Campaign name, message, channel, or job type.status— ['string', 'null'] — Campaign status.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
preview-reactivation-campaignread-onlyPreviews dormant customers eligible for one authorized reactivation campaign without sending or changing records.
Parameters:
limit— ['integer', 'null'] — Maximum audience items to evaluate.campaign_id— integer — Reactivation campaign ID returned by search-reactivation-campaigns.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search-broadcast-campaignsread-onlySearches authorized broadcast campaigns by name, status, message channel, and bounded delivery fields.
Parameters:
limit— ['integer', 'null'] — Maximum number of campaigns to return.query— ['string', 'null'] — Campaign name, message, or channel.status— ['string', 'null'] — Campaign status.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
preview-broadcast-campaignread-onlyPreviews one approved broadcast audience, including suppression and policy skips, without sending or changing records.
Parameters:
limit— ['integer', 'null'] — Maximum audience items to evaluate.campaign_id— integer — Broadcast campaign ID returned by search-broadcast-campaigns.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search-social-draftsread-onlySearches authorized social drafts and returns bounded content, status, platform, source-review, and approval metadata.
Parameters:
limit— ['integer', 'null'] — Maximum number of drafts to return.query— ['string', 'null'] — Draft content, platform, status, or ID.status— ['string', 'null'] — Draft approval state.platform— ['string', 'null'] — Social platform.review_id— ['integer', 'null'] — Optional source review ID.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
preview-social-draftread-onlyValidates social post copy for an authorized source review without saving or publishing it.
Parameters:
content— string — Proposed social post content.platform— ['string', 'null'] — Social platform.review_id— ['integer', 'null'] — Optional authorized source review ID.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
list-job-photosread-onlyLists authorized private photos attached to one job with protected download URLs, filenames, captions, and media types.
Parameters:
job_id— integer — Job ID returned by search-jobs.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search-inventoryread-onlySearches active inventory in the authenticated workspace and can identify low-stock items without exposing internal cost or margin fields.
Parameters:
limit— ['integer', 'null'] — Maximum items to return.query— ['string', 'null'] — Inventory name, SKU, or description.active— ['boolean', 'null'] — Filter by active state; defaults to true.low_stock— ['boolean', 'null'] — Only items at or below minimum quantity.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
search-pricebookread-onlySearches active customer-facing services and materials in the authenticated workspace without exposing internal cost or markup fields.
Parameters:
type— ['string', 'null'] — Service or material.limit— ['integer', 'null'] — Maximum items to return.query— ['string', 'null'] — Pricebook item name or description.active— ['boolean', 'null'] — Filter by active state; defaults to true.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
complaint-recall-riskread-onlyLists complaint and recall risk records for the authenticated workspace without exposing private operational notes.
Parameters:
limit— ['integer', 'null'] — Maximum records to return.query— ['string', 'null'] — Job title, customer name, or technician name.status— ['string', 'null'] — Risk state; defaults to open.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
routing-driving-riskread-onlyReads a local business day route and high driving-risk stops for the authenticated workspace without exposing addresses or private route notes.
Parameters:
date— ['string', 'null'] — Local business date, YYYY-MM-DD; defaults to today.limit— ['integer', 'null'] — Maximum route stops to return.technician_id— ['integer', 'null'] — Optional technician filter.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
operations-partsread-onlyReads bounded parts stock, technician exposure, and transaction metadata for the authenticated workspace without exposing amounts, item pricing, or private notes.
Parameters:
limit— ['integer', 'null'] — Maximum inventory, transactions, and technician balances to return.technician_id— ['integer', 'null'] — Optional same-business technician ID.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
operations-scorecardsread-onlyReads bounded technician performance and coaching signals for the authenticated workspace without exposing coaching notes or private contact fields.
Parameters:
limit— ['integer', 'null'] — Maximum jobs sampled per technician.technician_id— ['integer', 'null'] — Optional same-business technician ID.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
reports-overviewread-onlyReads aggregate revenue, receivables, job, lead, and estimate performance for the authenticated workspace without exposing customer names, addresses, invoice rows, or mutation access.
Parameters:
period— ['integer', 'null'] — Number of days for the bounded trend metrics; defaults to 30.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
reports-by-locationread-onlyCompares 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.
Parameters:
period— ['integer', 'null'] — Number of days for location comparison metrics; defaults to 30.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
reports-customer-revenue-rankread-onlyRanks named customers by paid invoice revenue for the authenticated workspace. Uses all paid, non-sample invoices and returns aggregate customer totals without invoice rows.
Parameters:
to— ['string', 'null'] — Inclusive end date when period is custom.from— ['string', 'null'] — Inclusive start date when period is custom.limit— ['integer', 'null'] — Maximum number of ranked customers to return.period— ['string', 'null'] — Ranking window. Use all_time for to-date questions.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.