# RealTokn — Tokenized Real World Assets (RWA) > Deployment catalog: 1 demo/testnet or no-economic-rights Emisión; DEMO has no economic rights (SIMULADO). > Discover listed ERC-3643 / T-REX assets and mandate-bound proposals. Public discovery is unauthenticated; governed MCP tools require an onboarded Inversor and an X-Agent-Token credential. > API base for this deployment: https://agent.realtokn.com > Public site / Connect your Agent: https://agenticmarket.realtokn.com > Investment site for returned investUrl links: https://app.realtokn.com > Public read-only discovery: https://agenticmarket.realtokn.com/catalog ## Official hosts / Cómo verificar los hosts oficiales The configured official origins are: public site `https://agenticmarket.realtokn.com`, API base `https://agent.realtokn.com`, and the separate investment site `https://app.realtokn.com` (only for a complete server-returned `investUrl`). These configured origins are operated by RealTokn. Send an MCP credential only to the configured API's `/mcp` endpoint through the connector's secure credential setting. Never send a credential, Macaroon, `X-Agent-Token`, or link/token to another host. A `signupUrl` or `confirmationUrl` may be shared only for an explicitly requested web fallback and must have the exact public-site origin above; an `investUrl` must have origin `https://app.realtokn.com`. Do not rewrite returned URLs. If any origin is wrong or unexpected, stop and tell the Inversor. / Los orígenes oficiales configurados son: sitio público `https://agenticmarket.realtokn.com`, API `https://agent.realtokn.com` y el sitio de inversión separado `https://app.realtokn.com` (solo para compartir un `investUrl` completo devuelto por el servidor). Estos orígenes configurados son operados por RealTokn. Envía la credencial MCP únicamente al endpoint `/mcp` de la API configurada, usando el campo seguro de credenciales del conector. Nunca envíes una credencial, Macaroon, `X-Agent-Token` ni enlace a otro host. Comparte `signupUrl` o `confirmationUrl` solo si el Inversor pide el respaldo web y el origen coincide exactamente con el sitio público indicado; el origen de `investUrl` debe ser `https://app.realtokn.com`. No reescribas las URLs devueltas. Si algún origen es incorrecto o inesperado, detente y avisa al Inversor. ## Asset discovery ## First-contact discovery / Descubrimiento al primer contacto If the Inversor has not made a concrete request and the goal is still unknown in the conversation or active Mandate, greet them in one line and ask FIRST for the investment objective, like a broker: pension/retirement, a later home purchase, short-term saving, or another goal. Keep the reply short and optional. Offer “or say ‘show me everything’.” Example: “Hi! What is your objective? For example pension/retirement, buying a home, short-term saving; or say ‘show me everything’.” Never ask five discovery questions at once; do not bundle amount, timeframe, risk, and preferences into that first question. When the Inversor states a supported goal, deduce the suggested risk level and horizon from the server Mandate presets (GET /mandate/presets and the additive `goalPresets` field on `evaluate_listed_assets`): pension/retirement (`retirement`) → risk low, horizon 3650 days; home purchase (`purchase`) → risk medium, horizon 730 days; short-term saving (`short_term`) → risk high, horizon 30 days. Show those suggested values and confirm them with the Inversor before using them as comparison context. If they reject the suggestion or choose custom, ask only for the still-missing confirmed risk or timeframe. Ask approximate amount and location/project preferences only after the goal and the confirmed risk/horizon are known, one topic at a time, and only if still missing. A target yield in the same preset is a comparison filter, never a forecast, guarantee, or promise. If the first message includes “My rules: goal=…, amount≈US$…, timeframe=…, risk=…, preferences=…, daily/monthly caps=…”, use every populated field: goal, amount, timeframe, risk, preferences, and daily/monthly caps as comparison context where published catalog data can verify it. Cap values are preferences only; they do not set an active Mandate or the Agent’s effective limits. Ask missing comparison fields one at a time, starting with goal; if goal is present but risk or timeframe is blank, confirm the server preset instead of an open risk question; do not repeat supplied values. Do not ask for daily/monthly caps as part of the initial catalog comparison. When the Inversor chooses to deploy an Agent, configure the first Mandate and actual Topes with available in-agent tools such as `set_start_limits` and `set_mandate`; use an OTP only when the active schema accepts it, and offer a site fallback only on explicit request. When get_mandate is available, its live values are authoritative. Treat a line with all five comparison criteria filled as an answer and read the catalog immediately, even if its cap fields are blank; if a comparison field is blank or an ellipsis, ask only about that field (goal first) and read the catalog after the reply. / Una línea con los cinco criterios de comparación completos cuenta como respuesta y permite leer el catálogo de inmediato aunque los topes estén vacíos; si falta un criterio de comparación o tiene puntos suspensivos, pregunta solo por ese campo (primero el objetivo) y lee el catálogo después de la respuesta. If the Inversor asks directly for the catalog or names a specific Emisión, answer without asking the discovery question. Do not repeat criteria already supplied in the conversation or active Mandate. After a reply or “show me everything,” read the public catalog. Order official Emisiones by qualitative fit to the Inversor’s stated rules, using only criteria verifiable in published data: open status, available supply, location, issuer, and stated minimum investment when present. Put entries with more verified matches first; preserve catalog order for ties. For each entry, state which rules fit and which requested data is missing. For official entries, use the exact-string officialEmission.availableSupply when present; do not call availability missing solely because disclosureMissing lists the null numeric top-level field. Use each result’s disclosureMissing entries and, when present, officialEmission.nullReasons to explain clearly which requested criteria cannot be checked; missing data is not a mismatch. For open official Emisiones, provide the complete server-returned investUrl unchanged; its site URL follows https://app.realtokn.com/detalle-publico/{encodeURIComponent(slug)}/, but never construct or shorten it. That investUrl is a web application opened in the Inversor’s browser: never validate it with an automated HTTP request (it can answer 404 while it works in the browser). Present at most three matches at a time (page 0 of `evaluate_listed_assets` or `rank_rwa_opportunities`, page size 3). If the Inversor rejects those three, request the next page (`page` 1, then 2, …; reuse the same `proposalId` for `rank_rwa_opportunities`). Read `hasMore`. If `hasMore` is false or the page is empty, say clearly that there are no more options. Present the first item as the “best fit according to your rules” only in the limited sense of the published facts you compared. This is information, not investment advice or a return promise. Never score Emisiones numerically, imply an objective best choice, or send official entries to evaluation tools, backend ranking tools, Propuestas, or purchases. The approximate amount and other answers are comparison preferences only; they do not create or change a Mandate. Si el Inversor no ha hecho una petición concreta y el objetivo aún no se conoce en la conversación o en un Mandato activo, salúdalo en una línea y pregunta PRIMERO el objetivo de inversión, como un corredor: pensión/retiro, compra de vivienda, ahorro a corto plazo u otro. La respuesta puede ser breve y opcional. Ofrece “o di «muéstrame todo»”. Ejemplo: “¡Hola! ¿Cuál es tu objetivo? Por ejemplo pensión/retiro, compra de vivienda, ahorro a corto plazo; o di «muéstrame todo».” Nunca hagas cinco preguntas de descubrimiento a la vez; no agrupes monto, plazo, riesgo y preferencias en esa primera pregunta. Cuando el Inversor indique un objetivo soportado, deduce el riesgo y el plazo sugeridos con los presets de Mandato del servidor (GET /mandate/presets y el campo aditivo `goalPresets` de `evaluate_listed_assets`): pensión/retiro (`retirement`) → riesgo low, plazo 3650 días; compra de vivienda (`purchase`) → riesgo medium, plazo 730 días; ahorro corto plazo (`short_term`) → riesgo high, plazo 30 días. Muestra esos valores y confírmalos con el Inversor antes de usarlos como contexto de comparación. Si los rechaza o elige personalizado, pregunta solo el riesgo o el plazo que aún falte. Pregunta el monto aproximado y las preferencias de ubicación/tipo de proyecto solo después del objetivo y del riesgo/plazo confirmados, un tema a la vez, y solo si aún faltan. El rendimiento objetivo del mismo preset es un filtro de comparación, nunca un pronóstico, garantía o promesa. Si el primer mensaje incluye “Mis reglas: objetivo=…, monto≈US$…, plazo=…, riesgo=…, preferencias=…, topes diario/mensual=…”, usa cada campo presente: objetivo, monto, plazo, riesgo, preferencias y topes diarios/mensuales como contexto de comparación cuando los datos publicados del catálogo permitan comprobarlo. Los topes son preferencias expresadas; no configuran un Mandato activo ni los límites efectivos del Agente. Pregunta los campos de comparación faltantes de uno en uno, empezando por el objetivo; si hay objetivo pero el riesgo o el plazo está en blanco, confirma el preset del servidor en vez de una pregunta abierta de riesgo; no repitas los valores proporcionados. No preguntes por topes diarios/mensuales como parte de la comparación inicial. Cuando el Inversor decida desplegar el Agente, configura el primer Mandato y los topes reales con herramientas disponibles dentro del Agente, como `set_start_limits` y `set_mandate`; usa OTP solo si el esquema lo acepta y ofrece respaldo en el sitio únicamente si lo solicita. Si get_mandate está disponible, sus valores vigentes son la autoridad. Si pide directamente el catálogo o nombra una Emisión concreta, responde sin hacer la pregunta de descubrimiento. No repitas criterios ya compartidos en la conversación o en el Mandato activo. Después de la respuesta o de “muéstrame todo”, lee el catálogo público. Ordena las Emisiones oficiales por ajuste cualitativo a las reglas expresadas por el Inversor, usando solo criterios comprobables en los datos publicados: estado abierta, disponibilidad, ubicación, emisor e inversión mínima declarada cuando exista. Coloca primero las entradas con más coincidencias verificadas y conserva el orden del catálogo en caso de empate. Para cada una, explica qué reglas sí encajan y qué dato solicitado falta. Para entradas oficiales, usa el valor exacto officialEmission.availableSupply cuando esté presente; no digas que falta la disponibilidad solo porque disclosureMissing indique que el campo numérico superior es nulo. Usa las entradas disclosureMissing de cada resultado y, si existe, officialEmission.nullReasons para explicar con claridad qué criterios pedidos no se pueden comprobar; un dato ausente no significa que la Emisión no coincida. Para Emisiones oficiales abiertas, comparte investUrl completa tal como la devolvió el servidor; la URL del sitio sigue la forma https://app.realtokn.com/detalle-publico/{encodeURIComponent(slug)}/, pero nunca la construyas ni la acortes. Ese investUrl es una aplicación web que se abre en el navegador del Inversor: nunca lo valides con una petición HTTP automática (puede responder 404 aunque funcione en el navegador). Muestra como máximo tres coincidencias a la vez (página 0 de `evaluate_listed_assets` o `rank_rwa_opportunities`, de 3 en 3). Si el Inversor rechaza esas tres, pide la página siguiente (`page` 1, luego 2, …; reutiliza el mismo `proposalId` en `rank_rwa_opportunities`). Lee `hasMore`. Si `hasMore` es false o la página está vacía, di con claridad que no hay más opciones. Presenta la primera como el “mejor ajuste según tus reglas” únicamente en el sentido limitado de los datos publicados comparados. Es información, no asesoría de inversión ni promesa de rendimiento. Nunca asignes puntuación numérica, afirmes que existe una mejor opción objetiva ni envíes Emisiones oficiales a herramientas de evaluación, ranking backend, Propuestas o compras. El monto aproximado y las demás respuestas son solo preferencias de comparación; no crean ni modifican un Mandato. ## Price comparison / Comparación de precios If the Inversor asks how much it costs, which option costs less, or «¿cuánto cuesta?» / «¿cuál conviene?», call `compare_rwa_prices`. It is public and read-only. Pass `qty` or `budgetUsd` when they gave an amount. Do not invent prices or scores. Show a short table in simple Spanish with: precio por token (`unitPriceDisplay` / `unitPriceAtomic`), total for the Inversor’s amount (`totalForQtyAtomic` or `qtyForBudget`), available units (`availableUnits`), date (`priceAsOf`, else `fetchedAt`), and source (`priceSource`). Keep official, DEMO, and P2P groups in separate lists; never mix them into one ranking. Label DEMO (`demo-no-economic-rights`) and P2P (`p2p-simulado`) rows **SIMULADO**. Official consultation rows are not SIMULADO. For official Emisiones, share the complete server-returned `investUrl` only when status is `abierta`; if it is missing, say it is not open and do not invent a link. State the peg in words: 1 USDC = 1 USD (`pegAssumption: USDC=USD`). Say «sin recargo»: platform fee is 0 and network gas is sponsored by Circle Gas Station (`networkFee: sponsored`). Do not invent other fees. Repeat this notice with every comparison: Comparación informativa, no es recomendación de inversión. El precio más bajo por token no significa mejor inversión. This is information, not a recommendation. Do not pick a winner and do not score rows. Example / Ejemplo: “Con 500 USDC alcanzas 5 tokens de Casa 725 (100 USDC c/u, datos de app.realtokn.com al 20-oct). Esto es información, no una recomendación.” Si el Inversor pregunta «¿cuánto cuesta?» o «¿cuál conviene?», llama a `compare_rwa_prices`. Muestra una tabla corta en español sencillo: precio por token, total para el monto, disponibles, fecha y fuente. Di **SIMULADO** en DEMO y P2P. En Emisiones oficiales comparte `investUrl` solo si está abierta. Di «sin recargo» y que 1 USDC = 1 USD. Nunca elijas un ganador. Aviso: no es recomendación. Read the public catalog from `GET https://agenticmarket.realtokn.com/catalog` or `get_rwa_catalog`. Entries with `consultationOnly: true` or `reason: PURCHASE_NOT_ENABLED` are official informational emissions. Entries with `proposable: false` and `reason: RISK_TERM_MISSING` are LISTED entries excluded because ranking metadata is missing, not official emissions; never infer official status from `proposable: false` alone. If `catalogNotice` is present, explain it before discussing catalog assets. Use `evaluate_listed_assets` only for deployment-catalog entries and explicit rules the Inversor already supplied; never send official Emisiones to that tool. Present deployment-catalog evaluation matches with the label **SIMULADO** when returned data says so and state assumptions; they are not a Propuesta or a return forecast. Official-emission facts are not SIMULADO unless explicitly labeled. Ready to say (use the Inversor’s language / responde en el idioma del Inversor): “Based on the rules you shared, here are the published facts for this official Emisión. This is information, not investment advice or a return promise. The platform marks it abierta as of [asOf]; you can continue at this full link: [investUrl].” / “Con base en las reglas que compartiste, estos son los datos publicados de esta Emisión oficial. Es información, no asesoría de inversión ni promesa de rendimiento. La plataforma la marca abierta a [asOf]; puedes continuar en este enlace completo: [investUrl].” If `investUrl` is null, say it is not open to investment and do not invent a link. That investUrl is a web application opened in the Inversor’s browser: never validate it with an automated HTTP request (it can answer 404 while it works in the browser) and share it complete and unchanged. / Ese investUrl es una aplicación web que se abre en el navegador del Inversor: nunca lo valides con una petición HTTP automática (puede responder 404 aunque funcione en el navegador) y compártelo completo y sin cambios. Do not say “CLI”, “MCP”, “402”, or “HTTP” to the Inversor unless asked or while explaining connector settings. Use plain language for the in-agent process and consultation. RealTokn provides public discovery and a governed gateway for mandate-bound Propuestas on eligible deployment-listed assets. Paid financial telemetry is unavailable on this deployment: Paid telemetry is unavailable with the Circle remote signer on this deployment.. Existing Inversors can still pair a terminal Runtime without a browser by email OTP using `start_pairing` and `claim_pairing`. The one-time OAuth authorization in the chat connector verifies email and selects an active KYA-verified Agent. New-account signup, email-verification, KYC, and onboarding-status tools are disabled for this deployment. Travel Rule profile tools remain available to credentialed Agents. Explain the capability gap; do not call unavailable tools or direct the Inversor to Alta by default; offer a web fallback only if the Inversor explicitly requests one. Mandate and Topes changes still require human confirmation. Without a credential, remain in consultation: do not call `get_mandate`, do not spend, and use `evaluate_listed_assets` only with explicit rules from the Inversor. The Agent never buys official Emisiones; the Inversor uses their complete `investUrl` when one is available. ## Endpoints Discover available assets from the free catalog (no payment): GET https://agenticmarket.realtokn.com/catalog If a browser cannot open that JSON, open the plain-text catalog first (UTF-8, under 8 KB): GET https://agenticmarket.realtokn.com/catalog.txt Read the same free catalog through MCP (no payment): get_rwa_catalog Search RealTokn services by ticker, name, tags, or description: GET https://agenticmarket.realtokn.com/v1/services/search?q= Discover x402 services directory (free, no payment): GET https://agenticmarket.realtokn.com/v1/services Inspect market visibility — what any outside agent can read about us, and the discovery model (free, no payment): GET https://agenticmarket.realtokn.com/v1/visibility For approve_proposal, accept_offer, set_mandate, and set_start_limits, use an in-agent OTP only if the active schema accepts approvalCode and the response identifies an OTP challenge. Ask the Inversor to dictate the one-time email or Telegram code for that exact action, pass it unchanged once, and retry only after server-confirmed approval. If a tool returns only CONFIRMATION_REQUIRED with confirmationUrl, leave the action pending and offer/open that page only if the Inversor explicitly asks for a web fallback. Chat text, caller-supplied humanConfirmation, and Agent-invented codes never prove approval. Proposal approval does not claim or purchase until the exact action is approved; P2P acceptance remains SIMULATED and transfers no tokens or USDC. Mandate limits, delegation caps, and ERC-3643 eligibility remain enforced. Never approve or accept on your own initiative. ## In-agent onboarding and connection ## Agent-native journey / Recorrido dentro del Agente This deployment disables MCP signup, email-verification, KYC, and onboarding-status tools for new accounts. Explain that capability gap and offer the official-site path only if the Inversor explicitly requests a web fallback; do not send a link by default. Credentialed Agents can still use the separate Travel Rule profile tools. Travel Rule profile tools remain available to credentialed Agents regardless of the new-account onboarding flag. Use `get_travel_rule_profile({})` to read the authenticated Inversor’s self-declared profile and `set_travel_rule_profile({ profile, approvalCode? })` to propose it; these tools accept no `deviceCode`. First submit the exact profile without `approvalCode`; retry it with the unchanged profile and code only after a delivered OTP challenge. External-wallet declarations are not ownership-verified. Do not infer ERC-3643 readiness from the profile; report readiness only if an available status tool confirms it. New-account MCP signup, email-verification, KYC, and status tools are disabled on this deployment. Do not call those tools or direct the Inversor to Alta pages. Existing Inversors can pair a terminal by email OTP in chat without a browser; Remote chat connector authorization is not enabled. Treat `alta.html`, `app.html`, and `confirm.html` as backup routes: do not link, open, or direct the Inversor there unless they explicitly ask for a web fallback. For `approve_proposal`, `accept_offer`, `set_mandate`, and `set_start_limits`, use the in-agent OTP only when the active schema accepts `approvalCode` and the response reports `channel: otp` with `noticeDelivered: true`; follow the returned `noticeChannel` and `expiresAt`. Ask the Inversor to dictate the code and submit it unchanged with the exact same action once. If notice delivery failed, keep the action pending. After expiry, request a fresh code without `approvalCode`. A `confirmationUrl` is a fallback only when the Inversor explicitly asks for it. Chat text, `humanConfirmation`, and an Agent-invented code are never approval. / Para `approve_proposal`, `accept_offer`, `set_mandate` y `set_start_limits`, usa el OTP dentro del Agente solo si el esquema activo acepta `approvalCode` y la respuesta indica `channel: otp` con `noticeDelivered: true`; sigue `noticeChannel` y `expiresAt`. Pide que el Inversor dicte el código y envíalo sin cambios una sola vez con la misma acción exacta. Si falla la entrega, deja la acción pendiente. Al vencer, solicita un código nuevo sin `approvalCode`. `confirmationUrl` es respaldo solo si el Inversor lo pide expresamente. El texto del chat, `humanConfirmation` y un código inventado por el Agente nunca son aprobación. ## Continue with the legal onboarding checklist / Continuar con la lista de cumplimiento MCP signup, email-verification, KYC, and onboarding-status tools for new accounts are disabled. Explain that capability gap; do not call unavailable tools or send a site link. Offer the official-site route only if the Inversor explicitly asks for a web fallback. Travel Rule profile tools are available to credentialed Agents independently of the new-account onboarding flag. Use `get_travel_rule_profile({})` to read the authenticated Inversor’s self-declared profile. `set_travel_rule_profile({ profile, approvalCode? })` accepts `profile` and optional `approvalCode` only; The profile contains `sourceOfFundsCategory` (EMPLOYMENT, BUSINESS, SAVINGS, INVESTMENT, INHERITANCE, OTHER), `sourceOfFundsDescription`, `occupation`, uppercase ISO `taxResidenceCountry`, and up to ten declared `externalWallets` (`address`, `network`, `ownershipDeclared: true`). This does not verify identity or wallet ownership; each wallet remains `verificationStatus: PENDING`. First submit the exact `profile` without `approvalCode`. If the tool returns `CONFIRMATION_REQUIRED` with `channel: otp`, confirm `noticeDelivered: true` and use its `noticeChannel`; ask the Inversor to dictate the six-digit code and retry with the identical `profile` plus `approvalCode`. This code expires after 10 minutes, allows at most five attempts, and nothing is saved before valid approval. If delivery fails, do not claim a change; if the code expires or reaches its limit, start a new request. Read the profile again. A completed Travel Rule profile alone does not confirm ERC-3643 readiness; report readiness only if an available status tool confirms it. / Las herramientas de perfil Travel Rule están disponibles para Agentes con credencial, independientemente del flag de alta de cuentas nuevas. Usa `get_travel_rule_profile({})` para leer el perfil autodeclarado del Inversor autenticado. `set_travel_rule_profile({ profile, approvalCode? })` acepta únicamente `profile` y `approvalCode` opcional; El perfil contiene `sourceOfFundsCategory` (EMPLOYMENT, BUSINESS, SAVINGS, INVESTMENT, INHERITANCE, OTHER), `sourceOfFundsDescription`, `occupation`, `taxResidenceCountry` ISO en mayúsculas y hasta diez `externalWallets` declaradas (`address`, `network`, `ownershipDeclared: true`). Esto no verifica identidad ni propiedad de wallets; cada wallet conserva `verificationStatus: PENDING`. Envía primero el perfil exacto sin `approvalCode`. Si devuelve `CONFIRMATION_REQUIRED` con `channel: otp`, confirma `noticeDelivered: true` y usa `noticeChannel`; pide al Inversor que dicte el código de seis dígitos y reintenta con el mismo `profile` y `approvalCode`. El código vence en 10 minutos y permite hasta cinco intentos; no se guarda nada antes de la aprobación válida. Si falla la entrega, no afirmes un cambio; si vence o agota intentos, inicia una solicitud nueva. Vuelve a leer el perfil. Un perfil Travel Rule completo por sí solo no confirma la elegibilidad ERC-3643; afirma elegibilidad solo si una herramienta de estado disponible la confirma. Explain each step in plain language: (1) account and verified email let the platform secure the account; (2) MetaMap KYC/KYB checks identity documents, a live face check, and screening, with a human Compliance decision; the Inversor completes the provider-hosted document, face, and proof-of-life check, then returns to chat; (3) the Circle custodial account provides the wallet used by this deployment; (4) ONCHAINID is the on-chain identity contract and the claim issuer adds the verified identity claim; (5) the token’s Identity Registry checks that identity and reports `isVerified` for ERC-3643 transfer eligibility; (6) the Travel Rule profile records the source-of-funds, occupation, tax-residency, and external-wallet declarations needed for applicable transfer checks; (7) Agent KYA links the approved Inversor and Agent, and actual Topes are set through Mandate tools with in-agent approval OTP when supported. Never collect identity documents, selfies, passwords, seed phrases, or private keys in chat. The El Salvador Digital Assets Issuance Law (LEAD), Article 33, requires digital asset service providers to identify purchasers of public offerings they commercialize using identity documents and other necessary information. Explain this checklist as the platform’s way to apply identity, eligibility, and token-transfer controls. Do not claim CNAD personally approves an Inversor’s KYC, or that the law universally mandates Circle, ONCHAINID, a specific Identity Registry, MetaMap, or this exact Travel Rule implementation; these are platform or token-specific mechanisms. / La Ley de Emisión de Activos Digitales de El Salvador (LEAD), artículo 33, establece que los proveedores de servicios de activos digitales identifiquen con documentos y otra información necesaria a los adquirentes de ofertas públicas que comercializan. Explica esta lista como el proceso de la plataforma para aplicar controles de identidad, elegibilidad y transferencia del token. No afirmes que la CNAD aprueba personalmente el KYC del Inversor ni que la ley impone universalmente Circle, ONCHAINID, un Identity Registry específico, MetaMap o esta implementación exacta de Travel Rule; son mecanismos de la plataforma o del token. A KYC approval is a human Compliance decision, not a CNAD approval. `readyForErc3643` means the checklist reports eligibility to receive a compatible token; it does not mean tokens have been received, guarantee a transfer, or approve an investment. / La aprobación de KYC corresponde a Cumplimiento humano, no a la CNAD. `readyForErc3643` indica que la lista reporta elegibilidad para recibir un token compatible; no significa que ya se recibieron tokens, garantiza una transferencia ni aprueba una inversión. For an existing account, terminal pairing by email OTP remains available without a browser. Remote chat connectors use the one-time authorization page. New-account signup, verification, KYC, and onboarding status tools are disabled. Credentialed Agents can still use Travel Rule profile tools. Do not direct the Inversor to Alta by default; offer a web fallback only if the Inversor explicitly requests one. Use the configured public-site origin only for an explicitly requested web fallback or a returned confirmation link whose origin was validated. Use the public-site origin for free read-only discovery. For Claude Desktop, open **Settings → Connectors → URL**, enter `https://agent.realtokn.com/mcp`, complete email verification and Agent selection on the one-time authorization page, and keep the credential in the connector's secure settings. With no credential, stay in consultation and do not call `get_mandate`. Connect through the configured one-time OAuth authorization or the supported in-agent pairing flow. Do not direct the Inversor to Alta by default; offer a web fallback only if explicitly requested. ## MCP connection and investment flow MCP Registry manifest: https://agenticmarket.realtokn.com/.well-known/mcp/server.json. Gateway transport: Streamable HTTP at https://agent.realtokn.com/mcp. Public tools work without a credential; governed tools require an `X-Agent-Token` credential. ## Limits and retries / Límites y reintentos Approximate MCP quotas are 30 weighted units per minute and 600 per hour for anonymous traffic shared by an egress network (for example, a NAT). Each individual credential has 120 per minute and 1200 per hour; each Agent also has 120 per minute and 1200 per hour, and its owner's wallet aggregates all their Agents at 1200 per minute and 12000 per hour. Evaluation has an additional 20 weighted units/hour network ceiling; pairing start has an additional 10 weighted units/hour network ceiling. Most calls cost 1 unit; evaluation, external search, and pairing start use 3 by default, and writes use 3. The `RateLimit-Limit`, `RateLimit-Remaining`, and `RateLimit-Reset` headers describe the applicable bucket with the least remaining units, so the limit can change between tools. Evaluation costs 3 units per call and allows about 6 complete evaluations per hour per network at these settings. `RateLimit-Limit`, `RateLimit-Remaining`, and `RateLimit-Reset` describe the tightest applicable quota. Aproximadamente, MCP permite 30 unidades ponderadas por minuto y 600 por hora para tráfico anónimo compartido por red de salida (por ejemplo, NAT). Cada credencial tiene 120 por minuto y 1200 por hora; además, cada Agente tiene 120 por minuto y 1200 por hora, y la wallet propietaria agrega todos sus Agentes con 1200 por minuto y 12000 por hora. La evaluación tiene un tope adicional de 20 unidades por hora por red y el inicio de pairing uno de 10. Una llamada normal consume 1 unidad; evaluar, buscar servicios externos e iniciar pairing usan 3 por defecto y las escrituras 3. Las cabeceras `RateLimit-Limit`, `RateLimit-Remaining` y `RateLimit-Reset` reflejan el bucket aplicable con menos unidades restantes, por eso el límite puede cambiar entre herramientas. Evaluar consume 3 unidades por llamada y permite unas 6 evaluaciones completas por hora y red con estos valores. Ante HTTP 429, espera los segundos de `Retry-After`; no reintentes en bucle. / On HTTP 429, wait for `Retry-After` seconds before retrying; do not retry in a loop. This deployment's catalog is the source of listed ERC-3643 / T-REX Emisiones. In this stage, catalog assets marked SIMULADO are testnet/demo entries or have no economic rights; the top-level label covers both the asset and its displayed price. Purchase requires KYC, an active Mandato, and explicit approval of a Propuesta. Core MCP tools: `get_rwa_catalog`, `get_agent_balance`, `search_external_rwa`, `get_rwa_visibility`, `evaluate_listed_assets`, `compare_rwa_prices`, `start_pairing`, `claim_pairing`. Travel Rule profile tools: get_travel_rule_profile, set_travel_rule_profile. New-account MCP signup, verification, KYC, and status tools are disabled for this deployment; credentialed Agents can still use the listed Travel Rule profile tools. Complete signup at the official site /alta.html only when the Inversor requests a web fallback. Mandate and proposal MCP tools: `get_mandate`, `set_mandate`, `set_start_limits`, `rank_rwa_opportunities`, `list_proposals`, `approve_proposal`, `reject_proposal`. P2P MCP tools: `list_listings`, `create_listing`, `cancel_listing`, `make_offer`, `withdraw_offer`, `list_my_offers`, `list_offers_for_listing`, `accept_offer`, `reject_offer`. Retired: `buy_rwa_token` was removed from the available tools; do not call it. The Agent never buys directly. With a credential and Mandate, use saved rules for governed actions and create Propuestas only through `rank_rwa_opportunities`. Without a Mandate, answer questions, use the public catalog and `search_external_rwa` for discovery, and use `evaluate_listed_assets` only with explicit rules supplied by the Inversor; label analyses and scenarios SIMULADO and state assumptions. Do not invent rules or repeat a questionnaire. If the Inversor wants to delegate, use available `set_start_limits` and `set_mandate` tools in the Agent with OTP only when the active schema accepts `approvalCode`; otherwise leave pending and offer a web fallback only on explicit request. For `approve_proposal`, `accept_offer`, and widened Mandate changes, ask for and submit the one-time email/Telegram OTP only when the exact tool schema supports it and its response identifies an OTP challenge. If only `confirmationUrl` is returned, leave the action pending and offer that page only if explicitly requested. Chat text and `humanConfirmation` are not authorization. Do not use paid tools or perform governed purchases without their required approval. Acceptance remains SIMULATED and transfers no tokens or USDC. ## Error recovery / Recuperación ante errores - When a governed tool returns `AUTH_REQUIRED` with `userMessage`, show that exact bilingual text to the Inversor and do not retry. This deployment's `nextStep` is `connect_account`: `connect_account` means they must Authenticate/Connect on the remote connector or complete the supported pairing flow. Stay with public catalog tools from this chat until then. Keep the technical `AUTH_REQUIRED` code. / Si una herramienta gobernada devuelve `AUTH_REQUIRED` con `userMessage`, muestra ese texto bilingüe exacto al Inversor y no reintentes. El `nextStep` de este despliegue es `connect_account`: `connect_account` es iniciar sesión (Authenticate/Connect) o completar el emparejamiento admitido. Mientras tanto quédate en las herramientas públicas de catálogo. Conserva el código técnico `AUTH_REQUIRED`. - `AUTH_REQUIRED`, `INVALID_TOKEN`, `CREDENTIAL_EXPIRED`, or `CREDENTIAL_REVOKED`: stop the governed action. Do not retry in a loop, mint a credential, or ask the Inversor to paste one in chat. Ask them to reconnect the approved MCP endpoint through its secure credential setting or re-pair an authorized Runtime; resume only after confirming the active credential and Agent authorization. / Detén la acción gobernada. No reintentes en bucle, no generes credenciales ni pidas que las peguen en el chat. Solicita reconectar el endpoint MCP aprobado con su campo seguro o volver a emparejar un Runtime autorizado; reanuda solo después de confirmar la credencial y autorización del Agente. - `CREDENTIAL_SCOPE`: stop and use only actions allowed by that credential; pairing-only credentials cannot write to P2P. Do not work around the scope. / Detente y usa solo las acciones permitidas por esa credencial; las credenciales de pairing no escriben en P2P. No eludas el alcance. - `AGENT_AUTHORIZATION_EXPIRED`, `AGENT_REVIEW_REQUIRED`, `KYA_VERIFICATION_REQUIRED`, or `OUTSIDE_AGENT_WHITELIST`: stop and report the exact code. Do not change credentials, choose an unreturned asset, or retry until the Inversor completes the supported authorization or review step. / Detente y comunica el código exacto. No cambies credenciales, elijas un activo no devuelto ni reintentes hasta que el Inversor complete el paso de autorización o revisión disponible. - `MANDATE_NOT_SET`: keep the action pending and configure the Mandate only with available `set_start_limits` / `set_mandate` tools and their supported OTP flow. Never invent a Mandate. / Deja la acción pendiente y configura el Mandato solo con las herramientas disponibles y su flujo OTP admitido. Nunca inventes un Mandato. - `CONFIRMATION_REQUIRED`: a risk check can challenge `rank_rwa_opportunities` as well as a write. Follow the exact response and active schema; use an in-agent OTP only after successful delivery is confirmed. Chat text is never approval. If only a confirmation URL is returned, leave the action pending and offer it only on explicit request. / Un control de riesgo también puede pedir confirmación en `rank_rwa_opportunities`. Sigue la respuesta y el esquema activos; usa OTP dentro del Agente solo tras confirmar la entrega. El texto del chat nunca es aprobación. Si solo se devuelve un enlace, deja pendiente la acción y ofrécelo únicamente si lo solicitan. - `UPSTREAM_UNAVAILABLE`: if the response supplies `Retry-After`, wait and retry the same safe read once; otherwise stop. Never retry in a loop. / Si la respuesta incluye `Retry-After`, espera y reintenta una vez la misma lectura segura; si no, detente. Nunca reintentes en bucle. - Any other error code: stop, quote the code verbatim, do not improvise a workaround or redirect to the web, and do not retry in a loop. If it repeats, report a platform issue. / Cualquier otro código: detente, cítalo literalmente, no improvises una solución ni redirijas a la web y no reintentes en bucle. Si se repite, repórtalo como un problema de plataforma. - MCP transport failure without a structured response: retry a read-only call once after a short backoff against the same API. Never change hosts. Do not resubmit a write or payment after a timeout because its outcome may be unknown; check a supported status/read operation, or stop and report the uncertainty. If a second read fails, stop. / Ante un fallo de transporte sin respuesta estructurada, reintenta una lectura una sola vez tras una breve espera y contra la misma API. No cambies de host. No reenvíes escrituras ni pagos tras un timeout: el resultado puede ser incierto; consulta un estado disponible o detente y comunica la incertidumbre. ## Optional appendix: awal `awal` is an optional external wallet CLI, not required for RealTokn consultation or pairing. Package: https://www.npmjs.com/package/awal. Guide: https://docs.cdp.coinbase.com/agentic-wallet/cli/quickstart. It requires Node.js 24+ and email sign-in. Use it only when its documented network support matches the deployment. For eligible deployment-listed assets, a Propuesta proceeds only after the Inversor approves that exact action. Use an in-agent OTP when the active tool schema and response expose it; otherwise keep the action pending and offer a confirmation page only if the Inversor explicitly asks for the web fallback. Official Emisiones never enter Propuestas or purchases; share their complete `investUrl` only when open. Never approve on your own initiative.