agentleFS
DinastIA-UKDinastIA-UK/mavra-mcp-skill/skills/mavra/SKILL.md

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.

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
  1. Distinctive:

    Leave the OAuth client ID/secret empty, because the server registers clients itself.

    line 38
  2. Very specific:

    Claude Code: run /mcp, choose mavra, then Authenticate.

    line 42
  3. Very specific:

    Call whoami to confirm the connection and see the user's role and company.

    line 48
  4. Very specific:

    Call manage_agents with the above.

    line 72
  5. Very specific:

    Create with manage_crm_records action: "create" (title required):

    line 92
  6. Very specific:

    Create/edit channels with manage_channels (requires name, type, identifier, defaultAgentId).

    line 125
  7. Distinctive:

    Read these on demand for complete, typed detail:

    line 142

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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, choose mavra, 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 agent customPrompt @-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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.