Enerflo MCP by usefulapi

Read customers, installs, tasks and notes; add leads and notes in Enerflo.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
86%
Naming quality
79%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'enerflo_list_customer_appointments' name length outside 3-30 rangein enerflo_list_customer_appointments

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,549Tokens (tool definitions)
~1.4 KBTypical response size
Significant attention impact (2.77% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "enerflo": {
      "url": "https://enerflo.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://enerflo.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (20)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢enerflo_get_company

Return the company that owns the API key (id, name, contact, address, slug). Good first call. Enerflo API: GET /v3/authcheck.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enerflo_list_offices

List the offices of the company. Enerflo API: GET /v3/offices.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enerflo_list_loan_products

List the finance options (lenders and loan products) of the company. Enerflo API: GET /v3/loan-products.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enerflo_list_products(company_id, active, is_battery)

List products (equipment and adders) of the company or of authorized companies. Enerflo API: GET /v3/company/products.

Input Schema

{
  "type": "object",
  "properties": {
    "company_id": {
      "description": "Only products of this Enerflo company id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "active": {
      "description": "true = only active products, false = only inactive.",
      "type": "boolean"
    },
    "is_battery": {
      "description": "true = only battery products, false = no batteries.",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enerflo_list_install_statuses(company_id)

List all possible install project statuses. Enerflo API: GET /v3/install-statuses.

Input Schema

{
  "type": "object",
  "properties": {
    "company_id": {
      "description": "Optional Enerflo company id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enerflo_list_users(company_id, user_role, pageSize, page)

List users of the company (and of authorized companies when company_id is not set). Enerflo API: GET /v3/users.

Input Schema

{
  "type": "object",
  "properties": {
    "company_id": {
      "description": "Only users of this Enerflo company id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "user_role": {
      "description": "Only users with this role.",
      "type": "string",
      "enum": [
        "callcenter",
        "callcentermanager",
        "company",
        "dealapproval",
        "learnupon",
        "officeadmin",
        "ops",
        "projectmanager",
        "regionalmanager",
        "agent",
        "manager",
        "scheduler",
        "setter",
        "sitesurveyor",
        "solardesigns",
        "solarinstaller",
        "subcontractor",
        "supercompany",
        "surveyor"
      ]
    },
    "pageSize": {
      "description": "Records per page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enerflo_get_user(user_id)

Get one user by Enerflo user id. Enerflo API: GET /v3/users/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Enerflo user id (from enerflo_list_users)."
    }
  },
  "required": [
    "user_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enerflo_list_customers(search, page, pageSize)

List customers and leads. The search term matches name, email or phone. Use pageSize and page for large lists. Enerflo API: GET /v1/customers.

Input Schema

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Search text for name, email or phone.",
      "type": "string"
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "pageSize": {
      "description": "Records per page (1-100). Always set it: without it the API tries to return everything.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enerflo_get_customer(customer_id)

Get one customer by Enerflo customer id. Enerflo API: GET /v3/customers/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Enerflo customer id (from enerflo_list_customers)."
    }
  },
  "required": [
    "customer_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enerflo_list_customer_notes(customer_id)

List all notes of a customer. Enerflo API: GET /v3/customers/{id}/notes.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Enerflo customer id."
    }
  },
  "required": [
    "customer_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enerflo_list_customer_appointments(customer_id)

List all appointments of a customer. Enerflo API: GET /v3/customers/{id}/appointments.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Enerflo customer id."
    }
  },
  "required": [
    "customer_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enerflo_list_customer_tasks(customer_id, page, pageSize)

List the tasks of one customer. Enerflo API: GET /v1/tasks/{customerId}.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Enerflo customer id."
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "pageSize": {
      "description": "Records per page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "customer_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enerflo_list_installs(per_page, page, sort_by, filter_field, filter_operator, ...)

List install projects (default 25 per page, newest first). Optional single filter on one field, for example status_name eq 'Permitting'. Enerflo API: GET /v3/installs.

Input Schema

{
  "type": "object",
  "properties": {
    "per_page": {
      "description": "Records per page (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 200
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "sort_by": {
      "description": "Field to sort by; default order is descending. Prefix with '-' for ascending, for example '-created_at'.",
      "type": "string"
    },
    "filter_field": {
      "description": "Field to filter on.",
      "type": "string",
      "enum": [
        "id",
        "agent_user.email",
        "agent_user.name",
        "company.name",
        "created_at",
        "customer.email",
        "customer.id",
        "customer.name",
        "customer.phone",
        "customer.state",
        "customer.city",
        "customer.zip",
        "customer.lead_source",
        "current_milestone.title",
        "last_completed_milestone.title",
        "deal_type",
        "epc_company.name",
        "loan.lender",
        "office.name",
        "panel_count",
        "progress",
        "project_age",
        "setter_user.email",
        "setter_user.name",
        "status_name",
        "system_size",
        "task_count",
        "utility.company.name"
      ]
    },
    "filter_operator": {
      "description": "Filter operator (default eq).",
      "type": "string",
      "enum": [
        "contains",
        "doesnotcontain",
        "endswith",
        "eq",
        "gt",
        "gte",
        "in",
        "isempty",
        "isnotempty",
        "isnullorempty",
        "isnotnullorempty",
        "isnull",
        "isnotnull",
        "lt",
        "lte",
        "neq",
        "startswith"
      ]
    },
    "filter_value": {
      "description": "Filter value.",
      "type": "string"
    },
    "report_id": {
      "description": "Id of a saved install report to apply.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enerflo_get_install(install_id)

Get one install project: company, customer, milestones and uploaded files. Enerflo API: GET /v3/installs/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "install_id": {
      "type": "string",
      "minLength": 1,
      "description": "Install id (from enerflo_list_installs)."
    }
  },
  "required": [
    "install_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enerflo_find_install(customer_id, survey_id)

Find the install record of a customer. Give exactly one of customer_id or survey_id. Enerflo API: GET /v1/search/find_install.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "description": "Enerflo customer id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "survey_id": {
      "description": "Enerflo survey id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enerflo_list_install_notes(epc_install_id, author_email, created_after, created_before, days, ...)

List install notes of the company, newest first, with optional filters. Enerflo API: GET /v3/installs/notes.

Input Schema

{
  "type": "object",
  "properties": {
    "epc_install_id": {
      "description": "Only notes of this install id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "author_email": {
      "description": "Only notes by this author email.",
      "type": "string"
    },
    "created_after": {
      "description": "Only notes created after this date-time.",
      "type": "string"
    },
    "created_before": {
      "description": "Only notes created before this date-time.",
      "type": "string"
    },
    "days": {
      "description": "Only notes of the last N days.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "pageSize": {
      "description": "Records per page (default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enerflo_list_tasks(orderBy, orderDir, pageSize, page, filter_field, ...)

List tasks of the whole company. Optional single filter, for example completed eq 0. Enerflo API: GET /v3/tasks/all.

Input Schema

{
  "type": "object",
  "properties": {
    "orderBy": {
      "description": "Sort field (default created_at).",
      "type": "string",
      "enum": [
        "created_at",
        "customer_id",
        "user_id",
        "due_date",
        "completed"
      ]
    },
    "orderDir": {
      "description": "Sort direction (default desc).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "pageSize": {
      "description": "Records per page (default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "filter_field": {
      "description": "Field to filter on.",
      "type": "string",
      "enum": [
        "completed",
        "completed_at",
        "customer.first",
        "customer.id",
        "customer.last",
        "customer.name",
        "created_at",
        "due_date",
        "user_id"
      ]
    },
    "filter_operator": {
      "description": "Filter operator (default eq).",
      "type": "string",
      "enum": [
        "contains",
        "doesnotcontain",
        "endswith",
        "eq",
        "gt",
        "gte",
        "in",
        "isempty",
        "isnotempty",
        "isnullorempty",
        "isnotnullorempty",
        "isnull",
        "isnotnull",
        "lt",
        "lte",
        "neq",
        "startswith"
      ]
    },
    "filter_value": {
      "description": "Filter value.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enerflo_add_customer_note(customer_id, note)

WRITE: add a note to a customer record. Each call creates a new note (not idempotent). Enerflo API: POST /v3/customers/{id}/notes.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Enerflo customer id."
    },
    "note": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000,
      "description": "The note text."
    }
  },
  "required": [
    "customer_id",
    "note"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enerflo_add_install_note(install_id, note, customer_facing, milestone_id)

WRITE: add a note to an install project. Each call creates a new note (not idempotent). Set customer_facing to true only when the customer may read it in the customer portal. Enerflo API: POST /v3/installs/{id}/notes.

Input Schema

{
  "type": "object",
  "properties": {
    "install_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Install id (from enerflo_list_installs)."
    },
    "note": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000,
      "description": "The note text."
    },
    "customer_facing": {
      "description": "true = visible to the customer in the portal (default false).",
      "type": "boolean"
    },
    "milestone_id": {
      "description": "Optional milestone id to link the note to.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "install_id",
    "note"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enerflo_add_lead(first_name, last_name, address, unit, city, ...)

WRITE: create a customer/lead in Enerflo. Each call may create a new record (not idempotent): search with enerflo_list_customers first to avoid duplicates. Enerflo API: POST /v1/partner/action/lead/add.

Input Schema

{
  "type": "object",
  "properties": {
    "first_name": {
      "type": "string",
      "minLength": 1,
      "description": "First name."
    },
    "last_name": {
      "type": "string",
      "minLength": 1,
      "description": "Last name."
    },
    "address": {
      "description": "Street address.",
      "type": "string"
    },
    "unit": {
      "description": "Unit or apartment.",
      "type": "string"
    },
    "city": {
      "description": "City.",
      "type": "string"
    },
    "state": {
      "description": "State code, for example NV.",
      "type": "string"
    },
    "zip": {
      "description": "ZIP code.",
      "type": "string"
    },
    "email": {
      "description": "Email address.",
      "type": "string"
    },
    "mobile": {
      "description": "Mobile phone number.",
      "type": "string"
    },
    "lead_source": {
      "description": "Lead source name.",
      "type": "string"
    },
    "lead_status": {
      "description": "Lead status name.",
      "type": "string"
    },
    "office_name": {
      "description": "Name of the office that owns the lead.",
      "type": "string"
    },
    "assign_to_email": {
      "description": "Email of the user to assign the lead to.",
      "type": "string"
    },
    "add_note": {
      "description": "Note to add to the lead.",
      "type": "string"
    },
    "integration_record_id": {
      "description": "Your own external id for the record.",
      "type": "string"
    }
  },
  "required": [
    "first_name",
    "last_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded20 tools