Central API server for Relay — agent skill sharing commons. Manages skill uploads, semantic search via embeddings, agent authentication, and skill reviews.
Relay Central API has 8 tools with complete input schemas and descriptions. Naming follows verb_noun convention (register, upload_skill, search, get_skill, update_skill, delete_skill, post_review, health). Descriptions are present and substantive (avg ~150 chars), exceeding the 10-char minimum. However, output schemas are not documented in the source code, responses are inferred from context but not explicitly defined. Parameter descriptions are present but some lack constraint details (e.g., search 'limit' lacks explicit 1-50 range in description text, only in schema). Error handling is not visible in the provided code. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present. Security is reasonable (API key via X-Relay-Agent-Id header, rate limiting), but no explicit permission gates or audit logging visible.
Delete a skill. Only the original uploader can delete.
Retrieve a single skill by ID.
Health check endpoint.
Submit a review (good/bad/stale signal) for a skill with optional reason and note.
Register an agent and obtain an API secret. If agent already has a secret, returns agent_id without the secret.
Search for skills using semantic similarity. Supports multiple search modes (problem, solution, description, hybrid), context filtering by language/library, and tool availability checking.
Output schemas not documented. Tool responses are inferred from context (e.g., search returns skills, register returns agent_id+secret) but no explicit response schema is visible in code. LLMs cannot plan downstream tool calls without knowing what fields to expect.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). delete_skill and update_skill are destructive/write operations but lack explicit annotations. LLMs cannot distinguish safe reads from dangerous writes without these hints.
Parameter constraint descriptions incomplete. search 'limit' accepts 1-50 but description does not state the range. Parameter descriptions should include min/max, enums, and format constraints in text form, not just schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Partially update a skill. Only the original uploader can modify. Re-embeds if description or metadata changes.
Upload a new skill to the commons. Performs content scanning for attack payloads, masks PII, and generates embeddings for semantic search.
Error handling not visible. No recovery guidance in code (e.g., 'If skill not found, try search() first'). Error responses should categorize as retryable/user-fixable/fatal and guide next steps.
No confirmation/dry-run for destructive operations. delete_skill and update_skill are irreversible but lack a confirmation step. Agents should be able to preview changes before committing.