AMI.
v1.0 · referencia · contratación & aprovisionamiento v1.0 · reference · contracting & provisioning

Identidad móvil
para agentes AI.
Mobile identity
for AI agents.

AMI es la capa de protocolo para que un agente solicite, contrate y active su propia identidad móvil — SIM, eSIM, número de teléfono — sin pasar por procesos pensados para humanos. Programable, auditable, gobernada. AMI is the protocol layer for AI agents to request, contract and activate their own mobile identity — SIM, eSIM, phone numbers — without going through human-designed processes. Programmable, auditable, governed.

Quick Start Quick Start

macOS · Linux · Python 3.10+ macOS · Linux · Python 3.10+
β BETA
# Recomendado para agentes: cero instalación, cero API key local.Recommended for agents: zero install, zero local API key. # Apunta tu cliente MCP (transporte streamable-http) a:Point your MCP client (streamable-http transport) to: https://mcp.protocolami.com/mcp/
# Instala el MCP en ~/.ami (stdio local). Necesita AMI_API_KEY propia.Installs the MCP into ~/.ami (local stdio). Requires your own AMI_API_KEY. $ curl -fsSL https://protocolami.com/install.sh | sh
# Setup manual con uv (recomendado).Manual setup with uv (recommended). $ git clone https://github.com/Gamino17/AMI $ cd AMI $ uv venv --python 3.13 .venv $ uv pip install --python .venv/bin/python -r requirements.txt
# Pega esto en claude_desktop_config.json y reinicia el cliente.Paste into claude_desktop_config.json and restart the client. { "mcpServers": { "ami": { "command": "/Users/you/.ami/.venv/bin/python", "args": ["/Users/you/.ami/ami_mcp.py"], "env": { "AMI_API_URL": "https://protocolami.com", "AMI_API_KEY": "<your-api-key>" } } } }

Las cuatro vías llegan al mismo MCP server con las 28 tools ami.*. HTTP remoto es la opción recomendada para agentes: cero instalación y sin gestionar API key local. Las otras vías son útiles cuando necesitas el MCP corriendo en local (clientes que solo soportan stdio, entornos sin red saliente, etc.). All four paths reach the same MCP server with the 28 ami.* tools. Remote HTTP is the recommended option for agents: zero install, no local API key to manage. The other paths are useful when you need the MCP running locally (stdio-only clients, no-egress environments, etc.).

¿Sin tiempo para instalar? Pruébalo en el navegador.
No time to install? Try it in your browser.
Ejecuta el flujo completo —solicitud, oferta, contrato, firma, activación— sin escribir una línea.
Run the full flow —request, offer, contract, signature, activation— without writing a line.
El protocolo
The protocol

Cuatro principios. Una capa estándar. Four principles. One standard layer.

AMI separa el "cómo se contrata identidad móvil" del "qué operador la sirve". El agente habla un solo protocolo; el operador se enchufa por debajo. AMI separates "how mobile identity is contracted" from "which operator serves it". The agent speaks one protocol; the carrier plugs in underneath.

01 Contratación programable Programmable contracting

Solicitud, oferta, datos del cliente, contrato y firma como llamadas de tool. Sin formularios. Sin humanos atascando el flujo.

Request, offer, customer data, contract and signature as tool calls. No forms. No humans bottlenecking the flow.

02 Identidad gobernada Governed identity

Cada número tiene propietario, contrato firmado, política y trazabilidad. Sin shadow IT. Sin números fantasma operando en nombre de empresas.

Every number has an owner, signed contract, policy and audit trail. No shadow IT. No phantom numbers operating on behalf of companies.

03 Multi-operador por diseño Multi-carrier by design

El agente consume AMI; debajo se elige operador, BSP o gateway. Cambias de proveedor sin tocar la integración del agente.

The agent consumes AMI; underneath you pick carrier, BSP or gateway. Swap providers without touching the agent integration.

04 Auditoría por defecto Audit-first

Cada transición de estado emite un AuditEvent. Quién, qué, cuándo, con qué payload. Compliance no es una capa extra — es el modelo.

Every state transition emits an AuditEvent. Who, what, when, with what payload. Compliance isn't an extra layer — it's the model.

El flujo
The flow

De solicitud a número activo, sin humano en medio. From request to active number, no human in the loop.

El agente recorre la máquina de estados completa por MCP. La firma sucede en el navegador del firmante (o vía webhook de proveedor de firma); el resto es máquina. The agent walks the full state machine via MCP. The signature happens in the signer's browser (or via signature provider webhook); everything else is machine-to-machine.

Agent  ─┐  MCP tools (ami.*)
        ▼
ami_mcp.py      stdio  +  streamable-http
        │  HTTPS + Bearer
        ▼
ami_api.py      REST v1  ·  state machine  ·  audit log
        │
        ├──▶ SIMRequest         requested
        ├──▶ Offer              offer_created → offer_accepted
        ├──▶ Customer           customer_data_submitted
        ├──▶ Contract           signature_pending
        │           ↑  signed via /v1/sign/{id} (browser)
        ├──▶ Signed             signed
        ├──▶ Provisioning       carrier adapter
        └──▶ MobileIdentity     active  ·  number  ·  QR
Empezar
Get started

Tres formas de conectar tu agente. Three ways to connect your agent.

El backend está en producción. Lo único simulado es la SIM física: el resto —oferta, contrato, firma y activación— es real y end-to-end. The backend is in production. Only the physical SIM is simulated: the rest —offer, contract, signature, activation— is real and end-to-end.

stdio · local

Claude Desktop / Code

Clona el repo, instala el venv y añade el bloque a tu claude_desktop_config.json. Las 28 tools ami.* aparecen al reiniciar.

Clone the repo, install the venv and add the block to your claude_desktop_config.json. The 28 ami.* tools appear after restart.

{
  "mcpServers": {
    "ami": {
      "command": "python3",
      "args": [
        "/path/to/AMI/ami_mcp.py"
      ],
      "env": {
        "AMI_API_URL": "https://protocolami.com",
        "AMI_API_KEY": "<your-api-key>"
      }
    }
  }
}
streamable-http · remote

HTTP remoto Remote HTTP

Cualquier cliente MCP que soporte el transporte streamable-http conecta directo. Cero instalación, cero deps locales.

Any MCP client that supports streamable-http connects directly. Zero install, zero local deps.

https://mcp.protocolami.com/mcp/
REST · custom

Cliente propio Build your own

¿No usas MCP? Habla directo a la REST API. Esquema OpenAPI 3.1 publicado en /openapi.json. Auth con Bearer.

Not using MCP? Talk directly to the REST API. OpenAPI 3.1 schema at /openapi.json. Bearer auth.

curl -H "Authorization: Bearer $AMI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country":"ES"}' \
  https://<host>/v1/sim-requests
MCP

28 tools. Un namespace. 28 tools. One namespace.

Todas en ami.*. Cada una mapea a un endpoint REST equivalente; el agente puede usar la que prefiera sin perder semántica. All under ami.*. Each maps to an equivalent REST endpoint; the agent can use whichever it prefers without losing semantics.

ami.search_sim_options
Lista países y capacidades de numeración disponibles (voz · SMS · datos).
ami.request_sim_offer
Crea una solicitud de número y devuelve la oferta inmediata desde nuestra plataforma.
ami.accept_offer
Acepta una oferta antes de generar contrato.
ami.submit_customer_data
Envía los datos legales/fiscales del cliente y los vincula a la solicitud.
ami.initiate_kyc
Dispara la verificación de identidad (KYC) del representante legal y devuelve la URL pública de verificación.
ami.get_kyc_status
Consulta el estado del KYC de la solicitud (pending · submitted · verified · rejected).
ami.create_contract
Genera el contrato y devuelve la URL de firma.
ami.get_contract_status
Consulta el estado actual de un contrato.
ami.confirm_signature_status
Comprueba si el contrato ya está firmado.
ami.activate_sim_identity
Activa el número en nuestra plataforma tras la firma del contrato.
ami.get_identity_status
Consulta el estado de una MobileIdentity activa.
ami.cancel_request
Cancela la solicitud antes de la activación del número.
ami.rotate_agent_token
Rota el agent_token de una MobileIdentity (hard rotate, invalida el anterior).
ami.send_sms
Envía un SMS desde la MobileIdentity activa (auth: agent_token Nivel 2).
ami.list_sms
Lista los SMS de la MobileIdentity (filtrable por dirección).
ami.place_call
Origina una llamada saliente y la bridgea por SIP al endpoint del cliente (motor de voz, PBX o cualquier destino SIP).
ami.list_calls
Lista las llamadas del MID (filtrable por dirección).
ami.get_call
Detalle de una llamada (scoped al MID).
ami.hangup_call
Termina una llamada en curso del MID.
ami.set_inbound_sip_uri
Configura el endpoint SIP al que reenviar las llamadas entrantes del MID.
ami.create_webhook
Registra un webhook saliente para un MID (eventos sms/call inbound y status).
ami.list_webhooks
Lista los webhooks registrados para un MID.
ami.delete_webhook
Elimina un webhook por id.
ami.get_limits
Lee los límites (rate + budget + countries) de un MID.
ami.update_limits
Actualiza los límites del MID (patch parcial).
ami.get_usage
Lee el usage actual del MID (auth: customer).
ami.get_my_usage
Lee el usage del MID dueño del agent_token (auth: agente).
ami.list_events
Devuelve los últimos AuditEvents (debug e inspección).
REST

API estable, JSON, OpenAPI 3.1. Stable JSON API, OpenAPI 3.1.

Auth con Authorization: Bearer $AMI_API_KEY excepto en healthcheck y la página pública de firma. Auth with Authorization: Bearer $AMI_API_KEY except for healthcheck and the public signature page.

explora explore

Todo lo que puedes consultar. Everything you can explore.

Tres caminos según lo que necesites: ver el producto, construir contra él, u operarlo. Three paths based on what you need: see the product, build against it, or operate it.

Identidad móvil es la primitiva
que faltaba para los agentes.
Mobile identity is the missing
primitive for agents.