hackshop-mcp 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/SAMPLING.md +12 -6
- package/catalog.json +332 -54
- package/dist/server.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ You describe a project. The agent surfaces 3-5 hackable hardware options you wou
|
|
|
8
8
|
|
|
9
9
|
A tinkerer has an idea. The idea would be cooler with the right piece of hardware attached: an old screen, an abandoned smart speaker, a bricked frame, a hackable handheld. The tinkerer doesn't know what hardware exists, what's hackable, or what would creatively *fit* the idea. So the idea stays purely software, or gets paired with a Raspberry Pi.
|
|
10
10
|
|
|
11
|
-
This is a hardware-knowledge layer on top of LLMs. Two tools,
|
|
11
|
+
This is a hardware-knowledge layer on top of LLMs. Two tools, 27 hand-vetted devices, one closed-set tag vocabulary, and a brick-risk safety rule that won't let the agent fabricate a score for hardware classes where bricks are unrecoverable.
|
|
12
12
|
|
|
13
13
|
## Status
|
|
14
14
|
|
|
@@ -57,7 +57,7 @@ Lookup by id, exact name, or substring. Returns the same shape as a single propo
|
|
|
57
57
|
|
|
58
58
|
- TypeScript + `@modelcontextprotocol/sdk`
|
|
59
59
|
- LLM reasoning delegated to the host via `sampling/createMessage` (no Anthropic SDK bundled, no BYO key)
|
|
60
|
-
- Catalog stored as `catalog.json` in the repo (JSON, version-controllable,
|
|
60
|
+
- Catalog stored as `catalog.json` in the repo (JSON, version-controllable, 27 devices in V0.0.2 — growing)
|
|
61
61
|
- Tag vocabulary in `tags.md`, validated at boot — server refuses to start on tag drift
|
|
62
62
|
- eBay integration is **not** in this server. Compose with [`ebay-mcp`](https://github.com/YosefHayim/ebay-mcp) at the host level.
|
|
63
63
|
|
package/SAMPLING.md
CHANGED
|
@@ -74,11 +74,17 @@ JSON only, no markdown. Code-fence allowed (the parser strips it).
|
|
|
74
74
|
|
|
75
75
|
The retry is in `sampleJson` itself (`src/sampling.ts`).
|
|
76
76
|
|
|
77
|
-
### What the server
|
|
77
|
+
### What the server does (v0.0.2 contract)
|
|
78
78
|
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
82
|
-
-
|
|
79
|
+
- **Always tries host sampling first** via `sampling/createMessage`. No key needed; host pays.
|
|
80
|
+
- **Reads `ANTHROPIC_API_KEY` only as a fallback** when host sampling fails twice. Optional: if the env var is unset, the server returns a degraded response instead of calling Anthropic directly.
|
|
81
|
+
- **Bundles `@anthropic-ai/sdk`** as a runtime dependency for the fallback path. (V0.0.1 promised "no SDK" — V0.0.2 chose pragmatism after live testing showed Claude Desktop's sampling support is spotty.)
|
|
82
|
+
- **Never crashes on sampling failure** — degraded response is the floor.
|
|
83
|
+
- **Never makes provider calls when `ANTHROPIC_API_KEY` is unset** — keyless installs stay keyless.
|
|
83
84
|
|
|
84
|
-
|
|
85
|
+
### What the server still NEVER does
|
|
86
|
+
|
|
87
|
+
- Bundle an OpenAI / other non-Anthropic SDK.
|
|
88
|
+
- Hard-require `ANTHROPIC_API_KEY` (it's optional, host sampling is the preferred path).
|
|
89
|
+
- Persist user prompts or proposals.
|
|
90
|
+
- Make outbound calls beyond the Anthropic API + the user's MCP host.
|
package/catalog.json
CHANGED
|
@@ -3,7 +3,12 @@
|
|
|
3
3
|
"id": "electric-objects-eo1",
|
|
4
4
|
"name": "Electric Objects EO1",
|
|
5
5
|
"category": "display",
|
|
6
|
-
"idea_fit_tags": [
|
|
6
|
+
"idea_fit_tags": [
|
|
7
|
+
"display",
|
|
8
|
+
"framed-art",
|
|
9
|
+
"ambient",
|
|
10
|
+
"creative-coding"
|
|
11
|
+
],
|
|
7
12
|
"hack_difficulty": 3,
|
|
8
13
|
"brick_risk": 2,
|
|
9
14
|
"brick_provenance": "founder-verified",
|
|
@@ -13,13 +18,23 @@
|
|
|
13
18
|
"https://hackaday.com/tag/electric-objects/"
|
|
14
19
|
],
|
|
15
20
|
"community_size_bucket": "small",
|
|
16
|
-
"notes": "23-inch wall-mount picture frame, abandoned by manufacturer. Linux-based, SSH access via stock firmware bug. Founder revived one in ~6h with Claude assistance."
|
|
21
|
+
"notes": "23-inch wall-mount picture frame, abandoned by manufacturer. Linux-based, SSH access via stock firmware bug. Founder revived one in ~6h with Claude assistance.",
|
|
22
|
+
"est_used_price_usd_min": 80,
|
|
23
|
+
"est_used_price_usd_max": 200,
|
|
24
|
+
"image_url": "https://image.wsj.net/im-86037",
|
|
25
|
+
"est_setup_hours_min": 4,
|
|
26
|
+
"est_setup_hours_max": 8
|
|
17
27
|
},
|
|
18
28
|
{
|
|
19
29
|
"id": "raspberry-pi-4b",
|
|
20
30
|
"name": "Raspberry Pi 4 Model B",
|
|
21
31
|
"category": "sbc",
|
|
22
|
-
"idea_fit_tags": [
|
|
32
|
+
"idea_fit_tags": [
|
|
33
|
+
"sbc",
|
|
34
|
+
"low-power",
|
|
35
|
+
"creative-coding",
|
|
36
|
+
"kiosk"
|
|
37
|
+
],
|
|
23
38
|
"hack_difficulty": 1,
|
|
24
39
|
"brick_risk": 1,
|
|
25
40
|
"brick_provenance": "founder-verified",
|
|
@@ -28,13 +43,24 @@
|
|
|
28
43
|
"https://www.raspberrypi.com/documentation/"
|
|
29
44
|
],
|
|
30
45
|
"community_size_bucket": "thriving",
|
|
31
|
-
"notes": "Default tinkerer choice. Boring but always works. Use as baseline; recommend more interesting hardware first."
|
|
46
|
+
"notes": "Default tinkerer choice. Boring but always works. Use as baseline; recommend more interesting hardware first.",
|
|
47
|
+
"est_used_price_usd_min": 35,
|
|
48
|
+
"est_used_price_usd_max": 65,
|
|
49
|
+
"image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Raspberry_Pi_4_Model_B_-_Side.jpg/640px-Raspberry_Pi_4_Model_B_-_Side.jpg",
|
|
50
|
+
"est_setup_hours_min": 1,
|
|
51
|
+
"est_setup_hours_max": 2
|
|
32
52
|
},
|
|
33
53
|
{
|
|
34
54
|
"id": "raspberry-pi-zero-2w",
|
|
35
55
|
"name": "Raspberry Pi Zero 2 W",
|
|
36
56
|
"category": "sbc",
|
|
37
|
-
"idea_fit_tags": [
|
|
57
|
+
"idea_fit_tags": [
|
|
58
|
+
"sbc",
|
|
59
|
+
"low-power",
|
|
60
|
+
"creative-coding",
|
|
61
|
+
"kiosk",
|
|
62
|
+
"iot"
|
|
63
|
+
],
|
|
38
64
|
"hack_difficulty": 1,
|
|
39
65
|
"brick_risk": 1,
|
|
40
66
|
"brick_provenance": "founder-verified",
|
|
@@ -43,13 +69,24 @@
|
|
|
43
69
|
"https://www.raspberrypi.com/products/raspberry-pi-zero-2-w/"
|
|
44
70
|
],
|
|
45
71
|
"community_size_bucket": "thriving",
|
|
46
|
-
"notes": "Smaller than Pi 4B, lower power. Good for projects that need to be embedded/hidden. Reasonable Wi-Fi. Slightly slow CPU but usually enough."
|
|
72
|
+
"notes": "Smaller than Pi 4B, lower power. Good for projects that need to be embedded/hidden. Reasonable Wi-Fi. Slightly slow CPU but usually enough.",
|
|
73
|
+
"est_used_price_usd_min": 15,
|
|
74
|
+
"est_used_price_usd_max": 25,
|
|
75
|
+
"image_url": "https://www.raspberrypi.com/app/uploads/2021/10/db5be9bd-2792-46cf-91dc-fb3a91ce5a45.png",
|
|
76
|
+
"est_setup_hours_min": 1,
|
|
77
|
+
"est_setup_hours_max": 2
|
|
47
78
|
},
|
|
48
79
|
{
|
|
49
80
|
"id": "tidbyt-gen1",
|
|
50
81
|
"name": "Tidbyt (Gen 1)",
|
|
51
82
|
"category": "display",
|
|
52
|
-
"idea_fit_tags": [
|
|
83
|
+
"idea_fit_tags": [
|
|
84
|
+
"display",
|
|
85
|
+
"ambient",
|
|
86
|
+
"framed-art",
|
|
87
|
+
"creative-coding",
|
|
88
|
+
"low-power"
|
|
89
|
+
],
|
|
53
90
|
"hack_difficulty": 2,
|
|
54
91
|
"brick_risk": 2,
|
|
55
92
|
"brick_provenance": "community-reported",
|
|
@@ -59,13 +96,24 @@
|
|
|
59
96
|
"https://github.com/tronbyt/server"
|
|
60
97
|
],
|
|
61
98
|
"community_size_bucket": "active",
|
|
62
|
-
"notes": "64x32 LED matrix, ESP32-based. Community firmware (Tronbyt) supports self-hosted apps without Tidbyt cloud."
|
|
99
|
+
"notes": "64x32 LED matrix, ESP32-based. Community firmware (Tronbyt) supports self-hosted apps without Tidbyt cloud.",
|
|
100
|
+
"est_used_price_usd_min": 120,
|
|
101
|
+
"est_used_price_usd_max": 200,
|
|
102
|
+
"image_url": "https://m.media-amazon.com/images/I/61j8KPFQOEL._UF1000,1000_QL80_.jpg",
|
|
103
|
+
"est_setup_hours_min": 1,
|
|
104
|
+
"est_setup_hours_max": 3
|
|
63
105
|
},
|
|
64
106
|
{
|
|
65
107
|
"id": "barnes-noble-nook-touch",
|
|
66
108
|
"name": "Barnes & Noble Nook Simple Touch (BNRV300)",
|
|
67
109
|
"category": "display",
|
|
68
|
-
"idea_fit_tags": [
|
|
110
|
+
"idea_fit_tags": [
|
|
111
|
+
"display",
|
|
112
|
+
"e-ink",
|
|
113
|
+
"low-power",
|
|
114
|
+
"framed-art",
|
|
115
|
+
"ambient"
|
|
116
|
+
],
|
|
69
117
|
"hack_difficulty": 2,
|
|
70
118
|
"brick_risk": 2,
|
|
71
119
|
"brick_provenance": "community-reported",
|
|
@@ -75,13 +123,25 @@
|
|
|
75
123
|
"https://forum.xda-developers.com/c/barnes-noble-nook.5045/"
|
|
76
124
|
],
|
|
77
125
|
"community_size_bucket": "active",
|
|
78
|
-
"notes": "2011 e-reader, Android 2.1 underneath. Well-documented root via SD card. Used widely as wall-mounted dashboard / status display."
|
|
126
|
+
"notes": "2011 e-reader, Android 2.1 underneath. Well-documented root via SD card. Used widely as wall-mounted dashboard / status display.",
|
|
127
|
+
"est_used_price_usd_min": 15,
|
|
128
|
+
"est_used_price_usd_max": 35,
|
|
129
|
+
"image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/B%26N_Nook_Simple_Touch_with_GlowLight.jpg/640px-B%26N_Nook_Simple_Touch_with_GlowLight.jpg",
|
|
130
|
+
"est_setup_hours_min": 2,
|
|
131
|
+
"est_setup_hours_max": 5
|
|
79
132
|
},
|
|
80
133
|
{
|
|
81
134
|
"id": "amazon-kindle-paperwhite-gen2",
|
|
82
135
|
"name": "Amazon Kindle Paperwhite (Gen 2, 2013)",
|
|
83
136
|
"category": "display",
|
|
84
|
-
"idea_fit_tags": [
|
|
137
|
+
"idea_fit_tags": [
|
|
138
|
+
"display",
|
|
139
|
+
"e-ink",
|
|
140
|
+
"low-power",
|
|
141
|
+
"framed-art",
|
|
142
|
+
"ambient",
|
|
143
|
+
"kiosk"
|
|
144
|
+
],
|
|
85
145
|
"hack_difficulty": 3,
|
|
86
146
|
"brick_risk": 3,
|
|
87
147
|
"brick_provenance": "community-reported",
|
|
@@ -91,13 +151,25 @@
|
|
|
91
151
|
"https://github.com/koreader/koreader"
|
|
92
152
|
],
|
|
93
153
|
"community_size_bucket": "thriving",
|
|
94
|
-
"notes": "Older Kindles (PW2 era) jailbreak via known firmware paths. Used widely as low-power dashboard / calendar / weather displays. KOReader runs custom apps."
|
|
154
|
+
"notes": "Older Kindles (PW2 era) jailbreak via known firmware paths. Used widely as low-power dashboard / calendar / weather displays. KOReader runs custom apps.",
|
|
155
|
+
"est_used_price_usd_min": 25,
|
|
156
|
+
"est_used_price_usd_max": 50,
|
|
157
|
+
"image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/30/Amazon_Kindle_Paperwhite_2.jpg/640px-Amazon_Kindle_Paperwhite_2.jpg",
|
|
158
|
+
"est_setup_hours_min": 3,
|
|
159
|
+
"est_setup_hours_max": 8
|
|
95
160
|
},
|
|
96
161
|
{
|
|
97
162
|
"id": "kobo-clara-hd",
|
|
98
163
|
"name": "Kobo Clara HD",
|
|
99
164
|
"category": "display",
|
|
100
|
-
"idea_fit_tags": [
|
|
165
|
+
"idea_fit_tags": [
|
|
166
|
+
"display",
|
|
167
|
+
"e-ink",
|
|
168
|
+
"low-power",
|
|
169
|
+
"framed-art",
|
|
170
|
+
"ambient",
|
|
171
|
+
"kiosk"
|
|
172
|
+
],
|
|
101
173
|
"hack_difficulty": 2,
|
|
102
174
|
"brick_risk": 2,
|
|
103
175
|
"brick_provenance": "community-reported",
|
|
@@ -108,13 +180,22 @@
|
|
|
108
180
|
"https://github.com/Kobo-InkBox/inkbox"
|
|
109
181
|
],
|
|
110
182
|
"community_size_bucket": "active",
|
|
111
|
-
"notes": "6-inch e-ink reader, Linux underneath. Telnet/SSH via 'developer mode' file. KOReader and InkBox provide custom OSes. More open than Kindle."
|
|
183
|
+
"notes": "6-inch e-ink reader, Linux underneath. Telnet/SSH via 'developer mode' file. KOReader and InkBox provide custom OSes. More open than Kindle.",
|
|
184
|
+
"est_used_price_usd_min": 40,
|
|
185
|
+
"est_used_price_usd_max": 80,
|
|
186
|
+
"est_setup_hours_min": 2,
|
|
187
|
+
"est_setup_hours_max": 4
|
|
112
188
|
},
|
|
113
189
|
{
|
|
114
190
|
"id": "ipad-2",
|
|
115
191
|
"name": "Apple iPad 2",
|
|
116
192
|
"category": "display",
|
|
117
|
-
"idea_fit_tags": [
|
|
193
|
+
"idea_fit_tags": [
|
|
194
|
+
"display",
|
|
195
|
+
"kiosk",
|
|
196
|
+
"creative-coding",
|
|
197
|
+
"framed-art"
|
|
198
|
+
],
|
|
118
199
|
"hack_difficulty": 2,
|
|
119
200
|
"brick_risk": 1,
|
|
120
201
|
"brick_provenance": "community-reported",
|
|
@@ -123,13 +204,23 @@
|
|
|
123
204
|
"https://support.apple.com/guided-access"
|
|
124
205
|
],
|
|
125
206
|
"community_size_bucket": "thriving",
|
|
126
|
-
"notes": "Dirt-cheap on eBay. Guided Access locks it to a single app for kiosk use. No jailbreak required for calendar/dashboard. Older models can run iOS 9.x."
|
|
207
|
+
"notes": "Dirt-cheap on eBay. Guided Access locks it to a single app for kiosk use. No jailbreak required for calendar/dashboard. Older models can run iOS 9.x.",
|
|
208
|
+
"est_used_price_usd_min": 30,
|
|
209
|
+
"est_used_price_usd_max": 70,
|
|
210
|
+
"image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Ipad-2.jpg/640px-Ipad-2.jpg",
|
|
211
|
+
"est_setup_hours_min": 1,
|
|
212
|
+
"est_setup_hours_max": 2
|
|
127
213
|
},
|
|
128
214
|
{
|
|
129
215
|
"id": "philips-hue-go",
|
|
130
216
|
"name": "Philips Hue Go (1st gen)",
|
|
131
217
|
"category": "bulb",
|
|
132
|
-
"idea_fit_tags": [
|
|
218
|
+
"idea_fit_tags": [
|
|
219
|
+
"bulb",
|
|
220
|
+
"color-cycle",
|
|
221
|
+
"ambient",
|
|
222
|
+
"low-power"
|
|
223
|
+
],
|
|
133
224
|
"hack_difficulty": 2,
|
|
134
225
|
"brick_risk": 1,
|
|
135
226
|
"brick_provenance": "community-reported",
|
|
@@ -139,13 +230,23 @@
|
|
|
139
230
|
"https://github.com/openhab/openhab-addons/tree/main/bundles/org.openhab.binding.hue"
|
|
140
231
|
],
|
|
141
232
|
"community_size_bucket": "thriving",
|
|
142
|
-
"notes": "Portable Hue lamp with battery. Pairs with Zigbee2MQTT or Home Assistant. Programmable color animations are the killer use case for ambient/breathing apps."
|
|
233
|
+
"notes": "Portable Hue lamp with battery. Pairs with Zigbee2MQTT or Home Assistant. Programmable color animations are the killer use case for ambient/breathing apps.",
|
|
234
|
+
"est_used_price_usd_min": 35,
|
|
235
|
+
"est_used_price_usd_max": 70,
|
|
236
|
+
"est_setup_hours_min": 1,
|
|
237
|
+
"est_setup_hours_max": 2
|
|
143
238
|
},
|
|
144
239
|
{
|
|
145
240
|
"id": "esp32-devkit-c",
|
|
146
241
|
"name": "ESP32 DevKit-C",
|
|
147
242
|
"category": "sbc",
|
|
148
|
-
"idea_fit_tags": [
|
|
243
|
+
"idea_fit_tags": [
|
|
244
|
+
"sbc",
|
|
245
|
+
"low-power",
|
|
246
|
+
"iot",
|
|
247
|
+
"creative-coding",
|
|
248
|
+
"sensor"
|
|
249
|
+
],
|
|
149
250
|
"hack_difficulty": 1,
|
|
150
251
|
"brick_risk": 1,
|
|
151
252
|
"brick_provenance": "founder-verified",
|
|
@@ -156,13 +257,23 @@
|
|
|
156
257
|
"https://micropython.org/download/esp32/"
|
|
157
258
|
],
|
|
158
259
|
"community_size_bucket": "thriving",
|
|
159
|
-
"notes": "Default ESP32 board for tinkering. Wi-Fi + BLE, runs MicroPython or Arduino. Common in DIY ambient displays, sensor relays, custom IoT projects."
|
|
260
|
+
"notes": "Default ESP32 board for tinkering. Wi-Fi + BLE, runs MicroPython or Arduino. Common in DIY ambient displays, sensor relays, custom IoT projects.",
|
|
261
|
+
"est_used_price_usd_min": 5,
|
|
262
|
+
"est_used_price_usd_max": 15,
|
|
263
|
+
"image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Espressif_ESP32_Chip%2C_microcontroller.jpg/640px-Espressif_ESP32_Chip%2C_microcontroller.jpg",
|
|
264
|
+
"est_setup_hours_min": 1,
|
|
265
|
+
"est_setup_hours_max": 3
|
|
160
266
|
},
|
|
161
267
|
{
|
|
162
268
|
"id": "olimex-esp32-poe",
|
|
163
269
|
"name": "Olimex ESP32-POE",
|
|
164
270
|
"category": "sbc",
|
|
165
|
-
"idea_fit_tags": [
|
|
271
|
+
"idea_fit_tags": [
|
|
272
|
+
"sbc",
|
|
273
|
+
"low-power",
|
|
274
|
+
"iot",
|
|
275
|
+
"network"
|
|
276
|
+
],
|
|
166
277
|
"hack_difficulty": 2,
|
|
167
278
|
"brick_risk": 1,
|
|
168
279
|
"brick_provenance": "community-reported",
|
|
@@ -172,13 +283,21 @@
|
|
|
172
283
|
"https://github.com/OLIMEX/ESP32-POE"
|
|
173
284
|
],
|
|
174
285
|
"community_size_bucket": "small",
|
|
175
|
-
"notes": "ESP32 with PoE Ethernet. Single cable for power and network
|
|
286
|
+
"notes": "ESP32 with PoE Ethernet. Single cable for power and network \u2014 good for wall-mounted displays/sensors with no wall-warts.",
|
|
287
|
+
"est_used_price_usd_min": 20,
|
|
288
|
+
"est_used_price_usd_max": 35,
|
|
289
|
+
"est_setup_hours_min": 2,
|
|
290
|
+
"est_setup_hours_max": 4
|
|
176
291
|
},
|
|
177
292
|
{
|
|
178
293
|
"id": "tp-link-tl-wr841n",
|
|
179
294
|
"name": "TP-Link TL-WR841N (router)",
|
|
180
295
|
"category": "router",
|
|
181
|
-
"idea_fit_tags": [
|
|
296
|
+
"idea_fit_tags": [
|
|
297
|
+
"network",
|
|
298
|
+
"iot",
|
|
299
|
+
"low-power"
|
|
300
|
+
],
|
|
182
301
|
"hack_difficulty": 3,
|
|
183
302
|
"brick_risk": 3,
|
|
184
303
|
"brick_provenance": "community-reported",
|
|
@@ -187,13 +306,21 @@
|
|
|
187
306
|
"https://openwrt.org/toh/tp-link/tl-wr841nd"
|
|
188
307
|
],
|
|
189
308
|
"community_size_bucket": "active",
|
|
190
|
-
"notes": "Cheap consumer router. OpenWrt support varies by hardware revision (v8+ are constrained). Listed for projects needing a tiny Linux box with Wi-Fi where Pi is overkill."
|
|
309
|
+
"notes": "Cheap consumer router. OpenWrt support varies by hardware revision (v8+ are constrained). Listed for projects needing a tiny Linux box with Wi-Fi where Pi is overkill.",
|
|
310
|
+
"est_used_price_usd_min": 10,
|
|
311
|
+
"est_used_price_usd_max": 25,
|
|
312
|
+
"est_setup_hours_min": 2,
|
|
313
|
+
"est_setup_hours_max": 4
|
|
191
314
|
},
|
|
192
315
|
{
|
|
193
316
|
"id": "wyze-cam-v2",
|
|
194
317
|
"name": "Wyze Cam v2",
|
|
195
318
|
"category": "sensor",
|
|
196
|
-
"idea_fit_tags": [
|
|
319
|
+
"idea_fit_tags": [
|
|
320
|
+
"sensor",
|
|
321
|
+
"iot",
|
|
322
|
+
"low-power"
|
|
323
|
+
],
|
|
197
324
|
"hack_difficulty": 3,
|
|
198
325
|
"brick_risk": 3,
|
|
199
326
|
"brick_provenance": "community-reported",
|
|
@@ -203,13 +330,22 @@
|
|
|
203
330
|
"https://github.com/HclX/WyzeHacks"
|
|
204
331
|
],
|
|
205
332
|
"community_size_bucket": "active",
|
|
206
|
-
"notes": "$25 cloud camera. Custom firmware (openmiko) gives RTSP and frees from Wyze cloud. Good for home automation streams; the older v2 is the documented target."
|
|
333
|
+
"notes": "$25 cloud camera. Custom firmware (openmiko) gives RTSP and frees from Wyze cloud. Good for home automation streams; the older v2 is the documented target.",
|
|
334
|
+
"est_used_price_usd_min": 15,
|
|
335
|
+
"est_used_price_usd_max": 30,
|
|
336
|
+
"est_setup_hours_min": 2,
|
|
337
|
+
"est_setup_hours_max": 4
|
|
207
338
|
},
|
|
208
339
|
{
|
|
209
340
|
"id": "pebble-time",
|
|
210
341
|
"name": "Pebble Time (smartwatch)",
|
|
211
342
|
"category": "wearable",
|
|
212
|
-
"idea_fit_tags": [
|
|
343
|
+
"idea_fit_tags": [
|
|
344
|
+
"wearable",
|
|
345
|
+
"display",
|
|
346
|
+
"e-ink",
|
|
347
|
+
"low-power"
|
|
348
|
+
],
|
|
213
349
|
"hack_difficulty": 2,
|
|
214
350
|
"brick_risk": 2,
|
|
215
351
|
"brick_provenance": "community-reported",
|
|
@@ -219,13 +355,23 @@
|
|
|
219
355
|
"https://help.rebble.io/"
|
|
220
356
|
],
|
|
221
357
|
"community_size_bucket": "active",
|
|
222
|
-
"notes": "Discontinued e-paper smartwatch. Rebble.io keeps it alive with free app store and custom watchfaces. Cheap on eBay; week-long battery; SDK still works."
|
|
358
|
+
"notes": "Discontinued e-paper smartwatch. Rebble.io keeps it alive with free app store and custom watchfaces. Cheap on eBay; week-long battery; SDK still works.",
|
|
359
|
+
"est_used_price_usd_min": 30,
|
|
360
|
+
"est_used_price_usd_max": 60,
|
|
361
|
+
"image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Pebble_Time_Steel_Black.jpg/640px-Pebble_Time_Steel_Black.jpg",
|
|
362
|
+
"est_setup_hours_min": 1,
|
|
363
|
+
"est_setup_hours_max": 2
|
|
223
364
|
},
|
|
224
365
|
{
|
|
225
366
|
"id": "chromecast-1st-gen",
|
|
226
367
|
"name": "Google Chromecast (1st gen, H2G2-42)",
|
|
227
368
|
"category": "display",
|
|
228
|
-
"idea_fit_tags": [
|
|
369
|
+
"idea_fit_tags": [
|
|
370
|
+
"display",
|
|
371
|
+
"low-power",
|
|
372
|
+
"creative-coding",
|
|
373
|
+
"ambient"
|
|
374
|
+
],
|
|
229
375
|
"hack_difficulty": 3,
|
|
230
376
|
"brick_risk": 3,
|
|
231
377
|
"brick_provenance": "community-reported",
|
|
@@ -235,13 +381,23 @@
|
|
|
235
381
|
"https://github.com/chromecast-mods"
|
|
236
382
|
],
|
|
237
383
|
"community_size_bucket": "small",
|
|
238
|
-
"notes": "$5-15 on eBay. Original Chromecast (not Ultra/Audio). Linux-based; community 'eureka-rom' projects exist for full control. HDMI output for an ambient TV display."
|
|
384
|
+
"notes": "$5-15 on eBay. Original Chromecast (not Ultra/Audio). Linux-based; community 'eureka-rom' projects exist for full control. HDMI output for an ambient TV display.",
|
|
385
|
+
"est_used_price_usd_min": 5,
|
|
386
|
+
"est_used_price_usd_max": 15,
|
|
387
|
+
"image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Google_Chromecast_-_2nd_Generation.jpg/640px-Google_Chromecast_-_2nd_Generation.jpg",
|
|
388
|
+
"est_setup_hours_min": 2,
|
|
389
|
+
"est_setup_hours_max": 5
|
|
239
390
|
},
|
|
240
391
|
{
|
|
241
392
|
"id": "dell-wyse-5070",
|
|
242
393
|
"name": "Dell Wyse 5070 (thin client)",
|
|
243
394
|
"category": "mini-pc",
|
|
244
|
-
"idea_fit_tags": [
|
|
395
|
+
"idea_fit_tags": [
|
|
396
|
+
"sbc",
|
|
397
|
+
"mini-pc",
|
|
398
|
+
"kiosk",
|
|
399
|
+
"low-power"
|
|
400
|
+
],
|
|
245
401
|
"hack_difficulty": 1,
|
|
246
402
|
"brick_risk": 1,
|
|
247
403
|
"brick_provenance": "community-reported",
|
|
@@ -250,13 +406,23 @@
|
|
|
250
406
|
"https://parkytowers.me.uk/thin/Dell5070/"
|
|
251
407
|
],
|
|
252
408
|
"community_size_bucket": "active",
|
|
253
|
-
"notes": "x86 thin client (Pentium Silver, 4GB RAM, fanless). $40-80 on eBay. Boots any Linux distro from USB. Better than a Pi for desktop-grade workloads, low power."
|
|
409
|
+
"notes": "x86 thin client (Pentium Silver, 4GB RAM, fanless). $40-80 on eBay. Boots any Linux distro from USB. Better than a Pi for desktop-grade workloads, low power.",
|
|
410
|
+
"est_used_price_usd_min": 40,
|
|
411
|
+
"est_used_price_usd_max": 90,
|
|
412
|
+
"est_setup_hours_min": 1,
|
|
413
|
+
"est_setup_hours_max": 3
|
|
254
414
|
},
|
|
255
415
|
{
|
|
256
416
|
"id": "hp-t620-plus",
|
|
257
417
|
"name": "HP t620 Plus (thin client)",
|
|
258
418
|
"category": "mini-pc",
|
|
259
|
-
"idea_fit_tags": [
|
|
419
|
+
"idea_fit_tags": [
|
|
420
|
+
"sbc",
|
|
421
|
+
"mini-pc",
|
|
422
|
+
"kiosk",
|
|
423
|
+
"low-power",
|
|
424
|
+
"industrial"
|
|
425
|
+
],
|
|
260
426
|
"hack_difficulty": 1,
|
|
261
427
|
"brick_risk": 1,
|
|
262
428
|
"brick_provenance": "community-reported",
|
|
@@ -265,13 +431,22 @@
|
|
|
265
431
|
"https://parkytowers.me.uk/thin/hp/T620P/"
|
|
266
432
|
],
|
|
267
433
|
"community_size_bucket": "active",
|
|
268
|
-
"notes": "AMD GX-420CA, dual NIC, 4 USB. $30-60. Popular as a tiny pfSense/OPNsense firewall, Pi-hole box, or home server. Common in homelab community."
|
|
434
|
+
"notes": "AMD GX-420CA, dual NIC, 4 USB. $30-60. Popular as a tiny pfSense/OPNsense firewall, Pi-hole box, or home server. Common in homelab community.",
|
|
435
|
+
"est_used_price_usd_min": 30,
|
|
436
|
+
"est_used_price_usd_max": 70,
|
|
437
|
+
"est_setup_hours_min": 1,
|
|
438
|
+
"est_setup_hours_max": 3
|
|
269
439
|
},
|
|
270
440
|
{
|
|
271
441
|
"id": "nintendo-3ds",
|
|
272
442
|
"name": "Nintendo 3DS",
|
|
273
443
|
"category": "handheld",
|
|
274
|
-
"idea_fit_tags": [
|
|
444
|
+
"idea_fit_tags": [
|
|
445
|
+
"retrogaming",
|
|
446
|
+
"handheld",
|
|
447
|
+
"display",
|
|
448
|
+
"input"
|
|
449
|
+
],
|
|
275
450
|
"hack_difficulty": 2,
|
|
276
451
|
"brick_risk": 4,
|
|
277
452
|
"brick_provenance": "community-reported",
|
|
@@ -281,13 +456,22 @@
|
|
|
281
456
|
"https://github.com/LumaTeam/Luma3DS"
|
|
282
457
|
],
|
|
283
458
|
"community_size_bucket": "thriving",
|
|
284
|
-
"notes": "Massive modding scene. CFW (Luma3DS) enables homebrew, emulators, region-free play. Brick risk REAL on bad installs
|
|
459
|
+
"notes": "Massive modding scene. CFW (Luma3DS) enables homebrew, emulators, region-free play. Brick risk REAL on bad installs \u2014 the 3ds.hacks.guide walkthrough is the canonical source.",
|
|
460
|
+
"est_used_price_usd_min": 50,
|
|
461
|
+
"est_used_price_usd_max": 150,
|
|
462
|
+
"image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Nintendo-3DS-AquaOpen.png/640px-Nintendo-3DS-AquaOpen.png",
|
|
463
|
+
"est_setup_hours_min": 2,
|
|
464
|
+
"est_setup_hours_max": 4
|
|
285
465
|
},
|
|
286
466
|
{
|
|
287
467
|
"id": "atari-flashback",
|
|
288
468
|
"name": "Atari Flashback (HDMI plug-and-play)",
|
|
289
469
|
"category": "handheld",
|
|
290
|
-
"idea_fit_tags": [
|
|
470
|
+
"idea_fit_tags": [
|
|
471
|
+
"retrogaming",
|
|
472
|
+
"creative-coding",
|
|
473
|
+
"input"
|
|
474
|
+
],
|
|
291
475
|
"hack_difficulty": 4,
|
|
292
476
|
"brick_risk": 4,
|
|
293
477
|
"brick_provenance": "llm-inferred",
|
|
@@ -296,13 +480,24 @@
|
|
|
296
480
|
"https://atariage.com/forums/forum/116-modern-classic/"
|
|
297
481
|
],
|
|
298
482
|
"community_size_bucket": "small",
|
|
299
|
-
"notes": "Retro-styled mini-console. Hacking is non-trivial. Llm-inferred + handheld = brick-risk score will be stripped from output by safety rule."
|
|
483
|
+
"notes": "Retro-styled mini-console. Hacking is non-trivial. Llm-inferred + handheld = brick-risk score will be stripped from output by safety rule.",
|
|
484
|
+
"est_used_price_usd_min": 20,
|
|
485
|
+
"est_used_price_usd_max": 40,
|
|
486
|
+
"est_setup_hours_min": 2,
|
|
487
|
+
"est_setup_hours_max": 6
|
|
300
488
|
},
|
|
301
489
|
{
|
|
302
490
|
"id": "arduino-uno-r3",
|
|
303
491
|
"name": "Arduino Uno R3",
|
|
304
492
|
"category": "sbc",
|
|
305
|
-
"idea_fit_tags": [
|
|
493
|
+
"idea_fit_tags": [
|
|
494
|
+
"sbc",
|
|
495
|
+
"low-power",
|
|
496
|
+
"iot",
|
|
497
|
+
"creative-coding",
|
|
498
|
+
"sensor",
|
|
499
|
+
"input"
|
|
500
|
+
],
|
|
306
501
|
"hack_difficulty": 1,
|
|
307
502
|
"brick_risk": 1,
|
|
308
503
|
"brick_provenance": "founder-verified",
|
|
@@ -311,13 +506,25 @@
|
|
|
311
506
|
"https://docs.arduino.cc/hardware/uno-rev3"
|
|
312
507
|
],
|
|
313
508
|
"community_size_bucket": "thriving",
|
|
314
|
-
"notes": "The classic. Not Wi-Fi, not powerful, but trivially programmable for sensors, motor control, blinkenlights. First step before ESP32 for many tinkerers."
|
|
509
|
+
"notes": "The classic. Not Wi-Fi, not powerful, but trivially programmable for sensors, motor control, blinkenlights. First step before ESP32 for many tinkerers.",
|
|
510
|
+
"est_used_price_usd_min": 10,
|
|
511
|
+
"est_used_price_usd_max": 25,
|
|
512
|
+
"image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Arduino_Uno_-_R3.jpg/640px-Arduino_Uno_-_R3.jpg",
|
|
513
|
+
"est_setup_hours_min": 1,
|
|
514
|
+
"est_setup_hours_max": 2
|
|
315
515
|
},
|
|
316
516
|
{
|
|
317
517
|
"id": "waveshare-7-5-epaper-hat",
|
|
318
518
|
"name": "Waveshare 7.5\" e-Paper HAT (V2)",
|
|
319
519
|
"category": "display",
|
|
320
|
-
"idea_fit_tags": [
|
|
520
|
+
"idea_fit_tags": [
|
|
521
|
+
"display",
|
|
522
|
+
"e-ink",
|
|
523
|
+
"low-power",
|
|
524
|
+
"framed-art",
|
|
525
|
+
"ambient",
|
|
526
|
+
"kiosk"
|
|
527
|
+
],
|
|
321
528
|
"hack_difficulty": 2,
|
|
322
529
|
"brick_risk": 1,
|
|
323
530
|
"brick_provenance": "community-reported",
|
|
@@ -328,13 +535,24 @@
|
|
|
328
535
|
"https://github.com/speedyg0nz/MagInkCal"
|
|
329
536
|
],
|
|
330
537
|
"community_size_bucket": "thriving",
|
|
331
|
-
"notes": "800x480 mono e-paper, drives off Pi Zero W via SPI. THE canonical kitchen-calendar build (MagInkCal, InkyPi). Refresh ~2-5s; perfect for static daily layouts. Pair with Pi Zero W for the classic combo."
|
|
538
|
+
"notes": "800x480 mono e-paper, drives off Pi Zero W via SPI. THE canonical kitchen-calendar build (MagInkCal, InkyPi). Refresh ~2-5s; perfect for static daily layouts. Pair with Pi Zero W for the classic combo.",
|
|
539
|
+
"est_used_price_usd_min": 50,
|
|
540
|
+
"est_used_price_usd_max": 90,
|
|
541
|
+
"image_url": "https://www.waveshare.com/img/devkit/general/7.5inch-e-Paper-HAT/7.5inch-e-Paper-HAT-1.jpg",
|
|
542
|
+
"est_setup_hours_min": 4,
|
|
543
|
+
"est_setup_hours_max": 8
|
|
332
544
|
},
|
|
333
545
|
{
|
|
334
546
|
"id": "waveshare-10-3-epaper",
|
|
335
547
|
"name": "Waveshare 10.3\" e-Paper (HD, parallel/SPI)",
|
|
336
548
|
"category": "display",
|
|
337
|
-
"idea_fit_tags": [
|
|
549
|
+
"idea_fit_tags": [
|
|
550
|
+
"display",
|
|
551
|
+
"e-ink",
|
|
552
|
+
"low-power",
|
|
553
|
+
"framed-art",
|
|
554
|
+
"ambient"
|
|
555
|
+
],
|
|
338
556
|
"hack_difficulty": 3,
|
|
339
557
|
"brick_risk": 1,
|
|
340
558
|
"brick_provenance": "community-reported",
|
|
@@ -344,13 +562,25 @@
|
|
|
344
562
|
"https://github.com/waveshare/e-Paper"
|
|
345
563
|
],
|
|
346
564
|
"community_size_bucket": "active",
|
|
347
|
-
"notes": "1872x1404 mono e-ink. Larger than 7.5\" so suits a kitchen wall calendar or magazine-style display. Needs IT8951 driver board. More expensive (~$200+) but gorgeous."
|
|
565
|
+
"notes": "1872x1404 mono e-ink. Larger than 7.5\" so suits a kitchen wall calendar or magazine-style display. Needs IT8951 driver board. More expensive (~$200+) but gorgeous.",
|
|
566
|
+
"est_used_price_usd_min": 160,
|
|
567
|
+
"est_used_price_usd_max": 250,
|
|
568
|
+
"est_setup_hours_min": 4,
|
|
569
|
+
"est_setup_hours_max": 10
|
|
348
570
|
},
|
|
349
571
|
{
|
|
350
572
|
"id": "pimoroni-inky-impression-7-3",
|
|
351
573
|
"name": "Pimoroni Inky Impression 7.3\" (7-color)",
|
|
352
574
|
"category": "display",
|
|
353
|
-
"idea_fit_tags": [
|
|
575
|
+
"idea_fit_tags": [
|
|
576
|
+
"display",
|
|
577
|
+
"e-ink",
|
|
578
|
+
"low-power",
|
|
579
|
+
"framed-art",
|
|
580
|
+
"ambient",
|
|
581
|
+
"color-cycle",
|
|
582
|
+
"creative-coding"
|
|
583
|
+
],
|
|
354
584
|
"hack_difficulty": 2,
|
|
355
585
|
"brick_risk": 1,
|
|
356
586
|
"brick_provenance": "community-reported",
|
|
@@ -360,13 +590,25 @@
|
|
|
360
590
|
"https://github.com/pimoroni/inky"
|
|
361
591
|
],
|
|
362
592
|
"community_size_bucket": "active",
|
|
363
|
-
"notes": "800x480 SEVEN-COLOR e-paper HAT. 7-color e-ink is rare
|
|
593
|
+
"notes": "800x480 SEVEN-COLOR e-paper HAT. 7-color e-ink is rare \u2014 great for ambient art rotation, family photos, weather displays. Slow refresh (~30s) so static-frame use only. Pi Zero W compatible.",
|
|
594
|
+
"est_used_price_usd_min": 90,
|
|
595
|
+
"est_used_price_usd_max": 130,
|
|
596
|
+
"image_url": "https://shop.pimoroni.com/cdn/shop/files/inky-impression-7-3-2025-edition-1.jpg",
|
|
597
|
+
"est_setup_hours_min": 3,
|
|
598
|
+
"est_setup_hours_max": 6
|
|
364
599
|
},
|
|
365
600
|
{
|
|
366
601
|
"id": "remarkable-2",
|
|
367
602
|
"name": "reMarkable 2 (e-paper tablet)",
|
|
368
603
|
"category": "display",
|
|
369
|
-
"idea_fit_tags": [
|
|
604
|
+
"idea_fit_tags": [
|
|
605
|
+
"display",
|
|
606
|
+
"e-ink",
|
|
607
|
+
"low-power",
|
|
608
|
+
"framed-art",
|
|
609
|
+
"kiosk",
|
|
610
|
+
"creative-coding"
|
|
611
|
+
],
|
|
370
612
|
"hack_difficulty": 3,
|
|
371
613
|
"brick_risk": 2,
|
|
372
614
|
"brick_provenance": "community-reported",
|
|
@@ -377,13 +619,24 @@
|
|
|
377
619
|
"https://github.com/toltec-dev/toltec"
|
|
378
620
|
],
|
|
379
621
|
"community_size_bucket": "active",
|
|
380
|
-
"notes": "10.3\" mono e-paper with stylus. Linux underneath. Toltec package manager + Oxide launcher = full custom OS. Premium ($300+) but a polished tinkerer device. Expensive failure mode if bricked."
|
|
622
|
+
"notes": "10.3\" mono e-paper with stylus. Linux underneath. Toltec package manager + Oxide launcher = full custom OS. Premium ($300+) but a polished tinkerer device. Expensive failure mode if bricked.",
|
|
623
|
+
"est_used_price_usd_min": 200,
|
|
624
|
+
"est_used_price_usd_max": 400,
|
|
625
|
+
"image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/89/ReMarkable_2.png/640px-ReMarkable_2.png",
|
|
626
|
+
"est_setup_hours_min": 2,
|
|
627
|
+
"est_setup_hours_max": 5
|
|
381
628
|
},
|
|
382
629
|
{
|
|
383
630
|
"id": "pimoroni-hyperpixel-4",
|
|
384
631
|
"name": "Pimoroni HyperPixel 4.0 (Pi LCD)",
|
|
385
632
|
"category": "display",
|
|
386
|
-
"idea_fit_tags": [
|
|
633
|
+
"idea_fit_tags": [
|
|
634
|
+
"display",
|
|
635
|
+
"kiosk",
|
|
636
|
+
"creative-coding",
|
|
637
|
+
"input",
|
|
638
|
+
"framed-art"
|
|
639
|
+
],
|
|
387
640
|
"hack_difficulty": 1,
|
|
388
641
|
"brick_risk": 1,
|
|
389
642
|
"brick_provenance": "community-reported",
|
|
@@ -392,13 +645,23 @@
|
|
|
392
645
|
"https://github.com/pimoroni/hyperpixel4"
|
|
393
646
|
],
|
|
394
647
|
"community_size_bucket": "active",
|
|
395
|
-
"notes": "4-inch high-PPI IPS LCD that mounts directly on a Pi (no HDMI cable). Great for self-contained dashboards, smart-home controllers, pi-in-a-box projects. Touch variant available."
|
|
648
|
+
"notes": "4-inch high-PPI IPS LCD that mounts directly on a Pi (no HDMI cable). Great for self-contained dashboards, smart-home controllers, pi-in-a-box projects. Touch variant available.",
|
|
649
|
+
"est_used_price_usd_min": 40,
|
|
650
|
+
"est_used_price_usd_max": 70,
|
|
651
|
+
"est_setup_hours_min": 1,
|
|
652
|
+
"est_setup_hours_max": 3
|
|
396
653
|
},
|
|
397
654
|
{
|
|
398
655
|
"id": "lilygo-ttgo-t5-epaper",
|
|
399
656
|
"name": "LILYGO TTGO T5 V2.3 (ESP32 + 2.13\" e-Paper)",
|
|
400
657
|
"category": "display",
|
|
401
|
-
"idea_fit_tags": [
|
|
658
|
+
"idea_fit_tags": [
|
|
659
|
+
"display",
|
|
660
|
+
"e-ink",
|
|
661
|
+
"low-power",
|
|
662
|
+
"iot",
|
|
663
|
+
"wearable"
|
|
664
|
+
],
|
|
402
665
|
"hack_difficulty": 2,
|
|
403
666
|
"brick_risk": 2,
|
|
404
667
|
"brick_provenance": "community-reported",
|
|
@@ -408,13 +671,24 @@
|
|
|
408
671
|
"https://www.lilygo.cc/products/t5-2-13-inch-e-paper"
|
|
409
672
|
],
|
|
410
673
|
"community_size_bucket": "active",
|
|
411
|
-
"notes": "All-in-one ESP32 + 2.13\" e-paper. Tiny, battery-friendly, $20-30. Perfect for badge displays, weather stations, status indicators. Larger 4.7\" T5 variant exists for bigger projects."
|
|
674
|
+
"notes": "All-in-one ESP32 + 2.13\" e-paper. Tiny, battery-friendly, $20-30. Perfect for badge displays, weather stations, status indicators. Larger 4.7\" T5 variant exists for bigger projects.",
|
|
675
|
+
"est_used_price_usd_min": 20,
|
|
676
|
+
"est_used_price_usd_max": 40,
|
|
677
|
+
"est_setup_hours_min": 2,
|
|
678
|
+
"est_setup_hours_max": 4
|
|
412
679
|
},
|
|
413
680
|
{
|
|
414
681
|
"id": "boox-poke-3",
|
|
415
682
|
"name": "Boox Poke 3 (Android e-reader)",
|
|
416
683
|
"category": "display",
|
|
417
|
-
"idea_fit_tags": [
|
|
684
|
+
"idea_fit_tags": [
|
|
685
|
+
"display",
|
|
686
|
+
"e-ink",
|
|
687
|
+
"low-power",
|
|
688
|
+
"framed-art",
|
|
689
|
+
"kiosk",
|
|
690
|
+
"creative-coding"
|
|
691
|
+
],
|
|
418
692
|
"hack_difficulty": 2,
|
|
419
693
|
"brick_risk": 3,
|
|
420
694
|
"brick_provenance": "community-reported",
|
|
@@ -423,6 +697,10 @@
|
|
|
423
697
|
"https://www.mobileread.com/forums/forumdisplay.php?f=275"
|
|
424
698
|
],
|
|
425
699
|
"community_size_bucket": "small",
|
|
426
|
-
"notes": "6\" e-ink with stock Android 10 + Google Play. Sideload any Android app
|
|
700
|
+
"notes": "6\" e-ink with stock Android 10 + Google Play. Sideload any Android app \u2014 Google Calendar, custom dashboards, kiosk launchers. Less hacking required than a Kindle/Kobo because it's already open.",
|
|
701
|
+
"est_used_price_usd_min": 90,
|
|
702
|
+
"est_used_price_usd_max": 160,
|
|
703
|
+
"est_setup_hours_min": 1,
|
|
704
|
+
"est_setup_hours_max": 2
|
|
427
705
|
}
|
|
428
706
|
]
|
package/dist/server.js
CHANGED
|
@@ -7,7 +7,7 @@ import { probeSamplingSupport } from "./sampling.js";
|
|
|
7
7
|
import { proposeHardware, proposeHardwareInput, } from "./tools/propose_hardware.js";
|
|
8
8
|
import { assessHackability, assessHackabilityInput, } from "./tools/assess_hackability.js";
|
|
9
9
|
const NAME = "hackshop-mcp";
|
|
10
|
-
const VERSION = "0.0.
|
|
10
|
+
const VERSION = "0.0.3";
|
|
11
11
|
async function main() {
|
|
12
12
|
// Boot validation. Refuses to start on bad catalog/tags.
|
|
13
13
|
const { devices, tags } = loadCatalog();
|