402-announce 1.1.3 → 1.1.5
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 +84 -82
- package/build/announce.d.ts +5 -0
- package/build/announce.js +8 -2
- package/build/announce.js.map +1 -1
- package/build/event.js +64 -2
- package/build/event.js.map +1 -1
- package/build/utils.js +10 -0
- package/build/utils.js.map +1 -1
- package/llms-full.txt +2 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -56,6 +56,90 @@ console.log('From pubkey:', handle.pubkey)
|
|
|
56
56
|
handle.close()
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
+
See [`examples/`](./examples) for runnable scripts.
|
|
60
|
+
|
|
61
|
+
## How it fits together
|
|
62
|
+
|
|
63
|
+
```mermaid
|
|
64
|
+
flowchart LR
|
|
65
|
+
subgraph "Your Server"
|
|
66
|
+
API[Your API]
|
|
67
|
+
TB[toll-booth<br/>L402 paywall]
|
|
68
|
+
AN[402-announce]
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
subgraph "Nostr Network"
|
|
72
|
+
R1[(Relay 1)]
|
|
73
|
+
R2[(Relay 2)]
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
subgraph "AI Agent"
|
|
77
|
+
MCP[402-mcp<br/>discovery + payment]
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
API --> TB
|
|
81
|
+
TB -->|"protects"| API
|
|
82
|
+
AN -->|"kind 31402"| R1
|
|
83
|
+
AN -->|"kind 31402"| R2
|
|
84
|
+
R1 -->|"subscribe"| MCP
|
|
85
|
+
R2 -->|"subscribe"| MCP
|
|
86
|
+
MCP -->|"HTTP + L402 token"| TB
|
|
87
|
+
|
|
88
|
+
style TB fill:#ef4444,color:#fff
|
|
89
|
+
style AN fill:#f59e0b,color:#000
|
|
90
|
+
style MCP fill:#3b82f6,color:#fff
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
1. **[toll-booth](https://github.com/TheCryptoDonkey/toll-booth)** wraps your API with an L402 paywall
|
|
94
|
+
2. **402-announce** publishes a kind 31402 event describing the service, pricing, and payment methods
|
|
95
|
+
3. **[402-mcp](https://github.com/TheCryptoDonkey/402-mcp)** discovers the announcement, pays the invoice, and calls your API
|
|
96
|
+
|
|
97
|
+
## What it does
|
|
98
|
+
|
|
99
|
+
- Builds and signs kind 31402 Nostr events
|
|
100
|
+
- Publishes to one or more Nostr relays in parallel
|
|
101
|
+
- Zeroises secret key bytes after use
|
|
102
|
+
- Degrades gracefully when individual relays fail
|
|
103
|
+
- Provides a `close()` handle for clean disconnection
|
|
104
|
+
|
|
105
|
+
## What it does not do
|
|
106
|
+
|
|
107
|
+
- Does not run an L402 paywall (use [toll-booth](https://github.com/TheCryptoDonkey/toll-booth) for that)
|
|
108
|
+
- Does not subscribe to or search for announcements (use [402-mcp](https://github.com/TheCryptoDonkey/402-mcp) for that)
|
|
109
|
+
- Does not handle payments or token verification
|
|
110
|
+
|
|
111
|
+
## API
|
|
112
|
+
|
|
113
|
+
### `announceService(config): Promise<Announcement>`
|
|
114
|
+
|
|
115
|
+
High-level function that builds, signs, and publishes the event to multiple relays.
|
|
116
|
+
|
|
117
|
+
**Returns** an `Announcement` handle:
|
|
118
|
+
- `eventId` — the published Nostr event ID
|
|
119
|
+
- `pubkey` — the Nostr pubkey derived from your secret key
|
|
120
|
+
- `close()` — disconnect from all relays
|
|
121
|
+
|
|
122
|
+
### `buildAnnounceEvent(secretKey, config): VerifiedEvent`
|
|
123
|
+
|
|
124
|
+
Lower-level function that builds and signs the event without publishing. Useful if you manage relay connections yourself.
|
|
125
|
+
|
|
126
|
+
### Config options
|
|
127
|
+
|
|
128
|
+
| Field | Type | Required | Description |
|
|
129
|
+
|------------------|-------------------|----------|------------------------------------------------|
|
|
130
|
+
| `secretKey` | `string` | yes | 64-char hex Nostr secret key |
|
|
131
|
+
| `relays` | `string[]` | yes | Relay URLs (`wss://` or `ws://`) |
|
|
132
|
+
| `identifier` | `string` | yes | Unique listing ID (Nostr `d` tag) |
|
|
133
|
+
| `name` | `string` | yes | Human-readable service name |
|
|
134
|
+
| `url` | `string` | yes | HTTP endpoint for the service |
|
|
135
|
+
| `about` | `string` | yes | Short description |
|
|
136
|
+
| `pricing` | `PricingDef[]` | yes | Per-capability pricing |
|
|
137
|
+
| `paymentMethods` | `string[]` | yes | Accepted payment methods |
|
|
138
|
+
| `picture` | `string` | no | Icon URL |
|
|
139
|
+
| `topics` | `string[]` | no | Topic tags for filtering |
|
|
140
|
+
| `capabilities` | `CapabilityDef[]` | no | Capability details (stored in event content) |
|
|
141
|
+
| `version` | `string` | no | Service version (stored in event content) |
|
|
142
|
+
|
|
59
143
|
## Announce flow
|
|
60
144
|
|
|
61
145
|
```mermaid
|
|
@@ -128,74 +212,6 @@ The event content is a JSON object with optional fields:
|
|
|
128
212
|
}
|
|
129
213
|
```
|
|
130
214
|
|
|
131
|
-
## API
|
|
132
|
-
|
|
133
|
-
### `announceService(config): Promise<Announcement>`
|
|
134
|
-
|
|
135
|
-
High-level function that builds, signs, and publishes the event to multiple relays.
|
|
136
|
-
|
|
137
|
-
**Returns** an `Announcement` handle:
|
|
138
|
-
- `eventId` — the published Nostr event ID
|
|
139
|
-
- `pubkey` — the Nostr pubkey derived from your secret key
|
|
140
|
-
- `close()` — disconnect from all relays
|
|
141
|
-
|
|
142
|
-
### `buildAnnounceEvent(secretKey, config): VerifiedEvent`
|
|
143
|
-
|
|
144
|
-
Lower-level function that builds and signs the event without publishing. Useful if you manage relay connections yourself.
|
|
145
|
-
|
|
146
|
-
### Config options
|
|
147
|
-
|
|
148
|
-
| Field | Type | Required | Description |
|
|
149
|
-
|------------------|-------------------|----------|------------------------------------------------|
|
|
150
|
-
| `secretKey` | `string` | yes | 64-char hex Nostr secret key |
|
|
151
|
-
| `relays` | `string[]` | yes | Relay URLs (`wss://` or `ws://`) |
|
|
152
|
-
| `identifier` | `string` | yes | Unique listing ID (Nostr `d` tag) |
|
|
153
|
-
| `name` | `string` | yes | Human-readable service name |
|
|
154
|
-
| `url` | `string` | yes | HTTP endpoint for the service |
|
|
155
|
-
| `about` | `string` | yes | Short description |
|
|
156
|
-
| `pricing` | `PricingDef[]` | yes | Per-capability pricing |
|
|
157
|
-
| `paymentMethods` | `string[]` | yes | Accepted payment methods |
|
|
158
|
-
| `picture` | `string` | no | Icon URL |
|
|
159
|
-
| `topics` | `string[]` | no | Topic tags for filtering |
|
|
160
|
-
| `capabilities` | `CapabilityDef[]` | no | Capability details (stored in event content) |
|
|
161
|
-
| `version` | `string` | no | Service version (stored in event content) |
|
|
162
|
-
|
|
163
|
-
## How it fits together
|
|
164
|
-
|
|
165
|
-
```mermaid
|
|
166
|
-
flowchart LR
|
|
167
|
-
subgraph "Your Server"
|
|
168
|
-
API[Your API]
|
|
169
|
-
TB[toll-booth<br/>L402 paywall]
|
|
170
|
-
AN[402-announce]
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
subgraph "Nostr Network"
|
|
174
|
-
R1[(Relay 1)]
|
|
175
|
-
R2[(Relay 2)]
|
|
176
|
-
end
|
|
177
|
-
|
|
178
|
-
subgraph "AI Agent"
|
|
179
|
-
MCP[402-mcp<br/>discovery + payment]
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
API --> TB
|
|
183
|
-
TB -->|"protects"| API
|
|
184
|
-
AN -->|"kind 31402"| R1
|
|
185
|
-
AN -->|"kind 31402"| R2
|
|
186
|
-
R1 -->|"subscribe"| MCP
|
|
187
|
-
R2 -->|"subscribe"| MCP
|
|
188
|
-
MCP -->|"HTTP + L402 token"| TB
|
|
189
|
-
|
|
190
|
-
style TB fill:#ef4444,color:#fff
|
|
191
|
-
style AN fill:#f59e0b,color:#000
|
|
192
|
-
style MCP fill:#3b82f6,color:#fff
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
1. **[toll-booth](https://github.com/TheCryptoDonkey/toll-booth)** wraps your API with an L402 paywall
|
|
196
|
-
2. **402-announce** publishes a kind 31402 event describing the service, pricing, and payment methods
|
|
197
|
-
3. **[402-mcp](https://github.com/TheCryptoDonkey/402-mcp)** discovers the announcement, pays the invoice, and calls your API
|
|
198
|
-
|
|
199
215
|
## Security
|
|
200
216
|
|
|
201
217
|
- Secret key bytes are zeroised immediately after signing (in both `announceService` and `buildAnnounceEvent`)
|
|
@@ -203,20 +219,6 @@ flowchart LR
|
|
|
203
219
|
- Relay connections use a 10-second timeout to prevent hanging
|
|
204
220
|
- Individual relay failures are logged as warnings but don't reject the promise
|
|
205
221
|
|
|
206
|
-
## What it does
|
|
207
|
-
|
|
208
|
-
- Builds and signs kind 31402 Nostr events
|
|
209
|
-
- Publishes to one or more Nostr relays in parallel
|
|
210
|
-
- Zeroises secret key bytes after use
|
|
211
|
-
- Degrades gracefully when individual relays fail
|
|
212
|
-
- Provides a `close()` handle for clean disconnection
|
|
213
|
-
|
|
214
|
-
## What it does not do
|
|
215
|
-
|
|
216
|
-
- Does not run an L402 paywall (use [toll-booth](https://github.com/TheCryptoDonkey/toll-booth) for that)
|
|
217
|
-
- Does not subscribe to or search for announcements (use [402-mcp](https://github.com/TheCryptoDonkey/402-mcp) for that)
|
|
218
|
-
- Does not handle payments or token verification
|
|
219
|
-
|
|
220
222
|
## Ecosystem
|
|
221
223
|
|
|
222
224
|
| Package | Purpose |
|
package/build/announce.d.ts
CHANGED
|
@@ -8,6 +8,11 @@ import type { AnnounceConfig, Announcement } from './types.js';
|
|
|
8
8
|
* Relay failures are logged but do not reject the promise -- the function
|
|
9
9
|
* degrades gracefully. A warning is emitted if *no* relay accepted the event.
|
|
10
10
|
*
|
|
11
|
+
* **SSRF note:** Relay URLs are checked against known private/loopback address
|
|
12
|
+
* patterns, but DNS rebinding (a hostname that resolves to a private IP at
|
|
13
|
+
* connection time) is not caught. Deploy behind network-level egress controls
|
|
14
|
+
* in production environments.
|
|
15
|
+
*
|
|
11
16
|
* @throws If the relay list is empty or contains invalid URLs.
|
|
12
17
|
*/
|
|
13
18
|
export declare function announceService(config: AnnounceConfig): Promise<Announcement>;
|
package/build/announce.js
CHANGED
|
@@ -10,10 +10,16 @@ import { isPrivateHost } from './utils.js';
|
|
|
10
10
|
* Relay failures are logged but do not reject the promise -- the function
|
|
11
11
|
* degrades gracefully. A warning is emitted if *no* relay accepted the event.
|
|
12
12
|
*
|
|
13
|
+
* **SSRF note:** Relay URLs are checked against known private/loopback address
|
|
14
|
+
* patterns, but DNS rebinding (a hostname that resolves to a private IP at
|
|
15
|
+
* connection time) is not caught. Deploy behind network-level egress controls
|
|
16
|
+
* in production environments.
|
|
17
|
+
*
|
|
13
18
|
* @throws If the relay list is empty or contains invalid URLs.
|
|
14
19
|
*/
|
|
15
20
|
export async function announceService(config) {
|
|
16
|
-
const { relays, secretKey } = config;
|
|
21
|
+
const { relays: rawRelays, secretKey } = config;
|
|
22
|
+
const relays = [...new Set(rawRelays)];
|
|
17
23
|
if (!/^[0-9a-f]{64}$/i.test(secretKey)) {
|
|
18
24
|
throw new Error('secretKey must be a 64-character hex string');
|
|
19
25
|
}
|
|
@@ -36,7 +42,7 @@ export async function announceService(config) {
|
|
|
36
42
|
throw new Error(`Invalid relay URL: ${url}`);
|
|
37
43
|
}
|
|
38
44
|
if (parsed.username || parsed.password) {
|
|
39
|
-
throw new Error(`Relay URL must not contain credentials: ${
|
|
45
|
+
throw new Error(`Relay URL must not contain credentials: ${parsed.origin}${parsed.pathname}`);
|
|
40
46
|
}
|
|
41
47
|
if (isPrivateHost(parsed.hostname)) {
|
|
42
48
|
throw new Error(`Relay URL points to a private/loopback address: ${url}`);
|
package/build/announce.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"announce.js","sourceRoot":"","sources":["../src/announce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAG1C
|
|
1
|
+
{"version":3,"file":"announce.js","sourceRoot":"","sources":["../src/announce.ts"],"names":[],"mappings":"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"}
|
package/build/event.js
CHANGED
|
@@ -17,14 +17,22 @@ export function buildAnnounceEvent(secretKeyHex, config) {
|
|
|
17
17
|
}
|
|
18
18
|
// M1: Validate url field (scheme only — this function serialises the URL
|
|
19
19
|
// into event tags without performing network I/O, so private hosts are allowed)
|
|
20
|
-
|
|
20
|
+
const urlLower = config.url.toLowerCase();
|
|
21
|
+
if (!urlLower.startsWith('http://') && !urlLower.startsWith('https://')) {
|
|
21
22
|
throw new Error('config.url must start with http:// or https://');
|
|
22
23
|
}
|
|
24
|
+
if (config.url.length > 2048) {
|
|
25
|
+
throw new Error('config.url must not exceed 2048 characters');
|
|
26
|
+
}
|
|
23
27
|
// M1: Validate picture field when present
|
|
24
28
|
if (config.picture !== undefined) {
|
|
25
|
-
|
|
29
|
+
const picLower = config.picture.toLowerCase();
|
|
30
|
+
if (!picLower.startsWith('http://') && !picLower.startsWith('https://')) {
|
|
26
31
|
throw new Error('config.picture must start with http:// or https://');
|
|
27
32
|
}
|
|
33
|
+
if (config.picture.length > 2048) {
|
|
34
|
+
throw new Error('config.picture must not exceed 2048 characters');
|
|
35
|
+
}
|
|
28
36
|
}
|
|
29
37
|
// M2: Validate identifier is non-empty and within length limit
|
|
30
38
|
if (config.identifier.trim().length === 0) {
|
|
@@ -34,6 +42,9 @@ export function buildAnnounceEvent(secretKeyHex, config) {
|
|
|
34
42
|
throw new Error('config.identifier must not exceed 256 characters');
|
|
35
43
|
}
|
|
36
44
|
// Tag field length limits
|
|
45
|
+
if (config.name.trim().length === 0) {
|
|
46
|
+
throw new Error('config.name must not be empty or whitespace-only');
|
|
47
|
+
}
|
|
37
48
|
if (config.name.length > 256) {
|
|
38
49
|
throw new Error('config.name must not exceed 256 characters');
|
|
39
50
|
}
|
|
@@ -50,11 +61,48 @@ export function buildAnnounceEvent(secretKeyHex, config) {
|
|
|
50
61
|
}
|
|
51
62
|
}
|
|
52
63
|
}
|
|
64
|
+
// Validate paymentMethods
|
|
65
|
+
if (config.paymentMethods.length === 0) {
|
|
66
|
+
throw new Error('config.paymentMethods must contain at least one entry');
|
|
67
|
+
}
|
|
68
|
+
if (config.paymentMethods.length > 20) {
|
|
69
|
+
throw new Error('config.paymentMethods must not exceed 20 entries');
|
|
70
|
+
}
|
|
71
|
+
for (const pm of config.paymentMethods) {
|
|
72
|
+
if (pm.trim().length === 0) {
|
|
73
|
+
throw new Error('config.paymentMethods entries must not be empty or whitespace-only');
|
|
74
|
+
}
|
|
75
|
+
if (pm.length > 64) {
|
|
76
|
+
throw new Error(`config.paymentMethods entry must not exceed 64 characters, got: "${pm.slice(0, 20)}..."`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Validate version early (before content construction)
|
|
80
|
+
if (config.version && config.version.length > 64) {
|
|
81
|
+
throw new Error('config.version must not exceed 64 characters');
|
|
82
|
+
}
|
|
53
83
|
// M3: Validate all pricing entries
|
|
84
|
+
if (config.pricing.length === 0) {
|
|
85
|
+
throw new Error('config.pricing must contain at least one entry');
|
|
86
|
+
}
|
|
87
|
+
if (config.pricing.length > 100) {
|
|
88
|
+
throw new Error('config.pricing must not exceed 100 entries');
|
|
89
|
+
}
|
|
54
90
|
for (const p of config.pricing) {
|
|
55
91
|
if (!Number.isFinite(p.price) || p.price < 0) {
|
|
56
92
|
throw new Error(`config.pricing price must be a finite non-negative number, got: ${p.price}`);
|
|
57
93
|
}
|
|
94
|
+
if (p.capability.trim().length === 0) {
|
|
95
|
+
throw new Error('config.pricing capability must not be empty or whitespace-only');
|
|
96
|
+
}
|
|
97
|
+
if (p.capability.length > 64) {
|
|
98
|
+
throw new Error(`config.pricing capability must not exceed 64 characters`);
|
|
99
|
+
}
|
|
100
|
+
if (p.currency.trim().length === 0) {
|
|
101
|
+
throw new Error('config.pricing currency must not be empty or whitespace-only');
|
|
102
|
+
}
|
|
103
|
+
if (p.currency.length > 32) {
|
|
104
|
+
throw new Error(`config.pricing currency must not exceed 32 characters`);
|
|
105
|
+
}
|
|
58
106
|
}
|
|
59
107
|
const sk = hexToBytes(secretKeyHex);
|
|
60
108
|
try {
|
|
@@ -80,6 +128,20 @@ export function buildAnnounceEvent(secretKeyHex, config) {
|
|
|
80
128
|
}
|
|
81
129
|
const contentObj = {};
|
|
82
130
|
if (config.capabilities) {
|
|
131
|
+
if (config.capabilities.length > 100) {
|
|
132
|
+
throw new Error('config.capabilities must not exceed 100 entries');
|
|
133
|
+
}
|
|
134
|
+
for (const cap of config.capabilities) {
|
|
135
|
+
if (cap.name.trim().length === 0) {
|
|
136
|
+
throw new Error('config.capabilities name must not be empty or whitespace-only');
|
|
137
|
+
}
|
|
138
|
+
if (cap.name.length > 128) {
|
|
139
|
+
throw new Error('config.capabilities name must not exceed 128 characters');
|
|
140
|
+
}
|
|
141
|
+
if (cap.description.length > 4096) {
|
|
142
|
+
throw new Error('config.capabilities description must not exceed 4096 characters');
|
|
143
|
+
}
|
|
144
|
+
}
|
|
83
145
|
contentObj.capabilities = config.capabilities;
|
|
84
146
|
}
|
|
85
147
|
if (config.version) {
|
package/build/event.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.js","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAIvC;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,YAAoB,EACpB,MAAsC;IAEtC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAChE,CAAC;IAED,yEAAyE;IACzE,gFAAgF;IAChF,
|
|
1
|
+
{"version":3,"file":"event.js","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"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"}
|
package/build/utils.js
CHANGED
|
@@ -179,6 +179,16 @@ function isPrivateIPv4(ip) {
|
|
|
179
179
|
return true; // 240.0.0.0/4 (reserved) + 255.255.255.255 (broadcast)
|
|
180
180
|
if (a === 198 && (b === 18 || b === 19))
|
|
181
181
|
return true; // 198.18.0.0/15 (benchmarking, RFC 2544)
|
|
182
|
+
if (a === 192 && b === 0 && parts[2] === 0)
|
|
183
|
+
return true; // 192.0.0.0/24 (IANA special-purpose, RFC 6890)
|
|
184
|
+
if (a === 192 && b === 0 && parts[2] === 2)
|
|
185
|
+
return true; // 192.0.2.0/24 (TEST-NET-1, RFC 5737)
|
|
186
|
+
if (a === 198 && b === 51 && parts[2] === 100)
|
|
187
|
+
return true; // 198.51.100.0/24 (TEST-NET-2, RFC 5737)
|
|
188
|
+
if (a === 203 && b === 0 && parts[2] === 113)
|
|
189
|
+
return true; // 203.0.113.0/24 (TEST-NET-3, RFC 5737)
|
|
190
|
+
if (a === 192 && b === 88 && parts[2] === 99)
|
|
191
|
+
return true; // 192.88.99.0/24 (6to4 relay anycast, RFC 7526)
|
|
182
192
|
return false;
|
|
183
193
|
}
|
|
184
194
|
//# sourceMappingURL=utils.js.map
|
package/build/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/llms-full.txt
CHANGED
|
@@ -48,6 +48,8 @@ PricingDef:
|
|
|
48
48
|
CapabilityDef:
|
|
49
49
|
- name (string): Capability name
|
|
50
50
|
- description (string): Human-readable description
|
|
51
|
+
- schema (unknown, optional): JSON Schema describing the capability's input parameters
|
|
52
|
+
- outputSchema (unknown, optional): JSON Schema describing the capability's output
|
|
51
53
|
|
|
52
54
|
**Returns** Announcement:
|
|
53
55
|
- eventId (string): The published Nostr event ID
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "402-announce",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Announce HTTP 402 services (L402 and x402) on Nostr for decentralised discovery. Kind 31402 parameterised replaceable events.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
"machine-payments",
|
|
51
51
|
"http-402"
|
|
52
52
|
],
|
|
53
|
+
"homepage": "https://github.com/TheCryptoDonkey/402-announce",
|
|
53
54
|
"repository": {
|
|
54
55
|
"type": "git",
|
|
55
56
|
"url": "https://github.com/TheCryptoDonkey/402-announce.git"
|