What: validate a Stellar address (G/M) with no network call. Pure compute, the simplest possible first contribution.
Route: GET /utils/validate?address=G…
Sample response: { "address": "G…", "valid": true, "type": "ed25519_public_key" }
Upstream: none, strkey checksum / regex. No key, no network.
New folder: src/capabilities/validate/.
How to build
Copy apps/capabilities/src/capabilities/stellar/ to apps/capabilities/src/capabilities/<name>/ and adapt:
routes.ts — the Hono route(s) above
manifest.ts — the marketplace manifest (name, operations with sampleRequest/sampleResponse, price: "0")
index.ts — export const capability = { routes, manifest }
- a helper file for any fetch logic
The registry picks it up automatically, no other file to edit.
pnpm --filter capabilities typecheck
pnpm --filter capabilities dev # then curl the route on localhost:3004
Acceptance
- New folder under
src/capabilities/, following the README rules (read-only, no secrets, clean JSON, price: "0").
manifest.ts has a sampleRequest + sampleResponse per operation.
- typecheck passes and the route returns the documented shape locally.
See apps/capabilities/README.md → "How to add one". Depends on #101 (folder structure) landing first.
What: validate a Stellar address (G/M) with no network call. Pure compute, the simplest possible first contribution.
Route:
GET /utils/validate?address=G…Sample response:
{ "address": "G…", "valid": true, "type": "ed25519_public_key" }Upstream: none, strkey checksum / regex. No key, no network.
New folder:
src/capabilities/validate/.How to build
Copy
apps/capabilities/src/capabilities/stellar/toapps/capabilities/src/capabilities/<name>/and adapt:routes.ts— the Hono route(s) abovemanifest.ts— the marketplace manifest (name, operations withsampleRequest/sampleResponse,price: "0")index.ts—export const capability = { routes, manifest }The registry picks it up automatically, no other file to edit.
pnpm --filter capabilities typecheck pnpm --filter capabilities dev # then curl the route on localhost:3004Acceptance
src/capabilities/, following the README rules (read-only, no secrets, clean JSON,price: "0").manifest.tshas asampleRequest+sampleResponseper operation.See
apps/capabilities/README.md→ "How to add one". Depends on #101 (folder structure) landing first.