Survey · Beta
Fulcrum
API integration
Ship Survey features without building the integration. Full Fulcrum API access via Proxy and 140+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Built for specific customer use cases. Issues are resolved quickly.
Talk to usUse Cases
Why integrate with Fulcrum
Common scenarios for SaaS companies building Fulcrum integrations for their customers.
Sync field inspection data into FSM platforms
Field service management SaaS can let their customers dispatch jobs and automatically ingest completed Fulcrum inspection records, signatures, and photos back into the work order lifecycle without manual data entry.
Generate compliance-ready audit PDFs
Construction and EHS compliance platforms can trigger Fulcrum report generation on submitted audits and attach the resulting PDF plus audit log metadata to their customers' compliance ledgers for liability protection.
Overlay field GPS tracks on geospatial dashboards
GIS and drone analytics platforms can pull technician walk paths extracted from Fulcrum video and audio captures as GeoJSON, layering ground-truth routes onto their proprietary mapping interfaces.
Keep Fulcrum dropdowns in sync with ERP data
Operations and asset management SaaS can push live choice lists — active employees, inventory SKUs, job sites — into Fulcrum so field workers always select from current reference data pulled from the system of record.
Pipe structured field data into analytics warehouses
BI and data platforms can run ad-hoc SQL queries against Fulcrum or stream record changes via webhooks, giving their customers aggregated field operations dashboards without building custom ETL.
What You Can Build
Ship these features with Truto + Fulcrum
Concrete product features your team can ship faster by leveraging Truto’s Fulcrum integration instead of building from scratch.
Real-time record webhook listener
Register Fulcrum webhooks programmatically to receive record create, update, and delete events and process submissions the moment a technician syncs from the field.
Form schema reader with dynamic field mapping
Fetch Fulcrum form definitions to render your customers' custom fields inside your UI and map them to your internal data model without redeploying.
Media and attachment pipeline
Download original and resized photo, signature, sketch, video, and audio binaries tied to each record for archival, display, or further processing.
PDF report generation on demand
Trigger Fulcrum report templates against individual records and download finalized PDFs for inclusion in compliance workflows or customer-facing document trails.
Live choice list synchronization
Bulk update Fulcrum choice lists and classification sets from your customers' authoritative data sources so field dropdowns always reflect current operational state.
Bulk record ingestion via changesets
Group thousands of record edits into changesets and batches for enterprise-grade bidirectional sync without hitting single-record limits.
SuperAI
Fulcrum AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
create_a_fulcrum_query
Execute a read-only SQL query against your Fulcrum organization's data over HTTP POST. Returns the result set including fields (column metadata), rows, time, and date. Queries cannot exceed 10 seconds of processing time. Required: q.
list_all_fulcrum_queries
Execute a read-only SQL query against Fulcrum forms, records, and related tables via HTTP GET. Returns: fields, rows, time, date. Queries cannot exceed 10 seconds of processing time. Required: q.
list_all_fulcrum_users
List the users in your Fulcrum organization. Returns a paginated collection of user records including id, created_at, and updated_at; the API reference does not enumerate the remaining user fields. No required parameters.
list_all_fulcrum_authorizations
List all authorizations in Fulcrum. Returns an empty success response with no body fields. Pagination is handled automatically.
create_a_fulcrum_authorization
Create a new authorization in Fulcrum by posting an AuthorizationRequest JSON body. Returns an empty success response with no body fields. Requires a JSON AuthorizationRequest body. Required: authorization.
get_single_fulcrum_authorization_by_id
Get a single Fulcrum authorization by id. Returns an empty success response with no body fields. Required: id.
fulcrum_authorizations_bulk_update
Update an existing Fulcrum authorization identified by id by sending an AuthorizationRequest JSON body. Returns an empty success response with no body fields. Required: id, authorization.
fulcrum_authorizations_bulk_delete
Delete a Fulcrum authorization by id. Returns an empty success response with no body fields. Required: id.
list_all_fulcrum_roles
List Fulcrum roles. Returns the roles collection where each role includes id, name, and created_at/updated_at timestamps.
list_all_fulcrum_memberships
List Fulcrum memberships, optionally filtered to a specific form, project, or layer using form_id, project_id, or layer_id. Returns an empty 200 response on success.
fulcrum_memberships_change_permissions
Add or remove membership permissions on layers, forms, or projects for Fulcrum members. Returns an empty 200 response on success. Required: change.
create_a_fulcrum_membership
Create a new member in Fulcrum. Returns an empty 200 response on success. Required: membership.
get_single_fulcrum_membership_by_id
Get a single membership in Fulcrum by id. Returns the membership record including id, user_id, created_at, and updated_at. Required: id.
fulcrum_memberships_bulk_update
Update a Fulcrum member's parameters by id. Returns an empty 200 response on success. Does not work when the member belongs to multiple organizations. Required: id.
fulcrum_memberships_bulk_delete
Delete a Fulcrum membership (member) by id. Returns an empty 200 response on success. Required: id.
list_all_fulcrum_permissions
List membership permissions in Fulcrum, filtered by permission type and object. Returns a group object with its name, description, and id. Required: type, object_id.
list_all_fulcrum_groups
List Fulcrum groups. Returns each group's name, description, and id; set associations=true to also include the group's assigned member_ids, layer_ids, project_ids, and form_ids.
create_a_fulcrum_group
Create a Fulcrum group. Returns the created group's id, name, and description. Requires name. Required: group.
get_single_fulcrum_group_by_id
Get a single Fulcrum group by id. Returns: id, name, description, member_ids, layer_ids, project_ids, form_ids. Required: id.
fulcrum_groups_get_resource
Get a Fulcrum group's assigned resources. Lists the members, projects, layers, or forms associated with the group, depending on the resource requested. The returned records are resource-specific — their fields depend on which resource is requested. Required: group_id.
fulcrum_groups_change_permissions
Update a Fulcrum group's permissions by adding or removing its assigned members, projects, layers, or forms. Returns the updated group with its id, name, and description.type and change.group_id; supply change.add / change.remove id lists to grant or revoke access. Required: permission_change.
fulcrum_groups_bulk_update
Update a Fulcrum group's name and/or description by id. Returns: group. Required: id, group.
fulcrum_groups_bulk_delete
Delete a Fulcrum group by id. Returns an empty 204 response on success. Required: id.
list_all_fulcrum_forms
List Fulcrum forms (app schemas) in your organization. Returns each form's id, name, description, elements, status_field, record_count, created_at, and updated_at. Filter by type and status; pass schema=false to return only form metadata.
create_a_fulcrum_form
Create a Fulcrum form (app schema). Returns the created form object including id, name, description, elements, status_field, record_count, and created_at. Requires form.name and form.elements; invalid submissions return a 422 validation error. Required: form.
get_single_fulcrum_form_by_id
Get a single Fulcrum form (app schema) by id. Returns: id, name, created_at, updated_at, form. Pass schema=false to return only the form metadata. Required: id.
fulcrum_forms_history
Get the saved version history of a form in Fulcrum. Returns an empty response body on success. Required: form_id.
fulcrum_forms_bulk_update
Update a Fulcrum form (app schema) by id. Returns the updated form object including id, name, elements, status_field, record_count, and updated_at. The entire form object must be sent — omitting existing elements results in data loss. Invalid submissions return a 422 validation error. Required: id, form.
fulcrum_forms_bulk_delete
Delete a Fulcrum form by id. Returns an empty 204 response on success. Required: id.
list_all_fulcrum_records
List Fulcrum records collected in your organization, filterable by form, project, changeset, bounding box, and client or server date ranges. Returns records with id, form_id, form_values, geometry, latitude/longitude, status, version, and created_at/updated_at timestamps. No required parameters; omitting form_id or project_id queries across all records.
create_a_fulcrum_record
Create a Fulcrum record for a form. Returns the created record object including its id, form_id, form_values, status, latitude, longitude, geometry, and version. Requires form_id and form_values (nested under record); supply latitude/longitude or a GeoJSON geometry to set the location. The API does not validate custom form field values. Required: record.
get_single_fulcrum_record_by_id
Get a single Fulcrum record by id. Returns the record object including its id, form_id, form_values, status, latitude, longitude, geometry, and version. Required: id.
fulcrum_records_history
Get the complete version history of a record in Fulcrum. Returns a paginated history envelope including current_page, per_page, total_count, total_pages, and a records array of version snapshots with fields such as id, version, status, form_id, and form_values. Required: record_id.
fulcrum_records_partial_update
Partially update a record in Fulcrum by id — only the fields included in the request body are modified, all other fields remain unchanged. Returns the updated record object (under record) including id, form_id, form_values, status, latitude, longitude, and version. Required: id, record.
fulcrum_records_bulk_update
Update a Fulcrum record by id with a provided record object. The record object must be the complete representation of the record — any fields not included are assumed null. Returns an empty success response on success. Requires id, plus form_id, latitude, longitude, and form_values inside the record body. Required: id, record.
fulcrum_records_bulk_delete
Delete a record from your Fulcrum organization by id. Returns the deleted record object including id, form_id, form_values, geometry, and updated_at. Required: id.
list_all_fulcrum_records_histories
List the version history of a collection of Fulcrum records. Returns record objects including id, form_id, version, form_values, updated_at, and changeset_id. Useful for retrieving records from a specific changeset or from forms that have been deleted.
list_all_fulcrum_choice_lists
List all choice lists in Fulcrum. The upstream API documents an empty success response body for this endpoint, so no response fields are specified. Returns an empty 204 response on success.
create_a_fulcrum_choice_list
Create a new choice list in Fulcrum by submitting a ChoiceListRequest JSON body. Returns an empty 204 response on success. Required: choice_list.
get_single_fulcrum_choice_list_by_id
Get a single choice list in Fulcrum by id. The upstream API documents an empty success response body for this endpoint, so no response fields are specified. Returns an empty 204 response on success. Required: id.
fulcrum_choice_lists_bulk_update
Update an existing choice list in Fulcrum by id, replacing its definition with a ChoiceListRequest JSON body. Returns an empty 204 response on success. Required: id, choice_list.
fulcrum_choice_lists_bulk_delete
Delete a choice list in Fulcrum by id. Returns an empty 204 response on success. Required: id.
list_all_fulcrum_classification_sets
List classification sets in Fulcrum — the grouped classification options referenced by ClassificationField form elements. Returns an empty response body on success.
create_a_fulcrum_classification_set
Create a classification set in Fulcrum by submitting a classification set payload following the ClassificationSetRequest schema defined in Fulcrum's API reference. Returns an empty response body on success. Required: classification_set.
get_single_fulcrum_classification_set_by_id
Get a single classification set in Fulcrum by id. Returns an empty response body on success. Required: id.
fulcrum_classification_sets_bulk_update
Update a classification set in Fulcrum by id, submitting the updated payload following the ClassificationSetRequest schema defined in Fulcrum's API reference. Returns an empty response body on success. Required: id, classification_set.
fulcrum_classification_sets_bulk_delete
Delete a classification set in Fulcrum by id. Returns an empty 204 response on success. Required: id.
list_all_fulcrum_projects
List Fulcrum projects for the account. Returns the matching project object including its id and project attributes. Requires the API to be enabled on your Fulcrum plan.
create_a_fulcrum_project
Create a new Fulcrum project. Returns the created project object including its id and project attributes. Required: project.
get_single_fulcrum_project_by_id
Get a single Fulcrum project by id. Returns the project object including its id and project attributes. Requires id. Required: id.
fulcrum_projects_bulk_update
Update an existing Fulcrum project by id, sending the updated project attributes as a JSON request body. Returns an empty 204 response on success. Required: id, project.
fulcrum_projects_bulk_delete
Delete a Fulcrum project by id. Returns an empty 204 response on success. Requires id and project_id. Required: id.
list_all_fulcrum_layers
List all layers in Fulcrum. Returns layer objects with id, name, type, key, and created/updated timestamps.
create_a_fulcrum_layer
Create a new layer in Fulcrum, e.g. an MBTiles layer uploaded via the file upload URL. Returns the created layer object including id, name, type, key, and created_at. Send a layer payload with name, type, and (for MBTiles) the file key. Required: layer.
get_single_fulcrum_layer_by_id
Get a single layer from Fulcrum by id. Returns the layer object including id, name, type, key, and created/updated timestamps. Required: id.
fulcrum_layers_bulk_update
Update an existing layer in Fulcrum by id. Returns the updated layer including id, name, type, key, and updated_at. Required: id, layer.
fulcrum_layers_bulk_delete
Delete a layer from Fulcrum by id. Returns an empty 204 response on success. Required: id.
list_all_fulcrum_photos
List photo metadata in Fulcrum. Returns photo metadata records including access_key, uploaded, stored, url, and created_at. Supports filtering and sorting via query parameters.
create_a_fulcrum_photo
Upload a photo file to Fulcrum to make it available for association with records. Returns the created photo metadata object under the photo key.
fulcrum_photos_file
Download the original photo file from Fulcrum by id. Returns the raw image binary (image/jpeg), not JSON metadata, so no field-level schema applies. Required: id.
get_single_fulcrum_photo_by_id
Get a single photo's metadata from Fulcrum by id. Returns the photo metadata object under the photo key (the source docs do not enumerate individual photo fields). Required: id.
fulcrum_photo_thumbnails_json
Retrieve metadata for a Fulcrum photo's thumbnail variant by photo id. Returns an empty JSON object on success; the upstream spec documents no enumerable response fields. Required: photo_id.
fulcrum_photo_thumbnails_file
Download a Fulcrum photo's thumbnail image by photo id. Returns the raw binary JPEG image data of the thumbnail variant. Required: photo_id.
fulcrum_photo_larges_json
Retrieve metadata for a photo's large variant in Fulcrum. Returns an empty success response with no documented body fields. Required: photo_id.
fulcrum_photo_larges_file
Download a photo's large variant image file in Fulcrum. Returns the raw binary JPEG image data for the large variant. Required: photo_id.
list_all_fulcrum_sketches
List sketch metadata from Fulcrum, filterable by form, record, and upload status. Returns each sketch's access_key, form_id, record_id, processed, stored, uploaded, created_at, and updated_at.
create_a_fulcrum_sketch
Upload a sketch image file to Fulcrum to associate with a record. Returns the created sketch object including id, form_id, record_id, processed, stored, and uploaded.file.
fulcrum_sketches_file
Download the original sketch image file from Fulcrum by sketch_id. Returns the raw JPEG binary file.
get_single_fulcrum_sketch_by_id
Get the metadata for a single Fulcrum sketch by sketch_id. Returns the sketch object including access_key, form_id, record_id, processed, stored, uploaded, created_at, and updated_at.
fulcrum_sketche_thumbnails_json
Get metadata for a sketch's thumbnail variant in Fulcrum. Returns an empty 204 response on success. Required: sketch_id.
fulcrum_sketche_thumbnails_file
Download the thumbnail variant of a sketch in Fulcrum. Returns the raw binary JPEG image data (image/jpeg) rather than JSON fields. Required: sketch_id.
fulcrum_sketche_larges_json
Retrieve metadata for a Fulcrum sketch's large variant. Returns an empty success response with no documented body fields. Required: sketch_id.
fulcrum_sketche_larges_file
Download the large variant of a Fulcrum sketch as a JPEG image. Returns the raw image binary, not a JSON object. Required: sketch_id.
list_all_fulcrum_signatures
List Fulcrum signature metadata for your organization, filterable by record, form, and upload state. Returns signature records including access_key, uploaded, stored, and processed, plus record_id, form_id, and created_at/updated_at timestamps. All filters are optional.
create_a_fulcrum_signature
Upload a signature file to Fulcrum to associate with a record. Returns the created signature metadata including id, access_key, processed, stored, and uploaded, plus record/form ids and timestamps.
fulcrum_signatures_file
Download the original signature file from Fulcrum as a PNG image. Returns the raw binary PNG file. Required: id.
get_single_fulcrum_signature_by_id
Get metadata for a single Fulcrum signature by id. Returns the signature record including access_key, url, uploaded, stored, and processed, plus record_id, form_id, file_size, and thumbnail, large, and original image URLs. Required: id.
fulcrum_signature_thumbnails_json
Get metadata for a Fulcrum signature's thumbnail variant. Returns the signature's metadata object; its fields are not enumerated in the upstream documentation. Required: signature_id.
fulcrum_signature_thumbnails_file
Download the thumbnail variant of a Fulcrum signature as a PNG image. Returns the raw binary PNG file data. Required: signature_id.
list_all_fulcrum_videos
List video metadata in Fulcrum. Returns: videos, current_page, total_pages, total_count, per_page.
fulcrum_videos_file
Download a video's original MP4 file in Fulcrum by id. Returns the raw video/mp4 binary stream. Required: id.
get_single_fulcrum_video_by_id
Get a single video's metadata in Fulcrum by id. Returns: video. Required: id.
fulcrum_video_tracks_geojson
Get a Fulcrum video's GPS track in GeoJSON format. Returns the raw GeoJSON track document; the response body is format-specific file content rather than an enumerated record. Required: video_id.
fulcrum_video_tracks_kml
Get a Fulcrum video's GPS track in KML format. Returns the raw KML track document; the response body is format-specific file content rather than an enumerated record. Required: video_id.
fulcrum_video_tracks_gpx
Get a Fulcrum video's GPS track in GPX format. Returns the raw GPX track document; the response body is format-specific file content rather than an enumerated record. Required: video_id.
fulcrum_video_tracks_json
Get a Fulcrum video's GPS track in JSON format. Returns the raw JSON track document; the response body is format-specific file content rather than an enumerated record. Required: video_id.
fulcrum_video_smalls_file
Get the small MP4 variant of a video in Fulcrum. Returns the raw video/mp4 binary file data. Required: video_id.
fulcrum_video_mediums_file
Download the medium MP4 variant of a Fulcrum video. Returns the raw binary video/mp4 file content. Required: video_id.
fulcrum_video_thumbnail_smalls_file
Download the small thumbnail variant of a video in Fulcrum. Returns the thumbnail as binary JPEG image data. Required: video_id.
fulcrum_video_thumbnail_small_squares_file
Download a small square thumbnail variant for a Fulcrum video. Returns the thumbnail image itself as binary JPEG data (content-type-specific, not a JSON object). Required: video_id.
fulcrum_video_thumbnail_mediums_file
Download the medium thumbnail image for a Fulcrum video. Returns the thumbnail image itself as binary JPEG data, not a JSON object. Required: video_id.
fulcrum_video_thumbnail_medium_squares_file
Get the medium square thumbnail image for a Fulcrum video. Returns the thumbnail as binary JPEG image data (image/jpeg), not a JSON object. Required: video_id.
fulcrum_video_thumbnail_larges_file
Download a large video thumbnail from Fulcrum (thumbnail_large.jpg variant). Returns the raw binary JPEG image data of the thumbnail. Required: video_id.
fulcrum_video_thumbnail_large_squares_file
Download the large square JPEG thumbnail image for a Fulcrum video. Returns the thumbnail image itself as binary JPEG data (not a JSON object). Required: video_id.
fulcrum_video_thumbnail_huges_file
Download the huge thumbnail image of a Fulcrum video. Returns the raw JPEG image binary (image/jpeg), not a JSON object. Required: video_id.
fulcrum_video_thumbnail_huge_squares_file
Download a huge square thumbnail variant for a Fulcrum video. Returns the thumbnail image as JPEG binary data. Required: video_id.
create_a_fulcrum_videos_upload
Upload a video to Fulcrum to be associated with a record. Sends the video file, an optional GPS track file, and a client-generated access key. Returns the uploaded video metadata under video, including its id, access_key, created_at, and updated_at.
list_all_fulcrum_audios
List metadata for Fulcrum audio files, with optional filtering by associated record or form and by processing state. Returns audio file records including id, record_id, form_id, processed, stored, uploaded, created_at, and updated_at.
fulcrum_audios_file
Download a Fulcrum audio file's original media by id. Returns the raw binary audio stream (audio/mp4) rather than a JSON object. Required: id.
get_single_fulcrum_audio_by_id
Get metadata for a single Fulcrum audio file by id. Returns: audio. Required: id.
fulcrum_audio_tracks_geojson
Get GPS tracks for all audio files in Fulcrum in GeoJSON format. Returns the GeoJSON track document with content-type-specific fields.
fulcrum_audio_tracks_kml
Get GPS tracks for all audio files in Fulcrum in KML format. Returns the KML track document with content-type-specific fields.
fulcrum_audio_tracks_gpx
Get GPS tracks for all audio files in Fulcrum in GPX format. Returns the GPX track document with content-type-specific fields.
fulcrum_audio_tracks_json
Get GPS tracks for all audio files in Fulcrum in JSON format. Returns the JSON track document with content-type-specific fields.
fulcrum_tracks_geojson
Get the GPS track for a single audio file in Fulcrum as a GeoJSON document. Returns the track with format-specific GeoJSON content rather than a fixed record shape. Required: audio_id.
fulcrum_tracks_kml
Get the GPS track for a single audio file in Fulcrum as a KML document. Returns the track with format-specific KML content rather than a fixed record shape. Required: audio_id.
fulcrum_tracks_gpx
Get the GPS track for a single audio file in Fulcrum as a GPX document. Returns the track with format-specific GPX content rather than a fixed record shape. Required: audio_id.
fulcrum_tracks_json
Get the GPS track for a single audio file in Fulcrum as a JSON document. Returns the track with format-specific JSON content rather than a fixed record shape. Required: audio_id.
create_a_fulcrum_audio_upload
Upload an audio file to Fulcrum as a multipart form upload, optionally with a GPS track file. Returns: audio.
list_all_fulcrum_attachments
List Fulcrum attachments. Returns the attachments collection with total and total_count; each attachment includes id, name, file_size, url, uploaded_at, and status. Pass record_id to list a record's attachments; form_id returns a form's reference files only, not its record attachments.
create_a_fulcrum_attachment
Create a Fulcrum attachment and get a signed URL to upload (PUT) the file to. Returns: url, id, headers, name, in, schema. Optionally include name and file_size; without file_size the attachment may be rejected once it has been uploaded. Required: owners.
get_single_fulcrum_attachment_by_id
Get a single Fulcrum attachment by id. Returns: id, owners, name, file_size, url, uploaded_at, complete, attached_to_id, attached_to_type, status. Required: id.
delete_a_fulcrum_attachment_by_id
Delete a Fulcrum attachment by id. The delete endpoint only applies to Form attachments — for record attachments, remove the attachment's association from the record instead. Returns an empty 204 response on success. Required: id.
fulcrum_attachments_copy_all
Copy all reference files from one Fulcrum form to another. Returns the upstream copy-all response payload; the Fulcrum reference does not enumerate its field names. Requires a JSON request body (AttachmentCopyAllRequest). Limits: 100 reference files per form, 1GB total per form. Required: source_parent_id, destination_parent_id, parent_type.
fulcrum_attachments_finalize
Finalize a Fulcrum attachment after its file has been uploaded, confirming the attachment and its owners. Returns an empty success response on success. Required: id.
list_all_fulcrum_changesets
List all changesets in Fulcrum. Returns an empty 200 response on success.
fulcrum_changesets_close
Close a changeset in Fulcrum, finalizing the batch of record changes it tracks. Returns an empty 200 response on success. Required: changeset_id.
create_a_fulcrum_changeset
Create a new changeset in Fulcrum. Returns an empty 200 response on success. Requires a changeset request body. Required: changeset.
get_single_fulcrum_changeset_by_id
Get a single changeset by id in Fulcrum. Returns an empty 200 response on success. Required: id.
fulcrum_changesets_bulk_update
Update a changeset in Fulcrum by id. Returns an empty 200 response on success. Required: id, changeset.
list_all_fulcrum_webhooks
List all Fulcrum webhooks configured for your organization. Returns each webhook's id, name, url, active, run_for_bulk_actions, and created_at/updated_at timestamps.
create_a_fulcrum_webhook
Create a Fulcrum webhook that receives record event requests at a URL you choose. Returns the created webhook including id, name, url, active, and run_for_bulk_actions. Required: webhook.
get_single_fulcrum_webhook_by_id
Get a single Fulcrum webhook by id. Returns: id, name, url, active, run_for_bulk_actions, created_at, updated_at, current_page, per_page, total_count, total_pages, webhooks. Required: id.
fulcrum_webhooks_bulk_update
Update a Fulcrum webhook by id, for example to rename it or change its callback URL. Returns the updated webhook including id, name, url, active, and run_for_bulk_actions. Required: id, webhook.
fulcrum_webhooks_bulk_delete
Delete a Fulcrum webhook by id so it stops receiving event requests. Returns an empty 204 response on success. Required: id.
list_all_fulcrum_audit_logs
List audit logs in Fulcrum, filtering by source, activity, ip, user, or date range. Returns: id, name, description, updated_at.
get_single_fulcrum_audit_log_by_id
Get a single audit log entry in Fulcrum by id. Returns: id, name, description, updated_at. Required: id.
list_all_fulcrum_workflows
List all workflows in Fulcrum. Returns an empty success response on success. No required parameters; pagination is handled automatically.
create_a_fulcrum_workflow
Create a new workflow in Fulcrum. Returns an empty success response on success. Requires a JSON workflow request body. Required: workflow.
get_single_fulcrum_workflow_by_id
Get a single workflow in Fulcrum by id. Returns an empty success response on success. Required: id.
fulcrum_workflows_bulk_update
Update an existing workflow in Fulcrum by id. Returns an empty success response on success. Required: id, workflow.
fulcrum_workflows_bulk_delete
Delete a workflow in Fulcrum by id. Returns an empty success response on success. Required: id.
list_all_fulcrum_batches
List Fulcrum batches, sorted by creation date descending by default. Returns batch objects including their id, status, objects_total, objects_success, and created_at.
create_a_fulcrum_batch
Create a Fulcrum batch to bulk update or delete up to 10,000 records from an app in a single request. Returns the batch object including its id, status, objects_total, and created_at.operations with action, resource, form_id, and a query or ids record selection. Set batch.start to false to create a pending batch; once started, a batch cannot be terminated. Required: batch.
get_single_fulcrum_batch_by_id
Get a single Fulcrum batch by id to inspect or poll its progress. Returns the batch object including its id, status, objects_total, objects_success, and created_at. Required: id.
fulcrum_batches_start
Start a pending Fulcrum batch by id. Returns the batch object including its id, status, objects_total, and objects_success. Once started, a batch cannot be terminated. Required: batch_id.
create_a_fulcrum_operation
Add operations to a pending Fulcrum batch to bulk delete records in a form or update their project, assignee, or status. Returns an empty 200 response on success. Max 10,000 records per batch; once started a batch cannot be terminated and only its first operation runs. Required: batch_id, operations.
list_all_fulcrum_report_templates
List report templates in Fulcrum. Returns report templates with id, name, and description.
create_a_fulcrum_report_template
Create a report template in Fulcrum. Returns the created report template with id, name, and description. Required: report_template.
get_single_fulcrum_report_template_by_id
Get a report template in Fulcrum by id. Returns the report template with id, name, and description. Required: id.
fulcrum_report_templates_bulk_update
Update a report template in Fulcrum by id. Returns the updated report template with id, name, and description. Required: id, report_template.
fulcrum_report_templates_bulk_delete
Delete a report template in Fulcrum by id. Returns the deleted report template with id, name, and description. Required: id.
list_all_fulcrum_reports
Download the generated PDF report file for a Fulcrum report by id. Returns the report as binary PDF content (application/pdf). Required: id.
create_a_fulcrum_report
Generate a new Fulcrum report for a specific record, optionally using a report template. Returns the created report object with id, state, record_id, template_id, and url.record_id. Required: report.
Why Truto
Why use Truto’s MCP server for Fulcrum
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 800+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
How It Works
From zero to integrated
Go live with Fulcrum in under an hour. No boilerplate, no maintenance burden.
Link your customer’s Fulcrum account
Use Truto’s frontend SDK to connect your customer’s Fulcrum account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call Fulcrum
Truto’s Proxy API is a 1-to-1 mapping of the Fulcrum API. You call us, we call Fulcrum, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Fulcrum’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Fulcrum on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How does end-user authentication to Fulcrum work?
Truto manages Fulcrum authorization creation and token storage for each of your end users. Your users connect their Fulcrum account once and Truto handles credential refresh and secure retrieval for every subsequent API call.
Can we read custom form fields and their definitions?
Yes. Fulcrum forms are fully dynamic, and you can list form schemas to discover the custom field structure, then read each record's form_values payload to extract the actual submitted data per field.
How do we get record updates in real time?
Use the Fulcrum webhook endpoints to programmatically register listeners for record events on behalf of your customers. Truto normalizes webhook delivery so you receive events through a single pipeline regardless of how many end users you have connected.
Can we download photos, signatures, and videos attached to records?
Yes. You can fetch original binaries as well as thumbnail, small, medium, large, and huge-square variants for photos, sketches, signatures, and videos, plus pull extracted GeoJSON, KML, or GPX tracks from video and audio files.
Does the integration support bulk operations?
Yes. Fulcrum exposes bulk update and bulk delete across records, forms, choice lists, classification sets, projects, memberships, and more, and you can group large edit sets using changesets and batches for atomic enterprise syncs.
Can we run ad-hoc queries instead of paginating all records?
Yes. Fulcrum provides a read-only SQL query endpoint that lets you request specific slices of data on demand, which is ideal when your product only needs filtered subsets rather than full record exports.
Fulcrum
Get Fulcrum integrated into your app
Our team understands what it takes to make a Fulcrum integration successful. A short, crisp 30 minute call with folks who understand the problem.