# ROKI Connect

> Verified ROKI Connect payments contract for coding agents: operations, schemas, validator.

- name: la.roki/connect
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 91/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/la.roki%2Fconnect
- tools: https://api.protogrid.dev/v1/servers/la.roki%2Fconnect/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "connect": {
      "type": "http",
      "url": "https://mcp.roki.la/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 85
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% ~updated-65d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 91/100 (strong)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 19 of 19 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,857 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 19, about 2,857 tokens to load them all
- tool set hash: 5a595c5d1d597e360d959d72af6a528b
- badge: [![protogrid quality](https://protogrid.dev/badge/la.roki/connect.svg)](https://protogrid.dev/servers/la.roki/connect)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://mcp.roki.la/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (19)

- `roki_audit_integration`: Return the checklist to audit existing ROKI code, ordered by how badly each item fails in production. Use it when reviewing an integration you did not write, or before going live.
- `roki_check_result`: Compare the payment the API returned against the body you sent, and report anything that does not match. Every other check here looks at what you SEND. This one exists for the errors that survive that: the field name was right and the VALUE was wrong. The API answers 201, `warnings` comes back empty because there was nothing to warn about, and the merchant charged something else. Catches the amount off by a factor of 100, fee pass-through asked for and returned as zero, tax that was not applied, `expires_at` already in the past because it was sent as UTC instead of Honduras time, a total that does not add up, and a `transaction_id` parsed as a number. Run it after every createPayment while you are building, and in your own tests afterwards.
- `roki_choose_integration_mode`: Decide how to integrate ROKI Connect for a given project (web checkout, embedded card fields, mobile app, invoices or recurring billing) and get the constraints that apply before writing code. The modes and the endpoints behind them are read from the corpus, so this answer cannot describe a mode the API no longer has - or miss one it gained.
- `roki_get_authentication_guide`: How authentication works, how the two environments are selected, where credentials come from, and how to store and rotate them safely.
- `roki_get_doc_section`: Return the complete text of one section of the integration guide, by number (e.g. "14"), sub-number ("12.1") or title fragment ("webhook").
- `roki_get_error`: Explain an HTTP status or an error message returned by the ROKI API: what it means, the likely cause and what to do. Use this instead of guessing when an integration fails.
- `roki_get_integration_example`: Return a complete, runnable integration example for a stack: configuration, API client, checkout flow, webhook handler with signature verification, and polling fallback.
- `roki_get_operation`: Full detail for one operation: method, path, headers, request schema field table, responses, and worked examples.
- `roki_get_quickstart`: The minimum viable integration sequence, end to end, including the manual portal steps a developer cannot skip.
- `roki_get_schema`: Return a fully dereferenced JSON Schema by name (e.g. "PaymentCreateRequest", "Payment", "WebhookEvent"). Use it to know the exact field names, types and constraints.
- `roki_get_webhook_guide`: Everything about webhooks: portal registration, event types, payload shape, HMAC signature verification over the raw body, idempotent processing, and the polling fallback.
- `roki_list_operations`: List every operation the API actually exposes, plus the operations that are documented as NOT existing. Call this before writing any integration code so you never invent an endpoint.
- `roki_sandbox_info`: Whether the sandbox playground is enabled here, which operations it accepts, its limits, and the sandbox test cards.
- `roki_sandbox_try`: Runs a documented operation against the ROKI sandbox using THIS SERVER'S own test credential, and returns the actual response. Use it to prove an integration works instead of assuming it does - especially after roki_validate_request says a payload is valid.

You never supply a key: this server holds a sandbox-only credential and refuses to run against production. Amounts are capped and links expire quickly, because the sandbox is shared.
- `roki_scaffold_integration`: Return the full runnable skeleton for a stack: credential storage, API client, checkout flow, webhook handler with signature verification, and the polling fallback. Use it to start an integration instead of assembling one from memory.
- `roki_search_docs`: Search the official ROKI Connect corpus (integration guide, API operations and schemas) and return ranked excerpts. Use this first when you need any ROKI-specific fact. Never answer a ROKI question from memory or from another payment gateway's conventions.
- `roki_status`: Server version, corpus contents and freshness. Safe first call to confirm the connection works. Exposes no credentials and no merchant data.
- `roki_validate_request`: Validate a payload against the official schema WITHOUT sending it, and check the business rules the API enforces. Critical for this API: it ignores unknown fields and returns 201, so a typo produces a misconfigured payment rather than an error. The response names what it dropped in `warnings`, but by then the payment exists - validating here means it is never created. Always validate before writing or shipping integration code.
- `roki_verify_webhook_signature`: Check a ROKI-Signature header against the raw body and the signing secret. When it fails, this does not just say "invalid" - it tries the specific wrong constructions developers actually write and tells you which mistake you made. Use it whenever webhook verification rejects real events. On the signing secret: this is ROKI's own server and ROKI issued that secret, so sending it here discloses nothing new. It is used to recompute the HMAC and is never stored, logged or counted.
