1. Create a key in Warmd
Open Settings → Connections → Your AI agent and click Connect Muse. Pick how much your agent may do:
- Read only: Your agent can answer questions about your workspace but change nothing.
- Read & organize (recommended): Your agent can keep your CRM tidy and draft replies, but every message still leaves from your Inbox.
- Full access: Your agent can also send approved drafts and book appointments for you.
Warmd shows the key once. Keep that screen open for step 2.
2. Store the key in Muse
In Muse, open the Secure Credentials Store and save the key under the name WARMD_API_KEY. Don’t paste the key into the chat: Muse’s Sentinel swaps the real key in at the network edge, so the agent itself never sees it. If a key does end up in a conversation, disconnect it in Warmd and create a fresh one.
3. Tell Muse to build the connector
Paste this message into Muse:
Build a custom connector for Warmd so you can work in my Warmd workspace as me. The connector brief is at https://warmd.ai/connectors/muse.md. Read all of it. My key is in your Secure Credentials Store as WARMD_API_KEY; send it as "Authorization: Bearer". Connect, call workspace.me to confirm who you are acting as, try inbox.needs_you and leads.search, then save the integration as a reusable skill named "Warmd". Never paste the key into our chat.
Muse reads the brief, builds and tests the connection, and saves it as a skill. When it asks to reach warmdapi-production.up.railway.app, allow it as a standing permission. Then try: “What needs me in Warmd today?”
What Muse can do in Warmd
35 tools, grouped below. Each one is the same action you could take in the app, checked against your own permissions every time.
Workspace
- Who am I: Call this first. Returns the person you are acting for (name, email, role), their workspace (business name, timezone), which scopes this key holds and which permissions the person has. Use the timezone for every date you show them.
Inbox
- What needs a human: Everything waiting on the person right now: conversations Warmd’s AI handed over (taken_over), strangers who texted or called in (new_strangers), anonymous website chats (anonymous_intake), and AI-drafted replies awaiting approval (drafts_awaiting_approval). This is the morning check-in and the "anything urgent?" answer.
Leads
- Find leads: Find leads by name, phone digits or email fragment, and/or filter by status, age or ownership. Returns only leads the person may see, newest first. Search BEFORE creating a lead so you never add a duplicate.
- One lead in depth: A single lead: contact fields, status, owner, the conversation summary and latest messages, what the Brain remembers about them, and their open deals. Use after leads.search when the person asks about someone specific.
- Lead activity timeline: The unified history of one lead, newest first: texts, calls, notes, tasks, bookings, deals, consent and compliance events. Answers "what happened with X?" and "why did we stop texting Y?".
- Lead sources: The workspace’s lead sources (how leads arrive: a form, a purchased list, referrals, Zapier…) with their consent classification. leads.create needs a source_id, because the source is the record of how the person agreed to be contacted. If none fits, ask the person which source to use rather than guessing.
- Add a lead (changes a record): Add a new lead. Requires a phone number and a source_id (see leads.sources). Search first: an existing phone number returns the existing lead instead of a duplicate. ⚠ If the workspace runs a speed-to-lead campaign, Warmd may text the new lead within seconds, exactly as it would for a lead from any other source; say so when you report back.
- Edit a lead (changes a record): Correct a lead’s name, email, state or custom fields. The phone number, status and source cannot be changed here on purpose: the phone is the identity a consent record attests to, and status moves happen through conversations, bookings and deals. An empty string clears a field; custom_fields merge.
- Add a note (changes a record): Leave a note on a lead’s record, attributed to the person you act for. Use it for anything they tell you about a lead that Warmd should keep ("spoke at the game, wants a quote in March").
Conversations
- Read a conversation: The recent messages between the business and one lead, oldest to newest, with who sent each (the lead, a person, or Warmd’s AI), plus the running summary and whether the AI is paused on this lead. Read this before drafting a reply.
- Draft a text reply (changes a record): Write a text message to a lead as a DRAFT. Nothing is sent: the draft appears in the person’s Warmd Inbox for them to approve, edit or discard, or you can send it with drafts.send if this key holds the send scope and the person told you to. Keep it short (an SMS), in the business’s voice, never quote prices you were not given.
Drafts
- Drafts awaiting approval: Every drafted text still waiting on a human (written by Warmd’s AI or by you), with the lead it is for and when it expires. Read a draft back to the person before sending it.
- Send an approved draft (reaches a lead): Send a pending draft to the lead as written. Only when the person has explicitly approved THAT draft. The text leaves through Warmd’s compliance Gate, which may refuse (opted out, no consent, outside legal hours). Report the outcome honestly rather than retrying. Sends an SMS from the business’s number.
- Discard a draft (changes a record): Throw away a pending draft the person does not want sent. Nothing reaches the lead.
Tasks
- My open tasks: The person’s open follow-up tasks (and unassigned ones on leads they can see), with due dates and the lead each is about. Overdue first.
- Create a task (changes a record): Create a follow-up task on a lead, assigned to the person you act for. Use an absolute due_at (ISO 8601 with offset) computed in their timezone; omit it for "at some point".
- Complete a task (changes a record): Mark a task done. The completion time is stamped by Warmd, not chosen by you.
Deals
- Pipeline by stage: Open deals grouped by stage with counts and totals (integer cents; unpriced deals are counted separately, never as zero). The "how is my pipeline?" answer.
- Create a deal (changes a record): Open a deal on a lead. value_cents is INTEGER CENTS ($1,200 is 120000); leave it out if the person has not priced it. Do not invent a value.
- Update a deal (changes a record): Move a deal to another stage (new, qualified, proposal, negotiation, closing), change its value or title, or close it by setting status to won or lost (open | won | lost).
Calendar
- Upcoming appointments: Booked appointments over the next N days (default 7), each with the lead and a time already rendered in the workspace timezone.
- Available slots: Times the business can be booked, honouring working hours, the connected calendar’s busy times and existing bookings. Offer these to the person; book one with calendar.book using its start_iso exactly.
- Book an appointment (reaches a lead): Book a lead into a slot from calendar.slots. Creates the appointment, adds it to the connected calendar, and texts the lead a confirmation through the compliance Gate. Only with the person’s explicit go-ahead for that lead and that time.
- Move an appointment (reaches a lead): Move a booked appointment to a new start (from calendar.slots). Updates the external calendar event and notifies the lead.
- Cancel an appointment (reaches a lead): Cancel a booked appointment and remove its calendar event. Irreversible, so confirm with the person first.
Campaigns
- List campaigns: The workspace’s outreach campaigns with their status (draft, running, paused, completed…) and playbook.
- Campaign performance: How one campaign is doing: enrolled, contacted, engaged, booked, and what the Gate blocked.
- Pause a campaign (changes a record): Stop a running campaign from sending further touches. Safe and reversible.
- Resume a campaign (reaches a lead): Restart a paused campaign. Touches to enrolled leads resume, so this needs the send scope and the person’s explicit instruction.
Automations
- List automations: The workspace’s automations (flows that act when something happens to a lead) with their trigger, their status (draft, active, paused) and how many people are in each. Answers "what is running?".
Forms
- List forms: The workspace’s lead capture forms with their status (draft, published, disabled) and public link. Answers "which forms do we have?" and gives the form to name when sending one.
Reports
- Funnel summary: The workspace funnel over the last N days (default 7): leads in, contacted, engaged, qualified, booked, showed, deals won, speed-to-lead p50/p95 in seconds, and a per-day series. Quote the numbers as given; do not compute rates the result does not contain.
- Today’s briefing: Warmd’s most recent morning briefing for the workspace: a short narrative plus the numbers it was written from. Null before the first one is written. Good opening for a daily check-in.
The Brain
- Search the Brain: Search the business’s own knowledge base (its documents, website, FAQs and confirmed memories) for an answer. Returns passages with the file they came from and a low_confidence flag; when it is low, say you are not sure rather than filling the gap yourself.
- Propose a memory (changes a record): Suggest something the Brain should know about the business (kind: fact | preference | instruction | style) or about one lead (pass lead_id). It lands as a PROPOSAL the owner confirms inside Warmd. Nothing you say becomes the business’s policy on its own. Tell the person it is waiting for their confirmation.
How it stays safe
- It acts as you, never above you. The key carries your role. A viewer’s agent is a read-only agent, whatever it asks for.
- A reply is a draft first. Anything your agent writes to a lead lands in your Inbox for you to approve, edit or discard. Sending it, booking a call, or resuming a campaign needs the “Reach leads” permission, and the compliance check still has the last word on every send.
- Facts are proposals. “Tell Warmd we close at 1pm on Fridays” becomes a suggestion you confirm in the Brain, labelled as coming from your agent.
- Everything is recorded. Every call appears under Settings → Connections, and the record cannot be edited. Disconnect the key any time; the agent stops instantly.
Using another agent, or Muse Code?
The same tools are available over the Model Context Protocol at https://warmdapi-production.up.railway.app/v1/mcp (streamable HTTP; send the key as Authorization: Bearer). For a hand-built client, the OpenAPI document describes every call, and the connector brief is the same document Muse reads.