marketsharp-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NODE_ENV | No | Node environment. Must be 'development' when MCP_ALLOW_INSECURE_DEV is enabled; with any other value the server refuses to start in that mode. | |
| AUTH_MODE | No | Authentication mode: 'gateway' (the default when unset) reads credentials only from x-marketsharp-* headers; 'env' reads MARKETSHARP_* from the environment for a single tenant. Any other value refuses to start. | gateway |
| MCP_TRANSPORT | No | Transport mode. The Docker image defaults to 'http'; use 'stdio' for a local stdio server. | |
| MCP_ALLOWED_HOSTS | No | Comma-separated list of Host header hostnames accepted by /mcp. Disabled when unset. | |
| CONDUIT_S2S_SECRET | No | Server-to-server secret required for HTTP transport (at least 32 characters, not a known or placeholder-looking value, not a repeated pattern, and at least 8 distinct characters). HTTP refuses to start without it unless MCP_ALLOW_INSECURE_DEV is enabled. | |
| MARKETSHARP_API_KEY | Yes | MarketSharp API key. Created in Admin → Apps & Add-ons Setup → API maintenance → Create New API Key. Required for env authentication mode. | |
| MARKETSHARP_API_SECRET | Yes | MarketSharp API secret issued with the API key. If there is no secret, MarketSharp support must enable API access. Required for env authentication mode. | |
| MARKETSHARP_COMPANY_ID | Yes | MarketSharp Company ID. Shown under your username, top right in MarketSharp. Required for env authentication mode. | |
| MCP_ALLOW_INSECURE_DEV | No | Set to 1 to allow HTTP to start without CONDUIT_S2S_SECRET on 127.0.0.1 only; requires NODE_ENV=development. Must never be set in a deployment. | |
| MARKETSHARP_EMPLOYEE_ID | No | Optional MarketSharp employee ID. Needed by the contact, inquiry and job search tools and marketsharp_notes_list; actions use that employee's permissions. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| logging | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| marketsharp_companies_listA | List the MarketSharp companies this API key can access, with their IDs. |
| marketsharp_companies_getA | Get this connection's MarketSharp company profile (name, address, time zone and settings). |
| marketsharp_search_globalA | Search the company for contacts, inquiries (leads) and jobs by name, address, email, phone or job number. Start here when you only have a name or phone number. |
| marketsharp_contacts_getA | Get one contact (customer or prospect) by contact ID: name, addresses, emails, phone numbers and do-not-contact flags. |
| marketsharp_contacts_searchA | Find contacts by name, business, email, phone or address (MarketSharp QuickFind). Needs an Employee ID on the connection, and runs with that employee's MarketSharp permissions. |
| marketsharp_contacts_listB | List contacts page by page, optionally only those changed since a date or with appointments in a date range or for one salesperson. |
| marketsharp_inquiries_getA | Get one inquiry (lead) by ID: date, status, lead sources, product interests, address and notes. |
| marketsharp_inquiries_listB | List inquiries (leads) page by page, optionally only those changed in a date range, with appointments in a date range, or for one salesperson. |
| marketsharp_inquiries_searchA | Find inquiries (leads) by the contact's name, business, email, phone or the inquiry address (QuickFind). Needs an Employee ID on the connection, and runs with that employee's MarketSharp permissions. |
| marketsharp_inquiries_list_by_contactB | List every inquiry (lead) for one contact. |
| marketsharp_inquiry_statuses_listC | List the company's inquiry (lead) statuses. |
| marketsharp_inquiry_notes_listA | List the notes on an inquiry (lead), or on the job created from it. Needs MarketSharp's View Opportunity Note permission. |
| marketsharp_appointments_getA | Get one appointment by ID: time, salespeople, type, result and address. |
| marketsharp_appointments_listA | List appointments page by page by appointment date range, change date range, salesperson or inquiry. Use this for "what's on the schedule". |
| marketsharp_appointments_list_by_contactB | List every appointment for one contact. |
| marketsharp_appointment_results_listA | List the company's active appointment results (e.g. Sold, No Sale), or the result reasons. |
| marketsharp_jobs_getA | Get one job by ID: name, type, status, site address, sale and completion dates, and contract total. |
| marketsharp_jobs_searchA | Find jobs by job name or number, or by the contact's name, business, email, phone or address (QuickFind). Needs an Employee ID on the connection, and runs with that employee's MarketSharp permissions. |
| marketsharp_opportunities_listA | List opportunities (jobs and leads) changed since a date, with job numbers, sale and contract dates, contract totals, contract status and balance due. Returns at most numberOfRecords (max 1000) with no paging. If you get exactly that many, the list may be incomplete: raise numberOfRecords (up to 1000), and say the result may be incomplete if it is already 1000. Needs MarketSharp's View Opportunity permission. |
| marketsharp_notes_listA | List the notes for a contact: all types, or one type such as ContactNote, Appointment, Inquiry or Job. Needs an Employee ID on the connection, and runs with that employee's MarketSharp permissions. |
| marketsharp_activity_types_listA | List the company's activity types (e.g. Call, Email, Follow Up). |
| marketsharp_employees_listB | List employees (salespeople, project managers and staff) with their IDs, page by page. |
| marketsharp_lead_sources_listA | List the company's primary lead sources, or the secondary lead sources under one primary source. |
| marketsharp_product_interests_listA | List the company's product interests (e.g. Windows, Siding), or the ones attached to one inquiry (lead). Needs MarketSharp's View Product Interest permission. |
| marketsharp_divisions_listC | List the company's divisions. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 25 tools
Most tools map to a distinct resource+action (contacts_get vs contacts_list vs appointments_list_by_contact), and the by_contact variants are clearly separated from the paged listers. The main overlap is the search family: search_global, contacts_search, inquiries_search and jobs_search all do QuickFind-style lookups, though descriptions do steer agents to start with search_global and note the Employee ID requirement on the others. notes_list vs inquiry_notes_list is also a subtle boundary but is explained.
Nearly everything follows marketsharp_<resource>_<verb> with a shared prefix, which is highly predictable. Minor deviations: search_global is verb-first rather than resource-first, and some resources are singular where others are plural (inquiry_statuses_list, inquiry_notes_list, appointment_results_list vs contacts_list). notes_list is also vaguer than the pattern implies (it is contact-scoped notes).
At 25 tools this is at the upper bound, but the domain is broad (contacts, inquiries, appointments, jobs, opportunities, notes) and seven of the tools are small reference-data lookups (statuses, results, activity types, lead sources, product interests, divisions, employees) that genuinely earn their place. It is heavy but not padded.
The read surface is thorough across every major entity, but the server appears read-only: there is no create, update or delete for contacts, inquiries, appointments, jobs or notes, which is a notable gap for a CRM. Job enumeration is also awkward — there is jobs_get and jobs_search but no jobs_list, so listing jobs depends on opportunities_list, which is change-date driven and capped at 1000 records with no paging.