FieldPulse MCP by usefulapi
Read FieldPulse customers, jobs, estimates, invoices, assets and projects; create and update jobs.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (8)
- LOWin fieldpulse_list_customer_contacts
- LOWin fieldpulse_get_customer_contact
- LOWin fieldpulse_list_job_status_workflows
- LOWin fieldpulse_list_job_workflow_statuses
- LOWin fieldpulse_list_asset_categories
- LOWin fieldpulse_list_purchase_orders
- LOWin fieldpulse_list_company_profiles
- LOWin fieldpulse_list_pipeline_statuses
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
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": {
"fieldpulse": {
"url": "https://fieldpulse.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://fieldpulse.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (43)
🟢fieldpulse_list_customers(search, sort_by, sort_dir, page, limit)
List or search customers (name, email, phone, address, status, assigned user). GET /customers.
Eingabe-Schema
{
"type": "object",
"properties": {
"search": {
"description": "Free-text search string.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"sort_by": {
"type": "string",
"enum": [
"searchable",
"email",
"phone",
"address_1"
]
},
"sort_dir": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_get_customer(customer_id)
One customer by id. GET /customers/{id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "FieldPulse customer id."
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_customer_contacts(customer_id, page, limit)
The contacts (people) of one customer. GET /customers/{customerId}/customer-contact.
Eingabe-Schema
{
"type": "object",
"properties": {
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "FieldPulse customer id."
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_get_customer_contact(customer_id, contact_id)
One contact of a customer. GET /customers/{customerId}/customer-contact/{contactId}.
Eingabe-Schema
{
"type": "object",
"properties": {
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "FieldPulse customer id."
},
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Customer contact id."
}
},
"required": [
"customer_id",
"contact_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_jobs(search, sort_by, sort_dir, created_from, created_to, ...)
List or search jobs (type, status, customer, schedule, assignments), optionally within a created-at range or by custom status ids. GET /jobs.
Eingabe-Schema
{
"type": "object",
"properties": {
"search": {
"description": "Free-text search string.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"sort_by": {
"type": "string",
"enum": [
"created_at",
"updated_at"
]
},
"sort_dir": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"created_from": {
"description": "Only jobs created at or after this time (yyyy-mm-dd or ISO 8601 with a timezone).",
"type": "string"
},
"created_to": {
"description": "Only jobs created at or before this time.",
"type": "string"
},
"status_ids": {
"description": "Only jobs in these custom status ids (see fieldpulse_list_job_workflow_statuses).",
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"with_custom_fields": {
"description": "Include each job's custom field values (customfields_with_related_data).",
"type": "boolean"
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_get_job(job_id, with_custom_fields)
One job by id, optionally with its custom field values. GET /jobs/{id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"job_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "FieldPulse job id."
},
"with_custom_fields": {
"description": "Include custom field values.",
"type": "boolean"
}
},
"required": [
"job_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_job_status_workflows(limit)
The job status workflows (use their ids with fieldpulse_list_job_workflow_statuses and when setting a custom job status). GET /jobs/status-workflows.
Eingabe-Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_job_workflow_statuses(limit)
The custom job statuses of all workflows, with their ids (for filtering jobs or setting a status). GET /jobs/status-workflow-statuses.
Eingabe-Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_estimates(search, sort_by, sort_dir, page, limit)
List or search estimates (customer, status, totals, line items). GET /estimates.
Eingabe-Schema
{
"type": "object",
"properties": {
"search": {
"description": "Free-text search string.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"sort_by": {
"description": "An attribute of the record, e.g. created_at.",
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,49}$"
},
"sort_dir": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_get_estimate(estimate_id)
One estimate by id. GET /estimates/{id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"estimate_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "FieldPulse estimate id."
}
},
"required": [
"estimate_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_invoices(search, sort_by, sort_dir, page, limit)
List or search invoices (customer, status, totals, due dates). GET /invoices.
Eingabe-Schema
{
"type": "object",
"properties": {
"search": {
"description": "Free-text search string.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"sort_by": {
"description": "An attribute of the record, e.g. created_at.",
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,49}$"
},
"sort_dir": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_get_invoice(invoice_id)
One invoice by id. GET /invoices/{id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"invoice_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "FieldPulse invoice id."
}
},
"required": [
"invoice_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_payments(search, sort_by, sort_dir, page, limit)
List or search payments (amount, method, date, invoice). GET /payments.
Eingabe-Schema
{
"type": "object",
"properties": {
"search": {
"description": "Free-text search string.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"sort_by": {
"type": "string",
"enum": [
"cuid",
"method",
"amount",
"payment_date"
]
},
"sort_dir": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_get_payment(payment_id)
One payment by id. GET /payments/{id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"payment_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "FieldPulse payment id."
}
},
"required": [
"payment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_assets(search, status, page, limit)
List or search customer assets (equipment) by install status. GET /assets.
Eingabe-Schema
{
"type": "object",
"properties": {
"search": {
"description": "Free-text search string.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"type": "string",
"enum": [
"uninstalled",
"installed",
"retired"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_get_asset(asset_id)
One asset by id. GET /assets/{id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"asset_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "FieldPulse asset id."
}
},
"required": [
"asset_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_asset_categories(search, page, limit)
List asset categories. GET /assets-category.
Eingabe-Schema
{
"type": "object",
"properties": {
"search": {
"description": "Free-text search string.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_locations(object_type, object_id, page, limit)
List locations (service addresses) of a customer or a job. GET /locations.
Eingabe-Schema
{
"type": "object",
"properties": {
"object_type": {
"type": "string",
"enum": [
"customer",
"job"
]
},
"object_id": {
"description": "Id of the customer or job (needs object_type).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_get_location(location_id)
One location by id. GET /locations/{id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"location_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "FieldPulse location id."
}
},
"required": [
"location_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_projects(search, sort_by, sort_dir, page, limit)
List or search projects (status, completion). GET /projects.
Eingabe-Schema
{
"type": "object",
"properties": {
"search": {
"description": "Free-text search string.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"sort_by": {
"type": "string",
"enum": [
"cuid",
"name",
"status_id",
"completion_percentage"
]
},
"sort_dir": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_get_project(project_id)
One project by id. GET /projects/{id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"project_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "FieldPulse project id."
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_contracts(limit)
List contracts (maintenance agreements). GET /contracts.
Eingabe-Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_get_contract(contract_id)
One contract by id. GET /contracts/{id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"contract_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "FieldPulse contract id."
}
},
"required": [
"contract_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_items(page, limit)
List the invoice item catalog (products and services with prices). GET /items.
Eingabe-Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_get_item(item_id)
One invoice item by id. GET /items/{id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"item_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "FieldPulse item id."
}
},
"required": [
"item_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_purchase_orders(page, limit)
List purchase orders. GET /purchase-orders.
Eingabe-Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_get_purchase_order(purchase_order_id)
One purchase order by id. GET /purchase-orders/{id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"purchase_order_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "FieldPulse purchase order id."
}
},
"required": [
"purchase_order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_vendors(search, limit)
List vendors (suppliers). GET /vendors.
Eingabe-Schema
{
"type": "object",
"properties": {
"search": {
"description": "Free-text search string.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_get_vendor(vendor_id)
One vendor by id. GET /vendors/{id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"vendor_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "FieldPulse vendor id."
}
},
"required": [
"vendor_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_company_profiles(search, page, limit)
The company profile(s) of this FieldPulse account (name, address, contact details, settings). GET /company-profile.
Eingabe-Schema
{
"type": "object",
"properties": {
"search": {
"description": "Free-text search string.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_users(limit)
List the account's users (team members) with ids for assignments. GET /users.
Eingabe-Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_teams(page, limit)
List the account's teams. GET /teams.
Eingabe-Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_tags(object_type, page, limit)
List tags for customers or jobs. GET /tags.
Eingabe-Schema
{
"type": "object",
"properties": {
"object_type": {
"type": "string",
"enum": [
"customer",
"job"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_lead_sources(page, limit)
List customer lead sources. GET /lead-source.
Eingabe-Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_pipeline_statuses(page, limit)
List customer pipeline statuses. GET /pipeline-status.
Eingabe-Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_custom_fields(object_type, page, limit)
List custom field definitions, optionally for one object type. GET /custom-fields.
Eingabe-Schema
{
"type": "object",
"properties": {
"object_type": {
"type": "string",
"enum": [
"customer",
"job",
"invoice",
"item",
"maintenance_agreement",
"project",
"asset",
"material_list"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_comments(object_type, object_id, page, limit)
List comments on a record (customer, job, project, subtasks, invoice). GET /comments.
Eingabe-Schema
{
"type": "object",
"properties": {
"object_type": {
"type": "string",
"enum": [
"customer",
"job",
"project",
"subtasks",
"invoice"
]
},
"object_id": {
"description": "Id of the record (needs object_type).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_subtasks(status, assigned_user_id, sort_by, sort_dir, page, ...)
List subtasks (job checklist items) by status or assigned user. GET /subtasks.
Eingabe-Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"open",
"close"
]
},
"assigned_user_id": {
"description": "Only subtasks assigned to this user id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"sort_by": {
"type": "string",
"enum": [
"due_date",
"status",
"title"
]
},
"sort_dir": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fieldpulse_list_timesheets(user_id, in_time, out_time, type, limit)
List timesheet entries (clock in/out), optionally for one user or a time window. GET /timesheets.
Eingabe-Schema
{
"type": "object",
"properties": {
"user_id": {
"description": "Only this user's entries.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"in_time": {
"description": "Clock-in time filter (yyyy-mm-dd or ISO 8601 with a timezone).",
"type": "string"
},
"out_time": {
"description": "Clock-out time filter.",
"type": "string"
},
"type": {
"description": "Entry type, e.g. job.",
"type": "string",
"minLength": 1,
"maxLength": 50
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴fieldpulse_create_customer(first_name, last_name, display_name, company_name, account_type, ...)
WRITE: create a customer (lead or account). Give first_name and/or last_name, or a unique display_name. Creates a new record every call; check fieldpulse_list_customers first to avoid duplicates. POST /customers.
Eingabe-Schema
{
"type": "object",
"properties": {
"first_name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"last_name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"display_name": {
"description": "Required by FieldPulse when first and last name are empty; must be unique.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"company_name": {
"type": "string",
"maxLength": 255
},
"account_type": {
"type": "string",
"enum": [
"individual",
"company"
]
},
"email": {
"type": "string",
"maxLength": 255,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"alt_email": {
"type": "string",
"maxLength": 255,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"secondary_email": {
"type": "string",
"maxLength": 255,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"phone": {
"description": "A valid phone number.",
"type": "string",
"maxLength": 255
},
"secondary_phone": {
"description": "A valid phone number.",
"type": "string",
"maxLength": 255
},
"status": {
"type": "string",
"enum": [
"lead",
"opportunity",
"current customer",
"lost",
"other",
"inactive"
]
},
"notes": {
"type": "string",
"maxLength": 7500
},
"job_notes": {
"type": "string",
"maxLength": 4000
},
"assigned_to": {
"description": "User id the customer is assigned to (see fieldpulse_list_users); null clears it.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"lead_source_id": {
"description": "See fieldpulse_list_lead_sources.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"pipeline_status_id": {
"description": "See fieldpulse_list_pipeline_statuses.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"tags": {
"description": "Existing customer tag ids (see fieldpulse_list_tags).",
"maxItems": 50,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"has_different_billing_address": {
"type": "boolean"
},
"billing_address_1": {
"type": "string",
"maxLength": 1000
},
"billing_address_2": {
"type": "string",
"maxLength": 1000
},
"billing_city": {
"type": "string",
"maxLength": 255
},
"billing_state": {
"type": "string",
"maxLength": 255
},
"billing_zip_code": {
"type": "string",
"maxLength": 255
},
"service_address_1": {
"type": "string",
"maxLength": 255
},
"service_address_2": {
"type": "string",
"maxLength": 255
},
"service_address_city": {
"type": "string",
"maxLength": 255
},
"service_address_state": {
"type": "string",
"maxLength": 255
},
"service_address_zip_code": {
"type": "string",
"maxLength": 255
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴fieldpulse_update_customer(customer_id, first_name, last_name, display_name, company_name, ...)
WRITE: change fields of one customer (only the fields you pass). If FieldPulse asks for a name, include first_name/last_name or display_name. PUT /customers/{customerId}.
Eingabe-Schema
{
"type": "object",
"properties": {
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "FieldPulse customer id."
},
"first_name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"last_name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"display_name": {
"description": "Required by FieldPulse when first and last name are empty; must be unique.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"company_name": {
"type": "string",
"maxLength": 255
},
"account_type": {
"type": "string",
"enum": [
"individual",
"company"
]
},
"email": {
"type": "string",
"maxLength": 255,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"alt_email": {
"type": "string",
"maxLength": 255,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"secondary_email": {
"type": "string",
"maxLength": 255,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"phone": {
"description": "A valid phone number.",
"type": "string",
"maxLength": 255
},
"secondary_phone": {
"description": "A valid phone number.",
"type": "string",
"maxLength": 255
},
"status": {
"type": "string",
"enum": [
"lead",
"opportunity",
"current customer",
"lost",
"other",
"inactive"
]
},
"notes": {
"type": "string",
"maxLength": 7500
},
"job_notes": {
"type": "string",
"maxLength": 4000
},
"assigned_to": {
"description": "User id the customer is assigned to (see fieldpulse_list_users); null clears it.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"lead_source_id": {
"description": "See fieldpulse_list_lead_sources.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"pipeline_status_id": {
"description": "See fieldpulse_list_pipeline_statuses.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"tags": {
"description": "Existing customer tag ids (see fieldpulse_list_tags).",
"maxItems": 50,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"has_different_billing_address": {
"type": "boolean"
},
"billing_address_1": {
"type": "string",
"maxLength": 1000
},
"billing_address_2": {
"type": "string",
"maxLength": 1000
},
"billing_city": {
"type": "string",
"maxLength": 255
},
"billing_state": {
"type": "string",
"maxLength": 255
},
"billing_zip_code": {
"type": "string",
"maxLength": 255
},
"service_address_1": {
"type": "string",
"maxLength": 255
},
"service_address_2": {
"type": "string",
"maxLength": 255
},
"service_address_city": {
"type": "string",
"maxLength": 255
},
"service_address_state": {
"type": "string",
"maxLength": 255
},
"service_address_zip_code": {
"type": "string",
"maxLength": 255
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴fieldpulse_create_job(customer_id, job_type, billing, subtitle, notes, ...)
WRITE: create a job for an existing customer. Needs customer_id, job_type and the numeric billing value FieldPulse requires; set a status (1-6) or a custom status_id + status_workflow_id. Creates a new job every call. POST /jobs.
Eingabe-Schema
{
"type": "object",
"properties": {
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Existing customer id."
},
"job_type": {
"type": "string",
"minLength": 1,
"maxLength": 150,
"description": "Job type label, e.g. the service name."
},
"billing": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "The integer billing value FieldPulse requires for a job."
},
"subtitle": {
"type": "string",
"maxLength": 150
},
"notes": {
"type": "string",
"maxLength": 7500
},
"field_notes": {
"type": "string",
"maxLength": 5000
},
"status": {
"type": "integer",
"minimum": 1,
"maximum": 6,
"description": "1 = new, 2 = in progress, 3 = pending, 4 = completed, 5 = canceled, 6 = on the way."
},
"status_id": {
"description": "A custom status id (see fieldpulse_list_job_workflow_statuses); needs status_workflow_id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"status_workflow_id": {
"description": "The status workflow of status_id (see fieldpulse_list_job_status_workflows).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"start_time": {
"description": "Start, yyyy-mm-dd or ISO 8601 with a timezone.",
"type": [
"string",
"null"
]
},
"end_time": {
"description": "End, yyyy-mm-dd or ISO 8601 with a timezone.",
"type": [
"string",
"null"
]
},
"due_date": {
"description": "Due date, yyyy-mm-dd or ISO 8601 with a timezone.",
"type": [
"string",
"null"
]
},
"location_id": {
"description": "A location of the customer (see fieldpulse_list_locations).",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"customer_contact_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"assignments": {
"description": "Who the job is assigned to.",
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"team_id": {
"description": "Team id (see fieldpulse_list_teams).",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"assigned_members": {
"maxItems": 100,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"description": "User ids (see fieldpulse_list_users)."
}
},
"required": [
"assigned_members"
]
}
},
"tags": {
"description": "Existing job tag ids (see fieldpulse_list_tags).",
"maxItems": 50,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
}
},
"required": [
"customer_id",
"job_type",
"billing"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴fieldpulse_update_job(job_id, customer_id, job_type, billing, subtitle, ...)
WRITE: change a job: status, schedule, notes, assignments, location. FieldPulse requires customer_id, job_type and billing on every update, so this reads the job first and keeps those (and its current status) unless you pass new values. The read and the write are two requests; FieldPulse offers no version check. PUT /jobs/{jobId}.
Eingabe-Schema
{
"type": "object",
"properties": {
"job_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "FieldPulse job id."
},
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"job_type": {
"type": "string",
"minLength": 1,
"maxLength": 150
},
"billing": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"subtitle": {
"type": "string",
"maxLength": 150
},
"notes": {
"type": "string",
"maxLength": 7500
},
"field_notes": {
"type": "string",
"maxLength": 5000
},
"status": {
"type": "integer",
"minimum": 1,
"maximum": 6,
"description": "1 = new, 2 = in progress, 3 = pending, 4 = completed, 5 = canceled, 6 = on the way."
},
"status_id": {
"description": "A custom status id (see fieldpulse_list_job_workflow_statuses); needs status_workflow_id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"status_workflow_id": {
"description": "The status workflow of status_id (see fieldpulse_list_job_status_workflows).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"start_time": {
"description": "Start, yyyy-mm-dd or ISO 8601 with a timezone.",
"type": [
"string",
"null"
]
},
"end_time": {
"description": "End, yyyy-mm-dd or ISO 8601 with a timezone.",
"type": [
"string",
"null"
]
},
"due_date": {
"description": "Due date, yyyy-mm-dd or ISO 8601 with a timezone.",
"type": [
"string",
"null"
]
},
"location_id": {
"description": "A location of the customer (see fieldpulse_list_locations).",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"project_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"customer_contact_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"assignments": {
"description": "Who the job is assigned to.",
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"team_id": {
"description": "Team id (see fieldpulse_list_teams).",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"assigned_members": {
"maxItems": 100,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"description": "User ids (see fieldpulse_list_users)."
}
},
"required": [
"assigned_members"
]
}
},
"tags": {
"description": "Existing job tag ids (see fieldpulse_list_tags).",
"maxItems": 50,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
}
},
"required": [
"job_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Nachweis