Agent access (API + MCP)
Vyro is the sales assistant for real-estate agents and small agencies in France: mandates, viewings, follow-ups, approval before send. CRM + email + SMS. EU-hosted. AI prepares; the human sends.
This page describes how an external agent connects. There is no cookie session on these routes. WhatsApp, rental/lease software, and Gmail/Outlook inbox sync are not shipped.
1. Agent access keys
Create a key in Réglages. Header: Authorization: Bearer vyro_… Prefix is shown; the secret is displayed once.
Scopes:
contacts:readcontacts:writeinbox:readtasks:writepipeline:writesms:send
Rate limit: 60 requests / minute / key. 429 includes Retry-After.
2. OpenAPI /api/v1
Machine-readable spec (file, not a marketing portal): https://www.vyrocrm.com/api/v1/openapi · https://www.vyrocrm.com/openapi-v1.json
3. MCP remote
JSON-RPC at https://www.vyrocrm.com/api/mcp. Same tools as the in-app agent (contacts, property, visits, draft_sms, enroll_sequence). Sends stay in the approval queue.
{
"mcpServers": {
"vyro": {
"url": "https://www.vyrocrm.com/api/mcp",
"headers": { "Authorization": "Bearer vyro_VOTRE_CLE" }
}
}
}4. Webhooks
HMAC-SHA256 outbound events (Settings). Empty list = all events. No whatsapp.*, rent.*, lease.*.
property.createdvisit.scheduledvisit.completedoffer.stage_enteredcontact.createdcontact.updatedpipeline.stage_changedmessage.receivedmessage.sentai_action.pendingsequence.completedsequence.repliedtask.overdue
5. SMS: mass campaign vs unit
Mass campaigns stay on POST /api/campaigns/:id/start. Unit SMS is POST /api/v1/messages/sms (pending) then human approve → Twilio. Consent required (422 otherwise). Reply STOP to opt out.
6. Recipes
Every recipe below is email + unit SMS + Inngest sequence + property/visit. No WhatsApp, no rent/lease, no Gmail sync.
# Bien + visites
GET https://www.vyrocrm.com/api/v1/properties/{id}
GET https://www.vyrocrm.com/api/v1/appointments
# SMS unitaire (pending → approbation humaine → Twilio)
POST https://www.vyrocrm.com/api/v1/messages/sms
{ "prospectId": "…", "body": "Nouveau créneau ?" }
# EmailSequence Inngest (s’exécute)
POST https://www.vyrocrm.com/api/v1/sequences/{emailSequenceId}/enroll
{ "prospectId": "…" }n8n
Four HTTP Request nodes, Bearer header, no official n8n app: GET property or visits, POST /api/v1/messages/sms (unit, pending), POST /api/v1/sequences/:id/enroll (visit EmailSequence). Email drafts stay in-app (À traiter) or via MCP draft_email.
Make
Manual HTTP scenario (no official Make connector). Same four Bearer calls as n8n. We do not ship a Make app.
Grok Bot / Claude / Cursor
Add the MCP URL above. Flow: search_contacts → get_property → list_visits → enroll_sequence (visit playbook). MCP enroll_sequence and draft_email / draft_sms create pending items; a human approves in À traiter. To enroll immediately, use POST /api/v1/sequences/:id/enroll instead of the MCP tool.
Agency playbooks
- Visite no-show — scheduled visit not marked completed → email + SMS sequence.
- Offre / contre-offre — pipeline offer stage → note + follow-up email.
- Mandat / pièce manquante vendeur — mandate J-30 cron → task + seller email. Not rent collection.
Install from the in-app playbook library (immobilier sector).
7. Public MCP kit
The clone-ready kit (cursor-mcp.json, widget example, MIT license, issue templates) lives in the monorepo folder mcp-public/. A separate GitHub repository is the intended visibility lever — it is not published yet. Do not buy stars. When the remote exists, this page will link it.