First-party app
Capsule CRM

Capsule CRM

Manage Capsule CRM parties (people and organisations), opportunities, tasks and account metadata via the Capsule API v2.

stable Customer Relationship Management

About

Capsule CRM ships in the w6w first-party pack. It declares 19 actions, 2 health checks, and the host runs its code in a sandbox that never sees the credential.

App id
io.w6w.capsulecrm
Version
0.1.0
Author
w6w
Licence
MIT
Categories
Customer Relationship Management

Overview

Capsule is a simple, straightforward CRM built around a single core idea: a Party (a person or organisation) with everything else — opportunities, tasks, cases — hung off it. This app covers that model over the Capsule API v2: creating, finding, updating and deleting parties; running opportunities through a sales pipeline (which requires resolving a pipeline’s milestone ids first); and creating and updating tasks linked to a party or opportunity.

Good for syncing contacts and companies from a signup or lead-capture form, keeping a deal’s pipeline stage and value current from an external system, creating follow-up tasks from another tool’s events, or looking up a party by a free-text search before deciding whether to create a duplicate.

Build with Capsule CRM

Three routes to the same 19 actions. The Workflow tab is generated from Capsule CRM's own manifest and carries its real ids, so it is copy-pasteable; the Code and CLI examples are the same call for any action on any app, so every app-specific value in them is a blank you fill in.

List Milestones

milestone-list

List the milestones (pipeline stages) on a specific pipeline.

Create Opportunity

opportunity-create

Create a new opportunity (deal). `party` and `milestone` are required by Capsule — use Party List/Search and Pipeline List/Milestone List to resolve their ids.

Delete Opportunity

opportunity-delete

Permanently delete an opportunity from Capsule.

Get Opportunity

opportunity-get

Show a specific opportunity.

List Opportunities

opportunity-list

List the opportunities (deals) on the Capsule account.

Update Opportunity

opportunity-update

Change an existing opportunity. Only the fields you set are touched.

Create Party

party-create

Create a new person or organisation.

Delete Party

party-delete

Permanently delete a person or organisation from Capsule.

Get Party

party-get

Show a specific person or organisation.

List Parties

party-list

List the people and organisations on the Capsule account.

Search Parties

party-search

Free-text search over people and organisations — the same results as Capsule's own global search bar.

Update Party

party-update

Change an existing person or organisation. Only the fields you set are touched.

List Pipelines

pipeline-list

List the sales pipelines on the Capsule account.

Create Task

task-create

Create a new task, optionally linked to a party or opportunity.

Delete Task

task-delete

Permanently delete a task from Capsule.

List Tasks

task-list

List tasks. Capsule returns only OPEN tasks unless Status is set.

Update Task

task-update

Change an existing task — e.g. mark it completed. Only the fields you set are touched.

Get Current User

user-get-current

Show the user this API token is associated with.

List Users

user-list

List every user on the Capsule account — useful for resolving owner/team ids.

A workflow step names the app and the action, and the editor fills in the connection when you pick one. This is the Step shape from the workflow spec, carrying Capsule CRM's real ids.

{
  "manifestVersion": "2",
  "name": "capsulecrm-example",
  "steps": [
    {
      "id": "milestone-list",
      "uses": {
        "app": "io.w6w.capsulecrm",
        "action": "milestone-list",
        "connection": "conn_YOUR_CONNECTION_ID"
      },
      "with": {
        "pipelineId": "<pipelineId>"
      }
    }
  ]
}

Here are some of the things you can do

  • List Milestones

    read
    milestone-list
  • Create Opportunity

    perform
    opportunity-create
  • Get Opportunity

    read
    opportunity-get
  • List Opportunities

    read
    opportunity-list
  • Update Opportunity

    perform
    opportunity-update

+14 more actions available

Every app-specific value here is a blank you have to fill in. An app action is reached through the connection that authenticates it, so the address is a connection id, not the app id — and connections belong to your account, so a public page cannot know yours. Create one for Capsule CRM, then fill in the three blanks: conn_YOUR_CONNECTION_ID, the action key, and the parameters that action declares. The call itself is real — the shape is transcribed from the studio's own snippet builder, which prints the same kind of blanks — but nothing in it is specific to Capsule CRM. The Workflow tab is where this app's real ids are.

Install
npm install @w6w/sdk
yarn add @w6w/sdk
pnpm add @w6w/sdk
deno add npm:@w6w/sdk
Code
import { W6wClient, isActionRun } from "@w6w/sdk";

// Reads W6W_BASE_URL and W6W_TOKEN from the environment when omitted.
const client = new W6wClient();

const envelope = await client.run({
  urn: "conn_YOUR_CONNECTION_ID",
  action: "milestone-list",
  payload: {
    pipelineId: "<value>",
    // page: "<value>",
    // perPage: "<value>",
  },
});

if (isActionRun(envelope)) console.log(envelope.value);
Install the CLI
npm install -g @w6w/cli
CLI
w6w run conn_YOUR_CONNECTION_ID --action milestone-list --payload '{"pipelineId":"<value>"}'

Give an AI agent Capsule CRM — without giving it Capsule CRM's credentials. One MCP endpoint exposes every app, function and workflow the caller is entitled to, as tools it can discover and run. Access is granted per team while we onboard.

One tool call
{
  "name": "w6w_invoke",
  "arguments": {
    "ref": "app:io.w6w.capsulecrm#milestone-list",
    "input": {
      "pipelineId": "<pipelineId>"
    }
  }
}

Every tool names its target with a single ref. The app: form above doesn't name a connection at all — the host resolves which of the caller's Capsule CRM connections to sign with, and refuses rather than guesses when the answer is ambiguous.

What the agent gets

Credentials it can't read

The token is attached host-side, at the moment of the call. It is never a tool argument, never in the model's context, and never in a transcript — so a prompt injection has nothing to exfiltrate.

A tool surface scoped to the caller

Tools are derived per end user from what that person has actually connected and is entitled to — not one shared bot identity carrying the union of everyone's access.

A durable workflow in one call

Multi-step work runs on the workflow engine and returns a run handle the agent can poll — retries, branching and state survive the conversation that started them.

Health-aware discovery

Capsule CRM's declared health checks are on the surface too, so an agent can tell "the vendor is down" from "your credential expired" before it burns a retry on either.

The MCP surface is part of the hosted platform. Capsule CRM itself is MIT, and the runtime that executes it is source-available (FSL).

Request MCP access

Health checks

Capsule CRM declares its own checks, so its health is a property of the app rather than something the host guesses at.

service

Capsule platform status

Atlassian Statuspage rollup for status.capsulecrm.com. The page's single 'Capsule' component is what this app's API rides on; the unrelated 'Drop Box' email feature is ignored. Unauthenticated and unsigned.

quota

API rate-limit headroom

Per-user hourly allowance remaining, read off the X-RateLimit-* headers on the whoami probe.