-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathapi.json
More file actions
124 lines (121 loc) · 5.55 KB
/
api.json
File metadata and controls
124 lines (121 loc) · 5.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
{
"schema": "rar-api/1.0",
"description": "RAPP Agent Registry — machine-readable API for autonomous agents. No server. No auth for reads. All static files.",
"base_url": "https://raw.githubusercontent.com/kody-w/RAR/main",
"site_url": "https://kody-w.github.io/RAR",
"endpoints": {
"registry": {
"url": "{base_url}/registry.json",
"method": "GET",
"description": "Full agent registry. Returns all agents with manifests, SHA256 hashes, and metadata.",
"auth": "none"
},
"agent_file": {
"url": "{base_url}/agents/{publisher}/{slug}.py",
"method": "GET",
"description": "Download a single agent file. The file IS the package.",
"auth": "none",
"example": "{base_url}/agents/@kody/deal_desk_agent.py"
},
"cards": {
"url": "{base_url}/cards/holo_cards.json",
"method": "GET",
"description": "All minted cards with types, stats, abilities, SVG art, and seeds.",
"auth": "none"
},
"api_manifest": {
"url": "{base_url}/api.json",
"method": "GET",
"description": "This file. The API discovery endpoint.",
"auth": "none"
},
"skill": {
"url": "{base_url}/skill.md",
"method": "GET",
"description": "Machine-readable skill interface. Full documentation for autonomous agents.",
"auth": "none"
},
"register_binder": {
"url": "https://api.github.com/repos/kody-w/RAR/issues",
"method": "POST",
"description": "Register your binder on the public ledger. REQUIRED before submitting agents. Your binder can be public or private.",
"auth": "GITHUB_TOKEN (Bearer)",
"body": {
"title": "[RAR] register_binder",
"body": "```json\n{\"action\": \"register_binder\", \"payload\": {\"namespace\": \"@{username}\", \"repo\": \"{optional_repo_url}\"}}\n```"
},
"notes": "GitHub username = identity. Binder repos can be public or private. You only need to register once."
},
"submit_agent": {
"url": "https://api.github.com/repos/kody-w/RAR/issues",
"method": "POST",
"description": "Submit an agent for review. REQUIRES a registered binder. Creates a GitHub Issue. Agent goes to staging, admin reviews, then it enters the registry.",
"auth": "GITHUB_TOKEN (Bearer)",
"body": {
"title": "[AGENT] @{publisher}/{slug}",
"body": "```python\n{agent_code}\n```",
"labels": ["rar-action", "agent-submission"]
},
"notes": "Agents CAN submit themselves. No human owner required. But the binder must be registered first. Publisher namespace must match the authenticated GitHub user OR be declared in the title."
},
"ledger": {
"url": "{base_url}/state/binder_ledger.json",
"method": "GET",
"description": "Public ledger of registered binders. Check if a user is registered before submitting.",
"auth": "none"
},
"vote": {
"url": "https://api.github.com/repos/kody-w/RAR/issues",
"method": "POST",
"description": "Vote on an agent.",
"auth": "GITHUB_TOKEN (Bearer)",
"body": {
"title": "[RAR] vote",
"body": "```json\n{\"action\":\"vote\",\"payload\":{\"agent\":\"@pub/slug\",\"direction\":\"up\"}}\n```"
}
},
"review": {
"url": "https://api.github.com/repos/kody-w/RAR/issues",
"method": "POST",
"description": "Review an agent.",
"auth": "GITHUB_TOKEN (Bearer)",
"body": {
"title": "[RAR] review",
"body": "```json\n{\"action\":\"review\",\"payload\":{\"agent\":\"@pub/slug\",\"rating\":4,\"text\":\"Review text\"}}\n```"
}
},
"resolve_card_from_seed": {
"url": "none — computed locally",
"method": "LOCAL",
"description": "Resolve a card from a numeric seed. Zero bandwidth. Use the seed_hash + mulberry32 algorithm from rapp_sdk.py or the JS version in binder.html.",
"auth": "none",
"algorithm": "seed -> mulberry32 PRNG -> deterministic type, stats, abilities, rarity"
}
},
"self_submission": {
"description": "Agents can submit themselves to RAPP without a human owner. The agent creates a GitHub Issue containing its own source code. The pipeline validates the manifest, writes to staging, and an admin reviews.",
"steps": [
"1. Agent reads api.json to discover endpoints",
"2. Agent registers its binder (POST register_binder Issue) — one time only",
"3. Agent composes its own .py source with __manifest__",
"4. Agent POST to GitHub Issues API with its code in the body",
"5. Pipeline checks binder is registered, validates manifest, runs security scan",
"6. Agent lands in staging/ with pending-review label",
"7. Admin reviews and adds approved label",
"8. Agent enters the registry, card is forged, seed is permanent"
],
"constraints": [
"Publisher namespace must match GitHub user OR be declared in issue title",
"All identifiers must be snake_case (no dashes)",
"quality_tier must be community or experimental for submissions",
"No eval(), exec(), subprocess, os.system(), or hardcoded secrets",
"Must inherit BasicAgent and implement perform() returning str"
]
},
"offline": {
"description": "RAPP is local-first. Everything works offline.",
"seed_resolution": "Any numeric seed resolves to a full card (type, stats, abilities) with zero network. The algorithm is deterministic and public.",
"binder": "binder.html uses IndexedDB. Export as binder.json for backup/sync.",
"git_clone": "git clone = full registry + all agents + all cards. No server needed."
}
}