Sirveil Exposure
Herramienta de solo lectura que verifica si una persona estadounidense nombrada está actualmente indexada en un sitio web nombrado — devuelve indexado, no_indexado o indeterminado con URL, fragmento y marca de tiempo.
Documentación
El contrato de verificación: tres estados
Cada llamada exitosa devuelve uno de exactamente tres estados. No son cinco.
indexed
Se encontró un listado que coincide con la identidad en el dominio, y evidence lo contiene.
not_indexed
La forma del nombre — la consulta más amplia que emite este endpoint — se ejecutó contra el dominio y no coincidió con nada. Este es el único estado que reporta una ausencia observada, y es deliberadamente limitado.
indeterminate
Buscamos y no podemos determinarlo. Hay tres formas de llegar aquí: la recuperación falló; la evidencia era demasiado débil en cualquier dirección; o la consulta que emitimos estaba limitada a un identificador que declaraste y la forma del nombre nunca se ejecutó, por lo que un fallo solo indica que el índice del dominio no responde a ese identificador. Esto es una respuesta, no un error, y no es un sinónimo de not_indexed. Colapsar los dos significaría reportar una ausencia que no observamos.
Lo que no te decimos, dicho claramente
Reportamos presencia en el índice. No obtenemos la página del corredor, por lo que no podemos distinguir entre "el listado está activo ahora mismo" y "el motor de búsqueda tiene una entrada obsoleta para una página que desde entonces ha sido eliminada". Un producto de exposición maduro eventualmente querrá dos estados adicionales — indexed_not_live y not_indexed_live — y devolverlos hoy significaría afirmar una obtención que nunca realizamos. Aún no existen. La misma frase se incluye en cada respuesta como contract.limitation, para que un consumidor posterior no pueda pasarla por alto.
Autenticación
Pasa tu clave como un token de portador. Las claves tienen el prefijo sk_live_ o sk_test_ para que una clave filtrada sea identificable a simple vista. Almacenamos solo un hash — si pierdes una clave no se puede recuperar, solo revocar y reemitir.
Authorization: Bearer sk_live_...
Reutiliza conexiones y reintenta en caso de caída
Usa un cliente HTTP con keep-alive habilitado y mantén una sola sesión abierta para la ejecución en lugar de abrir una conexión nueva por llamada — un requests.Session, un agente único de node-fetch, una instancia de HttpClient, curl sin --no-keepalive. Una pequeña fracción de las conexiones TLS nuevas se caen antes de que llegue cualquier respuesta HTTP; las conexiones reutilizadas no lo hacen, y son notablemente más rápidas.
Reintenta un fallo a nivel de conexión — un reinicio, un error de handshake TLS, un socket cerrado antes de cualquier línea de estado. No se sirvió nada, por lo que no se cobró nada, y el reintento es seguro. No reintentes a ciegas una solicitud que devolvió un estado HTTP: lee error primero, porque 402, 403 y un 400 nunca tendrán éxito en un reintento, y un 429 necesita la espera de Retry-After.
GET /api/v1/whoami
La llamada para probar tu clave. Devuelve tu plan, cuota restante, límite de gasto y vía de facturación. Es gratuita y no consume cuota, por lo que puedes confirmar que una clave funciona, confirmar en qué vía factura y confirmar tu límite antes de gastar cualquier cosa.
Llámalo primero. Cada otro endpoint que responde 200 a una clave válida es medido, por lo que sin esto la forma más barata de probar una clave sería comprar una verificación. Aún se escribe una fila de uso — cada llamada a /v1/* deja un rastro — con cero unidades y sin cargo. La puerta de cuota y el límite de gasto no se aplican a ella, lo cual es deliberado: una cuenta en su límite es exactamente la que necesita poder preguntar cuál es su límite.
curl https://ai.sirveil.ai/api/v1/whoami \
-H "Authorization: Bearer sk_live_your_key_here"
Respuesta
{
"tenant": { "id": "3f8a1c04-...", "name": "Acme Compliance" },
"plan": { "id": "marketplace", "label": "Marketplace" },
"quota": {
"included_units": 1000000,
"used_units": 418,
"remaining_units": 999582,
"window_resets_at": "2026-09-01T00:00:00.000Z"
},
"spend_ceiling": {
"ceiling_usd": 1500,
"spent_usd": 6.42,
"remaining_usd": 1493.58
},
"billing_rail": "aws",
"channel": "api_key",
"rate_limit_per_minute": 1200,
"pipeline_version": "v11.0.0",
"linkage_weights_version": "lw-v4",
"calibration_version": "cal-v3"
}
billing_rail es qué mercado posee el dinero de esta cuenta, y channel es cómo esta llamada particular demostró quién era — api_key o rapidapi. Una suscripción medida de AWS Marketplace no tiene asignación, por lo que su quota.included_units no es un límite que puedas agotar; el bloque de spend_ceiling es el que puede rechazarte.
POST /api/v1/verify
La llamada no realiza ninguna escritura en la base de datos. Es una pregunta sobre un dominio, no un escaneo de una persona. La identidad que envías se usa para construir la consulta de búsqueda y se mantiene en una caché en memoria, particionada para tu cuenta, durante unos minutos — para que una pregunta repetida responda de manera consistente y no se cobre dos veces. No se escribe en disco ni se conserva más allá de eso.
identity.firstName y identity.lastName son obligatorios. Todo lo demás — ciudad, estado, calle, teléfono, correo electrónico, fecha de nacimiento — es opcional y reduce la búsqueda.
curl -X POST https://ai.sirveil.ai/api/v1/verify \
-H "Authorization: Bearer sk_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"identity": {
"firstName": "Jane",
"lastName": "Doe",
"email": "jane.doe@example.com",
"city": "Austin",
"state": "TX"
},
"domain": "whitepages.com"
}'
Respuesta
{
"state": "indexed",
"observed_at": "2026-08-07T21:14:02.881Z",
"domain": "whitepages.com",
"evidence": {
"url": "https://www.whitepages.com/name/Jane-Doe/Austin-TX/...",
"title": "Jane Doe in Austin, TX",
"snippet": "Jane Doe, age 41, Austin TX. Known addresses ...",
"retrieved_at": "2026-08-07T21:14:02.402Z"
},
"confidence": 0.81,
"calibrated_probability": 0.78,
"linkage": { "bits": 14.2, "probability": 0.79, "calibrated": true, "weights_version": "lw-v4" },
"explains": [
"Issued 1 email-scoped query against whitepages.com.",
"name matched in full",
"city and state matched",
"one result from the domain, no competing candidate"
],
"contract": {
"states": ["indexed", "not_indexed", "indeterminate"],
"limitation": "Index presence only. We did not fetch the page, so we cannot say whether the listing is still served."
},
"pipeline_version": "v11.0.0",
"linkage_weights_version": "lw-v4",
"calibration_version": "cal-v3",
"meta": {
"identifier_used": "email",
"results_from_domain": 1,
"results_total": 8,
"latency_ms": 1284,
"search_ok": true
}
}
POST /api/v1/scan
Todo lo que /verify no es. Construye un perfil a partir de lo que proporcionas, planifica y emite búsquedas en 12 dominios fijos de búsqueda de personas y en la web abierta, verifica canales de violaciones de datos y registros públicos, resuelve candidatos a la identidad y los clasifica — devolviendo una tarjeta por cada exposición distinta, con los campos que esa exposición revela y la URL de la que se leyó cada campo.
Establece tu tiempo de espera antes de llamar a esto
Un escaneo tarda de dos a tres minutos y medio. Tiempo de pared medido en cinco ejecuciones de este endpoint: 135 / 144 / 154 / 155 / 203 segundos (mediana 154). Configura un tiempo de espera de lectura de al menos 240 segundos. El Invoke-RestMethod de PowerShell tiene un valor predeterminado de 100 segundos — por debajo de la mediana — que es el fallo medido el día del lanzamiento: el cliente vio un error de red, el servidor completó y facturó. Los valores predeterminados en la mayoría de los clientes HTTP y envoltorios abortarán a mitad del escaneo de la misma manera. Una conexión caída no es un reembolso. Si tu tiempo de espera es inferior a 240 segundos, envía Prefer: respond-async.
Si tu llamador está detrás de una puerta de enlace de API, verifica su límite contra esos números. RapidAPI corta a los 180 segundos — su valor predeterminado y su máximo — que se sitúa entre nuestra mediana y nuestra ejecución medida más lenta, por lo que la forma síncrona fallaría en la cola lenta. AWS API Gateway tiene un valor predeterminado de 29 segundos. Un tiempo de espera de puerta de enlace no es un reembolso: el escaneo aún se ejecuta y aún se factura. Usa la forma asíncrona y la pregunta no surge.
identity.firstName y identity.lastName son obligatorios. Todo lo demás es opcional y mejora el resultado. Un valor que no podemos usar se descarta en lugar de rechazarse, y su nombre de campo regresa en dropped_fields — verifica ese campo si un escaneo parece más delgado de lo esperado.
curl -X POST https://ai.sirveil.ai/api/v1/scan \
-H "Authorization: Bearer sk_live_your_key_here" \
-H "Content-Type: application/json" \
--max-time 300 \
-d '{
"identity": {
"firstName": "Jane",
"lastName": "Doe",
"city": "Austin",
"state": "TX",
"postalCode": "78701",
"email": "jane.doe@example.com"
}
}'
Respuesta (resumida a una tarjeta)
{
"scan_id": "6f1c9d02-8a4e-4c1b-9f77-2b0e5d3a71c8",
"observed_at": "2026-08-10T18:22:41.117Z",
"latency_ms": 64218,
"cards": [
{
"id": "6f1c9d02-8a4e-4c1b-9f77-2b0e5d3a71c8-1",
"rank": 1,
"tier": "A",
"data_type": "person_record",
"risk_category": "identity_theft",
"why_it_matters": "Full address history alongside age and relatives is enough to answer most account-recovery questions.",
"source": "whitepages.com",
"raw_data": {
"title": "Jane Doe, 41 — Austin, TX",
"snippet": "Jane Doe, age 41, Austin TX. Known addresses, phone numbers, relatives ...",
"link": "https://www.whitepages.com/name/Jane-Doe/Austin-TX/..."
},
"exposed_fields": [
{ "kind": "address", "label": "Address", "value": "1200 W 6th St, Austin, TX 78703",
"evidence": "declared", "source_ref": "https://www.whitepages.com/name/..." },
{ "kind": "age", "label": "Age", "value": "41", "evidence": "corroborated", "derived": "decade" },
{ "kind": "relative", "label": "Relative", "value": "M. D." }
],
"provenance": [
{ "field": "addresses", "value": "1200 W 6th St", "source_ref": "https://www.whitepages.com/name/..." }
],
"sources": [{ "name": "whitepages.com", "link": "https://www.whitepages.com/name/..." }],
"also_seen_on": [{ "name": "spokeo.com", "link": "https://www.spokeo.com/Jane-Doe/..." }],
"match_probability": 0.9,
"match_probability_calibrated": true
}
],
"metrics": { "card_count": 23, "distinct_exposures": 23, "tier_a": 6, "tier_b": 11, "tier_c": 6 },
"degraded": false,
"search_ok": true,
"stopped_early": false,
"dropped_fields": [],
"coverage": { ... see Coverage below ... },
"contract": {
"limitation": "A scan reads search indexes and public sources at the moment you call it ..."
},
"pipeline_version": "v11.0.0",
"linkage_weights_version": "lw-v4",
"calibration_version": "cal-v3"
}
Transmisión: Accept: application/x-ndjson
Un objeto JSON por línea. Eventos de progreso mientras el escaneo se ejecuta, luego un solo evento result que lleva exactamente el cuerpo que devuelve la forma síncrona. Ambas formas cuestan lo mismo y producen un registro de uso. Una solicitud incorrecta o un backend de búsqueda no disponible sigue siendo un 400 / 503 real con un cuerpo JSON — esos se deciden antes de que se abra la transmisión.
curl -N -X POST https://ai.sirveil.ai/api/v1/scan \
-H "Authorization: Bearer sk_live_your_key_here" \
-H "Accept: application/x-ndjson" \
-H "Content-Type: application/json" \
--max-time 300 -d '{"identity":{"firstName":"Jane","lastName":"Doe"}}'
{"type":"progress","phase":"building_profile","step":2,"steps":7,"at":1786...}
{"type":"progress","phase":"planning_searches","step":3,"steps":7,"at":1786...}
{"type":"progress","phase":"searching","step":4,"steps":7,"at":1786...}
{"type":"progress","phase":"matching","step":5,"steps":7,"at":1786...}
{"type":"progress","phase":"assembling","step":6,"steps":7,"at":1786...}
{"type":"result","result":{ ... identical to the synchronous body ... }}
Lo que un escaneo no hace
No acumula nada. No hay expediente, ni historial, ni recuento de "visto antes": dos escaneos de la misma persona son dos observaciones independientes, y nada de una llamada anterior se traslada. Un escaneo síncrono no escribe nada en absoluto; uno asíncrono mantiene tu entrada y tu respuesta durante 24 horas para que puedas recogerlas, y esa es la única diferencia. Tampoco obtiene y confirma cada listado — una tarjeta significa este registro está indexado y coincide con la identidad que declaraste, no esta página está activa ahora. Y un array vacío de cards no es prueba de ausencia: verifica search_ok y degraded antes de leerlo como tal. Todo esto se incluye en cada respuesta como contract.limitation.
Cobertura: la forma del agujero
Cada escaneo devuelve un bloque coverage junto con las tarjetas. Reporta cuántos dominios se esperaban, cuántos se consultaron, cuántos volvieron vacíos, cuántos fallaron y cuántos nunca se alcanzaron — y nombra los dominios a los que no llegó.
Esto existe porque el modo de fallo honesto de un barrido de exposición no es una respuesta incorrecta, es una silenciosa. Un barrido que alcanzó tres dominios menos de los planeados y un barrido que alcanzó los 12 producen una lista de tarjetas de aspecto similar. La cobertura es cómo distinguirlos sin confiar en nosotros.
La clasificación está respaldada por el registro de 548 dominios derivado del registro público de corredores de datos de la CPPA de California más un conjunto prioritario curado. Un barrido base consulta 12 dominios fijos de búsqueda de personas; la cobertura se reporta sobre el registro, para que puedas ver exactamente cuáles del resto no se consultaron en tu llamada.
"coverage": {
"expected": 548,
"queried_hit": 9,
"queried_empty": 3,
"queried_failed": 0,
"never_queried": 536,
"never_queried_domains": [
"advancedbackgroundchecks.com",
"anywho.com",
"checkpeople.com",
"familytreenow.com",
"peekyou.com"
// ... capped per response; see never_queried_truncated
],
"never_queried_truncated": true
}
queried_empty y never_queried son opuestos en significado
queried_empty significa que preguntamos y el dominio no contiene nada sobre esta identidad — el escaneo es correcto al no mostrar nada allí, y puedes actuar sobre la ausencia. never_queried significa que no preguntamos: el silencio es nuestro y no dice nada sobre el dominio. Antes de que se publicara este bloque, los dos eran indistinguibles en la respuesta, lo que hacía que uno de ellos fuera silenciosamente inutilizable.
La lista de nombres está limitada por respuesta y never_queried_truncated te dice cuándo lo estuvo. El bloque lleva solo recuentos y nombres de dominio — un objetivo site: identifica a quién preguntamos, nunca sobre quién preguntamos, por lo que ninguna parte de la identidad que enviaste puede llegar a él. Y todo el bloque es null, no puesto a cero, en una ejecución lo suficientemente antigua como para preceder al registro de cobertura: expected: 0, never_queried: 0 se leería como "sin brechas", que es lo opuesto a "no conocido".
Escaneos asíncronos
Un escaneo toma minutos, y la mayoría de las puertas de enlace no mantendrán una conexión tanto tiempo. Envía Prefer: respond-async y recibes un id de trabajo inmediatamente, luego consulta la respuesta. La forma síncrona no cambia y sigue siendo la predeterminada — nada de lo que ya hayas integrado se ve afectado.
Tu cuota, límite de tasa y límite de gasto se verifican al enviar. Un 202 significa que el trabajo está aceptado; un rechazo ocurre allí y entonces, antes de que cualquier cosa se ponga en cola y antes de que se cobre cualquier cosa. El trabajo se mide una vez, cuando realmente se ejecuta.
curl -X POST https://ai.sirveil.ai/api/v1/scan \
-H "Authorization: Bearer sk_live_your_key_here" \
-H "Content-Type: application/json" \
-H "Prefer: respond-async" \
-d '{"identity":{"firstName":"Jane","lastName":"Doe","state":"TX"}}'
HTTP/1.1 202 Accepted
Location: /api/v1/jobs/9c2f0b17-...
{
"job_id": "9c2f0b17-4d8a-4f2e-9c31-7a5b0e6d1f42",
"status": "queued",
"poll_url": "/api/v1/jobs/9c2f0b17-4d8a-4f2e-9c31-7a5b0e6d1f42",
"estimated_seconds": 154,
"queue": { "depth": 1, "position": 1 },
"throughput": { "capacity_per_hour": 58, "drain_concurrency": 1 },
"expires_at": "2026-08-12T18:22:41.117Z"
}
Luego consulta
curl https://ai.sirveil.ai/api/v1/jobs/9c2f0b17-4d8a-4f2e-9c31-7a5b0e6d1f42 \
-H "Authorization: Bearer sk_live_your_key_here"
{ "job_id": "9c2f0b17-...", "status": "queued",
"queue": { "depth": 3, "position": 2 }, "estimated_seconds": 214 }
# ... a little later ...
{ "job_id": "9c2f0b17-...", "status": "claimed", "started_at": "2026-08-11T18:24:02.410Z" }
# ... and finally ...
{ "job_id": "9c2f0b17-...", "status": "succeeded",
"finished_at": "2026-08-11T18:26:36.882Z",
"result": { ... identical to the synchronous body ... } }
Rendimiento: hasta 58 escaneos por hora
Publicado en lugar de dejarlo para que lo descubras. Un escaneo toma 154 segundos en la mediana y hasta 203. El trabajador se invoca una vez por minuto y ejecuta 1 escaneo por invocación, lo que establece el límite en 58 por hora. Pon 20 trabajos en cola y el último termina en aproximadamente 21 minutos.
Ese límite se calcula a partir del horario, no se mide bajo carga — asume que cada invocación reclama un trabajo y que cada trabajo termina. Planifica según el estimated_seconds en tu respuesta de trabajo en su lugar, que refleja tu posición real en la cola. Si necesitas más que esto, dilo antes de poner el lote en cola: el límite es una configuración de implementación, no una propiedad del producto.
La cola es compartida entre todos los clientes, por lo que cada respuesta de trabajo te dice el queue.depth actual, tu queue.position y un estimated_seconds — puedes verlo moverse en lugar de adivinar. La consulta es gratuita: no factura nada y no consume unidades del plan, por lo que no hay ventaja en consultar lentamente.
Si necesitas más que esto, dínoslo antes de poner el lote en cola en lugar de después. El límite es una configuración de implementación, no una propiedad del producto.
Retención: 24 horas, luego eliminado
La identidad que enviaste y el resultado se mantienen durante 24 horas para que puedas recogerlos, luego ambos se eliminan y el trabajo reporta expired. El registro del trabajo en sí sobrevive con sus tiempos, por lo que una consulta tardía te dice qué sucedió en lugar de devolver un 404 que tendrías que interpretar. Un id de trabajo que pertenece a otra cuenta es un 404, no un 403 — un 403 confirmaría que el id existe.
Errores y límites
Cinco límites separados pueden detener una llamada, y fallan de manera diferente porque necesitan acciones diferentes de ti. El campo error nombra cuál se alcanzó — léelo siempre en lugar de cambiar solo según el estado, porque 401, 400 y 429 llevan cada uno más de un código.
| Estado | error | Qué hacer |
|---|---|---|
| 401 | missing_key | No hay cabecera Authorization en absoluto. Envía Authorization: Bearer sk_live_…. |
| 401 | invalid_key | Se envió una clave, y está malformada, es desconocida o ha sido revocada. |
| 403 | tenant_suspended | La clave es válida, la cuenta no lo es. No reintentable: contáctanos. |
| 429 | rate_limited | Demasiadas llamadas en este minuto. Espera: Retry-After indica cuánto tiempo. |
| 429 | quota_exceeded | La asignación de unidades incluidas de la cuenta es un límite duro: cuando se agota, se rechazan más llamadas. No hay excedente, ni actualización automática, ni cargo más allá de lo acordado. Espera al reinicio: Retry-After lleva los segundos restantes. Las suscripciones medidas de AWS Marketplace no tienen asignación y nunca ven esto. |
| 402 | spend_ceiling_reached | El límite duro en dólares de tu cuenta: un guardián contra fugas, no un límite que hayas comprado. Acota nuestro coste de bienes, no tu factura, y nunca se sube en silencio: pídelo y lo subimos explícitamente. |
| 503 | search_unavailable | Solo escaneo. La búsqueda está caída, así que rechazamos en lugar de venderte un resultado vacío que se leería como "no se encontró nada". No se cobra nada. Reintenta en breve. |
| 429 | queue_depth_exceeded | Solo escaneo asíncrono. Tu cola — o la de todo el servicio — está en su límite de profundidad, así que rechazamos en lugar de darte un 202 que sabíamos que no podríamos entregar antes de que el trabajo expirara. No se cobra nada. Retry-After lleva la espera. |
| 503 | capacity_reached | El servicio no acepta temporalmente trabajo nuevo. Los límites de tu cuenta no se ven afectados y no se cobra nada. Reintenta en breve. |
| 400 | identity_required | Al cuerpo le faltaba un objeto identity. Consulta también seed_not_supported (el escaneo toma la identidad que envías, no una semilla) y invalid_json. |
| 400 | identity_incomplete | Faltaba firstName o lastName. El nombre es el ancla contra la que se puntúa a cada candidato, así que ninguno es opcional. |
| 400 | invalid_domain | Solo verificación. domain debe ser un nombre de host simple: whitepages.com, no una URL completa ni una ruta. |
| 400 | domain_excluded | Solo verificación, y no reintentable. No ejecutamos una identidad contra sitios de reconocimiento facial o búsqueda inversa de rostros en nombre de nadie. Es un rechazo por política y no es configurable por cuenta. |
El 429 conlleva tres rechazos distintos y error los distingue: rate_limited se despeja en segundos, queue_depth_exceeded se despeja a medida que tu cola se vacía, y quota_exceeded se despeja cuando tu ventana de facturación cambia. Una llamada fallida nunca se factura: se te cobra por respuestas, no por intentos.
Las respuestas de error llevan los mismos sellos pipeline_version, linkage_weights_version y calibration_version que los éxitos, de modo que una solicitud rechazada puede rastrearse hasta la compilación que la rechazó.
Precios
Basados en uso, medidos por llamada servida. No hay suscripción, ni mínimo, ni asignación que dimensionar de antemano, y nada que pagar en un mes en el que no nos llames.
| Operación | Precio por llamada | Qué es una llamada |
|---|---|---|
| Verificación | $0.10 | Una comprobación de indexación para una identidad en un dominio. |
| Escaneo completo | $0.35 | Un escaneo completo de exposición para una identidad: 12 dominios fijos de búsqueda de personas, más la web abierta, las vías de brechas y nombres de usuario. |
Una llamada fallida nunca se factura. Se te cobra por respuestas, no por intentos: un 400, un 401, un 403 y un 503 search_unavailable no cuestan nada, y el rechazo se decide antes de que se llame a cualquier proveedor de búsqueda.
Cada forma de escaneo cuesta la misma llamada. Síncrono, en streaming y asíncrono son el mismo trabajo facturado una vez; consultar un trabajo no mide nada, así que no hay ventaja en consultar lentamente. Una conexión caída, sin embargo, no es un reembolso: el escaneo se completó. Lee la nota de tiempo de espera antes de llamar a /v1/scan de forma síncrona.
Un límite duro en dólares se sitúa en cada cuenta como guardián contra fugas. Es nuestro, no algo que hayas comprado: acota nuestro coste de bienes, y si salta obtienes un 402 spend_ceiling_reached en lugar de una factura que nadie esperaba. Dinos antes de poner en cola un lote grande y lo subimos.
MCP para agentes
Un servidor MCP de solo lectura se entrega junto a REST en /api/v1/mcp, versión de protocolo 2025-06-18. Expone una herramienta, verify_indexed: pregunta si una persona nombrada está indexada en un dominio de corredor de datos y recibe la evidencia. No hay herramienta de escaneo ni vía de escritura.
indeterminate es una respuesta real de esta herramienta tanto como de REST. Un agente que la reporta a un usuario como "no encontrado" está afirmando una ausencia que no fue observada.
Una llamada a la herramienta MCP realiza el trabajo de una verificación y se factura al precio de verificación — $0.10 por llamada. No es un envoltorio gratuito de conveniencia.
El protocolo de enlace — initialize y tools/list — no necesita clave, así que un registro puede indexar el servidor sin una cuenta. tools/call requiere una y resuelve el mismo inquilino, cuota y límite que cada llamada REST. El uso se registra contra /v1/mcp en lugar de /v1/verify para que puedas ver qué llegó a través de qué superficie, pero el cargo es el mismo.
curl -X POST https://ai.sirveil.ai/api/v1/mcp \
-H "Authorization: Bearer sk_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "verify_indexed",
"arguments": {
"firstName": "Jane",
"lastName": "Doe",
"email": "jane.doe@example.com",
"city": "Austin",
"state": "TX",
"domain": "whitepages.com"
}
}
}'
Dónde puedes comprar
AWS Marketplace. Te suscribes con la cuenta de AWS que ya tienes, AWS factura el uso en la factura que ya recibes, y reportamos cada llamada servida contra las dos dimensiones fijadas en la creación del producto: verification y scan, con los precios anteriores.
No hay tarjeta que introducir aquí ni detalle de pago que recopilemos: AWS prohíbe recopilar información de pago para un producto de Marketplace en cualquier momento, y nosotros no lo hacemos. Cuando la suscripción se completa, AWS te envía a nuestra página de cumplimiento, que pide la dirección de correo a la que pertenece la suscripción y emite tu clave de API al instante. Nada que instalar, y sin esperar por nosotros.
Empieza ahora, sin hablar con nadie
Suscríbete en AWS Marketplace con tu cuenta de AWS existente y se te factura por llamada servida — $0.10 por verificación y $0.35 por escaneo completo — en la factura de AWS que ya recibes. Sin cuota de suscripción, sin mínimo, sin llamada de ventas y sin presupuesto que esperar. Tu clave de API se emite en el momento en que la suscripción se completa.
¿Evalúas en lugar de comprar, o necesitas un precio por volumen o de oferta privada? Envía un correo a support@sirveil.ai.