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:read
  • contacts:write
  • inbox:read
  • tasks:write
  • pipeline:write
  • sms: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.created
  • visit.scheduled
  • visit.completed
  • offer.stage_entered
  • contact.created
  • contact.updated
  • pipeline.stage_changed
  • message.received
  • message.sent
  • ai_action.pending
  • sequence.completed
  • sequence.replied
  • task.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.