CRM · Beta
LeadPerfection
API integration
Ship CRM features without building the integration. Full LeadPerfection API access via Proxy and 50+ 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 LeadPerfection
Common scenarios for SaaS companies building LeadPerfection integrations for their customers.
Embed LeadPerfection in AI voice and SMS platforms
Conversational AI vendors serving home improvement contractors need to create leads, book appointments against live rep availability, and log transcripts back to the CRM. Truto lets them ship this integration without learning LeadPerfection's forward-look capacity model or XML-based call history endpoints.
Power in-home CPQ and contracting apps
Quoting and estimation tools used by field reps need to pull daily schedules, push signed contracts as image blobs, and write back finalized job costs and commissions. Offering a LeadPerfection integration is table stakes for selling into roofing, windows, and HVAC contractors.
Build marketing attribution and BI dashboards
Analytics platforms that report on marketing ROI for home services companies need continuous access to lead sources, job milestones, and status changes. Truto handles the polling, pagination, and namespace fragmentation across LeadPerfection's Lead, Sales, and Customer APIs.
Ship field service apps for installer crews
Photo management and job tracking apps built for installers need a separate view of the installer calendar, job details, and note history — distinct from sales rep data. Truto exposes the installer namespace so SaaS vendors can build persona-specific mobile experiences.
Enable outbound dialer and call center tooling
Dialer and contact center platforms need to pull batches of leads from LeadPerfection's dialing queues, sync call history, and update DNC compliance status. Truto abstracts the CQDID batching and XML payload formatting required to make this reliable at scale.
What You Can Build
Ship these features with Truto + LeadPerfection
Concrete product features your team can ship faster by leveraging Truto’s LeadPerfection integration instead of building from scratch.
Automated appointment booking with capacity checks
Query a sales rep's 14-day availability via forward-look data and book appointments directly onto the correct rep's calendar based on zip code routing.
Lead intake with source attribution
Create new leads in LeadPerfection with promoter and sub-promoter tagging so downstream marketing analytics can attribute revenue back to the originating campaign.
Two-way call history and DNC sync
Pull leads from dialing queues in batches, push call outcomes back via the call history endpoint, and flag opted-out prospects with a DNC status update.
Contract and photo upload from the field
Attach signed contracts, site photos, and salesman images to jobs directly from a tablet or mobile app, tied to the correct prospect and job ID.
Sales-to-job conversion workflow
Dispose appointments as sold, push finalized job costs and commission splits, and update job detail records to move prospects through the Prospect → Appointment → Job funnel.
Milestone and status change polling for BI
Continuously sync job status changes and milestone events to close the loop between marketing spend and installed revenue in a reporting dashboard.
SuperAI
LeadPerfection 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_lead_perfection_token
Create an authentication token required by all other LeadPerfection REST API requests. The token expires 24 hours after generation and must be refreshed periodically.
list_all_lead_perfection_leads_get_inbound_lead_infos
Retrieve inbound lead history from LeadPerfection within a date range, optionally filtered by promoter or log number. Returns: data (array of inbound lead status records for the Source codes you have access to). Dates must be in MM/DD/YYYY format.
list_all_lead_perfection_leads_get_leads_forward_looks
Retrieve Forward Look data in LeadPerfection for sales rep appointment availability over the upcoming 14 days. Returns: SDate, TMS_Descr1–TMS_Descr6 (time slot descriptions), T1–T6 (appointments needed per slot with overbooking), X1–X6 (appointments needed without overbooking). Specify either branchid (Market) or productid and zip.
list_all_lead_perfection_leads_get_leads_source_sub_promoters
Retrieve lists of valid values from LeadPerfection lookup tables (SubSources, Promoters, Branches, or Products) for use during lead capture. Returns records with id and table-specific attributes. The type parameter selects the source table and defaults to S (SubSources).
create_a_lead_perfection_leads_set_appointment
Set a new appointment on an existing data lead in LeadPerfection. The lead must be in a set-able status, cannot be out of area, and must not have an existing future appointment. Returns an empty response on success. The upstream spec specifies an empty response schema.
create_a_lead_perfection_leads_set_appointment_sales_rep
Set a new appointment on an existing data lead in LeadPerfection with an optional sales rep and product assignment. The lead must be in a set-able status, cannot be out of area, and must not have an existing future appointment. Returns an empty response on success. The upstream spec specifies an empty response schema.
create_a_lead_perfection_sales_api_add_job_image
Add an image to a job in LeadPerfection by uploading the file's raw byte array along with the target job id and filename. The filename must exactly match the original file's name and extension or the file may be flagged as improperly saved. Optional: docdescr, dtyid. Use /api/SalesApi/GetSalesApptDispProd with type=y to enumerate valid dtyid values. Returns…. The upstream spec specifies an empty response schema.
create_a_lead_perfection_sales_api_add_note
Add a note to a Prospect, Issued Lead, or Job record in LeadPerfection. The note appears on the Notes tab for the specified record. Returns an empty 200 response on success. The upstream spec specifies an empty response schema.
create_a_lead_perfection_sales_api_add_sales_job_commission
Add a commission record on a job in LeadPerfection. Returns an empty 200 response on success. The upstream spec specifies an empty response schema.
create_a_lead_perfection_sales_api_add_sales_job_payment
Add a payment record on a job in LeadPerfection. Returns an empty 200 response on success. The upstream spec specifies an empty response schema.
create_a_lead_perfection_sales_api_add_sales_job_cost
Add a job cost record to a job in LeadPerfection, including quantity, cost, price, commission and invoice details. Returns an empty response on success. The upstream spec specifies an empty response schema.
create_a_lead_perfection_sales_api_add_salesman_image
Add an image to a sales appointment in LeadPerfection. If the appointment disposition is SALE the image attaches to the associated job record, otherwise it attaches to the prospect. Returns an empty 200 response on success. The upstream spec specifies an empty response schema.
list_all_lead_perfection_sales_api_get_prospect_job_ids
Search for jobs in LeadPerfection by prospect id or job number and receive back a list of matching JobIDs. Returns: JobID. At least one of prospectid or contractid should be supplied.
list_all_lead_perfection_sales_api_get_prospect_job_id_2_s
Search for jobs in LeadPerfection by prospect id, job number (contractid), or issued lead id. Returns a list of matching JobIDs. At least one of prospectid, contractid, or issued_appt_id should be provided.
list_all_lead_perfection_sales_api_get_sales_appt_disp_prods
Enumerate static lookup tables in LeadPerfection by specifying a type code. Returns records with id and type-specific attributes whose field structure varies by the requested data type (e.g., dispositions, products, sales reps, call results).
list_all_lead_perfection_sales_api_get_sales_appt_cals
View the appointment calendar for the logged-in sales rep in LeadPerfection. For the current month, lists each day that the rep has at least one appointment scheduled, along with the total number of appointments for each day. Returns the appointment calendar with day-level appointment counts via attributes. Limited to the current month only.
list_all_lead_perfection_sales_api_get_sales_appt_day_lists
List all appointments for a specified day for the logged-in sales rep in LeadPerfection. Returns: id.
get_single_lead_perfection_sales_api_get_sales_appt_detail_by_id
Get detailed information about a single sales appointment in LeadPerfection by specifying a date and issued lead id. Returns an empty 200 response on success.
list_all_sales_api_get_sales_appt_detail_date_ranges
Retrieve a list of issued sales appointments within a specified date range from LeadPerfection, spanning all sales reps rather than just the logged-in user. The upstream API does not document the response body fields.
list_all_lead_perfection_sales_api_get_sales_appt_lists
List all issued sales appointments within a specified date range in LeadPerfection. Returns a list of appointments for the given date range; the upstream OpenAPI spec does not document the response schema.
get_single_lead_perfection_sales_api_get_sales_job_detail_by_id
Get sales job detail information in LeadPerfection for a given JobID. Returns job detail info about the job; the upstream spec does not enumerate individual response fields.
list_all_lead_perfection_sales_api_get_sales_opens
List recent sales for the logged-in sales rep in LeadPerfection. Returns: status for each sale. No request parameters are required.
create_a_lead_perfection_sales_api_update_sales_appt_detail_3
Update the results of an issued sales appointment in LeadPerfection (version 3, adding sale type and vendor parameters over version 2). Returns an empty 200 response on success. Follow-up date/time fields require the IncludeFollowUpinPresentation config key set to Y. The upstream spec specifies an empty response schema.
create_a_lead_perfection_sales_api_update_sales_job_cost
Update a job cost record for a job in LeadPerfection. Returns an empty 200 response on success. invoiceDate must be in YYYY-MM-DD format. The upstream spec specifies an empty response schema.
create_a_lead_perfection_sales_api_update_sales_job_detail
Update the paperwork status, commission type, total commission amount, and user fields (job_user_11, job_user_12) on a LeadPerfection job record. Returns an empty 200 response on success. The upstream spec specifies an empty response schema.
list_all_lead_perfection_sales_api_get_sales_schedules
Get the sales schedule in LeadPerfection broken down by day and then by rep, showing each rep's available time slots and whether an appointment is already scheduled. Returns: day, rep (including slots and appointment-scheduled status for each slot). If no date range is supplied, defaults to the current month; SlrID 0 returns all reps and BrnID 'ALL' returns all markets.
list_all_lead_perfection_sales_api_get_employees
Get a list of employees in LeadPerfection. Returns employee records with EmpID, FirstName, LastName, Active, and Email. Pagination is handled via StartIndex and PageSize parameters.
list_all_lead_perfection_downloads_get_leads_by_cqdids
Retrieve a list of leads to dial from a specified call queue in LeadPerfection. Returns a list of leads in the given queue that are available to be dialed; the response shape is not documented in the upstream API specification. Pulls are restricted to a max of 1000 records at a time.
list_all_lead_perfection_downloads_get_leads_by_cqdid_longs
Retrieve a list of leads available to be dialed from a specific call queue in LeadPerfection, optionally filtered by a call filter. The upstream API does not document the response field structure. Pulls are restricted to a max of 1000 records at a time.
create_a_lead_perfection_downloads_process_call_history_xml
Import call history records into LeadPerfection by submitting an XML payload. Returns an empty 200 response on success. The upstream spec specifies an empty response schema.
create_a_lead_perfection_downloads_process_notes_xml
Import note records into LeadPerfection by submitting a call history XML payload. Returns an empty 200 response on success. The upstream spec specifies an empty response schema.
create_a_lead_perfection_customers_add_call_history
Add call history results back into LeadPerfection. Returns an empty 200 response on success. Valid values for these fields can be enumerated via the GetSalesApptDispProd API. The upstream spec specifies an empty response schema.
list_all_lead_perfection_customers_get_customers
Search customers in LeadPerfection by last name or prospect ID. Returns: name. At least one of custnumber or lastname should be provided. This endpoint is deprecated.
list_all_lead_perfection_customers_get_customers_2_s
Search for prospects in LeadPerfection by last name, phone, job number, or prospect ID. Returns: custnumber, name, phone. This endpoint is deprecated.
list_all_lead_perfection_customers_get_customers_3_s
Search prospects in LeadPerfection by last name, phone, job number, prospect ID, or email. Returns matching records with custnumber, name, and phone for any found matches. All search criteria are optional.
list_all_lead_perfection_customers_get_customers_by_prospect_ids
Search for prospects in LeadPerfection by Prospect ID, job number, first name, last name, or phone. Returns matching prospects with prospectid, name, address, and phone.
list_all_lead_perfection_customers_get_leads
Retrieve full prospect, lead, appointment, and job data from LeadPerfection by prospect id, lead id, issued lead id, or date range. Returns a full set of data for each matching prospect, potentially including hundreds of data elements such as alternate contacts, lead history, appointment history, job history, milestones, payments, and notes.
list_all_lead_perfection_customers_get_job_status_changes
Search for jobs with status changes in LeadPerfection within a specified date range, optionally filtering by customer, job, or job status ID. Returns job status change records for matching jobs; the specific response fields are not documented in the API specification.
list_all_lead_perfection_customers_get_lead_infos
Search for prospects in LeadPerfection by lastname, phone, jobnumber, or prospectid. Returns lead information including EntryDate, PromoterName, Source, SubSourceDescription, and Disposition. Provide at least one search criterion.
list_all_lead_perfection_customers_get_milestones
Retrieve prospect, lead, appointment, and job milestone data from LeadPerfection by specifying a prospect ID, lead ID, issued lead ID, or date range. Returns the data array of full prospect records including milestones, lead history, appointment history, job history, and notes.
list_all_lead_perfection_customers_get_prospect_datas
Retrieve full prospect, lead, appointment, and job data from LeadPerfection by prospect id, lead id, issued lead id, or date range. Returns a data array of prospect records, each potentially including hundreds of elements such as alternate contacts, lead history, appointment history, job history, milestones, payments, and notes. Specify at least one selector: cst_id, lds_id, ils_id, or a date…
list_all_lead_perfection_customers_get_sales_appointments
Get sales appointments with full prospect, lead, appointment, and job data from LeadPerfection by specifying a date range and optional prospect, lead, or issued lead IDs. Returns the data array containing full prospect records including alternate contacts, lead history, appointment history, job history, milestones, payments, and notes.
list_all_lead_perfection_customers_get_service_appointments
Retrieve full prospect, lead, appointment, and job data from LeadPerfection by prospect id, lead id, issued lead id, or date range. Returns the prospect data object with id and content-specific attributes including alternate contacts, lead history, appointment history, job history, milestones, payments, service, and notes.
create_a_lead_perfection_customers_update_customer
Update basic prospect information in LeadPerfection — first name, last name, and phone for a given prospect ID. Returns an empty 200 response on success. The upstream spec specifies an empty response schema.
create_a_lead_perfection_customers_update_prospect_info
Update basic prospect information in LeadPerfection by prospect ID. Supports updating first name, last name, address, address2, city, state, zip, phone, and email. Returns an empty 200 response on success. The upstream spec specifies an empty response schema.
create_a_lead_perfection_customers_update_dnc_status
Update the internal DNC (Do Not Call) status on a prospect in LeadPerfection. The newDncStatus parameter accepts C (Do Not Call), M (Do Not Mail), T (Do Not Text), E (Do Not Email), or P (Do Not Promote). Returns an empty 200 response on success. The upstream spec specifies an empty response schema.
create_a_lead_perfection_installer_add_installer_job_note
Add notes to a job in LeadPerfection matching a given jobid number. Returns an empty 200 response on success. The upstream spec specifies an empty response schema.
list_all_lead_perfection_installer_get_installer_appt_cals
Get the installer appointment calendar for the current month in LeadPerfection, listing each day the installer has at least one appointment scheduled along with the total appointment count for that day. Returns: apptdate. No request parameters are required.
list_all_lead_perfection_installer_get_installer_appt_day_lists
List installer appointments for a given day in LeadPerfection. For the specified date, returns all appointments for the logged-in sales rep; the LeadPerfection API does not document the specific response fields.
get_installer_get_installer_appt_detail_by_id
Get detailed information about a single installer appointment in LeadPerfection by specifying an appointment date and job ID. Returns a 200 response; the upstream spec does not document specific response fields.
get_installer_get_installer_job_detail_by_id
Get detailed information about a single installer job appointment in LeadPerfection by specifying an appointment date and job ID. The upstream API does not document the response schema for this endpoint.
list_all_lead_perfection_installer_get_installer_job_notes
Get notes associated with a job in LeadPerfection. For a given job ID and appointment date, returns the notes that appear on the Notes tab for that job. Returns: notes.
list_all_lead_perfection_installer_get_installs_opens
Get a list of open installs assigned to the logged-in user in LeadPerfection. Returns: id. No required parameters.
list_all_lead_perfection_installer_get_job_images
Get documents associated with a job in LeadPerfection. Returns a list of documents that appear on the DOCS tab for the specified job, customer, or issued lead record.
list_all_lead_perfection_job_get_job_details
Pull basic information about a job in LeadPerfection by providing at least one search criterion. Returns the job detail data object. At least one of JobID, JobNumber, IssuedAppointmentID, StartContractDate, or EndContractDate must be provided.
create_a_lead_perfection_file_download_web_file
Download a web file from a URL in LeadPerfection. If the account has an associated Amazon S3 account, uploads the file to S3 and returns the final storage path. Returns: path.
create_a_lead_perfection_lead
Add a lead to the inbound lead queue in LeadPerfection, the preferred API method with access to all lead fields including contact info, phones, product interest, and appointment details. Returns the created lead record with content-type-specific fields (id, attributes).
list_all_lead_perfection_leads
Retrieve limited information on all leads added to the inbound leads queue during the current day in LeadPerfection. Returns inbound lead records with content-type-specific fields (id, attributes). Deprecated — use GetInboundLeadInfo instead.
list_all_lead_perfection_leads_get_lead_datas
Retrieve a list of leads from LeadPerfection by date range or Issued Lead ID. Returns: data. This endpoint is deprecated; use Customers/GetLead for the current version.
Why Truto
Why use Truto’s MCP server for LeadPerfection
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ 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 LeadPerfection in under an hour. No boilerplate, no maintenance burden.
Link your customer’s LeadPerfection account
Use Truto’s frontend SDK to connect your customer’s LeadPerfection 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 LeadPerfection
Truto’s Proxy API is a 1-to-1 mapping of the LeadPerfection API. You call us, we call LeadPerfection, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate LeadPerfection’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about LeadPerfection on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How does authentication work with LeadPerfection?
LeadPerfection uses token-based authentication generated from customer credentials. Truto handles the token lifecycle for each of your end users via the create token endpoint, so you don't need to manage credential storage or refresh logic yourself.
Can we separate sales rep calendars from installer calendars?
Yes. LeadPerfection exposes distinct endpoints for sales appointment calendars and installer appointment calendars, and both are available through Truto. This lets you build persona-specific views without mixing the two datasets.
How do we handle high-volume lead syncs for dialer use cases?
LeadPerfection supports batched lead retrieval from dialing queues (CQDIDs) of up to 1,000 records per call. Truto exposes these list endpoints with standard pagination so you can build reliable, incremental sync jobs.
How do we write call activity back to LeadPerfection?
Call history is written via an XML payload endpoint, and standalone notes can be added via a separate endpoint. Truto normalizes the request format so you send structured JSON and we handle the XML transformation.
Can we upload contract PDFs and photos to a job?
Yes. LeadPerfection accepts image and file uploads tied to a job ID via the add job image and add salesman image endpoints. Files are transmitted as byte payloads, which Truto passes through directly.
How fresh is the data — is there webhook support?
LeadPerfection's public API is polling-based rather than webhook-driven. For status changes, milestones, and new leads, you'll poll the relevant list endpoints on an interval that matches your product's freshness requirements.
From the Blog
LeadPerfection integration guides
Deep dives, architecture guides, and practical tutorials for building LeadPerfection integrations.
LeadPerfection
Get LeadPerfection integrated into your app
Our team understands what it takes to make a LeadPerfection integration successful. A short, crisp 30 minute call with folks who understand the problem.