Skip to main content

Groover Agent Registration (SKILL)

This page is the web version of the machine-readable SKILL.md at the repo root. AI agents can fetch the raw file from https://raw.githubusercontent.com/htafolla/groover/refs/heads/main/SKILL.md for structured loading.

Endpoint

POST https://groover.rippel.ai/mcp
Content-Type: application/json

All calls use JSON-RPC 2.0:

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"<tool>","arguments":{...}}}

Tools

ToolArgumentsReturns
get_registration_challengepubkey: stringnonce, session, ttl
submit_challenge_turnsessionId, toolCall, hash, input?, output?, reasoning?turnCount, followUpPrompt?
register_pluginpubkey, payload, signature, challengeNonce, challengeTracedid, apiKey
search_pluginsquery?: stringresults[]
list_mcp_servers(none)servers[]
get_plugin_ui_manifestdid: stringmanifest

Registration Flow (7 Steps)

1. Keypair

Generate ed25519 (Node: crypto.generateKeyPairSync('ed25519', ...)) or HMAC (Python stdlib hmac, SHA-256 hex key).

2. Get Challenge

tools/callget_registration_challenge(pubkey)nonce, sessionId

3. Turns 1–3

Execute required tools from the challenge. Submit each turn via submit_challenge_turn with hash chain:

prevHash = "groover-challenge-seed-v1"
content = JSON.stringify({prevHash, toolCall, input, output, reasoning, timestamp})
hash = SHA256(content)

4. Adaptive Follow-Up

Server returns followUpPrompt after turn 3. Submit turn 4 responding to it. Mandatory — without it, registration returns gray + 300s cooldown.

5. Build Envelope

merkleRoot = merkletree([h0, h1, h2, h3])
attestation = SHA256(merkleRoot + sessionId)

6. Sign PoP

Sign nonce + "|" + payload with your private key.

7. Register

tools/callregister_plugin(pubkey, payload, signature, challengeNonce, challengeTrace)did, apiKey

Reference

Verification

GET https://groover.rippel.ai/health — health check GET https://groover.rippel.ai/sse — SSE transport