Live

AccuLynx logo

AccuLynx API and MCP server

acculynx.com

Yes, but only with the AppConnections add-on: AccuLynx has a REST API (v2) for jobs, contacts, estimates, photos, job messages and payments, and an administrator creates the API key for each location (checked 11 Oct 2026). Cotlet is a hosted MCP server and REST API for AccuLynx with 14 endpoints (7 read, 7 write): your AI agent signs in as you and does the work.

Endpoints
14 7 read, 7 write
Updated
How Cotlet connects your agent to AccuLynx
  1. Your agent

    Claude Code, Codex, Cursor or a script

  2. Cotlet

    MCP server and REST API · 14 endpoints

    cotlet.dev/mcp/v1

  3. AccuLynx logo

    AccuLynx

    Signed in as you on acculynx.com

You sign in once. We never store your password.

Official API

Does AccuLynx have an official API?

Yes, but only with the AppConnections add-on: AccuLynx has a REST API (v2) for jobs, contacts, estimates, photos, job messages and payments, and an administrator creates the API key for each location (checked 11 Oct 2026). The API reads milestones but cannot change them, it cannot create estimates, and there is no official AccuLynx MCP server.

What AccuLynx's own tools do compared with Cotlet
Task AccuLynx official Cotlet
Find jobs by milestone Partly Needs the AppConnections add-on Yes
Add a contact and open a job for it Partly Needs the add-on; the contact must exist before the job Yes
Move a job to another milestone No Milestones are read only in the API Yes
Upload job photos Partly Needs the add-on Yes
Post a job message Partly Needs the add-on Yes
Read estimates and their line items Partly Needs the add-on; read only, no creating estimates Yes
Record a payment received Partly Needs the add-on Yes
Add a note to a contact Partly Needs the add-on Yes

Sources: AccuLynx AppConnections · AccuLynx API docs: authentication · AccuLynx API docs: reference · AccuLynx on Zapier MCP · AccuLynx: Create automations in AccuLynx · AccuLynx API docs: Create Job

Common use cases

What can an AI agent do in AccuLynx?

Cotlet is best for roofing contractors and their office staff who want an AI agent to add leads, upload job photos, move milestones and check estimates without running or fixing a server.

  • Create jobs from new leads

    New lead from the website form: Jane Doe, (214) 555-0142, jane.doe@example.com, 12 Oak St, Plano, roof leaking since Sunday's storm, came from Google Ads. Check she is not already in AccuLynx, add her and open a job. Your agent calls find_contact, create_contact, create_job and add_contact_note.

  • Upload inspection photos to a job

    Upload the 14 photos in ./inspection to the Oak St job and leave a message for the crew. Your agent calls list_jobs, upload_job_photo and post_job_message.

  • Find stalled jobs and their estimates Runs: Weekly

    Every Monday, list Prospect jobs that have sat there more than 21 days with their estimate totals and the last job message, plus Completed jobs older than 7 days that still have money owed. Your agent calls list_jobs, get_job, list_estimates and list_job_messages.

  • Move a signed job to Approved

    The Miller job at 48 Pine Ridge Rd signed today. Move it to Approved and log the $2,500 deposit, check #2218 dated Oct 10. Your agent calls list_jobs, get_job, update_job_milestone, list_job_payments and record_payment_received.

  • List completed jobs not yet invoiced Runs: Weekly

    Every Monday, list jobs that reached Completed last week but are not Invoiced. Your agent calls list_jobs and get_job.

Endpoints

What is the AccuLynx API?

Cotlet's AccuLynx API exposes 14 endpoints for your own AccuLynx account: list jobs, get job, find contact, list estimates, get estimate, list job messages, list job payments, create contact, create job, update job milestone, upload job photo, post job message, add contact note and record payment received. The list_jobs endpoint returns jobs in your location with name, address, current milestone, priority and dates. Each endpoint takes simple JSON inputs like job_id, milestone or limit and works both as an MCP tool for agents and as a REST call for scripts.

All endpoints · 14 total

missing one? request an endpoint

  • POST

    list_jobs

    read

    Lists jobs in one location, most recently modified first unless you sort otherwise. Filter by milestone or search by job name, address or contact name. Milestone is one of Lead, Prospect, Approved, Completed, Invoiced, Closed or Dead. Pages hold up to 100 jobs; pass next_cursor back as cursor for the next page.

    POST /api/v1/acculynx/list_jobs

    Input

    Input: list_jobs
    Parameter Type Description
    milestone enum Lead, Prospect, Approved, Completed, Invoiced, Closed or Dead. Default: all.
    search string Job name, address or contact name.
    sort_by enum created, milestone_date or modified. Default: modified.
    limit integer 1 to 100. Default: 25.
    cursor string Next page cursor from the previous call.

    Example response

    {
      "jobs": [
        {
          "job_id": "b3f1c2a4-7d2e-4f0a-9c51-2e8a4d6f1b90",
          "job_name": "Miller - 48 Pine Ridge Rd",
          "address": "48 Pine Ridge Rd, Plano, TX 75074",
          "milestone": "Prospect",
          "priority": "Normal",
          "milestone_date": "2026-09-02T10:20:00-05:00",
          "modified_at": "2026-10-08T15:41:00-05:00"
        },
        {
          "job_id": "e91a47d3-5c60-4b2f-8d1e-0a7f3c9b5e24",
          "job_name": "Garcia - 310 Elm Ct",
          "address": "310 Elm Ct, Frisco, TX 75034",
          "milestone": "Prospect",
          "priority": "High",
          "milestone_date": "2026-09-11T08:05:00-05:00",
          "modified_at": "2026-10-06T09:12:00-05:00"
        }
      ],
      "next_cursor": null
    }
  • POST

    get_job

    read

    Returns one job with its contacts, job site address, trade and work type, sales owner and the milestone history in order. Financial totals are the figures shown on the job in AccuLynx. Use the job_id from list_jobs.

    POST /api/v1/acculynx/get_job

    Input

    Input: get_job
    Parameter Type Description
    job_id required string Job ID from list_jobs.

    Example response

    {
      "job_id": "e91a47d3-5c60-4b2f-8d1e-0a7f3c9b5e24",
      "job_name": "Garcia - 310 Elm Ct",
      "address": "310 Elm Ct, Frisco, TX 75034",
      "milestone": "Completed",
      "priority": "Normal",
      "work_type": "Replacement",
      "trade_types": [
        "Roofing"
      ],
      "sales_owner": "Dana Whitfield",
      "contacts": [
        {
          "contact_id": "c2b8f6a1-90d4-4a37-b5e2-6f1d8a3c7e09",
          "name": "Luis Garcia",
          "role": "Primary"
        }
      ],
      "milestone_history": [
        {
          "milestone": "Lead",
          "date": "2026-08-14T11:02:00-05:00"
        },
        {
          "milestone": "Prospect",
          "date": "2026-08-16T09:30:00-05:00"
        },
        {
          "milestone": "Approved",
          "date": "2026-09-11T08:05:00-05:00"
        },
        {
          "milestone": "Completed",
          "date": "2026-10-05T16:48:00-05:00"
        }
      ],
      "totals": {
        "contract": "14850.00",
        "received": "7425.00",
        "currency": "USD"
      }
    }
  • POST

    find_contact

    read

    Searches contacts by name, email or phone number and returns each match with the jobs linked to it. Run it before create_contact so you do not add the same person twice. Use the contact_id with create_job and add_contact_note.

    POST /api/v1/acculynx/find_contact

    Input

    Input: find_contact
    Parameter Type Description
    query required string Name, email or phone.

    Example response

    {
      "contacts": [
        {
          "contact_id": "c7d2a9f0-3b11-4e8c-a6d5-91f0e2b47c18",
          "name": "Jane Doe",
          "phone": "(214) 555-0142",
          "email": "jane.doe@example.com",
          "jobs": []
        }
      ]
    }
  • POST

    list_estimates

    read

    Returns every estimate on one job with its name, total and date. Pass estimate_id to get_estimate for the sections and line items. Estimates are read only: Cotlet does not create or edit them.

    POST /api/v1/acculynx/list_estimates

    Input

    Input: list_estimates
    Parameter Type Description
    job_id required string Job ID from list_jobs.

    Example response

    {
      "estimates": [
        {
          "estimate_id": "a40d9e17-2f6b-4c83-b1a5-7e3c8d0f6291",
          "name": "Full replacement, architectural shingles",
          "total": "14850.00",
          "date": "2026-09-09"
        }
      ]
    }
  • POST

    get_estimate

    read

    Returns one estimate with its sections in order and the line items in each section, with quantity and price. Line item totals add up to the estimate total. Use it to read back what was promised on a job.

    POST /api/v1/acculynx/get_estimate

    Input

    Input: get_estimate
    Parameter Type Description
    estimate_id required string Estimate ID from list_estimates.

    Example response

    {
      "estimate_id": "a40d9e17-2f6b-4c83-b1a5-7e3c8d0f6291",
      "name": "Full replacement, architectural shingles",
      "total": "14850.00",
      "sections": [
        {
          "name": "Materials",
          "items": [
            {
              "name": "Architectural shingles",
              "quantity": 32,
              "unit": "square",
              "price": "210.00",
              "total": "6720.00"
            }
          ]
        },
        {
          "name": "Labor",
          "items": [
            {
              "name": "Tear-off and install",
              "quantity": 32,
              "unit": "square",
              "price": "253.13",
              "total": "8100.00"
            },
            {
              "name": "Dumpster",
              "quantity": 1,
              "unit": "each",
              "price": "30.00",
              "total": "30.00"
            }
          ]
        }
      ]
    }
  • POST

    list_job_messages

    read

    Returns the messages on one job, newest first, with replies nested under the message they answer. Use it to read what the crew and office said before you post.

    POST /api/v1/acculynx/list_job_messages

    Input

    Input: list_job_messages
    Parameter Type Description
    job_id required string Job ID from list_jobs.
    limit integer 1 to 100. Default: 25.

    Example response

    {
      "messages": [
        {
          "message_id": "m-3a91",
          "author": "Dana Whitfield",
          "body": "Customer wants the ridge vent upgrade.",
          "posted_at": "2026-10-04T14:10:00-05:00",
          "replies": [
            {
              "message_id": "m-3a97",
              "author": "Crew lead",
              "body": "Added to the order.",
              "posted_at": "2026-10-04T15:02:00-05:00"
            }
          ]
        }
      ]
    }
  • POST

    list_job_payments

    read

    Returns the payments recorded on one job, newest first, with the method and reference. Use it before record_payment_received to see whether a deposit is already there.

    POST /api/v1/acculynx/list_job_payments

    Input

    Input: list_job_payments
    Parameter Type Description
    job_id required string Job ID from list_jobs.

    Example response

    {
      "payments": [
        {
          "payment_id": "p-1182",
          "type": "received",
          "amount": "7425.00",
          "method": "Check",
          "reference": "#1043",
          "received_on": "2026-09-12"
        }
      ]
    }
  • POST

    create_contact

    write

    Adds one contact to AccuLynx and returns its contact_id. It adds a record your team sees and sends nothing to the person, so it runs without asking. Use find_contact first to avoid duplicates.

    POST /api/v1/acculynx/create_contact

    Input

    Input: create_contact
    Parameter Type Description
    first_name required string First name.
    last_name required string Last name.
    phone string Phone number.
    email string Email address.
    address object street, city, state, zip.

    Example response

    {
      "contact_id": "c7d2a9f0-3b11-4e8c-a6d5-91f0e2b47c18",
      "name": "Jane Doe",
      "phone": "(214) 555-0142",
      "email": "jane.doe@example.com",
      "created_at": "2026-10-11T09:02:00-05:00"
    }
  • POST

    create_job

    write

    Opens a job for an existing contact and returns it with the milestone it starts in. The job site address defaults to the contact address. It adds a record your team sees and sends nothing to the customer, so it runs without asking.

    POST /api/v1/acculynx/create_job

    Input

    Input: create_job
    Parameter Type Description
    contact_id required string Contact ID from find_contact or create_contact.
    job_name string Default: contact name and street.
    address object Job site: street, city, state, zip. Default: contact address.
    priority enum Normal, High or Urgent. Default: Normal.

    Example response

    {
      "job_id": "f2a6c8d1-4e93-4b07-a1d5-3c9e7b0f5a62",
      "job_name": "Doe - 12 Oak St",
      "address": "12 Oak St, Plano, TX 75074",
      "milestone": "Lead",
      "priority": "High",
      "created_at": "2026-10-11T09:03:00-05:00"
    }
  • POST

    update_job_milestone

    write

    Moves one job to another milestone the way you do in the job file, and returns the previous milestone and the date of the new one. It fails if your AccuLynx role does not allow the move. A milestone change can set off your own AccuLynx workflow. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/acculynx/update_job_milestone

    Input

    Input: update_job_milestone
    Parameter Type Description
    job_id required string Job ID from list_jobs.
    milestone required enum Prospect, Approved, Completed, Invoiced, Closed or Dead.

    Example response

    {
      "job_id": "b3f1c2a4-7d2e-4f0a-9c51-2e8a4d6f1b90",
      "job_name": "Miller - 48 Pine Ridge Rd",
      "milestone": "Approved",
      "previous_milestone": "Prospect",
      "milestone_date": "2026-10-12T09:14:00-05:00"
    }
  • POST

    upload_job_photo

    write

    Adds one photo or video to the job file and returns its ID. The tag must be one of your company photo and video tags. The file goes into the job and nothing is sent to anyone, so it runs without asking.

    POST /api/v1/acculynx/upload_job_photo

    Input

    Input: upload_job_photo
    Parameter Type Description
    job_id required string Job ID from list_jobs.
    file_url required string Image or video URL, or a file sent with the REST call.
    tag string One of your company photo and video tags.
    description string Caption shown with the photo.

    Example response

    {
      "photo_id": "ph-5530",
      "job_id": "b3f1c2a4-7d2e-4f0a-9c51-2e8a4d6f1b90",
      "tag": "Inspection",
      "description": "North slope, ridge cap damage",
      "uploaded_at": "2026-10-11T10:21:00-05:00"
    }
  • POST

    post_job_message

    write

    Posts a message on one job under your name, or a reply under an existing message when reply_to_id is set. Your team sees it on the job. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/acculynx/post_job_message

    Input

    Input: post_job_message
    Parameter Type Description
    job_id required string Job ID from list_jobs.
    body required string Message text.
    reply_to_id string Message ID from list_job_messages to reply to.

    Example response

    {
      "message_id": "m-3b02",
      "job_id": "b3f1c2a4-7d2e-4f0a-9c51-2e8a4d6f1b90",
      "reply_to_id": null,
      "status": "posted",
      "posted_at": "2026-10-11T10:24:00-05:00"
    }
  • POST

    add_contact_note

    write

    Adds a note to one contact record and returns its ID. The note shows on the contact in AccuLynx and is sent to no one, so it runs without asking.

    POST /api/v1/acculynx/add_contact_note

    Input

    Input: add_contact_note
    Parameter Type Description
    contact_id required string Contact ID from find_contact or create_contact.
    body required string Note text.

    Example response

    {
      "note_id": "n-7741",
      "contact_id": "c7d2a9f0-3b11-4e8c-a6d5-91f0e2b47c18",
      "status": "added",
      "created_at": "2026-10-11T09:05:00-05:00"
    }
  • POST

    record_payment_received

    write

    Records a payment the customer already made on one job, for example a deposit check, and returns the payment. Nothing is charged: it only writes the payment into the job. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/acculynx/record_payment_received

    Input

    Input: record_payment_received
    Parameter Type Description
    job_id required string Job ID from list_jobs.
    amount required string Amount, e.g. "2500.00".
    method required string Payment method as named in your AccuLynx account, e.g. Check.
    received_on date Default: today.
    reference string Check number or memo.

    Example response

    {
      "payment_id": "p-1183",
      "job_id": "b3f1c2a4-7d2e-4f0a-9c51-2e8a4d6f1b90",
      "amount": "2500.00",
      "method": "Check",
      "reference": "#2218",
      "received_on": "2026-10-12",
      "status": "recorded"
    }

Setup

How do I connect AccuLynx to Claude Code, Codex or Cursor?

Connecting AccuLynx takes three steps: request access, sign in to AccuLynx once, then add one MCP server or call the REST API with the same key.

Connect AccuLynx over MCP

  1. 1

    Create an account

    Sign up and add AccuLynx in the console. Your API key is there too.

  2. 2

    Sign in to AccuLynx once

    Open the connect page from the console and sign in to AccuLynx the way you always do. We keep the session, never your password, and you can revoke it anytime.

  3. 3

    Add Cotlet to your agent

    Claude Code
    claude mcp add --transport http cotlet \
      https://cotlet.dev/mcp/v1 \
      --header "Authorization: Bearer $COTLET_API_KEY"
    Cursor
    {
      "mcpServers": {
        "cotlet": {
          "url": "https://cotlet.dev/mcp/v1",
          "headers": {
            "Authorization": "Bearer ${COTLET_API_KEY}"
          }
        }
      }
    }
    Codex
    # ~/.codex/config.toml
    [mcp_servers.cotlet]
    url = "https://cotlet.dev/mcp/v1"
    bearer_token_env_var = "COTLET_API_KEY"

    Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

  4. 4

    Ask your agent

    Prompt

    New lead from the website form: Jane Doe, (214) 555-0142, jane.doe@example.com, 12 Oak St, Plano, roof leaking since Sunday's storm, came from Google Ads. Check she is not already in AccuLynx, add her and open a job.

    Ask in plain words. Your agent finds the AccuLynx tools on the server and calls them for you; anything that reaches other people waits for your OK unless you switch that off for a tool.

Call AccuLynx over REST

  1. 1

    Export your API key

    Shell

    export COTLET_API_KEY="cotlet_..."

    Your scripts use the same API key as your agent. Keep it in an environment variable, never in your code.

  2. 2

    Call a tool

    curl

    curl https://cotlet.dev/api/v1/acculynx/update_job_milestone \
      -H "Authorization: Bearer $COTLET_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"job_id":"b3f1c2a4-7d2e-4f0a-9c51-2e8a4d6f1b90","milestone":"Approved"}'

    Every tool is a POST endpoint at /api/v1/acculynx/{tool}. Send its parameters as JSON, exactly as listed in the endpoints above.

  3. 3

    Read the result

    Example response · update_job_milestone

    {
      "job_id": "b3f1c2a4-7d2e-4f0a-9c51-2e8a4d6f1b90",
      "job_name": "Miller - 48 Pine Ridge Rd",
      "milestone": "Approved",
      "previous_milestone": "Prospect",
      "milestone_date": "2026-10-12T09:14:00-05:00"
    }

    You get plain JSON back, ready for your script. A failed call costs nothing.

Why Cotlet

Why use Cotlet for AccuLynx? Hosted, safe and kept working.

  • Built for agents

    • One MCP server for every app you connect.
    • The same tools as a REST API for scripts and cron jobs.
    • Works with Claude Code, Codex and Cursor.
  • Your login stays yours

    • You sign in to AccuLynx yourself. We keep only the session, encrypted with AES-256.
    • The model never sees a login.
    • No stored passwords, no CAPTCHA solving, no MFA bypass.
  • You stay in control

    • Pick read only, or read and write.
    • Anything that reaches other people waits for your OK, unless you switch it off per tool.
    • Revoke access in one click.
  • Kept working for you

    • We test every integration daily.
    • When AccuLynx changes, the tool pauses until we fix it.
    • Failed calls cost nothing.

Alternatives

Is there a AccuLynx MCP server on GitHub?

Zapier has an AccuLynx app, also through Zapier MCP. It has triggers on jobs, contacts and milestone changes, and actions that create contacts, jobs and leads and set custom fields. It runs on the same AppConnections API key, so it cannot move a job to another milestone.

Cotlet compared with a Zapier
Zapier Cotlet
Setup Zapier account, AppConnections add-on and an API key from an AccuLynx administrator Request access, sign in to AccuLynx once in your browser, add one MCP server or API key
Write actions Create contact, job or lead, update custom fields, set the initial appointment Also move milestones, upload photos, post job messages, add contact notes and record payments
Milestones Triggers when a milestone changes, cannot change it Moves a job to another milestone, as your role allows in the app
When AccuLynx changes Zapier updates its app; fields the API lacks stay out of reach Our team tests it daily and fixes it for you; failed calls are free
Your AccuLynx access An API key with access to one location Your session, encrypted in an EU vault, revoked in one click
Where it runs Zapier cloud: Zaps or Zapier MCP Hosted: Claude Code, Codex, Cursor, n8n and scripts, also on a schedule
Price Your Zapier plan, each action counts as a task Free 7-day trial with 5,000 credits, then credits per call

Which one fits you

Pick Cotlet if

  • you are not a developer, or you do not want to maintain a server
  • you need it to keep working when AccuLynx changes, without checking it yourself
  • your agent or a script should run it on a schedule, also while your computer is off

Pick an open-source server if

  • you are comfortable installing, updating and fixing it yourself
  • you want the session to stay on your own computer
  • you only need it now and then, from one MCP client

For AI agents

Cotlet for AccuLynx in plain text The facts on this page in one block: status, endpoints, access, pricing, contact.

Endpoint health

verified 2h ago

  • list_jobs passing
  • get_job passing
  • find_contact passing
  • list_estimates passing
  • get_estimate passing

+ 9 more endpoints

14/14 passing latest check self-healing

acculynx.txt

Yes, but only with the AppConnections add-on: AccuLynx has a REST API (v2) for jobs, contacts, estimates, photos, job messages and payments, and an administrator creates the API key for each location (checked 11 Oct 2026). The API reads milestones but cannot change them, it cannot create estimates, and there is no official AccuLynx MCP server.
Cotlet provides a hosted MCP server and REST API for AccuLynx: 14 tools (7 read, 7 write).
Access       Request access at https://cotlet.dev/app/signup?app=acculynx; we email the API key.

MCP server   https://cotlet.dev/mcp/v1
REST base    https://cotlet.dev/api/v1/acculynx
Auth         Authorization: Bearer <COTLET_API_KEY>. Listing endpoints and schemas needs no key; calling an endpoint needs one.
Tools        list_jobs, get_job, find_contact, list_estimates, get_estimate, list_job_messages, list_job_payments, create_contact, create_job, update_job_milestone, upload_job_photo, post_job_message, add_contact_note, record_payment_received
Confirm      update_job_milestone, post_job_message, record_payment_received (by default the user approves each call; the user can switch this off per tool, e.g. for scheduled automations)
Markdown     https://cotlet.dev/integrations/acculynx-api-mcp-server.md

How access works:
1. The user requests access at https://cotlet.dev/app/signup?app=acculynx (AccuLynx is pre-selected). Each request is reviewed and the API key is sent by email.
2. The user signs in to AccuLynx once in a browser. An agent cannot do this step.
3. The API key goes into the MCP client or the REST call as a bearer token.

Fits: people who want a hosted AccuLynx server that someone else maintains, including non-developers.

Policy: Cotlet never stores passwords, never solves CAPTCHAs, never bypasses MFA.
Company: legal details in the Terms of service at https://cotlet.dev/terms. Contact contact@cotlet.dev.
Session: the user signs in to AccuLynx in a browser; Cotlet keeps only the session, AES-256 encrypted, revocable in the dashboard at any time.
Terms: the user stays responsible for following AccuLynx's terms; Cotlet is not affiliated with AccuLynx.
Full page as Markdown

Automations

Can AccuLynx automations run on a schedule in n8n, Make or Zapier?

Yes. Cotlet does not replace your automation platform: it gives it a AccuLynx connection it does not have, with the same API key as your agent. Write actions ask for your OK by default; switch that off in your dashboard for the tools you choose, for example to find stalled jobs and their estimates, and the schedule runs on its own. Cotlet runs in the cloud, so it keeps going while your computer is off.

Where to run AccuLynx automations through Cotlet, and how to schedule them
Where How to connect How to schedule
Your AI agent Add https://cotlet.dev/mcp/v1 with your API key. A scheduled agent run, for example a Claude Code routine.
n8n MCP Client node with https://cotlet.dev/mcp/v1, or an HTTP Request node to https://cotlet.dev/api/v1/acculynx/{tool}. Schedule Trigger node.
Make HTTP module: POST https://cotlet.dev/api/v1/acculynx/{tool} with an Authorization: Bearer header and a JSON body. Scenario schedule.
Zapier Webhooks by Zapier: POST https://cotlet.dev/api/v1/acculynx/{tool} with the same header and body. Schedule by Zapier trigger.
Your own script POST https://cotlet.dev/api/v1/acculynx/{tool} with your API key. cron or GitHub Actions.

Pricing & limits

How much does the AccuLynx API cost?

Free 7-day trial with 5,000 credits, no card needed. After that, the AccuLynx API comes with the Cotlet plan, from $29 a month for 3,000 credits, with no limit on apps. Each month's credits stay valid for 3 months, so unused credits add up.

Cotlet plan sizes: price, monthly credits and price per credit
Size Price Credits / month Per credit
Solo $29/mo 3,000 about $0.0097
Pro $99/mo 12,000 about $0.0083
Agency $299/mo 40,000 $0.0075

Each successful call uses credits for the work it takes; failed calls and timeouts cost nothing. A hard spend cap is on by default. Authenticate with the Authorization: Bearer header.

About Cotlet

How Cotlet holds your access

Cotlet hosts MCP servers and REST APIs for apps with no usable API. Your agent works in your own AccuLynx account.

Company details
The legal name, address and registration numbers of the company behind Cotlet are in the Terms of service. Terms
Your session
You sign in to AccuLynx yourself, in your browser. We keep only the session, never your password: encrypted with AES-256 in an EU vault, isolated to your account and used only when your agent calls a AccuLynx tool you allowed. When it expires, your agent gives you a link to sign in again. Security
Revoking access
Disconnect AccuLynx in your dashboard: the session is deleted and access ends at once. Actions that reach other people wait for your OK unless you switch that off per tool.
What we never do
Store passwords, solve CAPTCHAs or bypass MFA.
AccuLynx's terms
You use your own AccuLynx account and stay responsible for following AccuLynx's terms. Cotlet is independent and not affiliated with AccuLynx. Terms
Contact
Questions about the company, security or an app: contact@cotlet.dev
About Cotlet

Frequently asked questions

How do I get access?

Request access and pick AccuLynx. Cotlet reviews each request and emails you your API key.

Do I need to be technical?

No. You sign in to AccuLynx once in your browser and paste one command into your agent, or one URL into n8n. Your agent can walk you through it. There is no server to install, update or fix.

Is a hosted server safe? My AccuLynx session would leave my computer.

Cotlet keeps your AccuLynx session encrypted with AES-256 in an EU vault, isolated to your account and used only for the tools you allow: read only, or read and write. The AI model never sees it, and you revoke it in one click. A local server keeps the same session in a file on your computer, readable by any program you run, and needs a fresh sign-in whenever it expires.

Do I need the AppConnections add-on?

No. Cotlet works in your own AccuLynx account and does not use an API key, which AccuLynx gives only with the AppConnections add-on (checked 11 Oct 2026). What the tools can do depends on your AccuLynx role.

Can it create or edit estimates?

No. list_estimates and get_estimate only read. AccuLynx's own API also has read-only estimate endpoints.

Can my agent post or send messages in AccuLynx without asking me?

No. Every call to update_job_milestone, post_job_message or record_payment_received waits for your OK by default. For scheduled automations you can switch confirmation off per tool in your dashboard, for example only for approvals. create_contact, create_job, upload_job_photo, add_contact_note runs without asking, because it sends nothing to anyone and one call undoes it.

Can I use the AccuLynx API in n8n?

Yes. Add https://cotlet.dev/mcp/v1 with your API key in n8n's MCP Client node, or call https://cotlet.dev/api/v1/acculynx/{tool} from the HTTP Request node.

Give your agent access to AccuLynx.

Request access and pick it. We review each request and email you your API key. Free 7-day trial with 5,000 credits, no card needed.