Connect your agent (MCP)
Sally exposes its whole product surface — projects, tasks, timesheets, clients, CRM, marketing, commerce, memory, and governance — to AI agents through a first-party hosted MCP endpoint. Any MCP-capable runtime can connect: Claude, ChatGPT, Codex, Cursor, a framework like CrewAI, or your own code. The point is that you shouldn't have to sit inside Sally's web app to use Sally — an agent reads the same brand memory and works under the same permission and approval model as your team.
Sally is runtime-agnostic. "Hermes" is Sally's reference agent runtime, but nothing about the platform is tied to it; any MCP client speaks the same protocol and passes the same checks.
The hosted MCP endpoint
Sally runs a hosted, remote MCP server at:
https://app.usesally.com/mcp
It speaks streamable HTTP and is stateless — there is no session id to manage, so it scales horizontally and every request stands on its own. A session is the standard MCP handshake:
initializenotifications/initializedtools/listtools/call
The /mcp endpoint has its own MCP authentication (it does not use the web session cookie). Whichever way you connect, the credential behind the request resolves to a real Sally account and is bounded by the same customer-account → brand (workspace) → project role and scope checks as the web UI. An agent's reach is never broader than the credential behind it — this is Sally's one permission model for humans and agents. See Core concepts for the full role model.
Connect path 1: OAuth connector (recommended)
The /mcp endpoint is an OAuth-protected MCP resource, so Claude and ChatGPT can add Sally as a one-click connector with no code and no key handling. Point the connector at https://app.usesally.com/mcp and sign in with your Sally account; Sally implements dynamic client registration, the PKCE authorization-code flow, and token refresh, with discovery served from the standard /.well-known/* endpoints. Access tokens are prefixed sallyoauth_.
Because the connector authenticates as you, it inherits exactly your access across brands and projects, and you can revoke it at any time from Sally.
In Claude, open Settings → Connectors → Add custom connector and:
- Name it Sally and set the URL to
https://app.usesally.com/mcp. - Claude registers itself and opens Sally's sign-in — approve access with your Sally account (sign in however you normally do: password, passkey, or SSO; if you're already signed in to Sally in that browser it's one click).
- Sally issues a
sallyoauth_token; the connector appears with Sally's tools and refreshes automatically.
ChatGPT follows the same flow under its connector settings. Because the connector authenticates as you, it inherits exactly your access and can be revoked from Sally at any time.
Connect path 2: Hosted MCP key (terminal / IDE)
For terminal agents, IDE assistants, and MCP clients that don't do OAuth, create a hosted MCP key in Sally under Profile → MCP keys. Keys are prefixed sallymcp_, are shown once, carry read / write / mcp scopes by default, and can be given an expiry. A key can optionally be pinned to a single brand, in which case calls against any other brand are denied.
Send the key as a bearer token against the hosted endpoint:
Authorization: Bearer sallymcp_...
A typical MCP client configuration:
{
"mcpServers": {
"sally": {
"url": "https://app.usesally.com/mcp",
"headers": {
"Authorization": "Bearer sallymcp_..."
}
}
}
}
Account admins can enforce key policy for everyone — required expiry, default and maximum lifetimes, and restricting key creation to admins. See Security. Keys can be revoked at any time.
Connect path 3: ChatGPT connector
ChatGPT can connect two ways. The simplest is the OAuth connector above, which ChatGPT supports directly. Separately, Sally ships an early-access custom-GPT integration: a curated REST facade (/chatgpt/openapi.json) that proxies a subset of Sally's tools as GPT Actions, backed by a per-user ChatGPT connection. This path is a private prototype — contact us if you want to trial it. For most ChatGPT use, prefer the OAuth connector.
Call sally.context first
The fastest way for an agent to get grounded is a single sally.context call. It returns, in one response, the brand's verified memory, active projects, open deals, overdue follow-ups, recent CRM activity, and standing instructions — semantically ranked by the request's intent when embeddings are configured. Sally's guidance to every agent is to call it first in every session, before planning, recommending, or acting.
Two narrower context tools exist for focused work:
project.runtime_context— before working in a project: its summary, statuses, open and blocked tasks, relevant memory, recent activity, pending blockers and approvals, trust policies, and the actions that are safe to auto-run.task.resume_context— before picking up a task: the latest handoff, evidence, open approvals and blockers, decisions, recent comments, and a computed recommended next action.
When finishing or getting stuck, task.handoff.create writes a concise summary, records normalized evidence, optionally raises a blocker or approval request, moves the task, and surfaces a decision brief in the Control Center — so the next agent (or human) resumes instead of restarting.
A sally.context call returns standing instructions, the approval gates, and a snapshot of live brand context — verified memory first, then projects, open deals, and overdue follow-ups:
{
"workspace": { "id": "ws_aurora", "name": "Aurora Coffee", "slug": "aurora-coffee" },
"intent": null,
"standingInstructions": [
"Sally is not the agent and is not a replacement for the agent's master prompt. Sally provides context, memory, documentation surfaces, safe typed tools, approvals, and evidence.",
"For external side effects such as sending, publishing, exporting, deleting, or deploying, Sally exposes approval gates and operational evidence instead of assuming those should happen automatically."
],
"approvalGates": [
"send or schedule marketing messages",
"external outreach",
"contact export",
"deleting or archiving records"
],
"currentContext": {
"memory": [
{ "id": "mem_ratio", "type": "constraint", "title": "House espresso ratio is 1:2 in ~28s", "verified": true, "confidence": 90 },
{ "id": "mem_voice", "type": "brand_voice", "title": "Warm, plain, no hype", "verified": true, "confidence": 80 }
],
"projects": [
{ "id": "prj_launch", "name": "Q3 Product Launch", "updatedAt": "2026-07-23T09:21:00Z" }
],
"openDeals": [
{ "id": "deal_meridian", "title": "Meridian Roasters wholesale", "value": 4200, "currency": "EUR", "nextStep": "Send the wholesale price sheet" }
],
"overdueFollowUps": [
{ "id": "fu_dana", "title": "Follow up with Dana on the 40kg trial", "dueAt": "2026-07-21T09:00:00Z" }
]
},
"recommendedNextTools": ["memory.list", "project.list", "crm.deal.list", "opportunity.list"]
}
The tool catalog
The hosted server advertises about 170 tools, named in dotted resource.verb form, grouped by domain. Every tool carries a title and hints (read-only, destructive, open-world) so connector directories can classify it deterministically. Over the OAuth/ChatGPT connectors the same tools appear underscore-prefixed (for example sally.context is exposed as mcp__sally__sally_context).
- Brand memory & context (~12) —
sally.context,memory.*(create / get / update / list / search, and the meeting-notesmemory.intake→memory.intake.executeflow),brand.ci.*(brand voice / CI),project.runtime_context,task.resume_context. See Memory. - Projects & tasks (~40) —
project.*(create, update, members, statuses),task.*(create, update, move, reorder, labels, todos, comments, archive),comment.add, and the handoff/resume tools above. See Projects & tasks. - Timesheets (~6) —
timesheet.*(add, update, list, report, users). See Timesheets. - CRM (19) —
crm.organization.*,crm.person.*(includingcrm.person.emailfor 1:1 sends),crm.deal.*,crm.activity.*,crm.follow_up.*. See CRM. - Relationships (2) — the cross-brand identity graph, read-only:
relationship.person.list,relationship.organization.list. - Marketing (~85, the largest domain) — contacts and fields, audiences/segments, forms and content gates, campaigns and flows, the email/design builder (start by reading
marketing.design.builder_schema), senders, approvals, and deliveries. See Marketing. - Commerce (~6) — store connectors and the value/loyalty surface. See Connect your store.
- Media (~7) —
media.image.*and marketing media tools for uploading and managing assets. - Workspace & clients (~7) —
workspace.*(list, create, invite) and client records (a client is the same object as a CRM organization). - Governance (~8) —
proposal.*(create, list, get, resolve, execute),opportunity.*(list, recommend, execute). See Governance and Opportunities.
Agent-orchestration internals (agent, agent-job, and agent-run tools) exist but are not advertised in the catalog.
Propose, don't just execute
Agents don't act unchecked. When an agent wants to do something, it submits a typed proposal with evidence; Sally evaluates the brand's trust policy and either auto-executes safe, reversible work or holds risky work for human approval.
- Safe actions — writing memory, notes, tasks, comments, drafts, and handoffs — can auto-run.
- Risky actions —
email.send,newsletter.send,publish.external,data.export,record.delete,code.deploy, and bulk updates — are quarantined for a human decision by design.
Every decision is recorded to an append-only operational-event ledger and the audit log, and an agent's access can be revoked at any time. The relevant tools are proposal.create, proposal.list, proposal.get, proposal.resolve, and proposal.execute. See Governance for trust policies, approvals, blockers, and evidence.
The publishable stdio package
For local, file-config MCP setups Sally also publishes a stdio bridge, sally-mcp on npm. It runs on your machine and talks to the Sally web API using a personal API key (prefixed atpm_) or an MCP key. The hosted /mcp endpoint is the primary, recommended surface; the stdio package remains available for clients that expect a local command rather than a remote URL.
Roadmap
- ChatGPT custom-GPT connector — the GPT Actions facade is an early-access prototype; the OAuth connector is the supported ChatGPT path today.
- External work-item sync — Sally can reference external work items, but only native Sally items are wired end to end; Jira, Linear, and GitHub sync are not yet live.