Skip to content

CRM · Beta

Lightfield
API integration

Ship CRM features without building the integration. Full Lightfield API access via Proxy and 80+ 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 us
Lightfield

Use Cases

Why integrate with Lightfield

Common scenarios for SaaS companies building Lightfield integrations for their customers.

01

Push conversational intelligence into Lightfield's AI brain

Call recording and notetaker platforms can sync meetings and transcripts directly into Lightfield so its AI agents can reason over external call data alongside native CRM context. This makes your product indispensable to Lightfield-using sales teams who want every conversation surfaced in their CRM.

02

Turn product usage into qualified pipeline

Product analytics, PLG, and billing tools can convert in-app signals into Lightfield contacts, custom objects, and opportunities automatically. Your users get a working PLG motion without manual CRM hygiene.

03

Deliver AI-drafted outbound into the rep's own outbox

Sales engagement and intent-data platforms can drop personalized emails as drafts for the assigned AE to review, or send them directly on their behalf. This upgrades your tool from a logging system into an execution layer inside the rep's daily workflow.

04

Base commissions on verifiable CRM history

RevOps, commission, and forecasting tools can pull Lightfield's granular field history to reconstruct exactly when opportunity stages changed. This eliminates payout disputes without polling or custom webhook infrastructure.

05

Keep records clean with native merge operations

Data quality and GTM enrichment tools can resolve duplicates using Lightfield's native merge endpoints for accounts, contacts, and opportunities. Relationships on the surviving record are preserved automatically, which is a hard problem to solve correctly from the outside.

What You Can Build

Ship these features with Truto + Lightfield

Concrete product features your team can ship faster by leveraging Truto’s Lightfield integration instead of building from scratch.

01

Meeting + transcript sync with file attachment

Create past meetings in Lightfield and attach raw transcript files via the two-step file upload (create then complete) so Lightfield's AI can ingest the full conversation.

02

PLG-to-pipeline automation

Detect product events in your app and automatically create or update contacts, accounts, custom objects, and opportunities in Lightfield with the right ownership and linkage.

03

AI-drafted email delivery

Generate personalized outbound in your product and deliver it into the correct rep's Lightfield drafts for approval, or send immediately on their behalf.

04

Background contact and account enrichment

Create a minimal record from an email or domain and trigger a Lightfield enrichment run, letting Lightfield handle the heavy profile population asynchronously.

05

Stage-change audit trail for commissions and forecasting

Stream opportunity, account, and contact field history with precise timestamps into your reporting layer to drive accurate payouts and pipeline analytics.

06

Structured markdown briefs on records

Publish research summaries, account plans, or deal briefs as rich markdown notes attached to the relevant account or opportunity, readable by both reps and Lightfield's AI.

SuperAI

Lightfield AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

lightfield_auth_validate

Validate the current lightfield API key and confirm it is active before making scoped API requests. Returns: id, createdAt, fields, httpLink. Takes no parameters beyond authentication.

lightfield_accounts_get_definitions

Get the field and relationship definitions available on Lightfield accounts, covering both system-defined and custom fields. Returns: fieldDefinitions, objectType, relationshipDefinitions. Useful for discovering field keys, select options, and relationship cardinalities before creating or updating records. Takes no parameters.

lightfield_accounts_list_field_history

Get the value-change history for a single field on a Lightfield account, newest first, with consecutive identical values collapsed. Returns history entries with displayValue, value, valueType, isCreate, and recordedAt. Required: account_id, field_key. Only attribute-backed fields have history — column-backed system fields return an error.

create_a_lightfield_account

Create a new Lightfield account record. Returns the created account including id, fields, relationships, createdAt, updatedAt, and httpLink. Required: fields (must include $name). Read-only: $howTheyMakeMoney and $accountStatus cannot be set; a $website improves background enrichment matching.

update_a_lightfield_account_by_id

Update an existing Lightfield account by id; only the fields and relationships included in the request are modified. Returns the updated account including id, fields, relationships, createdAt, updatedAt, and httpLink. Required: id. Read-only: $howTheyMakeMoney and $accountStatus cannot be updated.

get_single_lightfield_account_by_id

Get a single Lightfield account by id. Returns the account record including id, fields, relationships, createdAt, updatedAt, httpLink, and externalId. Required: id.

list_all_lightfield_accounts

List Lightfield accounts, paginated (max 25 per page). Returns account records including id, createdAt, fields, httpLink, relationships, updatedAt, and externalId. Pass status=trashed to list accounts currently in the trash instead of live records.

delete_a_lightfield_account_by_id

Delete a Lightfield account by id. The account is soft-deleted to the trash and can be restored later; associated contacts, tasks, and notes are untouched. Returns the deleted record (id, createdAt, fields, httpLink, relationships, updatedAt, externalId). Required: id. No-op if the account is already in the trash.

lightfield_accounts_restore

Restore a trashed Lightfield account back to active. Returns the restored account record including id, createdAt, fields, httpLink, relationships, and externalId. Required: account_id. No-op if the account is not trashed; find trashed accounts by listing with status=trashed.

lightfield_contacts_get_definitions

Get the schema of all field and relationship definitions available on contacts in Lightfield, including both system-defined and custom fields. Returns: fieldDefinitions, relationshipDefinitions, objectType.

lightfield_contacts_list_field_history

Get the value-change history for a single field on a Lightfield contact, newest first, with consecutive identical values collapsed. Returns: data, hasMore, nextCursor. Required: contact_id, field_key. Only attribute-backed fields have history; column-backed system fields return an error. Max 100 entries per page.

create_a_lightfield_contact

Create a contact in Lightfield; it is automatically enriched in the background after creation. Returns the created contact with id, fields, relationships, httpLink, createdAt, updatedAt, and externalId. Required: fields. $name is an object { firstName, lastName }, not a plain string; use list filtering first to avoid duplicates.

update_a_lightfield_contact_by_id

Update an existing Lightfield contact by id; only included fields and relationships are modified. Returns the updated contact with id, fields, relationships, httpLink, createdAt, updatedAt, and externalId. Required: id. $name is an object { firstName, lastName }, not a plain string.

get_single_lightfield_contact_by_id

Get a single Lightfield contact by id. Returns the full contact record with id, fields, relationships, httpLink, createdAt, updatedAt, and externalId. Required: id.

list_all_lightfield_contacts

List contacts in lightfield with pagination and trash-state filtering. Returns: id, createdAt, updatedAt, fields, httpLink, relationships, externalId. Pass status=trashed to list contacts currently in the trash (requires the contacts:restore scope).

delete_a_lightfield_contact_by_id

Delete a contact in lightfield. Soft-deletes the contact by moving it to the trash, where it can be restored from the Lightfield UI; deleting an already-trashed contact is a no-op. Returns the deleted record (id, createdAt, fields, httpLink, relationships, updatedAt, externalId). Required: id.

lightfield_contacts_restore

Restore a trashed contact in lightfield, bringing it back to active. Restoring a contact that is not trashed is a no-op and returns the existing record. Returns the restored contact including id, createdAt, fields, updatedAt, and externalId. Required: contact_id.

create_a_lightfield_list

Create a new list in Lightfield. Returns the created list including id, createdAt, fields, and httpLink. Requires fields.$name and fields.$objectType ($account, $contact, or $opportunity). Supports idempotency via the Idempotency-Key header.

update_a_lightfield_list_by_id

Update a Lightfield list by id; only fields included in the request are modified. Returns the updated list including id, createdAt, fields, and httpLink. Required: id. Supports idempotency via the Idempotency-Key header.

get_single_lightfield_list_by_id

Get a single Lightfield list by id. Returns the list record including id, createdAt, fields (typed values; system fields are $-prefixed), and httpLink. Required: id.

list_all_lightfield_lists

List Lightfield lists with pagination. Returns list records including id, createdAt, fields, and httpLink. Max 25 per page.

lightfield_lists_list_accounts

List the accounts that belong to a Lightfield list. Returns account records including id, createdAt, fields, relationships, updatedAt, and externalId. Required: list_id. Max 25 per page.

lightfield_lists_list_contacts

List contacts that belong to a specific list in Lightfield. Returns a paginated array of contact records including id, createdAt, fields (typed field map), httpLink, relationships, updatedAt, and externalId. Required: list_id. Max 25 records per page.

lightfield_lists_list_opportunities

List opportunities that belong to a specific list in Lightfield. Returns a paginated array of opportunity records including id, createdAt, fields (typed field map), httpLink, relationships, updatedAt, and externalId. Required: list_id. Max 25 records per page.

delete_a_lightfield_list_by_id

Delete a Lightfield list by moving it to the trash; the list is soft-deleted and can be restored from the Lightfield UI, while its member entities are unaffected. Returns the deleted record (id, createdAt, fields, httpLink, relationships, updatedAt, externalId). Required: id. Deleting an already-trashed list is a no-op that returns the existing record.

lightfield_meetings_get_definitions

Get the field and relationship definitions for lightfield meetings. Returns: fieldDefinitions, objectType, relationshipDefinitions.

create_a_lightfield_meeting

Create a past-dated meeting record in lightfield. Returns the created meeting with id, accessLevel, createdAt, fields, and relationships. Only the $transcript relationship is writable on create. Required: fields ($title, $startDate, $endDate); both times must be in the past.

update_a_lightfield_meeting_by_id

Update an existing lightfield meeting by id. Only fields.$privacySetting and relationships.$transcript.replace are writable; clearing or removing $transcript is not supported. Returns: id, accessLevel, createdAt, updatedAt, fields, relationships, objectType, httpLink, externalId. Required: id.

get_single_lightfield_meeting_by_id

Get a single lightfield meeting by id. Fields and transcript visibility are privacy-redacted per caller and the response includes a read-only accessLevel. Returns: id, accessLevel, createdAt, updatedAt, fields, relationships, objectType, httpLink, externalId. Required: id.

list_all_lightfield_meetings

List lightfield meetings. Returns meeting records with id, accessLevel, createdAt, fields, and relationships; transcript or content fields may be redacted per caller. Pass status=trashed to list meetings currently in the trash. Max 25 per page.

delete_a_lightfield_meeting_by_id

Delete a meeting in Lightfield by moving it to the trash; the soft-deleted meeting can be restored later. Returns the deleted record (id, accessLevel, createdAt, fields, relationships, updatedAt). Required: id. Deleting a meeting that is already trashed returns a 404.

lightfield_meetings_restore

Restore a trashed meeting in Lightfield, bringing it back to active. Returns the restored meeting including id, accessLevel, createdAt, fields, and updatedAt. Required: meeting_id. Restoring a meeting that is not trashed is a no-op and returns the existing record.

lightfield_notes_get_definitions

Get the note field and relationship definitions in lightfield. Useful for understanding the shape of note data before creating or updating records. Returns: error.

create_a_lightfield_note

Create a new note in lightfield. The note author is automatically set to the API key owner. Returns the created note including id, createdAt, fields, httpLink, and relationships. Required: fields (with $title).

update_a_lightfield_note_by_id

Update an existing lightfield note by id — only included fields and relationships are modified; omitted fields are left unchanged. Returns the updated note including id, fields, relationships, updatedAt, and httpLink. Required: id.

get_single_lightfield_note_by_id

Get a single lightfield note by id. Returns the note including id, createdAt, fields, relationships, and httpLink. Required: id.

list_all_lightfield_notes

List lightfield notes, paginated. Returns note records including id, createdAt, fields, relationships, and updatedAt. Pass status=trashed to list notes currently in the trash instead of live records.

delete_a_lightfield_note_by_id

Delete a Lightfield note by moving it to the trash (soft-delete; the note can be restored from the Lightfield UI). Deleting an already-trashed note is a no-op that returns the existing record. Required: id. Returns the deleted record (id, createdAt, fields, httpLink, relationships, updatedAt, externalId).

lightfield_notes_restore

Restore a trashed Lightfield note, bringing it back to active. Restoring a note that is not trashed is a no-op and returns the existing record; trashed notes can be found by listing notes filtered to status=trashed. Returns the restored note record: id, createdAt, fields, httpLink, relationships, updatedAt, externalId. Required: note_id.

lightfield_opportunities_get_definitions

Get the field and relationship definitions available on opportunities in Lightfield, covering both system-defined and custom fields. Returns: fieldDefinitions, objectType, relationshipDefinitions. Useful for understanding record shape before creating or updating opportunities.

lightfield_opportunities_list_field_history

Get the value-change history for a single field on an opportunity, newest first, with consecutive identical values collapsed. Returns each entry with: value, valueType, displayValue, recordedAt, isCreate. Required: opportunity_id, field_key. Only attribute-backed fields have history; max 100 entries per page.

create_a_lightfield_opportunity

Create a new opportunity in Lightfield. Returns the created record: id, createdAt, fields, relationships, httpLink, updatedAt, and externalId. Requires fields with $name and relationships with $account. Lightfield generates the opportunity summary in the background; $opportunityStatus is read-only and cannot be set via the API.

update_a_lightfield_opportunity_by_id

Update an existing opportunity by id in Lightfield; only included fields and relationships are modified. Returns the updated record: id, createdAt, fields, relationships, httpLink, updatedAt, and externalId. Required: id. $opportunityStatus is read-only and cannot be updated.

get_single_lightfield_opportunity_by_id

Get a single opportunity by id in Lightfield. Returns the opportunity record: id, createdAt, fields (map of typed field values), relationships, httpLink, updatedAt, and externalId. Required: id.

list_all_lightfield_opportunities

List opportunities in Lightfield, paginated with offset and limit (max 25 per page, default 25). Filter by $field query parameters (e.g. ?$account=acc_123) and pass status=trashed to list records currently in the trash. Returns: id, createdAt, updatedAt, fields, httpLink, relationships, externalId. Optional: status.

delete_a_lightfield_opportunity_by_id

Delete an opportunity in Lightfield by moving it to the trash (soft delete; it can be restored, and associated tasks, notes, and meetings are kept). Calling delete on an already-trashed opportunity is a no-op that returns the existing record. Required: id. Returns the deleted record (id, createdAt, fields, httpLink, relationships, updatedAt, externalId).

lightfield_opportunities_restore

Restore a trashed opportunity in Lightfield, bringing it back to active. Find trashed opportunities first via list with status=trashed. Calling restore on an opportunity that is not trashed is a no-op that returns the existing record. Returns: id, createdAt, updatedAt, fields, httpLink, relationships, externalId. Required: opportunity_id.

lightfield_tasks_get_definitions

Get the field and relationship definitions available on tasks in Lightfield. Returns fieldDefinitions, objectType, and relationshipDefinitions — use it to discover the available system fields and relationship keys before creating or updating task records.

create_a_lightfield_task

Create a new task in Lightfield. Returns the created task including id, fields, relationships, createdAt, and httpLink. Required: $title, $status, and $assignedTo. Supports idempotency via the Idempotency-Key header.

update_a_lightfield_task_by_id

Update an existing task in Lightfield by id — only the included fields and relationships are modified. Returns the updated task including id, fields, relationships, updatedAt, and httpLink. Required: id. Supports idempotency via the Idempotency-Key header.

get_single_lightfield_task_by_id

Retrieve a single task in Lightfield by id. Returns the task object including id, fields, relationships, createdAt, and httpLink. Required: id.

list_all_lightfield_tasks

List tasks in Lightfield, paginated. Returns each task's id, fields, relationships, createdAt, and httpLink. Pass status=trashed to list tasks currently in the trash instead of live records.

delete_a_lightfield_task_by_id

Delete a Lightfield task by id — the task is soft-deleted to the trash and can be restored later; deleting an already-trashed task is a no-op that returns the existing record. Required: id. Returns the deleted record (id, createdAt, fields, httpLink, relationships, updatedAt, externalId).

lightfield_tasks_restore

Restore a trashed Lightfield task back to active — restoring a task that is not trashed is a no-op that returns the existing record, and trashed tasks can be found via the tasks list with status=trashed. Returns: id, createdAt, fields, httpLink, relationships, updatedAt, externalId. Required: task_id.

get_single_lightfield_member_by_id

Get a single Lightfield member by id. Returns the full member object including id, createdAt, fields ($email, $name, $profileImage, $role), httpLink, relationships, and updatedAt. Required: id.

list_all_lightfield_members

List members in your Lightfield workspace. Returns each member's id, createdAt, fields ($email, $name, $profileImage, $role), httpLink, relationships, and updatedAt. Max 25 records per page.

get_single_lightfield_workflow_run_by_id

Get the current status of a workflow run in lightfield. Returns the WorkflowRunStatusResponse with its status field (e.g. running, completed, failed). Required: id.

create_a_lightfield_file

Create a file upload session in Lightfield. Returns the upload session object including id, filename, mimeType, sizeBytes, status, uploadUrl, and uploadHeaders. Requires filename, mimeType, and sizeBytes. Max 512 MB; after uploading the file bytes to uploadUrl, finalize with complete.

lightfield_files_complete

Complete a Lightfield file upload after its bytes have been uploaded. Returns the file object including id, filename, mimeType, sizeBytes, status, createdAt, completedAt, and expiresAt. Required: file_id.

get_single_lightfield_file_by_id

Get a single Lightfield file by id. Works for any retrievable file id, including ones returned in a CRM record's $files relationship. Returns the file object including id, filename, mimeType, sizeBytes, status, createdAt, completedAt, and expiresAt. Required: id.

list_all_lightfield_files

List files in your Lightfield workspace. Returns the file object including id, filename, mimeType, sizeBytes, status, createdAt, completedAt, and expiresAt. Omits files uploaded through the app and synced chat attachments. Max 25 per page.

lightfield_files_get_url

Get a temporary signed download URL for a Lightfield file. Returns: url, expiresAt. Only available for files in COMPLETED status; works for any retrievable file id, including files uploaded through the app. Required: file_id.

lightfield_files_cancel

Cancel a pending file upload in lightfield by transitioning it to CANCELLED; only uploads still in PENDING status can be cancelled. Returns the file with id, filename, mimeType, sizeBytes, status, createdAt, completedAt, and expiresAt. Required: file_id.

create_a_lightfield_object

Create a new record for a custom object type in Lightfield. Returns the created record including id, createdAt, fields, httpLink, relationships, updatedAt, and externalId. Required: entity_slug, fields.

get_single_lightfield_object_by_id

Get a single custom object record by id in Lightfield. Returns the record including id, createdAt, fields, httpLink, relationships, updatedAt, and externalId. Required: entity_slug, id.

update_a_lightfield_object_by_id

Update a custom object record by id in Lightfield; only the fields and relationships included in the request are modified. Returns the updated record including id, createdAt, fields, relationships, updatedAt, and externalId. Required: entity_slug, id.

delete_a_lightfield_object_by_id

Move a custom object record to the trash by id in Lightfield; the record is soft-deleted and can be restored afterwards. Returns the deleted record (id, createdAt, fields, httpLink, relationships, updatedAt, externalId). Deleting an already-trashed record is a no-op. Required: entity_slug, id.

lightfield_objects_restore

Restore a trashed custom object record in Lightfield, returning it to active. Returns the restored record including id, createdAt, fields, relationships, updatedAt, and externalId. Restoring a record that is not trashed is a no-op. Required: entity_slug, value_id.

list_all_lightfield_objects

List records for a custom object type in Lightfield, filterable via $field query parameters. Returns each record's id, createdAt, fields map, relationships, httpLink, updatedAt, and externalId. Required: entity_slug.

lightfield_object_types_get_definitions

Get the field and relationship definitions for a custom object type in lightfield. Returns: fieldDefinitions, objectType, relationshipDefinitions. Required: entity_slug.

list_all_lightfield_object_types

List all custom object types available to the caller in lightfield. Returns each type's label and objectType (the slug used to reference the type in the API).

lightfield_object_types_list_field_history

Get the value-change history for a single field on a custom object record in lightfield, newest first. Returns: data, hasMore, nextCursor. Required: entity_slug, value_id, field_key. Only attribute-backed fields have history; max 100 entries per page.

get_single_lightfield_email_by_id

Get a single Lightfield email by id. Returns: id, createdAt, updatedAt, sentAt. Required: id. Fields are redacted based on the caller's privacy resolution.

list_all_lightfield_emails

List Lightfield emails with pagination. Returns: id, accessLevel, createdAt, fields, httpLink, objectType, relationships, updatedAt, externalId. List items omit the $body field; retrieve by id for the message HTML. Max 25 records per page.

lightfield_emails_send

Send a new email via the connected Lightfield email account that owns the from address. Returns: sentAt. Required: from, to, subject, and messageBody. New sends only — replies and forwards are not yet supported.

lightfield_emails_draft

Create a draft email in the connected Lightfield mailbox that owns the from address. Returns: draftedAt. Required: from. At least one of to, cc, bcc, subject, messageBody, or attachments must also be populated — sending only from returns a 400.

lightfield_merges_merge_accounts

Merge two lightfield accounts into one — the primary account keeps its id and the duplicate is soft-deleted. Returns the merge operation (id, status), the surviving primary account (id, createdAt, fields, relationships), and a merge summary (fieldWriteCount, syncRepointedCount, warnings). Required: primaryId, duplicateId.

lightfield_merges_merge_contacts

Merge two lightfield contacts into one — the primary contact keeps its id and the duplicate is soft-deleted. Returns the merge operation (id, status), the surviving primary contact (id, createdAt, fields, relationships), and a merge summary (fieldWriteCount, syncRepointedCount, warnings). Required: primaryId, duplicateId.

lightfield_merges_merge_opportunities

Merge two lightfield opportunities into one — the primary opportunity keeps its id, the duplicate is soft-deleted, and both must belong to the same account. Returns the merge operation (id, status), the surviving primary opportunity (id, createdAt, fields, relationships), and a merge summary (fieldWriteCount, syncRepointedCount, warnings). Required: primaryId, duplicateId.

lightfield_merges_merge_object_values

Merge two records of a custom object type in lightfield — the primary record keeps its id and the duplicate is soft-deleted; both records must belong to that object type. Returns the merge operation (id, status), the surviving primary record (id, createdAt, fields, relationships), and a merge summary (fieldWriteCount, syncRepointedCount, warnings). Required: entity_slug, primaryId, duplicateId.

get_single_lightfield_merge_by_id

Get a lightfield merge operation by id. Returns: id, createdAt, duplicateId, entityType, primaryId, status, updatedAt. Required: id.

get_single_lightfield_message_by_id

Get a single Lightfield message by id. Message text is redacted per the caller's channel-visibility resolution and surfaced with a read-only accessLevel; attachment file IDs are exposed under relationships.$attachment. Returns: id, accessLevel, createdAt, fields, httpLink, objectType, relationships, updatedAt, externalId. Required: id.

list_all_lightfield_messages

List Lightfield messages, filtered to those in channels the caller may see; each message includes a read-only accessLevel. Returns: id, accessLevel, createdAt, fields, httpLink, objectType, relationships, updatedAt, externalId. Max 25 per page.

get_single_lightfield_channel_by_id

Get a single Lightfield channel by id. Returns the channel object including id, createdAt, fields (a map of typed field values), relationships, httpLink, objectType, updatedAt, and externalId. Required: id. Returns 404 if the channel is not visible to the caller — a private channel the caller is not a member of is indistinguishable from one that does not exist.

list_all_lightfield_channels

List channels in lightfield visible to the caller (public channels, channels they are a member of, and org-wide-visible providers). Returns channel objects with id, createdAt, fields, relationships, and updatedAt. Max 25 per page.

lightfield_enrichment_runs_enrich

Start an enrichment run for a contact or account in Lightfield: missing field values are looked up from enrichment providers and written back to the record. Returns: status. Runs in the background — poll get with the returned run id; only one run can be in flight per record. Required: entity_slug, entity_id.

get_single_lightfield_enrichment_run_by_id

Get the status of a Lightfield enrichment run by id. Returns: id, createdAt, status, updatedAt. Required: id (the enrichment run id).

Why Truto

Why use Truto’s MCP server for Lightfield

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 800+ integrations.

01

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.

02

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.

03

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.

04

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.

05

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.

06

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 Lightfield in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Lightfield account

Use Truto’s frontend SDK to connect your customer’s Lightfield account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

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.

03

Call our API, we call Lightfield

Truto’s Proxy API is a 1-to-1 mapping of the Lightfield API. You call us, we call Lightfield, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Lightfield’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Lightfield on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How do end users connect their Lightfield account?

Truto handles the Lightfield auth flow for your users and validates the credentials via the lightfield_auth_validate check before any sync runs. You never store or rotate Lightfield API keys yourself.

Can we support custom objects and custom fields?

Yes. Lightfield exposes custom objects through the objects and object type endpoints, and you can retrieve field definitions per entity (accounts, contacts, opportunities, meetings, notes, tasks, object types) to dynamically render and write to custom fields in your UI.

How do we attach files like call transcripts or PDFs?

File uploads are a two-step flow: call create_a_lightfield_file to initiate, upload the bytes, then call lightfield_files_complete. You can then attach the file to a meeting, note, or other record via its relationships payload.

How do we track exactly when a field changed, like an opportunity stage?

Use the field history endpoints for accounts, contacts, opportunities, and custom object types. They return discrete value changes with recordedAt timestamps, which removes the need to diff snapshots or rely on webhook replay.

Do we need to handle Lightfield's privacy and permission rules?

No. Lightfield enforces privacy at the API layer. Reads for meetings, messages, and related entities are redacted per the connected user's access, and responses include a read-only accessLevel so you can reflect what's visible without reimplementing permissions.

Can we send or draft emails on behalf of the connected user?

Yes. Use lightfield_emails_draft to place a message in the user's drafts for review, or lightfield_emails_send to send immediately. The from address must correspond to a Lightfield member the connection is authorized to act on behalf of.

Lightfield

Get Lightfield integrated into your app

Our team understands what it takes to make a Lightfield integration successful. A short, crisp 30 minute call with folks who understand the problem.