Products & tools
At a glance: hdls is a portfolio of 37 headless SaaS backends — CRM, Support, Billing, Inventory, and more — that you operate entirely from your AI assistant over MCP. Connect once to the concierge to discover and install what you want, then connect your assistant to each product's own endpoint to call its purpose-built, named tools (create_account, search_accounts, summarize_account, …). Every product can be tailored with custom fields without ever touching the schema.
The flagship trio most workspaces start with is CRM, Support, and Contacts — but all 37 install the same way.
New here? Start with Getting connected to link your assistant, then come back to pick your products.
Looking for one product in depth? Every product has its own reference page — jump straight to it from the catalog below.
💬 Just ask
- "What can hdls do? Show me the products I can turn on."
- "Turn on the CRM and the helpdesk for my workspace."
You don't call these tools yourself — just tell your assistant; the technical reference below is for when you want the details.
The mental model
| Concept | What it is |
|---|---|
| Workspace | Your tenant. One isolated world of data. |
| Product | A backend you install into your workspace (CRM, Support, …). Each has a slug like crm. |
| Concierge | The control plane at https://hdls.ai/api/mcp. Discover, install, invite, find skills. |
| Product endpoint | Where you do the actual work: https://hdls.ai/api/mcp/<slug> (e.g. /api/mcp/crm). |
| Named tools | Each product exposes verbs you call directly — create_account, move_deal_stage, etc. |
Two things are always true:
- You never pass a tenant_id. Your credential is pinned to one workspace, and isolation is enforced automatically by Postgres row-level security.
- Auth is one-click. Connect via OAuth 2.1 — no API keys to paste. (Scoped API keys exist for server-to-server jobs.) For more on how isolation and auth work, see Security & trust.
Roles
Actions are gated by your role: reader < member < admin < owner. Where a tool is admin- or owner-only, it's called out below. To add people and set their roles, see Teams.
Discovering products
You don't have to know slugs up front. Connect your assistant to the concierge at https://hdls.ai/api/mcp, then let it discover the catalog.
list_products — the whole catalog (any role)
Returns every product with its description, its named tools, its dedicated endpoint, and an installed flag for your workspace.
Tool: list_products
Arguments: {}
Each entry comes back like this:
{
"slug": "crm",
"name": "hdls CRM",
"category": "Customer relationship management",
"installed": true,
"endpoint": "https://hdls.ai/api/mcp/crm",
"tools": ["create_account", "search_accounts", "summarize_account", "..."]
}
That one call is your whole capability map — you can see what every product can do without connecting to any of them.
describe_product — one product in depth (any role)
Tool: describe_product
Arguments: { "slug": "crm" }
Returns the product's endpoint, installed flag, and a tools array of { name, description }, plus a how_to_use hint telling you whether you still need to install it.
install_product — enable it (admin/owner only)
Tool: install_product
Arguments: { "slug": "crm" }
- Admin or owner only. Members and readers won't see this tool.
- Idempotent — installing an already-installed product is a no-op.
- Installing is instant: it records that your workspace uses the product, and its named tools become reachable at
/api/mcp/<slug>. - Then connect. Point your MCP client at the product's endpoint (same OAuth, no new login) to actually call its tools. Installing does not add the product's tools to the concierge connection.
To remove a product later, uninstall_product({ "slug": "crm" }) — owner only. Uninstalling never deletes data; it just stops your workspace using the product.
💬 Just ask
- "Install the CRM, then connect me to it so I can start adding accounts."
- "Which products do I already have turned on?"
The catalog
hdls ships 37 products. Each links to its full reference page. list_products is always the authoritative, live source for what exists right now.
Customer & revenue
| Product | Slug | What it manages |
|---|---|---|
| hdls CRM | crm | Accounts, contacts, deals, and activity timelines (replaces Salesforce, HubSpot) |
| hdls Contacts | contacts | Detailed people records with emails, phones, notes, and lists |
| hdls Success | csm | Accounts, health scores, success plans, and touchpoints |
| hdls Support | support | Tickets, conversations, and a knowledge base (replaces Zendesk, Intercom) |
| hdls Feedback | feedback | Feature requests, votes, and roadmap |
| hdls Reviews | reviews | Reviews, ratings, and responses |
| hdls Give | donations | Donors, donations, and campaigns |
Sales, contracts & finance
| Product | Slug | What it manages |
|---|---|---|
| hdls Billing | billing | Customers, subscriptions, and invoices |
| hdls Contracts | contracts | Contracts, clauses, and signatures |
| hdls Sign | esign | Envelopes, signers, and signatures |
| hdls Procure | procurement | Purchase orders, vendors, and approvals |
| hdls Expenses | expenses | Expenses, reports, and approvals |
Operations
| Product | Slug | What it manages |
|---|---|---|
| hdls Inventory | inventory | Items, stock levels, and locations |
| hdls Assets | assets | Assets, assignments, and maintenance |
| hdls Fleet | fleet | Vehicles, maintenance, and inspections |
| hdls Field | fieldservice | Jobs, technicians, and site visits |
| hdls Scheduling | scheduling | Availability, event types, and bookings |
| hdls ITSM | itsm | Incidents, changes, problems, and CIs |
| hdls PIM | pim | Products, attributes, and categories |
People & teams
| Product | Slug | What it manages |
|---|---|---|
| hdls People | hr | Employees, time off, and org structure |
| hdls Hire | ats | Candidates, jobs, and interview feedback |
| hdls Learn | lms | Courses, lessons, and enrolments |
| hdls Members | memberships | Members, plans, and access |
| hdls Goals | okrs | Objectives, key results, and check-ins |
| hdls Tasks | tasks | Tasks, projects, and comments |
| hdls Time | timetracking | Time entries, timesheets, and approvals |
| hdls Chat | chat | Channels, messages, members, and cross-org connections |
Content & knowledge
| Product | Slug | What it manages |
|---|---|---|
| hdls Content | cms | Content entries, types, and assets |
| hdls Docs | docs | Pages, spaces, and links |
| hdls Drive | drive | Folders, files, shares, and versions |
| hdls Forms | forms | Forms, questions, and submissions |
| hdls Bookmarks | bookmarks | Folders and saved links |
| hdls Skills | skills | Folders, skills, versions, and shares |
Data, events & automation
| Product | Slug | What it manages |
|---|---|---|
| hdls Analytics | analytics | Events, users, and funnels |
| hdls Events | events | Events, streams, and webhooks |
| hdls Workflows | workflows | If-this-then-that rules, actions, and run history |
Governance
| Product | Slug | What it manages |
|---|---|---|
| hdls Comply | compliance | Controls, evidence, and audits |
The tool grammar (learn it once)
Every product's named tools follow the same verb_noun grammar, so once you know one product the rest read the same way:
| Pattern | Meaning |
|---|---|
create_<noun> | Create a new record |
update_<noun> | Update an existing record by id |
search_<nouns> / list_<nouns> | Search by free-text and/or column filters (tenant-scoped, paginated) |
move_<noun>_stage | Advance a record through its pipeline (sets stage) |
log_activity | Append to the append-only activity timeline |
summarize_<noun> | Fetch a record plus its recent activity in one call |
Products also add a few purpose-built verbs of their own — assign_asset, record_donation, request_signature, find_slots, and so on — listed in full on each product's reference page.
Worked example: the CRM
Install the CRM, connect to https://hdls.ai/api/mcp/crm, and create your first record. The headline entity is the account — create it first, then hang contacts and deals off it.
Tool: create_account
Arguments: { "name": "Northwind Traders", "domain": "northwind.example" }
You never pass an owner or tenant; those are stamped for you. For the full ten-tool walkthrough — updating, searching, moving a deal through its pipeline, logging activity, and reading it all back with summarize_account — see the hdls CRM reference.
Custom fields: tailor a product without changing its schema
Need a field hdls doesn't ship — say a renewal_likelihood score on accounts? Add it as a custom field. The value lives alongside the record under its data object; you set and read it through the normal record tools. No migration, no DDL.
These three tools are available on every product endpoint:
list_custom_fields(reader+) — see every team field plus your own personal fields.add_custom_field(member+ for personal; admin+ for team) — define a field with atypeoftext | number | boolean | date | select.scopedefaults topersonal(only you see it).promote_custom_field(admin/owner) — share a personal field with the whole workspace.
Set a custom field's value with a normal update_<noun> call:
Tool: update_account
Arguments: { "id": "<account-id>", "values": { "data": { "renewal_likelihood": 82 } } }
Gotcha: custom fields are a managed-platform feature. They're available on hdls-hosted products; a bring-your-own-database connection doesn't have them.
💬 Just ask
- "Add a renewal_likelihood score to my accounts and set Northwind's to 82."
- "What custom fields do we have on contacts?"
The generic engine (escape hatch)
The named product tools cover day-to-day work cleanly. When you need something lower-level — a raw query or an ad-hoc insert — a generic engine lives at the concierge endpoint https://hdls.ai/api/mcp as the low-level fallback. It exposes record-level tools such as:
| Tool | What it does |
|---|---|
query_records | Query a table by free-text and/or filters |
insert_record | Insert a row |
Same automatic tenant isolation applies — you still never pass a tenant_id. Reach for these only when a named product tool doesn't fit; for normal work, the per-product tools are faster and self-describing. The product endpoints (/api/mcp/<slug>) deliberately do not expose these generic tools — they live only on the concierge endpoint.
Quick reference
| You want to… | Connect to | Call |
|---|---|---|
| See every product and its tools | …/api/mcp (concierge) | list_products |
| Inspect one product in detail | …/api/mcp (concierge) | describe_product |
| Enable a product (admin/owner) | …/api/mcp (concierge) | install_product |
| Do CRM work | …/api/mcp/crm | create_account, search_accounts, move_deal_stage, summarize_account, … |
| Add your own field | any …/api/mcp/<slug> | add_custom_field |
| Invite a teammate | …/api/mcp (concierge) | invite_teammate |
| Raw query / insert (fallback) | …/api/mcp (concierge) | query_records, insert_record |