mavra
Skill7 starsChanged 23 days agoMITView on GitHub
Use when the user wants to manage their Mavra account through an AI client — creating or editing AI agents, tools, kanbans, CRM records, channels, webhooks, contacts, sessions, or messages via the Mavra MCP server. Triggers: "Mavra", "my CRM", "my agents", "manage my pipeline", connecting the Mavra MCP server.
In this repositoryOne other file it gives its agents.
- skills/mavra/references/agents.mdAGENTS.md
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 2 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 38
Leave the OAuth client ID/secret empty, because the server registers clients itself.
- Very specific: line 42
Claude Code: run /mcp, choose mavra, then Authenticate.
- Very specific: line 48
Call whoami to confirm the connection and see the user's role and company.
- Very specific: line 72
Call manage_agents with the above.
- Very specific: line 92
Create with manage_crm_records action: "create" (title required):
- Very specific: line 125
Create/edit channels with manage_channels (requires name, type, identifier, defaultAgentId).
- Distinctive: line 142
Read these on demand for complete, typed detail:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Managing Mavra via MCP
Mavra is a CRM + AI-agent platform. This skill lets you manage a Mavra account by chatting with your AI client, through the Mavra MCP server.
1. Connect (once)
The Mavra MCP server lives at https://mcp.maiacompany.io/mcp (development:
https://mcp-dev.maiacompany.io/mcp). It uses OAuth: the client opens a browser,
the user signs in to Mavra and approves access, and the client handles tokens from
then on. Never ask the user for their password, and never put credentials in tool
arguments.
Register the server by running the bundled script with Node (macOS, Windows, Linux):
node "${CLAUDE_SKILL_DIR}/scripts/connect.mjs" # production
node "${CLAUDE_SKILL_DIR}/scripts/connect.mjs" --dev # development${CLAUDE_SKILL_DIR} is set by Claude Code. The script replaces an existing mavra
server, so it also moves older setups off the legacy api.maiacompany.io/mcp URL.
Other clients: add a remote (HTTP / streamable HTTP) MCP server with the URL above. On claude.ai or Claude Desktop that is Settings → Connectors → Add custom connector. Leave the OAuth client ID/secret empty, because the server registers clients itself.
2. Sign in
- Claude Code: run
/mcp, choosemavra, then Authenticate. A browser tab opens on the Mavra consent page. The user logs in (if needed) and clicks Allow. - claude.ai / Claude Desktop / Cursor / ChatGPT: the client shows a Connect button the first time and runs the same browser flow.
Call whoami to confirm the connection and see the user's role and company.
Headless clients (CI, scripts, clients without a browser) can skip OAuth and send a
Mavra API token as a header, Authorization: Bearer <API_TOKEN>. For Claude Code:
claude mcp add --transport http mavra https://mcp.maiacompany.io/mcp \
--header "Authorization: Bearer <API_TOKEN>"3. Recipes
Each recipe shows the exact arguments to pass. For the full list of tools, actions,
typed request fields, and response shapes, read references/tools.md.
Create an AI agent
{ "action": "create",
"title": "Sales Assistant",
"customPrompt": "You are a helpful sales assistant.",
"contextSize": 4000 }Call manage_agents with the above. contextSize must be between 800 and 128000.
The response includes the new agent's id (use it for get / update / delete). To
turn on guardrails later, call manage_agents action: "update" with agentId plus
guardrailsEnabled: true.
Important — the customPrompt has a special syntax. It is NOT just plain text: Mavra
parses @-decorators and {{variables}} for flows, tool calls, CRM writes, transfers,
follow-ups, and media. To write effective agents, read references/prompt-syntax.md.
Quick taste:
@IF customer asks about pricing [price, cost]
@THEN @Tool(SendPricingGuide)
@ELSE Continue qualifying the lead.
@END
@updateCRM("Sales Pipeline", "status", "Mark 'Qualified' when budget is confirmed")Add and find a CRM record
Create with manage_crm_records action: "create" (title required):
{ "action": "create", "title": "Acme Corp" }The response returns recordId — use it for later get / update / delete. To
search, call search_crm action: "search" with q: "acme".
List sessions and transfer one
manage_sessions action: "list" returns { items: [...] }. To move a conversation to
another agent:
{ "action": "transfer",
"channelId": "CHANNEL_ID", "sessionId": "SESSION_ID",
"targetAgentId": "AGENT_ID" }Configure a webhook
manage_webhooks action: "create" with name, url, and triggerTypes (a string
array):
{ "action": "create",
"name": "CRM events", "url": "https://example.com/hook",
"triggerTypes": ["crm_record_created"] }Channels & WhatsApp
Create/edit channels with manage_channels (requires name, type, identifier,
defaultAgentId). Full WhatsApp (Meta Cloud API) setup is also supported: create a
connection with manage_connections, the channel with manage_channels, then link them
with manage_whatsapp action: "setup". See references/channels.md for the
step-by-step flow.
4. When something goes wrong
- 401 / "Unauthorized" — the connection is not signed in or access was revoked. Ask
the user to re-authenticate (Claude Code:
/mcp→mavra→ Authenticate; other clients: reconnect the connector). Do not ask for their password. - 403 — the logged-in user's role can't perform this action.
- 429 — rate limited: wait the number of seconds in the error message, then retry.
- Validation errors — the message names the missing/invalid field; fix and retry.
Reference
Read these on demand for complete, typed detail:
references/tools.md— every tool, action, typed request field, and response shape.references/prompt-syntax.md— the agentcustomPrompt@-decorator +{{variable}}language (essential for writing agents).references/agents.md— all agent fields, providers/models, guardrails, knowledge base, media, versioning, testing, feedback.references/crm.md— CRM records, custom field types, field groups, statuses, kanbans, filters, search.references/channels.md— channel types, contacts, and the WhatsApp connection setup flow (manage_connections+manage_whatsapp).references/chat-and-settings.md— sessions, messages (send vs send-as-agent vs human reply), chat notes, provider keys, webhooks + event types.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

