openpets 1.0.5 → 1.0.6
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/dist/data/api.json +3172 -0
- package/dist/src/core/ai-client-base/index.d.ts +47 -0
- package/dist/src/core/ai-client-base/index.d.ts.map +1 -0
- package/dist/src/core/ai-client-base/index.js +168 -0
- package/dist/src/core/ai-client-base/index.js.map +1 -0
- package/dist/src/core/browser.d.ts +10 -0
- package/dist/src/core/browser.d.ts.map +1 -0
- package/{browser.ts → dist/src/core/browser.js} +4 -4
- package/dist/src/core/browser.js.map +1 -0
- package/dist/src/core/build-pet.d.ts +2 -0
- package/dist/src/core/build-pet.d.ts.map +1 -0
- package/dist/src/core/build-pet.js +364 -0
- package/dist/src/core/build-pet.js.map +1 -0
- package/dist/src/core/cli.d.ts +3 -0
- package/dist/src/core/cli.d.ts.map +1 -0
- package/dist/src/core/cli.js +244 -0
- package/dist/src/core/cli.js.map +1 -0
- package/dist/src/core/config-manager.d.ts +13 -0
- package/dist/src/core/config-manager.d.ts.map +1 -0
- package/dist/src/core/config-manager.js +59 -0
- package/dist/src/core/config-manager.js.map +1 -0
- package/dist/src/core/deploy-pet.d.ts +2 -0
- package/dist/src/core/deploy-pet.d.ts.map +1 -0
- package/dist/src/core/deploy-pet.js +66 -0
- package/dist/src/core/deploy-pet.js.map +1 -0
- package/dist/src/core/index.d.ts +11 -0
- package/dist/src/core/index.d.ts.map +1 -0
- package/dist/src/core/index.js +11 -0
- package/dist/src/core/index.js.map +1 -0
- package/dist/src/core/local-cache.d.ts +69 -0
- package/dist/src/core/local-cache.d.ts.map +1 -0
- package/dist/src/core/local-cache.js +212 -0
- package/dist/src/core/local-cache.js.map +1 -0
- package/dist/src/core/logger.d.ts.map +1 -0
- package/{logger.js → dist/src/core/logger.js} +8 -9
- package/dist/src/core/logger.js.map +1 -0
- package/dist/src/core/mcp-factory.d.ts +12 -0
- package/dist/src/core/mcp-factory.d.ts.map +1 -0
- package/dist/src/core/mcp-factory.js +143 -0
- package/dist/src/core/mcp-factory.js.map +1 -0
- package/dist/src/core/mcp-server.d.ts +3 -0
- package/dist/src/core/mcp-server.d.ts.map +1 -0
- package/dist/src/core/mcp-server.js +55 -0
- package/dist/src/core/mcp-server.js.map +1 -0
- package/dist/src/core/migrate-plugin.d.ts +15 -0
- package/dist/src/core/migrate-plugin.d.ts.map +1 -0
- package/dist/src/core/migrate-plugin.js +181 -0
- package/dist/src/core/migrate-plugin.js.map +1 -0
- package/dist/src/core/pets-registry.d.ts +47 -0
- package/dist/src/core/pets-registry.d.ts.map +1 -0
- package/dist/src/core/pets-registry.js +109 -0
- package/dist/src/core/pets-registry.js.map +1 -0
- package/dist/src/core/plugin-factory.d.ts +58 -0
- package/dist/src/core/plugin-factory.d.ts.map +1 -0
- package/dist/src/core/plugin-factory.js +212 -0
- package/dist/src/core/plugin-factory.js.map +1 -0
- package/dist/src/core/prompt-utils.d.ts +14 -0
- package/dist/src/core/prompt-utils.d.ts.map +1 -0
- package/dist/src/core/prompt-utils.js +106 -0
- package/dist/src/core/prompt-utils.js.map +1 -0
- package/dist/src/core/schema-helpers.d.ts +33 -0
- package/dist/src/core/schema-helpers.d.ts.map +1 -0
- package/dist/src/core/schema-helpers.js +46 -0
- package/dist/src/core/schema-helpers.js.map +1 -0
- package/dist/src/core/search-pets.d.ts +29 -0
- package/dist/src/core/search-pets.d.ts.map +1 -0
- package/dist/src/core/search-pets.js +196 -0
- package/dist/src/core/search-pets.js.map +1 -0
- package/dist/src/core/types.d.ts +63 -0
- package/dist/src/core/types.d.ts.map +1 -0
- package/dist/src/core/types.js +2 -0
- package/dist/src/core/types.js.map +1 -0
- package/dist/src/core/validate-pet.d.ts +40 -0
- package/dist/src/core/validate-pet.d.ts.map +1 -0
- package/dist/src/core/validate-pet.js +650 -0
- package/dist/src/core/validate-pet.js.map +1 -0
- package/package.json +8 -21
- package/ai-client-base/index.ts +0 -229
- package/build-pet.ts +0 -429
- package/cli.ts +0 -268
- package/config-manager.ts +0 -82
- package/deploy-pet.ts +0 -91
- package/index.ts +0 -10
- package/local-cache.ts +0 -280
- package/logger.ts +0 -143
- package/mcp-factory.ts +0 -180
- package/mcp-server.ts +0 -69
- package/migrate-plugin.ts +0 -220
- package/pets-registry.ts +0 -160
- package/plugin-factory.ts +0 -300
- package/prompt-utils.ts +0 -130
- package/schema-helpers.ts +0 -59
- package/search-pets.ts +0 -267
- package/types.ts +0 -68
- package/validate-pet.ts +0 -749
- /package/{logger.d.ts → dist/src/core/logger.d.ts} +0 -0
|
@@ -0,0 +1,3172 @@
|
|
|
1
|
+
{
|
|
2
|
+
"openpets/airbnb": {
|
|
3
|
+
"name": "openpets/airbnb",
|
|
4
|
+
"description": "Factory-based Airbnb plugin for OpenCode - search and retrieve Airbnb listings",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"opencode",
|
|
7
|
+
"plugin",
|
|
8
|
+
"airbnb",
|
|
9
|
+
"travel",
|
|
10
|
+
"search",
|
|
11
|
+
"factory"
|
|
12
|
+
],
|
|
13
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/airbnb",
|
|
14
|
+
"title": "Airbnb",
|
|
15
|
+
"homepage": "https://airbnb.com",
|
|
16
|
+
"envVariables": {
|
|
17
|
+
"optional": [
|
|
18
|
+
{
|
|
19
|
+
"name": "IGNORE_ROBOTS_TXT",
|
|
20
|
+
"description": "Ignore robots.txt rules for Airbnb requests (true/false)",
|
|
21
|
+
"provider": "Airbnb",
|
|
22
|
+
"priority": 1
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "DEFAULT_TIMEOUT",
|
|
26
|
+
"description": "Default timeout for requests in milliseconds (default: 30000)",
|
|
27
|
+
"provider": "Configuration",
|
|
28
|
+
"priority": 2
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "LOG_LEVEL",
|
|
32
|
+
"description": "Logging level: debug, info, warn, error (default: info)",
|
|
33
|
+
"provider": "Configuration",
|
|
34
|
+
"priority": 3
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"queries": [
|
|
39
|
+
"search airbnbs in 'New York'",
|
|
40
|
+
"get listing details for '12345'",
|
|
41
|
+
"search airbnbs in 'Paris' with checkin '2024-12-20' and checkout '2024-12-25'"
|
|
42
|
+
],
|
|
43
|
+
"scenarios": {
|
|
44
|
+
"search-demo": [
|
|
45
|
+
"search airbnbs in 'New York'",
|
|
46
|
+
"search airbnbs in 'Paris' with checkin '2024-12-20' and checkout '2024-12-25'",
|
|
47
|
+
"search airbnbs in 'London' with adults 2 and maxPrice 200"
|
|
48
|
+
],
|
|
49
|
+
"listing-details": [
|
|
50
|
+
"get listing details for '12345'",
|
|
51
|
+
"get listing details for '67890' with checkin '2024-12-20' and checkout '2024-12-25'"
|
|
52
|
+
],
|
|
53
|
+
"integration-test": [
|
|
54
|
+
"search airbnbs in 'San Francisco'",
|
|
55
|
+
"get listing details for '12345'"
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
"tools": [
|
|
59
|
+
{
|
|
60
|
+
"name": "get-airbnb-listing-details",
|
|
61
|
+
"description": "Get detailed information about a specific Airbnb listing. Provide direct links to the user",
|
|
62
|
+
"schema": {
|
|
63
|
+
"type": "object",
|
|
64
|
+
"properties": {
|
|
65
|
+
"id": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"description": "The Airbnb listing ID"
|
|
68
|
+
},
|
|
69
|
+
"checkin": {
|
|
70
|
+
"type": "string",
|
|
71
|
+
"optional": true,
|
|
72
|
+
"description": "Check-in date (YYYY-MM-DD)"
|
|
73
|
+
},
|
|
74
|
+
"checkout": {
|
|
75
|
+
"type": "string",
|
|
76
|
+
"optional": true,
|
|
77
|
+
"description": "Check-out date (YYYY-MM-DD)"
|
|
78
|
+
},
|
|
79
|
+
"adults": {
|
|
80
|
+
"type": "number",
|
|
81
|
+
"description": "Number of adults"
|
|
82
|
+
},
|
|
83
|
+
"children": {
|
|
84
|
+
"type": "number",
|
|
85
|
+
"description": "Number of children"
|
|
86
|
+
},
|
|
87
|
+
"infants": {
|
|
88
|
+
"type": "number",
|
|
89
|
+
"description": "Number of infants"
|
|
90
|
+
},
|
|
91
|
+
"pets": {
|
|
92
|
+
"type": "number",
|
|
93
|
+
"description": "Number of pets"
|
|
94
|
+
},
|
|
95
|
+
"ignoreRobotsText": {
|
|
96
|
+
"type": "boolean",
|
|
97
|
+
"description": "Ignore robots.txt rules for this request"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
},
|
|
104
|
+
"openpets/bento": {
|
|
105
|
+
"name": "openpets/bento",
|
|
106
|
+
"description": "Bento email marketing platform integration - manage subscribers, track events, send broadcasts, and analyze engagement",
|
|
107
|
+
"keywords": [
|
|
108
|
+
"opencode",
|
|
109
|
+
"plugin",
|
|
110
|
+
"bento",
|
|
111
|
+
"email",
|
|
112
|
+
"marketing",
|
|
113
|
+
"analytics"
|
|
114
|
+
],
|
|
115
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/bento",
|
|
116
|
+
"title": "Bento",
|
|
117
|
+
"homepage": "https://bentonow.com",
|
|
118
|
+
"envVariables": {
|
|
119
|
+
"required": [
|
|
120
|
+
{
|
|
121
|
+
"name": "BENTO_PUBLISHABLE_KEY",
|
|
122
|
+
"description": "Bento publishable API key",
|
|
123
|
+
"provider": "Bento",
|
|
124
|
+
"priority": 1
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"name": "BENTO_SECRET_KEY",
|
|
128
|
+
"description": "Bento secret API key",
|
|
129
|
+
"provider": "Bento",
|
|
130
|
+
"priority": 2
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"name": "BENTO_SITE_UUID",
|
|
134
|
+
"description": "Bento site UUID",
|
|
135
|
+
"provider": "Bento",
|
|
136
|
+
"priority": 3
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
"queries": [
|
|
141
|
+
"add subscriber john@example.com",
|
|
142
|
+
"track event for user@example.com",
|
|
143
|
+
"get site statistics",
|
|
144
|
+
"create tag Premium Customer",
|
|
145
|
+
"send broadcast to leads"
|
|
146
|
+
],
|
|
147
|
+
"scenarios": {
|
|
148
|
+
"subscriber-management": [
|
|
149
|
+
"add subscriber with email and fields",
|
|
150
|
+
"get subscriber details",
|
|
151
|
+
"update subscriber fields",
|
|
152
|
+
"tag subscriber as VIP"
|
|
153
|
+
],
|
|
154
|
+
"event-tracking": [
|
|
155
|
+
"track custom event",
|
|
156
|
+
"track purchase event",
|
|
157
|
+
"batch import events"
|
|
158
|
+
],
|
|
159
|
+
"analytics": [
|
|
160
|
+
"get site statistics",
|
|
161
|
+
"get segment stats",
|
|
162
|
+
"get broadcast reports"
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"openpets/domain": {
|
|
167
|
+
"name": "openpets/domain",
|
|
168
|
+
"description": "Domain name availability checker and WHOIS lookup plugin with multiple reliable providers",
|
|
169
|
+
"keywords": [
|
|
170
|
+
"opencode",
|
|
171
|
+
"plugin",
|
|
172
|
+
"domain",
|
|
173
|
+
"whois",
|
|
174
|
+
"dns",
|
|
175
|
+
"availability",
|
|
176
|
+
"domain-checker",
|
|
177
|
+
"rdap",
|
|
178
|
+
"whoiser"
|
|
179
|
+
],
|
|
180
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/domain",
|
|
181
|
+
"title": "Domain",
|
|
182
|
+
"icon": "🌐",
|
|
183
|
+
"envVariables": {
|
|
184
|
+
"optional": [
|
|
185
|
+
{
|
|
186
|
+
"name": "WHOISXML_API_KEY",
|
|
187
|
+
"description": "API key for WhoisXML API (premium, commercial provider)",
|
|
188
|
+
"provider": "WhoisXML API",
|
|
189
|
+
"priority": 1,
|
|
190
|
+
"url": "https://www.whoisxmlapi.com/"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"name": "WHOISFREAKS_API_KEY",
|
|
194
|
+
"description": "API key for WhoisFreaks API (premium, commercial provider)",
|
|
195
|
+
"provider": "WhoisFreaks",
|
|
196
|
+
"priority": 2,
|
|
197
|
+
"url": "https://whoisfreaks.com/"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"name": "DOMAIN_PROVIDER_ORDER",
|
|
201
|
+
"description": "Comma-separated list of preferred provider order (e.g., 'whoiser,rdap,system')",
|
|
202
|
+
"provider": "Configuration",
|
|
203
|
+
"priority": 3
|
|
204
|
+
}
|
|
205
|
+
]
|
|
206
|
+
},
|
|
207
|
+
"queries": [
|
|
208
|
+
"check if example.com is available",
|
|
209
|
+
"check domain availability for mycompany",
|
|
210
|
+
"get whois info for google.com",
|
|
211
|
+
"check multiple domains: test.com, test.io, test.net",
|
|
212
|
+
"list available whois providers"
|
|
213
|
+
],
|
|
214
|
+
"scenarios": {
|
|
215
|
+
"domain-availability": [
|
|
216
|
+
"check if example.com is available",
|
|
217
|
+
"check domain availability for mycompany",
|
|
218
|
+
"check if tech-startup.io is available"
|
|
219
|
+
],
|
|
220
|
+
"whois-lookup": [
|
|
221
|
+
"get whois info for google.com",
|
|
222
|
+
"get whois info for github.com"
|
|
223
|
+
],
|
|
224
|
+
"bulk-check": [
|
|
225
|
+
"check multiple domains: test.com, test.io, test.net"
|
|
226
|
+
]
|
|
227
|
+
},
|
|
228
|
+
"tools": [
|
|
229
|
+
{
|
|
230
|
+
"name": "check-domain-availability",
|
|
231
|
+
"description": "Check if a domain name is available across multiple TLDs (top-level domains). Checks DNS resolution and WHOIS data to determine availability. Supports multiple WHOIS providers with automatic fallback.",
|
|
232
|
+
"schema": {
|
|
233
|
+
"type": "object",
|
|
234
|
+
"properties": {}
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"name": "check-single-domain",
|
|
239
|
+
"description": "Check if a specific complete domain (e.g., ",
|
|
240
|
+
"schema": {
|
|
241
|
+
"type": "object",
|
|
242
|
+
"properties": {}
|
|
243
|
+
}
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"name": "get-whois-info",
|
|
247
|
+
"description": "Get detailed WHOIS information for a registered domain. Returns registrar info, creation/expiry dates, nameservers, and registrant details using reliable WHOIS providers.",
|
|
248
|
+
"schema": {
|
|
249
|
+
"type": "object",
|
|
250
|
+
"properties": {}
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"name": "bulk-domain-check",
|
|
255
|
+
"description": "Check availability for multiple complete domain names at once. Useful for checking a list of specific domains.",
|
|
256
|
+
"schema": {
|
|
257
|
+
"type": "object",
|
|
258
|
+
"properties": {}
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"name": "list-whois-providers",
|
|
263
|
+
"description": "List all available WHOIS providers, their configuration status, and the current provider order. Shows which providers require API keys and which are ready to use.",
|
|
264
|
+
"schema": {
|
|
265
|
+
"type": "object",
|
|
266
|
+
"properties": {}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
]
|
|
270
|
+
},
|
|
271
|
+
"openpets/elevenlabs": {
|
|
272
|
+
"name": "openpets/elevenlabs",
|
|
273
|
+
"description": "Generate natural-sounding speech from text, transcribe audio, and manage voices using ElevenLabs AI",
|
|
274
|
+
"keywords": [
|
|
275
|
+
"opencode",
|
|
276
|
+
"plugin",
|
|
277
|
+
"elevenlabs",
|
|
278
|
+
"text-to-speech",
|
|
279
|
+
"speech-to-text",
|
|
280
|
+
"voice-generation",
|
|
281
|
+
"transcription"
|
|
282
|
+
],
|
|
283
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/elevenlabs",
|
|
284
|
+
"title": "ElevenLabs",
|
|
285
|
+
"homepage": "https://github.com/raggle-ai/pets",
|
|
286
|
+
"envVariables": {
|
|
287
|
+
"required": [
|
|
288
|
+
{
|
|
289
|
+
"name": "ELEVENLABS_API_KEY",
|
|
290
|
+
"description": "API key for ElevenLabs service. Get one at https://elevenlabs.io/",
|
|
291
|
+
"provider": "ElevenLabs",
|
|
292
|
+
"priority": 1
|
|
293
|
+
}
|
|
294
|
+
]
|
|
295
|
+
},
|
|
296
|
+
"queries": [
|
|
297
|
+
"generate audio from text 'Hello world'",
|
|
298
|
+
"list available voices",
|
|
299
|
+
"transcribe audio from file"
|
|
300
|
+
],
|
|
301
|
+
"scenarios": {
|
|
302
|
+
"text-to-speech": [
|
|
303
|
+
"generate audio from text 'Welcome to ElevenLabs'",
|
|
304
|
+
"generate audio using voice Rachel"
|
|
305
|
+
],
|
|
306
|
+
"voice-management": [
|
|
307
|
+
"list available voices",
|
|
308
|
+
"get voice settings for Rachel"
|
|
309
|
+
]
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
"openpets/email": {
|
|
313
|
+
"name": "openpets/email",
|
|
314
|
+
"description": "EmailOS (mailos) integration for OpenCode - send, read, and manage emails from natural language",
|
|
315
|
+
"keywords": [
|
|
316
|
+
"opencode",
|
|
317
|
+
"plugin",
|
|
318
|
+
"email",
|
|
319
|
+
"mailos",
|
|
320
|
+
"emailos",
|
|
321
|
+
"smtp",
|
|
322
|
+
"imap"
|
|
323
|
+
],
|
|
324
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/email",
|
|
325
|
+
"title": "Email",
|
|
326
|
+
"icon": "📧",
|
|
327
|
+
"queries": [
|
|
328
|
+
"send email to test@example.com with subject 'Test' and body 'Hello world'",
|
|
329
|
+
"check inbox for new emails",
|
|
330
|
+
"search for emails from 'boss@company.com'",
|
|
331
|
+
"mark email as read"
|
|
332
|
+
],
|
|
333
|
+
"scenarios": {
|
|
334
|
+
"basic-email": [
|
|
335
|
+
"check my inbox",
|
|
336
|
+
"search for emails from 'test@example.com'",
|
|
337
|
+
"send reply to the most recent email"
|
|
338
|
+
],
|
|
339
|
+
"email-management": [
|
|
340
|
+
"check inbox for unread emails",
|
|
341
|
+
"mark all emails from 'newsletter@spam.com' as read",
|
|
342
|
+
"delete emails older than 30 days",
|
|
343
|
+
"send confirmation email to user@domain.com"
|
|
344
|
+
]
|
|
345
|
+
},
|
|
346
|
+
"tools": [
|
|
347
|
+
{
|
|
348
|
+
"name": "email-send",
|
|
349
|
+
"description": "Send an email using mailos CLI. Supports markdown in body, attachments, CC/BCC, drafts, scheduling, and more.",
|
|
350
|
+
"schema": {
|
|
351
|
+
"type": "object",
|
|
352
|
+
"properties": {}
|
|
353
|
+
}
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"name": "email-search",
|
|
357
|
+
"description": "Search emails with advanced filters including sender, subject, date range, attachments, and more. Supports JSON output and markdown export. Returns last 30 days by default, use --alltime for all emails.",
|
|
358
|
+
"schema": {
|
|
359
|
+
"type": "object",
|
|
360
|
+
"properties": {}
|
|
361
|
+
}
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"name": "email-read",
|
|
365
|
+
"description": "Read full content of a specific email by message-id or list recent emails. Supports viewing attachments, exporting to markdown, copying to clipboard, and exporting to EML format.",
|
|
366
|
+
"schema": {
|
|
367
|
+
"type": "object",
|
|
368
|
+
"properties": {}
|
|
369
|
+
}
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"name": "email-reply",
|
|
373
|
+
"description": "Reply to a specific email by message-id. Preserves thread context and supports reply-all.",
|
|
374
|
+
"schema": {
|
|
375
|
+
"type": "object",
|
|
376
|
+
"properties": {}
|
|
377
|
+
}
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
"name": "email-forward",
|
|
381
|
+
"description": "Forward a specific email to one or more recipients by message-id.",
|
|
382
|
+
"schema": {
|
|
383
|
+
"type": "object",
|
|
384
|
+
"properties": {}
|
|
385
|
+
}
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
"name": "email-delete",
|
|
389
|
+
"description": "Delete emails by various criteria including sender, subject, date range, or specific IDs. Supports dry-run for safety.",
|
|
390
|
+
"schema": {
|
|
391
|
+
"type": "object",
|
|
392
|
+
"properties": {}
|
|
393
|
+
}
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
"name": "email-save",
|
|
397
|
+
"description": "Save emails and attachments to files in various formats (eml, txt, json). Supports batch saving based on search criteria.",
|
|
398
|
+
"schema": {
|
|
399
|
+
"type": "object",
|
|
400
|
+
"properties": {}
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"name": "email-sync",
|
|
405
|
+
"description": "Sync emails from IMAP server to local filesystem using mbsync. Supports selective syncing by date range and folders.",
|
|
406
|
+
"schema": {
|
|
407
|
+
"type": "object",
|
|
408
|
+
"properties": {}
|
|
409
|
+
}
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
"name": "email-unsubscribe",
|
|
413
|
+
"description": "Find unsubscribe links in emails and optionally open them in browser or move emails to a folder. Useful for cleaning up newsletters and marketing emails.",
|
|
414
|
+
"schema": {
|
|
415
|
+
"type": "object",
|
|
416
|
+
"properties": {}
|
|
417
|
+
}
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
"name": "email-account",
|
|
421
|
+
"description": "Manage email accounts: list all configured accounts, set session default account, or clear default account.",
|
|
422
|
+
"schema": {
|
|
423
|
+
"type": "object",
|
|
424
|
+
"properties": {}
|
|
425
|
+
}
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
"name": "email-sent",
|
|
429
|
+
"description": "Read sent emails with filtering by recipient, subject, date range, and time period. Supports markdown export.",
|
|
430
|
+
"schema": {
|
|
431
|
+
"type": "object",
|
|
432
|
+
"properties": {}
|
|
433
|
+
}
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
"name": "email-open",
|
|
437
|
+
"description": "Open specific emails in your system",
|
|
438
|
+
"schema": {
|
|
439
|
+
"type": "object",
|
|
440
|
+
"properties": {}
|
|
441
|
+
}
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
"name": "email-groups",
|
|
445
|
+
"description": "Manage email groups for bulk sending. Create, update, delete groups, and manage group members.",
|
|
446
|
+
"schema": {
|
|
447
|
+
"type": "object",
|
|
448
|
+
"properties": {}
|
|
449
|
+
}
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
"name": "email-template",
|
|
453
|
+
"description": "Customize HTML email templates. Create, edit, remove, or preview email templates for your account.",
|
|
454
|
+
"schema": {
|
|
455
|
+
"type": "object",
|
|
456
|
+
"properties": {}
|
|
457
|
+
}
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
"name": "email-configure",
|
|
461
|
+
"description": "Configure email account settings, provider information, and preferences. Supports local and global configuration.",
|
|
462
|
+
"schema": {
|
|
463
|
+
"type": "object",
|
|
464
|
+
"properties": {}
|
|
465
|
+
}
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
"name": "email-logs",
|
|
469
|
+
"description": "Get the command execution logs for debugging and monitoring email operations.",
|
|
470
|
+
"schema": {
|
|
471
|
+
"type": "object",
|
|
472
|
+
"properties": {}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
]
|
|
476
|
+
},
|
|
477
|
+
"openpets/fal": {
|
|
478
|
+
"name": "openpets/fal",
|
|
479
|
+
"description": "FAL AI image and video generation plugin for OpenCode - text-to-image, image-to-image, text-to-video, and image-to-video using Flux, Stable Diffusion, Kling, and more",
|
|
480
|
+
"keywords": [
|
|
481
|
+
"opencode",
|
|
482
|
+
"plugin",
|
|
483
|
+
"fal",
|
|
484
|
+
"ai",
|
|
485
|
+
"image-generation",
|
|
486
|
+
"video-generation",
|
|
487
|
+
"flux",
|
|
488
|
+
"stable-diffusion",
|
|
489
|
+
"kling-video",
|
|
490
|
+
"text-to-image",
|
|
491
|
+
"image-to-image",
|
|
492
|
+
"text-to-video",
|
|
493
|
+
"image-to-video"
|
|
494
|
+
],
|
|
495
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/fal",
|
|
496
|
+
"title": "FAL",
|
|
497
|
+
"homepage": "https://fal.ai",
|
|
498
|
+
"envVariables": {
|
|
499
|
+
"required": [
|
|
500
|
+
{
|
|
501
|
+
"name": "FAL_KEY",
|
|
502
|
+
"description": "FAL AI API key for image and video generation",
|
|
503
|
+
"provider": "FAL AI",
|
|
504
|
+
"priority": 1,
|
|
505
|
+
"example": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
|
506
|
+
}
|
|
507
|
+
]
|
|
508
|
+
},
|
|
509
|
+
"queries": [
|
|
510
|
+
"generate an image of a sunset over the ocean",
|
|
511
|
+
"transform this image into watercolor style",
|
|
512
|
+
"generate a video of clouds drifting across the sky",
|
|
513
|
+
"animate this image with a camera pan"
|
|
514
|
+
],
|
|
515
|
+
"scenarios": {
|
|
516
|
+
"text-to-image-basic": [
|
|
517
|
+
"use fal-generate-image to create a cat sitting on a windowsill",
|
|
518
|
+
"use fal-generate-image with square_hd size for a landscape with mountains",
|
|
519
|
+
"use fal-generate-image to make a portrait of a robot"
|
|
520
|
+
],
|
|
521
|
+
"image-transformation": [
|
|
522
|
+
"use fal-transform-image to convert photo to watercolor style",
|
|
523
|
+
"use fal-transform-image to add cyberpunk effects to image",
|
|
524
|
+
"use fal-transform-image to change day photo to night"
|
|
525
|
+
],
|
|
526
|
+
"video-generation": [
|
|
527
|
+
"use fal-generate-video to create ocean waves crashing on beach",
|
|
528
|
+
"use fal-generate-video with 16:9 aspect for rotating product",
|
|
529
|
+
"use fal-generate-video at 30 fps for smooth fireworks animation"
|
|
530
|
+
],
|
|
531
|
+
"image-animation": [
|
|
532
|
+
"use fal-animate-image to add camera pan to landscape photo",
|
|
533
|
+
"use fal-animate-image with zoom motion for city skyline",
|
|
534
|
+
"use fal-animate-image to create parallax effect in forest scene"
|
|
535
|
+
]
|
|
536
|
+
},
|
|
537
|
+
"tools": [
|
|
538
|
+
{
|
|
539
|
+
"name": "fal-generate-image",
|
|
540
|
+
"description": "Generate an image using FAL AI text-to-image models (Flux, Stable Diffusion, etc.)",
|
|
541
|
+
"schema": {
|
|
542
|
+
"type": "object",
|
|
543
|
+
"properties": {
|
|
544
|
+
"prompt": {
|
|
545
|
+
"type": "string",
|
|
546
|
+
"description": "Text description of the image to generate"
|
|
547
|
+
},
|
|
548
|
+
"model": {
|
|
549
|
+
"type": "string",
|
|
550
|
+
"optional": true,
|
|
551
|
+
"description": "Model to use (default: fal-ai/flux/dev). Options: fal-ai/flux/dev, fal-ai/flux/schnell, fal-ai/stable-diffusion-v3"
|
|
552
|
+
},
|
|
553
|
+
"image_size": {
|
|
554
|
+
"type": "string",
|
|
555
|
+
"enum": [
|
|
556
|
+
"square_hd",
|
|
557
|
+
"square",
|
|
558
|
+
"portrait_4_3",
|
|
559
|
+
"portrait_16_9",
|
|
560
|
+
"landscape_4_3",
|
|
561
|
+
"landscape_16_9"
|
|
562
|
+
],
|
|
563
|
+
"optional": true,
|
|
564
|
+
"description": "Image aspect ratio (default: square)"
|
|
565
|
+
},
|
|
566
|
+
"num_images": {
|
|
567
|
+
"type": "number",
|
|
568
|
+
"optional": true,
|
|
569
|
+
"description": "Number of images to generate (default: 1)"
|
|
570
|
+
},
|
|
571
|
+
"seed": {
|
|
572
|
+
"type": "number",
|
|
573
|
+
"optional": true,
|
|
574
|
+
"description": "Random seed for reproducibility"
|
|
575
|
+
},
|
|
576
|
+
"num_inference_steps": {
|
|
577
|
+
"type": "number",
|
|
578
|
+
"optional": true,
|
|
579
|
+
"description": "Number of inference steps (more = higher quality, slower)"
|
|
580
|
+
},
|
|
581
|
+
"guidance_scale": {
|
|
582
|
+
"type": "number",
|
|
583
|
+
"optional": true,
|
|
584
|
+
"description": "How closely to follow the prompt (7.5 is typical)"
|
|
585
|
+
},
|
|
586
|
+
"negative_prompt": {
|
|
587
|
+
"type": "string",
|
|
588
|
+
"optional": true,
|
|
589
|
+
"description": "What to avoid in the image"
|
|
590
|
+
},
|
|
591
|
+
"enable_safety_checker": {
|
|
592
|
+
"type": "boolean",
|
|
593
|
+
"optional": true,
|
|
594
|
+
"description": "Enable content safety checker (default: true)"
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
},
|
|
599
|
+
{
|
|
600
|
+
"name": "fal-transform-image",
|
|
601
|
+
"description": "Transform an existing image using FAL AI image-to-image models (style transfer, editing, variations)",
|
|
602
|
+
"schema": {
|
|
603
|
+
"type": "object",
|
|
604
|
+
"properties": {
|
|
605
|
+
"input_image": {
|
|
606
|
+
"type": "string",
|
|
607
|
+
"description": "Path or URL to input image to transform"
|
|
608
|
+
},
|
|
609
|
+
"prompt": {
|
|
610
|
+
"type": "string",
|
|
611
|
+
"description": "Description of how to transform the image"
|
|
612
|
+
},
|
|
613
|
+
"model": {
|
|
614
|
+
"type": "string",
|
|
615
|
+
"optional": true,
|
|
616
|
+
"description": "Model to use (default: fal-ai/flux/dev)"
|
|
617
|
+
},
|
|
618
|
+
"image_size": {
|
|
619
|
+
"type": "string",
|
|
620
|
+
"enum": [
|
|
621
|
+
"square_hd",
|
|
622
|
+
"square",
|
|
623
|
+
"portrait_4_3",
|
|
624
|
+
"portrait_16_9",
|
|
625
|
+
"landscape_4_3",
|
|
626
|
+
"landscape_16_9"
|
|
627
|
+
],
|
|
628
|
+
"optional": true,
|
|
629
|
+
"description": "Output image aspect ratio"
|
|
630
|
+
},
|
|
631
|
+
"num_images": {
|
|
632
|
+
"type": "number",
|
|
633
|
+
"optional": true,
|
|
634
|
+
"description": "Number of variations to generate (default: 1)"
|
|
635
|
+
},
|
|
636
|
+
"seed": {
|
|
637
|
+
"type": "number",
|
|
638
|
+
"optional": true,
|
|
639
|
+
"description": "Random seed for reproducibility"
|
|
640
|
+
},
|
|
641
|
+
"guidance_scale": {
|
|
642
|
+
"type": "number",
|
|
643
|
+
"optional": true,
|
|
644
|
+
"description": "How closely to follow the prompt"
|
|
645
|
+
},
|
|
646
|
+
"negative_prompt": {
|
|
647
|
+
"type": "string",
|
|
648
|
+
"optional": true,
|
|
649
|
+
"description": "What to avoid in the transformation"
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
},
|
|
654
|
+
{
|
|
655
|
+
"name": "fal-generate-video",
|
|
656
|
+
"description": "Generate a video using FAL AI text-to-video models (Kling, Runway Gen-3, etc.)",
|
|
657
|
+
"schema": {
|
|
658
|
+
"type": "object",
|
|
659
|
+
"properties": {
|
|
660
|
+
"prompt": {
|
|
661
|
+
"type": "string",
|
|
662
|
+
"description": "Text description of the video to generate"
|
|
663
|
+
},
|
|
664
|
+
"model": {
|
|
665
|
+
"type": "string",
|
|
666
|
+
"optional": true,
|
|
667
|
+
"description": "Model to use (default: fal-ai/kling-video-v1). Options: fal-ai/kling-video-v1, fal-ai/runway-gen3"
|
|
668
|
+
},
|
|
669
|
+
"duration": {
|
|
670
|
+
"type": "number",
|
|
671
|
+
"optional": true,
|
|
672
|
+
"description": "Video duration in seconds (default: 5)"
|
|
673
|
+
},
|
|
674
|
+
"fps": {
|
|
675
|
+
"type": "number",
|
|
676
|
+
"optional": true,
|
|
677
|
+
"description": "Frames per second (default: 24)"
|
|
678
|
+
},
|
|
679
|
+
"aspect_ratio": {
|
|
680
|
+
"type": "string",
|
|
681
|
+
"enum": [
|
|
682
|
+
"16:9",
|
|
683
|
+
"9:16",
|
|
684
|
+
"1:1"
|
|
685
|
+
],
|
|
686
|
+
"optional": true,
|
|
687
|
+
"description": "Video aspect ratio (default: 16:9)"
|
|
688
|
+
},
|
|
689
|
+
"num_videos": {
|
|
690
|
+
"type": "number",
|
|
691
|
+
"optional": true,
|
|
692
|
+
"description": "Number of videos to generate (default: 1)"
|
|
693
|
+
},
|
|
694
|
+
"seed": {
|
|
695
|
+
"type": "number",
|
|
696
|
+
"optional": true,
|
|
697
|
+
"description": "Random seed for reproducibility"
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
},
|
|
702
|
+
{
|
|
703
|
+
"name": "fal-animate-image",
|
|
704
|
+
"description": "Animate a static image using FAL AI image-to-video models",
|
|
705
|
+
"schema": {
|
|
706
|
+
"type": "object",
|
|
707
|
+
"properties": {
|
|
708
|
+
"input_image": {
|
|
709
|
+
"type": "string",
|
|
710
|
+
"description": "Path or URL to input image to animate"
|
|
711
|
+
},
|
|
712
|
+
"prompt": {
|
|
713
|
+
"type": "string",
|
|
714
|
+
"description": "Description of how the image should move/animate"
|
|
715
|
+
},
|
|
716
|
+
"model": {
|
|
717
|
+
"type": "string",
|
|
718
|
+
"optional": true,
|
|
719
|
+
"description": "Model to use (default: fal-ai/veo3.1/image-to-video)"
|
|
720
|
+
},
|
|
721
|
+
"duration": {
|
|
722
|
+
"type": "number",
|
|
723
|
+
"optional": true,
|
|
724
|
+
"description": "Video duration in seconds (default: 5)"
|
|
725
|
+
},
|
|
726
|
+
"fps": {
|
|
727
|
+
"type": "number",
|
|
728
|
+
"optional": true,
|
|
729
|
+
"description": "Frames per second (default: 24)"
|
|
730
|
+
},
|
|
731
|
+
"aspect_ratio": {
|
|
732
|
+
"type": "string",
|
|
733
|
+
"enum": [
|
|
734
|
+
"16:9",
|
|
735
|
+
"9:16",
|
|
736
|
+
"1:1"
|
|
737
|
+
],
|
|
738
|
+
"optional": true,
|
|
739
|
+
"description": "Video aspect ratio"
|
|
740
|
+
},
|
|
741
|
+
"seed": {
|
|
742
|
+
"type": "number",
|
|
743
|
+
"optional": true,
|
|
744
|
+
"description": "Random seed for reproducibility"
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
]
|
|
750
|
+
},
|
|
751
|
+
"openpets/flights": {
|
|
752
|
+
"name": "openpets/flights",
|
|
753
|
+
"description": "Flight search plugin for OpenCode - search for flights, compare prices, and find the best travel options",
|
|
754
|
+
"keywords": [
|
|
755
|
+
"opencode",
|
|
756
|
+
"plugin",
|
|
757
|
+
"flights",
|
|
758
|
+
"travel",
|
|
759
|
+
"booking",
|
|
760
|
+
"airports",
|
|
761
|
+
"flight-search"
|
|
762
|
+
],
|
|
763
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/flights",
|
|
764
|
+
"title": "Flights",
|
|
765
|
+
"icon": "✈️",
|
|
766
|
+
"envVariables": {
|
|
767
|
+
"optional": [
|
|
768
|
+
{
|
|
769
|
+
"name": "SERPAPI_API_KEY",
|
|
770
|
+
"description": "SerpAPI key for Google Flights search (recommended provider)",
|
|
771
|
+
"provider": "SerpAPI",
|
|
772
|
+
"priority": 1
|
|
773
|
+
},
|
|
774
|
+
{
|
|
775
|
+
"name": "RAPIDAPI_KEY",
|
|
776
|
+
"description": "RapidAPI key for alternative flight search providers",
|
|
777
|
+
"provider": "RapidAPI",
|
|
778
|
+
"priority": 2
|
|
779
|
+
},
|
|
780
|
+
{
|
|
781
|
+
"name": "AMADEUS_API_KEY",
|
|
782
|
+
"description": "Amadeus API key for professional flight search",
|
|
783
|
+
"provider": "Amadeus",
|
|
784
|
+
"priority": 2
|
|
785
|
+
},
|
|
786
|
+
{
|
|
787
|
+
"name": "AMADEUS_API_SECRET",
|
|
788
|
+
"description": "Amadeus API secret for authentication",
|
|
789
|
+
"provider": "Amadeus",
|
|
790
|
+
"priority": 2
|
|
791
|
+
},
|
|
792
|
+
{
|
|
793
|
+
"name": "FLIGHT_PROVIDER",
|
|
794
|
+
"description": "Preferred flight search provider: serpapi, rapidapi, amadeus (default: serpapi)",
|
|
795
|
+
"provider": "Configuration",
|
|
796
|
+
"priority": 3
|
|
797
|
+
},
|
|
798
|
+
{
|
|
799
|
+
"name": "MAX_RESULTS",
|
|
800
|
+
"description": "Maximum number of flight results to return (default: 10)",
|
|
801
|
+
"provider": "Configuration",
|
|
802
|
+
"priority": 4
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
"name": "DEFAULT_CABIN_CLASS",
|
|
806
|
+
"description": "Default cabin class: economy, premium_economy, business, first (default: economy)",
|
|
807
|
+
"provider": "Configuration",
|
|
808
|
+
"priority": 4
|
|
809
|
+
},
|
|
810
|
+
{
|
|
811
|
+
"name": "LOG_LEVEL",
|
|
812
|
+
"description": "Logging level: debug, info, warn, error (default: info)",
|
|
813
|
+
"provider": "Configuration",
|
|
814
|
+
"priority": 5
|
|
815
|
+
}
|
|
816
|
+
]
|
|
817
|
+
},
|
|
818
|
+
"queries": [
|
|
819
|
+
"search flights from LAX to JFK on 2025-01-15",
|
|
820
|
+
"find cheapest flights from San Francisco to New York next week",
|
|
821
|
+
"search round trip flights from London to Paris departing March 1 returning March 8",
|
|
822
|
+
"find airport code for Tokyo",
|
|
823
|
+
"search business class flights from NYC to London"
|
|
824
|
+
],
|
|
825
|
+
"scenarios": {
|
|
826
|
+
"one-way-flights": [
|
|
827
|
+
"search flights from LAX to JFK on 2025-01-15",
|
|
828
|
+
"search flights from SFO to NYC on 2025-02-01 for 2 adults",
|
|
829
|
+
"find economy flights from BOS to MIA on 2025-03-10"
|
|
830
|
+
],
|
|
831
|
+
"round-trip-flights": [
|
|
832
|
+
"search round trip from LAX to NYC departing 2025-01-15 returning 2025-01-22",
|
|
833
|
+
"find round trip business class from SFO to LHR departing March 1 returning March 15"
|
|
834
|
+
],
|
|
835
|
+
"airport-search": [
|
|
836
|
+
"find airport code for Los Angeles",
|
|
837
|
+
"search airports in Tokyo",
|
|
838
|
+
"find airport code for New York"
|
|
839
|
+
],
|
|
840
|
+
"flexible-search": [
|
|
841
|
+
"find cheapest flights from LAX to NYC within next 2 weeks",
|
|
842
|
+
"compare flight prices from SFO to multiple European cities"
|
|
843
|
+
]
|
|
844
|
+
},
|
|
845
|
+
"tools": [
|
|
846
|
+
{
|
|
847
|
+
"name": "search-flights",
|
|
848
|
+
"description": "Search for one-way or round-trip flights between airports. Returns flight options with prices, times, and airlines. IMPORTANT: Only searches FUTURE dates - past dates will fail immediately. Always verify the current date before searching.",
|
|
849
|
+
"schema": {
|
|
850
|
+
"type": "object",
|
|
851
|
+
"properties": {
|
|
852
|
+
"from": {
|
|
853
|
+
"type": "string"
|
|
854
|
+
},
|
|
855
|
+
"to": {
|
|
856
|
+
"type": "string"
|
|
857
|
+
},
|
|
858
|
+
"departureDate": {
|
|
859
|
+
"type": "string",
|
|
860
|
+
"description": "Departure date in YYYY-MM-DD format. MUST be today or a future date - past dates will be rejected. Google Flights only shows future flights."
|
|
861
|
+
},
|
|
862
|
+
"returnDate": {
|
|
863
|
+
"type": "string",
|
|
864
|
+
"optional": true,
|
|
865
|
+
"description": "Return date for round-trip flights in YYYY-MM-DD format. Must be after departure date."
|
|
866
|
+
},
|
|
867
|
+
"adults": {
|
|
868
|
+
"type": "number",
|
|
869
|
+
"minimum": 1,
|
|
870
|
+
"maximum": 9,
|
|
871
|
+
"description": "Number of adult passengers"
|
|
872
|
+
},
|
|
873
|
+
"children": {
|
|
874
|
+
"type": "number",
|
|
875
|
+
"minimum": 0,
|
|
876
|
+
"maximum": 9,
|
|
877
|
+
"description": "Number of children"
|
|
878
|
+
},
|
|
879
|
+
"cabinClass": {
|
|
880
|
+
"type": "string",
|
|
881
|
+
"enum": [
|
|
882
|
+
"economy",
|
|
883
|
+
"premium_economy",
|
|
884
|
+
"business",
|
|
885
|
+
"first"
|
|
886
|
+
],
|
|
887
|
+
"description": "Cabin class preference"
|
|
888
|
+
},
|
|
889
|
+
"maxResults": {
|
|
890
|
+
"type": "number",
|
|
891
|
+
"minimum": 1,
|
|
892
|
+
"maximum": 50,
|
|
893
|
+
"description": "Maximum number of results to return"
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
},
|
|
898
|
+
{
|
|
899
|
+
"name": "search-airports",
|
|
900
|
+
"description": "Find airport codes by city name, airport name, or partial code. Returns matching airports with their IATA codes.",
|
|
901
|
+
"schema": {
|
|
902
|
+
"type": "object",
|
|
903
|
+
"properties": {
|
|
904
|
+
"query": {
|
|
905
|
+
"type": "string",
|
|
906
|
+
"description": "City name, airport name, or partial code to search for"
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
},
|
|
911
|
+
{
|
|
912
|
+
"name": "calculate-travel-dates",
|
|
913
|
+
"description": "Calculate suggested travel dates based on days from today and trip length. Useful for flexible travel planning.",
|
|
914
|
+
"schema": {
|
|
915
|
+
"type": "object",
|
|
916
|
+
"properties": {
|
|
917
|
+
"daysFromNow": {
|
|
918
|
+
"type": "number",
|
|
919
|
+
"minimum": 0,
|
|
920
|
+
"description": "Number of days from today for departure"
|
|
921
|
+
},
|
|
922
|
+
"tripLength": {
|
|
923
|
+
"type": "number",
|
|
924
|
+
"minimum": 1,
|
|
925
|
+
"description": "Length of trip in days"
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
},
|
|
930
|
+
{
|
|
931
|
+
"name": "get-provider-status",
|
|
932
|
+
"description": "Check which flight search provider is active and its configuration status",
|
|
933
|
+
"schema": {
|
|
934
|
+
"type": "object",
|
|
935
|
+
"properties": {
|
|
936
|
+
"verbose": {
|
|
937
|
+
"type": "boolean",
|
|
938
|
+
"optional": true,
|
|
939
|
+
"description": "Show detailed configuration information"
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
]
|
|
945
|
+
},
|
|
946
|
+
"openpets/gitlab": {
|
|
947
|
+
"name": "openpets/gitlab",
|
|
948
|
+
"description": "GitLab integration plugin for OpenCode - manage projects, issues, merge requests, and more",
|
|
949
|
+
"keywords": [
|
|
950
|
+
"opencode",
|
|
951
|
+
"plugin",
|
|
952
|
+
"gitlab",
|
|
953
|
+
"git",
|
|
954
|
+
"ci",
|
|
955
|
+
"devops"
|
|
956
|
+
],
|
|
957
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/gitlab",
|
|
958
|
+
"title": "GitLab",
|
|
959
|
+
"homepage": "https://gitlab.com",
|
|
960
|
+
"envVariables": {
|
|
961
|
+
"required": [
|
|
962
|
+
{
|
|
963
|
+
"name": "GITLAB_TOKEN",
|
|
964
|
+
"description": "GitLab personal access token for authentication",
|
|
965
|
+
"provider": "gitlab",
|
|
966
|
+
"priority": 1
|
|
967
|
+
}
|
|
968
|
+
],
|
|
969
|
+
"optional": [
|
|
970
|
+
{
|
|
971
|
+
"name": "GITLAB_URL",
|
|
972
|
+
"description": "GitLab instance URL (defaults to https://gitlab.com)",
|
|
973
|
+
"provider": "gitlab",
|
|
974
|
+
"priority": 2
|
|
975
|
+
},
|
|
976
|
+
{
|
|
977
|
+
"name": "GITLAB_REPO_URL",
|
|
978
|
+
"description": "Default GitLab repository URL for repository operations",
|
|
979
|
+
"provider": "gitlab",
|
|
980
|
+
"priority": 3
|
|
981
|
+
}
|
|
982
|
+
]
|
|
983
|
+
},
|
|
984
|
+
"queries": [
|
|
985
|
+
"list my GitLab projects",
|
|
986
|
+
"get details for project gitlab-org/gitlab",
|
|
987
|
+
"list open issues for project gitlab-org/gitlab",
|
|
988
|
+
"get current user information"
|
|
989
|
+
],
|
|
990
|
+
"scenarios": {
|
|
991
|
+
"repository-details-missing-url": "opencode run 'use gitlab-get-repository-details and show the error when GITLAB_REPO_URL is not set'",
|
|
992
|
+
"repository-details-invalid-url": "opencode run 'use gitlab-get-repository-details with GITLAB_REPO_URL set to invalid-url and show the error'",
|
|
993
|
+
"repository-details-valid-format": "opencode run 'use gitlab-get-repository-details with GITLAB_REPO_URL=https://gitlab.com/gitlab-org/gitlab and show the authentication error'",
|
|
994
|
+
"repository-details-git-suffix": "opencode run 'use gitlab-get-repository-details with GITLAB_REPO_URL=https://gitlab.com/gitlab-org/gitlab.git and show it handles the .git suffix correctly'",
|
|
995
|
+
"repository-details-project-path": "opencode run 'use gitlab-get-repository-details with GITLAB_REPO_URL=gitlab-org/gitlab and show it works with project path only'",
|
|
996
|
+
"list-projects-basic": "opencode run 'use gitlab-list-projects to get the first 10 projects'",
|
|
997
|
+
"list-projects-search": "opencode run 'use gitlab-list-projects with search term \"gitlab\" to find projects containing gitlab'",
|
|
998
|
+
"get-project-by-id": "opencode run 'use gitlab-get-project with projectId \"gitlab-org/gitlab\" to get project details'",
|
|
999
|
+
"list-issues-basic": "opencode run 'use gitlab-list-issues with projectId \"gitlab-org/gitlab\" and state \"opened\" to get open issues'",
|
|
1000
|
+
"get-user-info": "opencode run 'use gitlab-get-user to get current user information'",
|
|
1001
|
+
"workflow-repository-to-issues": "opencode run 'first use gitlab-get-repository-details to get repository info, then use gitlab-list-issues with that project to get recent issues'",
|
|
1002
|
+
"error-handling-missing-token": "opencode run 'try to use gitlab-list-projects without GITLAB_TOKEN and show the authentication error'"
|
|
1003
|
+
},
|
|
1004
|
+
"tools": [
|
|
1005
|
+
{
|
|
1006
|
+
"name": "gitlab-list-projects",
|
|
1007
|
+
"description": "List GitLab projects with optional filtering. Returns project IDs needed for other API calls. ALWAYS use this FIRST to find and verify project IDs before other operations. Do NOT attempt to clone repositories.",
|
|
1008
|
+
"schema": {
|
|
1009
|
+
"type": "object",
|
|
1010
|
+
"properties": {}
|
|
1011
|
+
}
|
|
1012
|
+
},
|
|
1013
|
+
{
|
|
1014
|
+
"name": "gitlab-get-repository-details",
|
|
1015
|
+
"description": "Get detailed information about the repository defined in GITLAB_REPO_URL environment variable",
|
|
1016
|
+
"schema": {
|
|
1017
|
+
"type": "object",
|
|
1018
|
+
"properties": {}
|
|
1019
|
+
}
|
|
1020
|
+
},
|
|
1021
|
+
{
|
|
1022
|
+
"name": "gitlab-get-project",
|
|
1023
|
+
"description": "Get detailed information about a specific GitLab project. Use this to VERIFY a project exists and get its correct ID before other API calls. Prevents ",
|
|
1024
|
+
"schema": {
|
|
1025
|
+
"type": "object",
|
|
1026
|
+
"properties": {}
|
|
1027
|
+
}
|
|
1028
|
+
},
|
|
1029
|
+
{
|
|
1030
|
+
"name": "gitlab-list-issues",
|
|
1031
|
+
"description": "List issues from a GitLab project with filtering options. Use ",
|
|
1032
|
+
"schema": {
|
|
1033
|
+
"type": "object",
|
|
1034
|
+
"properties": {}
|
|
1035
|
+
}
|
|
1036
|
+
},
|
|
1037
|
+
{
|
|
1038
|
+
"name": "gitlab-get-issue",
|
|
1039
|
+
"description": "Get detailed information about a specific issue",
|
|
1040
|
+
"schema": {
|
|
1041
|
+
"type": "object",
|
|
1042
|
+
"properties": {}
|
|
1043
|
+
}
|
|
1044
|
+
},
|
|
1045
|
+
{
|
|
1046
|
+
"name": "gitlab-get-issue-comments",
|
|
1047
|
+
"description": "Get all comments (notes) from a specific issue",
|
|
1048
|
+
"schema": {
|
|
1049
|
+
"type": "object",
|
|
1050
|
+
"properties": {}
|
|
1051
|
+
}
|
|
1052
|
+
},
|
|
1053
|
+
{
|
|
1054
|
+
"name": "gitlab-create-issue-comment",
|
|
1055
|
+
"description": "Add a comment (note) to an issue",
|
|
1056
|
+
"schema": {
|
|
1057
|
+
"type": "object",
|
|
1058
|
+
"properties": {}
|
|
1059
|
+
}
|
|
1060
|
+
},
|
|
1061
|
+
{
|
|
1062
|
+
"name": "gitlab-create-issue",
|
|
1063
|
+
"description": "Create a new issue in a GitLab project",
|
|
1064
|
+
"schema": {
|
|
1065
|
+
"type": "object",
|
|
1066
|
+
"properties": {}
|
|
1067
|
+
}
|
|
1068
|
+
},
|
|
1069
|
+
{
|
|
1070
|
+
"name": "gitlab-update-issue",
|
|
1071
|
+
"description": "Update an existing issue",
|
|
1072
|
+
"schema": {
|
|
1073
|
+
"type": "object",
|
|
1074
|
+
"properties": {}
|
|
1075
|
+
}
|
|
1076
|
+
},
|
|
1077
|
+
{
|
|
1078
|
+
"name": "gitlab-list-merge-requests",
|
|
1079
|
+
"description": "List merge requests from a GitLab project. Use the ",
|
|
1080
|
+
"schema": {
|
|
1081
|
+
"type": "object",
|
|
1082
|
+
"properties": {}
|
|
1083
|
+
}
|
|
1084
|
+
},
|
|
1085
|
+
{
|
|
1086
|
+
"name": "gitlab-get-merge-request",
|
|
1087
|
+
"description": "Get detailed information about a specific merge request. IMPORTANT: mergeRequestIid is the INTERNAL project ID (e.g., !48), NOT the global MR ID. If you get ",
|
|
1088
|
+
"schema": {
|
|
1089
|
+
"type": "object",
|
|
1090
|
+
"properties": {}
|
|
1091
|
+
}
|
|
1092
|
+
},
|
|
1093
|
+
{
|
|
1094
|
+
"name": "gitlab-get-merge-request-comments",
|
|
1095
|
+
"description": "Get all comments (notes) from a specific merge request",
|
|
1096
|
+
"schema": {
|
|
1097
|
+
"type": "object",
|
|
1098
|
+
"properties": {}
|
|
1099
|
+
}
|
|
1100
|
+
},
|
|
1101
|
+
{
|
|
1102
|
+
"name": "gitlab-create-merge-request-comment",
|
|
1103
|
+
"description": "Add a comment (note) to a merge request",
|
|
1104
|
+
"schema": {
|
|
1105
|
+
"type": "object",
|
|
1106
|
+
"properties": {}
|
|
1107
|
+
}
|
|
1108
|
+
},
|
|
1109
|
+
{
|
|
1110
|
+
"name": "gitlab-create-merge-request",
|
|
1111
|
+
"description": "Create a new merge request",
|
|
1112
|
+
"schema": {
|
|
1113
|
+
"type": "object",
|
|
1114
|
+
"properties": {}
|
|
1115
|
+
}
|
|
1116
|
+
},
|
|
1117
|
+
{
|
|
1118
|
+
"name": "gitlab-list-branches",
|
|
1119
|
+
"description": "List all branches in a GitLab project",
|
|
1120
|
+
"schema": {
|
|
1121
|
+
"type": "object",
|
|
1122
|
+
"properties": {}
|
|
1123
|
+
}
|
|
1124
|
+
},
|
|
1125
|
+
{
|
|
1126
|
+
"name": "gitlab-get-user",
|
|
1127
|
+
"description": "Get information about the authenticated user",
|
|
1128
|
+
"schema": {
|
|
1129
|
+
"type": "object",
|
|
1130
|
+
"properties": {}
|
|
1131
|
+
}
|
|
1132
|
+
}
|
|
1133
|
+
]
|
|
1134
|
+
},
|
|
1135
|
+
"openpets/google-gemini": {
|
|
1136
|
+
"name": "openpets/google-gemini",
|
|
1137
|
+
"description": "Google Gemini AI provider for OpenCode",
|
|
1138
|
+
"keywords": [
|
|
1139
|
+
"opencode",
|
|
1140
|
+
"plugin",
|
|
1141
|
+
"google",
|
|
1142
|
+
"gemini",
|
|
1143
|
+
"ai",
|
|
1144
|
+
"image-generation"
|
|
1145
|
+
],
|
|
1146
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/google-gemini",
|
|
1147
|
+
"title": "Google Gemini",
|
|
1148
|
+
"homepage": "https://ai.google.dev",
|
|
1149
|
+
"envVariables": {
|
|
1150
|
+
"required": [
|
|
1151
|
+
{
|
|
1152
|
+
"name": "GOOGLE_API_KEY",
|
|
1153
|
+
"description": "Google API key for Gemini AI (get from https://makersuite.google.com/app/apikey)",
|
|
1154
|
+
"provider": "Google AI",
|
|
1155
|
+
"priority": 1
|
|
1156
|
+
}
|
|
1157
|
+
]
|
|
1158
|
+
},
|
|
1159
|
+
"queries": [
|
|
1160
|
+
"generate text with gemini",
|
|
1161
|
+
"enhance this prompt with gemini"
|
|
1162
|
+
],
|
|
1163
|
+
"scenarios": {
|
|
1164
|
+
"text-generation": [
|
|
1165
|
+
"generate text with gemini"
|
|
1166
|
+
],
|
|
1167
|
+
"prompt-enhancement": [
|
|
1168
|
+
"enhance this prompt with gemini"
|
|
1169
|
+
]
|
|
1170
|
+
},
|
|
1171
|
+
"tools": [
|
|
1172
|
+
{
|
|
1173
|
+
"name": "gemini-text-to-image",
|
|
1174
|
+
"description": "Generate detailed image prompts and descriptions using Google Gemini AI. Creates enhanced prompts that can be used with other image generation tools.",
|
|
1175
|
+
"schema": {
|
|
1176
|
+
"type": "object",
|
|
1177
|
+
"properties": {
|
|
1178
|
+
"prompt": {
|
|
1179
|
+
"type": "string",
|
|
1180
|
+
"description": "Base description of what you want to create"
|
|
1181
|
+
},
|
|
1182
|
+
"style": {
|
|
1183
|
+
"type": "string",
|
|
1184
|
+
"optional": true,
|
|
1185
|
+
"description": "Desired artistic style"
|
|
1186
|
+
},
|
|
1187
|
+
"mood": {
|
|
1188
|
+
"type": "string",
|
|
1189
|
+
"optional": true,
|
|
1190
|
+
"description": "Emotional tone or atmosphere"
|
|
1191
|
+
},
|
|
1192
|
+
"detail_level": {
|
|
1193
|
+
"type": "string",
|
|
1194
|
+
"enum": [
|
|
1195
|
+
"concise",
|
|
1196
|
+
"detailed",
|
|
1197
|
+
"extensive"
|
|
1198
|
+
],
|
|
1199
|
+
"optional": true,
|
|
1200
|
+
"description": "How detailed the generated prompt should be"
|
|
1201
|
+
},
|
|
1202
|
+
"include_technical": {
|
|
1203
|
+
"type": "boolean",
|
|
1204
|
+
"optional": true,
|
|
1205
|
+
"description": "Include technical details like lighting, composition"
|
|
1206
|
+
},
|
|
1207
|
+
"aspect_ratio": {
|
|
1208
|
+
"type": "string",
|
|
1209
|
+
"enum": [
|
|
1210
|
+
"1:1",
|
|
1211
|
+
"16:9",
|
|
1212
|
+
"9:16",
|
|
1213
|
+
"4:3",
|
|
1214
|
+
"3:4"
|
|
1215
|
+
],
|
|
1216
|
+
"optional": true,
|
|
1217
|
+
"description": "Target aspect ratio"
|
|
1218
|
+
},
|
|
1219
|
+
"model": {
|
|
1220
|
+
"type": "string",
|
|
1221
|
+
"optional": true,
|
|
1222
|
+
"description": "Gemini model to use"
|
|
1223
|
+
}
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
},
|
|
1227
|
+
{
|
|
1228
|
+
"name": "gemini-image-to-image",
|
|
1229
|
+
"description": "Placeholder for Google Gemini image-to-image transformation. Currently not supported - use FAL AI provider instead. This tool is prepared for future Imagen 3 support.",
|
|
1230
|
+
"schema": {
|
|
1231
|
+
"type": "object",
|
|
1232
|
+
"properties": {
|
|
1233
|
+
"input_image": {
|
|
1234
|
+
"type": "string",
|
|
1235
|
+
"description": "Input image URL or path"
|
|
1236
|
+
},
|
|
1237
|
+
"prompt": {
|
|
1238
|
+
"type": "string",
|
|
1239
|
+
"description": "Transformation description"
|
|
1240
|
+
},
|
|
1241
|
+
"model": {
|
|
1242
|
+
"type": "string",
|
|
1243
|
+
"optional": true,
|
|
1244
|
+
"description": "Model to use"
|
|
1245
|
+
},
|
|
1246
|
+
"aspect_ratio": {
|
|
1247
|
+
"type": "string",
|
|
1248
|
+
"enum": [
|
|
1249
|
+
"1:1",
|
|
1250
|
+
"16:9",
|
|
1251
|
+
"9:16",
|
|
1252
|
+
"4:3",
|
|
1253
|
+
"3:4"
|
|
1254
|
+
],
|
|
1255
|
+
"optional": true,
|
|
1256
|
+
"description": "Output aspect ratio"
|
|
1257
|
+
},
|
|
1258
|
+
"num_images": {
|
|
1259
|
+
"type": "number",
|
|
1260
|
+
"optional": true,
|
|
1261
|
+
"description": "Number of variations"
|
|
1262
|
+
},
|
|
1263
|
+
"negative_prompt": {
|
|
1264
|
+
"type": "string",
|
|
1265
|
+
"optional": true,
|
|
1266
|
+
"description": "What to avoid"
|
|
1267
|
+
},
|
|
1268
|
+
"transformation_strength": {
|
|
1269
|
+
"type": "string",
|
|
1270
|
+
"enum": [
|
|
1271
|
+
"subtle",
|
|
1272
|
+
"balanced",
|
|
1273
|
+
"strong"
|
|
1274
|
+
],
|
|
1275
|
+
"optional": true,
|
|
1276
|
+
"description": "Transformation intensity"
|
|
1277
|
+
}
|
|
1278
|
+
}
|
|
1279
|
+
}
|
|
1280
|
+
},
|
|
1281
|
+
{
|
|
1282
|
+
"name": "gemini-text-to-video",
|
|
1283
|
+
"description": "Placeholder for Google Gemini text-to-video generation. Currently not supported - use FAL AI provider instead. This tool is prepared for future video generation capabilities.",
|
|
1284
|
+
"schema": {
|
|
1285
|
+
"type": "object",
|
|
1286
|
+
"properties": {
|
|
1287
|
+
"prompt": {
|
|
1288
|
+
"type": "string",
|
|
1289
|
+
"description": "Video description"
|
|
1290
|
+
},
|
|
1291
|
+
"model": {
|
|
1292
|
+
"type": "string",
|
|
1293
|
+
"optional": true,
|
|
1294
|
+
"description": "Model to use"
|
|
1295
|
+
},
|
|
1296
|
+
"duration": {
|
|
1297
|
+
"type": "number",
|
|
1298
|
+
"optional": true,
|
|
1299
|
+
"description": "Video duration in seconds"
|
|
1300
|
+
},
|
|
1301
|
+
"fps": {
|
|
1302
|
+
"type": "number",
|
|
1303
|
+
"optional": true,
|
|
1304
|
+
"description": "Frames per second"
|
|
1305
|
+
},
|
|
1306
|
+
"aspect_ratio": {
|
|
1307
|
+
"type": "string",
|
|
1308
|
+
"enum": [
|
|
1309
|
+
"16:9",
|
|
1310
|
+
"9:16",
|
|
1311
|
+
"1:1"
|
|
1312
|
+
],
|
|
1313
|
+
"optional": true,
|
|
1314
|
+
"description": "Video aspect ratio"
|
|
1315
|
+
},
|
|
1316
|
+
"num_videos": {
|
|
1317
|
+
"type": "number",
|
|
1318
|
+
"optional": true,
|
|
1319
|
+
"description": "Number of videos to generate"
|
|
1320
|
+
},
|
|
1321
|
+
"seed": {
|
|
1322
|
+
"type": "number",
|
|
1323
|
+
"optional": true,
|
|
1324
|
+
"description": "Random seed"
|
|
1325
|
+
}
|
|
1326
|
+
}
|
|
1327
|
+
}
|
|
1328
|
+
}
|
|
1329
|
+
]
|
|
1330
|
+
},
|
|
1331
|
+
"openpets/jira": {
|
|
1332
|
+
"name": "openpets/jira",
|
|
1333
|
+
"description": "Atlassian Jira & Confluence API integration for OpenCode - project management, issue tracking, and documentation",
|
|
1334
|
+
"keywords": [
|
|
1335
|
+
"opencode",
|
|
1336
|
+
"plugin",
|
|
1337
|
+
"jira",
|
|
1338
|
+
"confluence",
|
|
1339
|
+
"atlassian",
|
|
1340
|
+
"project-management",
|
|
1341
|
+
"issues",
|
|
1342
|
+
"agile",
|
|
1343
|
+
"documentation",
|
|
1344
|
+
"wiki"
|
|
1345
|
+
],
|
|
1346
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/jira",
|
|
1347
|
+
"title": "Jira",
|
|
1348
|
+
"homepage": "https://atlassian.com",
|
|
1349
|
+
"envVariables": {
|
|
1350
|
+
"required": [
|
|
1351
|
+
{
|
|
1352
|
+
"name": "JIRA_BASE_URL",
|
|
1353
|
+
"description": "Your Jira instance URL (e.g., https://yourcompany.atlassian.net)",
|
|
1354
|
+
"provider": "Atlassian Jira",
|
|
1355
|
+
"priority": 1
|
|
1356
|
+
},
|
|
1357
|
+
{
|
|
1358
|
+
"name": "JIRA_EMAIL",
|
|
1359
|
+
"description": "Jira account email",
|
|
1360
|
+
"provider": "Atlassian Jira",
|
|
1361
|
+
"priority": 2
|
|
1362
|
+
},
|
|
1363
|
+
{
|
|
1364
|
+
"name": "JIRA_API_TOKEN",
|
|
1365
|
+
"description": "Jira API token",
|
|
1366
|
+
"provider": "Atlassian Jira",
|
|
1367
|
+
"priority": 3
|
|
1368
|
+
}
|
|
1369
|
+
]
|
|
1370
|
+
},
|
|
1371
|
+
"queries": [
|
|
1372
|
+
"list all my Jira projects",
|
|
1373
|
+
"show me all boards in Jira",
|
|
1374
|
+
"get my current user info from Jira",
|
|
1375
|
+
"list all Confluence spaces"
|
|
1376
|
+
],
|
|
1377
|
+
"scenarios": {
|
|
1378
|
+
"jira-project-workflow": [
|
|
1379
|
+
"list all Jira projects",
|
|
1380
|
+
"get details for the first project",
|
|
1381
|
+
"search for issues in that project",
|
|
1382
|
+
"get details for the first issue found"
|
|
1383
|
+
],
|
|
1384
|
+
"jira-board-workflow": [
|
|
1385
|
+
"show me all Jira boards",
|
|
1386
|
+
"get details for the first board",
|
|
1387
|
+
"get all issues from that board",
|
|
1388
|
+
"show me details of the first issue from the board"
|
|
1389
|
+
],
|
|
1390
|
+
"jira-issue-management": [
|
|
1391
|
+
"search for recent Jira issues using JQL: updated >= -7d",
|
|
1392
|
+
"get full details of the first issue",
|
|
1393
|
+
"show me worklogs for that issue",
|
|
1394
|
+
"get the current user information"
|
|
1395
|
+
],
|
|
1396
|
+
"confluence-documentation-workflow": [
|
|
1397
|
+
"list all Confluence spaces",
|
|
1398
|
+
"get all pages from the first space",
|
|
1399
|
+
"get the full content of the first page",
|
|
1400
|
+
"search for pages with type = page in Confluence"
|
|
1401
|
+
],
|
|
1402
|
+
"confluence-search-workflow": [
|
|
1403
|
+
"search Confluence pages using CQL: type = page",
|
|
1404
|
+
"list all current Confluence spaces",
|
|
1405
|
+
"search for pages with text content using CQL"
|
|
1406
|
+
],
|
|
1407
|
+
"jira-user-workflow": [
|
|
1408
|
+
"get my current Jira user information",
|
|
1409
|
+
"search for users in Jira",
|
|
1410
|
+
"get Jira server information"
|
|
1411
|
+
]
|
|
1412
|
+
},
|
|
1413
|
+
"tools": [
|
|
1414
|
+
{
|
|
1415
|
+
"name": "jira-get-boards",
|
|
1416
|
+
"description": "List all available Jira boards with optional filtering by type or project",
|
|
1417
|
+
"schema": {
|
|
1418
|
+
"type": "object",
|
|
1419
|
+
"properties": {
|
|
1420
|
+
"type": {
|
|
1421
|
+
"type": "string",
|
|
1422
|
+
"enum": [
|
|
1423
|
+
"scrum",
|
|
1424
|
+
"kanban",
|
|
1425
|
+
"simple"
|
|
1426
|
+
],
|
|
1427
|
+
"optional": true,
|
|
1428
|
+
"description": "Board type filter (scrum, kanban, simple)"
|
|
1429
|
+
},
|
|
1430
|
+
"projectKey": {
|
|
1431
|
+
"type": "string",
|
|
1432
|
+
"optional": true,
|
|
1433
|
+
"description": "Filter boards by project key"
|
|
1434
|
+
}
|
|
1435
|
+
}
|
|
1436
|
+
}
|
|
1437
|
+
},
|
|
1438
|
+
{
|
|
1439
|
+
"name": "jira-get-board-details",
|
|
1440
|
+
"description": "Get comprehensive information about a specific Jira board including all sprints (active, future, closed)",
|
|
1441
|
+
"schema": {
|
|
1442
|
+
"type": "object",
|
|
1443
|
+
"properties": {
|
|
1444
|
+
"boardId": {
|
|
1445
|
+
"type": "string",
|
|
1446
|
+
"description": "Board ID to get details for"
|
|
1447
|
+
}
|
|
1448
|
+
}
|
|
1449
|
+
}
|
|
1450
|
+
},
|
|
1451
|
+
{
|
|
1452
|
+
"name": "jira-get-board-issues",
|
|
1453
|
+
"description": "Get issues from a specific board with filtering options",
|
|
1454
|
+
"schema": {
|
|
1455
|
+
"type": "object",
|
|
1456
|
+
"properties": {
|
|
1457
|
+
"boardId": {
|
|
1458
|
+
"type": "string",
|
|
1459
|
+
"description": "Board ID to get issues from"
|
|
1460
|
+
},
|
|
1461
|
+
"jql": {
|
|
1462
|
+
"type": "string",
|
|
1463
|
+
"optional": true,
|
|
1464
|
+
"description": "Additional JQL filter"
|
|
1465
|
+
},
|
|
1466
|
+
"maxResults": {
|
|
1467
|
+
"type": "number",
|
|
1468
|
+
"minimum": 1,
|
|
1469
|
+
"maximum": 100,
|
|
1470
|
+
"optional": true,
|
|
1471
|
+
"description": "Maximum number of results (default: 50)"
|
|
1472
|
+
}
|
|
1473
|
+
}
|
|
1474
|
+
}
|
|
1475
|
+
},
|
|
1476
|
+
{
|
|
1477
|
+
"name": "jira-get-board-sprints",
|
|
1478
|
+
"description": "Get all sprints for a specific board including active, future, and closed sprints",
|
|
1479
|
+
"schema": {
|
|
1480
|
+
"type": "object",
|
|
1481
|
+
"properties": {
|
|
1482
|
+
"boardId": {
|
|
1483
|
+
"type": "string",
|
|
1484
|
+
"description": "Board ID to get sprints from"
|
|
1485
|
+
},
|
|
1486
|
+
"state": {
|
|
1487
|
+
"type": "string",
|
|
1488
|
+
"enum": [
|
|
1489
|
+
"active",
|
|
1490
|
+
"future",
|
|
1491
|
+
"closed"
|
|
1492
|
+
],
|
|
1493
|
+
"optional": true,
|
|
1494
|
+
"description": "Filter by sprint state (active, future, closed)"
|
|
1495
|
+
},
|
|
1496
|
+
"maxResults": {
|
|
1497
|
+
"type": "number",
|
|
1498
|
+
"minimum": 1,
|
|
1499
|
+
"maximum": 100,
|
|
1500
|
+
"optional": true,
|
|
1501
|
+
"description": "Maximum number of results (default: 50)"
|
|
1502
|
+
}
|
|
1503
|
+
}
|
|
1504
|
+
}
|
|
1505
|
+
},
|
|
1506
|
+
{
|
|
1507
|
+
"name": "jira-get-sprint-details",
|
|
1508
|
+
"description": "Get detailed information about a specific sprint including dates and state",
|
|
1509
|
+
"schema": {
|
|
1510
|
+
"type": "object",
|
|
1511
|
+
"properties": {
|
|
1512
|
+
"sprintId": {
|
|
1513
|
+
"type": "string",
|
|
1514
|
+
"description": "Sprint ID to get details for"
|
|
1515
|
+
}
|
|
1516
|
+
}
|
|
1517
|
+
}
|
|
1518
|
+
},
|
|
1519
|
+
{
|
|
1520
|
+
"name": "jira-get-sprint-issues",
|
|
1521
|
+
"description": "Get all issues in a specific sprint with optional JQL filtering",
|
|
1522
|
+
"schema": {
|
|
1523
|
+
"type": "object",
|
|
1524
|
+
"properties": {
|
|
1525
|
+
"sprintId": {
|
|
1526
|
+
"type": "string",
|
|
1527
|
+
"description": "Sprint ID to get issues from"
|
|
1528
|
+
},
|
|
1529
|
+
"jql": {
|
|
1530
|
+
"type": "string",
|
|
1531
|
+
"optional": true,
|
|
1532
|
+
"description": "Additional JQL filter"
|
|
1533
|
+
},
|
|
1534
|
+
"maxResults": {
|
|
1535
|
+
"type": "number",
|
|
1536
|
+
"minimum": 1,
|
|
1537
|
+
"maximum": 100,
|
|
1538
|
+
"optional": true,
|
|
1539
|
+
"description": "Maximum number of results (default: 50)"
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1542
|
+
}
|
|
1543
|
+
},
|
|
1544
|
+
{
|
|
1545
|
+
"name": "jira-search-issues",
|
|
1546
|
+
"description": "Search for issues using JQL (Jira Query Language)",
|
|
1547
|
+
"schema": {
|
|
1548
|
+
"type": "object",
|
|
1549
|
+
"properties": {
|
|
1550
|
+
"jql": {
|
|
1551
|
+
"type": "string"
|
|
1552
|
+
},
|
|
1553
|
+
"maxResults": {
|
|
1554
|
+
"type": "number",
|
|
1555
|
+
"minimum": 1,
|
|
1556
|
+
"maximum": 100,
|
|
1557
|
+
"optional": true,
|
|
1558
|
+
"description": "Maximum number of results (default: 50)"
|
|
1559
|
+
}
|
|
1560
|
+
}
|
|
1561
|
+
}
|
|
1562
|
+
},
|
|
1563
|
+
{
|
|
1564
|
+
"name": "jira-get-issue",
|
|
1565
|
+
"description": "Get comprehensive details about a specific issue",
|
|
1566
|
+
"schema": {
|
|
1567
|
+
"type": "object",
|
|
1568
|
+
"properties": {
|
|
1569
|
+
"issueKey": {
|
|
1570
|
+
"type": "string",
|
|
1571
|
+
"description": "Issue key (e.g., PROJ-123) or ID"
|
|
1572
|
+
},
|
|
1573
|
+
"includeComments": {
|
|
1574
|
+
"type": "boolean",
|
|
1575
|
+
"optional": true,
|
|
1576
|
+
"description": "Include comments in the response (default: false)"
|
|
1577
|
+
},
|
|
1578
|
+
"includeWorklogs": {
|
|
1579
|
+
"type": "boolean",
|
|
1580
|
+
"optional": true,
|
|
1581
|
+
"description": "Include worklogs in the response (default: false)"
|
|
1582
|
+
}
|
|
1583
|
+
}
|
|
1584
|
+
}
|
|
1585
|
+
},
|
|
1586
|
+
{
|
|
1587
|
+
"name": "jira-create-issue",
|
|
1588
|
+
"description": "Create a new Jira issue",
|
|
1589
|
+
"schema": {
|
|
1590
|
+
"type": "object",
|
|
1591
|
+
"properties": {
|
|
1592
|
+
"projectKey": {
|
|
1593
|
+
"type": "string",
|
|
1594
|
+
"description": "Project key where the issue will be created"
|
|
1595
|
+
},
|
|
1596
|
+
"issueType": {
|
|
1597
|
+
"type": "string",
|
|
1598
|
+
"description": "Issue type (e.g., Task, Bug, Story)"
|
|
1599
|
+
},
|
|
1600
|
+
"summary": {
|
|
1601
|
+
"type": "string",
|
|
1602
|
+
"description": "Issue summary/title"
|
|
1603
|
+
},
|
|
1604
|
+
"description": {
|
|
1605
|
+
"type": "string",
|
|
1606
|
+
"optional": true,
|
|
1607
|
+
"description": "Issue description"
|
|
1608
|
+
},
|
|
1609
|
+
"priority": {
|
|
1610
|
+
"type": "string",
|
|
1611
|
+
"optional": true,
|
|
1612
|
+
"description": "Issue priority (Highest, High, Medium, Low, Lowest)"
|
|
1613
|
+
},
|
|
1614
|
+
"assignee": {
|
|
1615
|
+
"type": "string",
|
|
1616
|
+
"optional": true,
|
|
1617
|
+
"description": "Assignee account ID (optional)"
|
|
1618
|
+
},
|
|
1619
|
+
"labels": {
|
|
1620
|
+
"type": "string",
|
|
1621
|
+
"optional": true,
|
|
1622
|
+
"description": "Issue labels"
|
|
1623
|
+
}
|
|
1624
|
+
}
|
|
1625
|
+
}
|
|
1626
|
+
},
|
|
1627
|
+
{
|
|
1628
|
+
"name": "jira-update-issue",
|
|
1629
|
+
"description": "Update an existing Jira issue",
|
|
1630
|
+
"schema": {
|
|
1631
|
+
"type": "object",
|
|
1632
|
+
"properties": {
|
|
1633
|
+
"issueKey": {
|
|
1634
|
+
"type": "string",
|
|
1635
|
+
"description": "Issue key to update"
|
|
1636
|
+
},
|
|
1637
|
+
"summary": {
|
|
1638
|
+
"type": "string",
|
|
1639
|
+
"optional": true,
|
|
1640
|
+
"description": "New summary"
|
|
1641
|
+
},
|
|
1642
|
+
"description": {
|
|
1643
|
+
"type": "string",
|
|
1644
|
+
"optional": true,
|
|
1645
|
+
"description": "New description"
|
|
1646
|
+
},
|
|
1647
|
+
"priority": {
|
|
1648
|
+
"type": "string",
|
|
1649
|
+
"optional": true,
|
|
1650
|
+
"description": "New priority"
|
|
1651
|
+
},
|
|
1652
|
+
"assignee": {
|
|
1653
|
+
"type": "string",
|
|
1654
|
+
"optional": true,
|
|
1655
|
+
"description": "New assignee account ID"
|
|
1656
|
+
},
|
|
1657
|
+
"labels": {
|
|
1658
|
+
"type": "string",
|
|
1659
|
+
"optional": true,
|
|
1660
|
+
"description": "New labels"
|
|
1661
|
+
}
|
|
1662
|
+
}
|
|
1663
|
+
}
|
|
1664
|
+
},
|
|
1665
|
+
{
|
|
1666
|
+
"name": "jira-transition-issue",
|
|
1667
|
+
"description": "Transition an issue to a different status (e.g., move to In Progress or Done)",
|
|
1668
|
+
"schema": {
|
|
1669
|
+
"type": "object",
|
|
1670
|
+
"properties": {
|
|
1671
|
+
"issueKey": {
|
|
1672
|
+
"type": "string",
|
|
1673
|
+
"description": "Issue key to transition"
|
|
1674
|
+
},
|
|
1675
|
+
"transitionName": {
|
|
1676
|
+
"type": "string"
|
|
1677
|
+
},
|
|
1678
|
+
"comment": {
|
|
1679
|
+
"type": "string",
|
|
1680
|
+
"optional": true,
|
|
1681
|
+
"description": "Optional comment to add during transition"
|
|
1682
|
+
}
|
|
1683
|
+
}
|
|
1684
|
+
}
|
|
1685
|
+
},
|
|
1686
|
+
{
|
|
1687
|
+
"name": "jira-add-comment",
|
|
1688
|
+
"description": "Add a comment to a Jira issue",
|
|
1689
|
+
"schema": {
|
|
1690
|
+
"type": "object",
|
|
1691
|
+
"properties": {
|
|
1692
|
+
"issueKey": {
|
|
1693
|
+
"type": "string",
|
|
1694
|
+
"description": "Issue key to comment on"
|
|
1695
|
+
},
|
|
1696
|
+
"comment": {
|
|
1697
|
+
"type": "string",
|
|
1698
|
+
"description": "Comment text"
|
|
1699
|
+
}
|
|
1700
|
+
}
|
|
1701
|
+
}
|
|
1702
|
+
},
|
|
1703
|
+
{
|
|
1704
|
+
"name": "jira-get-current-user",
|
|
1705
|
+
"description": "Get information about the currently authenticated user",
|
|
1706
|
+
"schema": {
|
|
1707
|
+
"type": "object",
|
|
1708
|
+
"properties": {}
|
|
1709
|
+
}
|
|
1710
|
+
},
|
|
1711
|
+
{
|
|
1712
|
+
"name": "jira-search-users",
|
|
1713
|
+
"description": "Search for users by username, email, or display name",
|
|
1714
|
+
"schema": {
|
|
1715
|
+
"type": "object",
|
|
1716
|
+
"properties": {
|
|
1717
|
+
"query": {
|
|
1718
|
+
"type": "string",
|
|
1719
|
+
"description": "Search query (username, email, or display name)"
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1722
|
+
}
|
|
1723
|
+
},
|
|
1724
|
+
{
|
|
1725
|
+
"name": "jira-get-user",
|
|
1726
|
+
"description": "Get detailed information about a specific user",
|
|
1727
|
+
"schema": {
|
|
1728
|
+
"type": "object",
|
|
1729
|
+
"properties": {
|
|
1730
|
+
"accountId": {
|
|
1731
|
+
"type": "string",
|
|
1732
|
+
"description": "User account ID"
|
|
1733
|
+
}
|
|
1734
|
+
}
|
|
1735
|
+
}
|
|
1736
|
+
},
|
|
1737
|
+
{
|
|
1738
|
+
"name": "jira-get-projects",
|
|
1739
|
+
"description": "List all accessible Jira projects",
|
|
1740
|
+
"schema": {
|
|
1741
|
+
"type": "object",
|
|
1742
|
+
"properties": {}
|
|
1743
|
+
}
|
|
1744
|
+
},
|
|
1745
|
+
{
|
|
1746
|
+
"name": "jira-get-project",
|
|
1747
|
+
"description": "Get detailed information about a specific project",
|
|
1748
|
+
"schema": {
|
|
1749
|
+
"type": "object",
|
|
1750
|
+
"properties": {
|
|
1751
|
+
"projectKey": {
|
|
1752
|
+
"type": "string",
|
|
1753
|
+
"description": "Project key or ID"
|
|
1754
|
+
}
|
|
1755
|
+
}
|
|
1756
|
+
}
|
|
1757
|
+
},
|
|
1758
|
+
{
|
|
1759
|
+
"name": "jira-add-worklog",
|
|
1760
|
+
"description": "Add a work log entry to an issue for time tracking",
|
|
1761
|
+
"schema": {
|
|
1762
|
+
"type": "object",
|
|
1763
|
+
"properties": {
|
|
1764
|
+
"issueKey": {
|
|
1765
|
+
"type": "string",
|
|
1766
|
+
"description": "Issue key to log work against"
|
|
1767
|
+
},
|
|
1768
|
+
"timeSpent": {
|
|
1769
|
+
"type": "string"
|
|
1770
|
+
},
|
|
1771
|
+
"comment": {
|
|
1772
|
+
"type": "string",
|
|
1773
|
+
"optional": true,
|
|
1774
|
+
"description": "Work description/comment"
|
|
1775
|
+
},
|
|
1776
|
+
"startDate": {
|
|
1777
|
+
"type": "string",
|
|
1778
|
+
"optional": true,
|
|
1779
|
+
"description": "Start date (ISO format, optional - defaults to now)"
|
|
1780
|
+
}
|
|
1781
|
+
}
|
|
1782
|
+
}
|
|
1783
|
+
},
|
|
1784
|
+
{
|
|
1785
|
+
"name": "jira-get-worklogs",
|
|
1786
|
+
"description": "Get all work log entries for an issue",
|
|
1787
|
+
"schema": {
|
|
1788
|
+
"type": "object",
|
|
1789
|
+
"properties": {
|
|
1790
|
+
"issueKey": {
|
|
1791
|
+
"type": "string",
|
|
1792
|
+
"description": "Issue key to get worklogs for"
|
|
1793
|
+
}
|
|
1794
|
+
}
|
|
1795
|
+
}
|
|
1796
|
+
},
|
|
1797
|
+
{
|
|
1798
|
+
"name": "jira-get-server-info",
|
|
1799
|
+
"description": "Get Jira server information and status",
|
|
1800
|
+
"schema": {
|
|
1801
|
+
"type": "object",
|
|
1802
|
+
"properties": {}
|
|
1803
|
+
}
|
|
1804
|
+
},
|
|
1805
|
+
{
|
|
1806
|
+
"name": "confluence-list-spaces",
|
|
1807
|
+
"description": "List all accessible Confluence spaces with optional status filter",
|
|
1808
|
+
"schema": {
|
|
1809
|
+
"type": "object",
|
|
1810
|
+
"properties": {
|
|
1811
|
+
"status": {
|
|
1812
|
+
"type": "string",
|
|
1813
|
+
"enum": [
|
|
1814
|
+
"current",
|
|
1815
|
+
"archived"
|
|
1816
|
+
],
|
|
1817
|
+
"optional": true,
|
|
1818
|
+
"description": "Filter by space status (current, archived)"
|
|
1819
|
+
},
|
|
1820
|
+
"limit": {
|
|
1821
|
+
"type": "number",
|
|
1822
|
+
"minimum": 1,
|
|
1823
|
+
"maximum": 100,
|
|
1824
|
+
"optional": true,
|
|
1825
|
+
"description": "Maximum number of results (default: 25)"
|
|
1826
|
+
}
|
|
1827
|
+
}
|
|
1828
|
+
}
|
|
1829
|
+
},
|
|
1830
|
+
{
|
|
1831
|
+
"name": "confluence-get-space-pages",
|
|
1832
|
+
"description": "Get all pages in a specific Confluence space",
|
|
1833
|
+
"schema": {
|
|
1834
|
+
"type": "object",
|
|
1835
|
+
"properties": {
|
|
1836
|
+
"spaceKey": {
|
|
1837
|
+
"type": "string"
|
|
1838
|
+
},
|
|
1839
|
+
"limit": {
|
|
1840
|
+
"type": "number",
|
|
1841
|
+
"minimum": 1,
|
|
1842
|
+
"maximum": 100,
|
|
1843
|
+
"optional": true,
|
|
1844
|
+
"description": "Maximum number of results (default: 25)"
|
|
1845
|
+
}
|
|
1846
|
+
}
|
|
1847
|
+
}
|
|
1848
|
+
},
|
|
1849
|
+
{
|
|
1850
|
+
"name": "confluence-get-page-content",
|
|
1851
|
+
"description": "Get full content and metadata for a specific Confluence page",
|
|
1852
|
+
"schema": {
|
|
1853
|
+
"type": "object",
|
|
1854
|
+
"properties": {
|
|
1855
|
+
"pageId": {
|
|
1856
|
+
"type": "string",
|
|
1857
|
+
"description": "The page ID"
|
|
1858
|
+
},
|
|
1859
|
+
"includeBody": {
|
|
1860
|
+
"type": "boolean",
|
|
1861
|
+
"optional": true,
|
|
1862
|
+
"description": "Include full HTML body content (default: true)"
|
|
1863
|
+
}
|
|
1864
|
+
}
|
|
1865
|
+
}
|
|
1866
|
+
},
|
|
1867
|
+
{
|
|
1868
|
+
"name": "confluence-search-pages",
|
|
1869
|
+
"description": "Search Confluence pages using CQL (Confluence Query Language)",
|
|
1870
|
+
"schema": {
|
|
1871
|
+
"type": "object",
|
|
1872
|
+
"properties": {
|
|
1873
|
+
"cql": {
|
|
1874
|
+
"type": "string"
|
|
1875
|
+
},
|
|
1876
|
+
"limit": {
|
|
1877
|
+
"type": "number",
|
|
1878
|
+
"minimum": 1,
|
|
1879
|
+
"maximum": 100,
|
|
1880
|
+
"optional": true,
|
|
1881
|
+
"description": "Maximum number of results (default: 25)"
|
|
1882
|
+
},
|
|
1883
|
+
"includeBody": {
|
|
1884
|
+
"type": "boolean",
|
|
1885
|
+
"optional": true,
|
|
1886
|
+
"description": "Include page body content in results (default: false)"
|
|
1887
|
+
}
|
|
1888
|
+
}
|
|
1889
|
+
}
|
|
1890
|
+
}
|
|
1891
|
+
]
|
|
1892
|
+
},
|
|
1893
|
+
"openpets/llm-models": {
|
|
1894
|
+
"name": "openpets/llm-models",
|
|
1895
|
+
"description": "LLM model discovery and comparison plugin - search and compare models from models.dev across multiple providers",
|
|
1896
|
+
"keywords": [
|
|
1897
|
+
"opencode",
|
|
1898
|
+
"plugin",
|
|
1899
|
+
"llm",
|
|
1900
|
+
"models",
|
|
1901
|
+
"ai",
|
|
1902
|
+
"discovery",
|
|
1903
|
+
"comparison",
|
|
1904
|
+
"models.dev"
|
|
1905
|
+
],
|
|
1906
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/llm-models",
|
|
1907
|
+
"title": "Models",
|
|
1908
|
+
"icon": "🤖",
|
|
1909
|
+
"envVariables": {
|
|
1910
|
+
"optional": []
|
|
1911
|
+
},
|
|
1912
|
+
"queries": [
|
|
1913
|
+
"list all LLM providers",
|
|
1914
|
+
"get all free models",
|
|
1915
|
+
"search for reasoning models",
|
|
1916
|
+
"find multimodal models",
|
|
1917
|
+
"compare gpt-4 and claude-3-opus"
|
|
1918
|
+
],
|
|
1919
|
+
"scenarios": {
|
|
1920
|
+
"discovery": [
|
|
1921
|
+
"list all LLM providers",
|
|
1922
|
+
"get all free models",
|
|
1923
|
+
"search for models with tool calling support"
|
|
1924
|
+
],
|
|
1925
|
+
"cost-analysis": [
|
|
1926
|
+
"get all free models",
|
|
1927
|
+
"search for models with max input cost 0.01",
|
|
1928
|
+
"compare pricing of popular models"
|
|
1929
|
+
],
|
|
1930
|
+
"capability-search": [
|
|
1931
|
+
"get reasoning models",
|
|
1932
|
+
"get multimodal models",
|
|
1933
|
+
"search for models with structured output"
|
|
1934
|
+
],
|
|
1935
|
+
"provider-specific": [
|
|
1936
|
+
"get all free models from openai",
|
|
1937
|
+
"search for anthropic models with reasoning",
|
|
1938
|
+
"list groq provider models"
|
|
1939
|
+
]
|
|
1940
|
+
},
|
|
1941
|
+
"tools": [
|
|
1942
|
+
{
|
|
1943
|
+
"name": "list-llm-providers",
|
|
1944
|
+
"description": "List all available LLM model providers from models.dev with model counts",
|
|
1945
|
+
"schema": {
|
|
1946
|
+
"type": "object",
|
|
1947
|
+
"properties": {}
|
|
1948
|
+
}
|
|
1949
|
+
}
|
|
1950
|
+
]
|
|
1951
|
+
},
|
|
1952
|
+
"openpets/maps": {
|
|
1953
|
+
"name": "openpets/maps",
|
|
1954
|
+
"description": "Comprehensive geocoding, places search, directions, and more",
|
|
1955
|
+
"keywords": [
|
|
1956
|
+
"opencode",
|
|
1957
|
+
"plugin",
|
|
1958
|
+
"google-maps",
|
|
1959
|
+
"geocoding",
|
|
1960
|
+
"places",
|
|
1961
|
+
"directions",
|
|
1962
|
+
"maps"
|
|
1963
|
+
],
|
|
1964
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/maps",
|
|
1965
|
+
"title": "Maps",
|
|
1966
|
+
"icon": "🗺️",
|
|
1967
|
+
"envVariables": {
|
|
1968
|
+
"optional": [
|
|
1969
|
+
{
|
|
1970
|
+
"name": "MAPS_DEFAULT_LOCATION",
|
|
1971
|
+
"description": "Default location for 'near me' searches (e.g., 'New York, NY' or '40.7580,-73.9855')",
|
|
1972
|
+
"provider": "All"
|
|
1973
|
+
}
|
|
1974
|
+
]
|
|
1975
|
+
},
|
|
1976
|
+
"queries": [
|
|
1977
|
+
"find the coordinates of Times Square, New York",
|
|
1978
|
+
"search for restaurants near Central Park, New York"
|
|
1979
|
+
],
|
|
1980
|
+
"scenarios": {
|
|
1981
|
+
"geocoding-workflow": [
|
|
1982
|
+
"find the coordinates of Times Square, New York",
|
|
1983
|
+
"now get the timezone for those coordinates",
|
|
1984
|
+
"check if street view is available There"
|
|
1985
|
+
],
|
|
1986
|
+
"planning-trip": [
|
|
1987
|
+
"find the coordinates of Eiffel Tower, Paris",
|
|
1988
|
+
"search for restaurants within 500 meters of those coordinates",
|
|
1989
|
+
"get directions from Eiffel Tower to the first restaurant"
|
|
1990
|
+
],
|
|
1991
|
+
"multi-city-route": [
|
|
1992
|
+
"get directions from Times Square to Central Park",
|
|
1993
|
+
"now get walking directions for the same route",
|
|
1994
|
+
"calculate the distance between New York and Boston"
|
|
1995
|
+
]
|
|
1996
|
+
},
|
|
1997
|
+
"providers": [
|
|
1998
|
+
{
|
|
1999
|
+
"name": "Google Maps",
|
|
2000
|
+
"description": "Google Maps API for geocoding, directions, and places",
|
|
2001
|
+
"priority": 1,
|
|
2002
|
+
"homepage": "https://developers.google.com/maps",
|
|
2003
|
+
"envVariables": [
|
|
2004
|
+
{
|
|
2005
|
+
"name": "GOOGLE_MAPS_API_KEY",
|
|
2006
|
+
"description": "Google Maps API key for geocoding, directions, and places"
|
|
2007
|
+
}
|
|
2008
|
+
]
|
|
2009
|
+
},
|
|
2010
|
+
{
|
|
2011
|
+
"name": "Mapbox",
|
|
2012
|
+
"description": "Mapbox API for geocoding, directions, and places",
|
|
2013
|
+
"priority": 2,
|
|
2014
|
+
"homepage": "https://www.mapbox.com/",
|
|
2015
|
+
"envVariables": [
|
|
2016
|
+
{
|
|
2017
|
+
"name": "MAPBOX_API_KEY",
|
|
2018
|
+
"description": "Mapbox API key for geocoding, directions, and places"
|
|
2019
|
+
}
|
|
2020
|
+
]
|
|
2021
|
+
},
|
|
2022
|
+
{
|
|
2023
|
+
"name": "OpenStreetMap",
|
|
2024
|
+
"description": "OpenStreetMap API for geocoding, directions, and places",
|
|
2025
|
+
"priority": 3,
|
|
2026
|
+
"homepage": "https://www.openstreetmap.org/",
|
|
2027
|
+
"envVariables": [
|
|
2028
|
+
{
|
|
2029
|
+
"name": "OSM_EMAIL",
|
|
2030
|
+
"description": "Email for OpenStreetMap services (improves rate limits)"
|
|
2031
|
+
}
|
|
2032
|
+
]
|
|
2033
|
+
}
|
|
2034
|
+
],
|
|
2035
|
+
"tools": [
|
|
2036
|
+
{
|
|
2037
|
+
"name": "maps-provider-info",
|
|
2038
|
+
"description": "Get information about which maps provider is currently being used",
|
|
2039
|
+
"schema": {
|
|
2040
|
+
"type": "object",
|
|
2041
|
+
"properties": {}
|
|
2042
|
+
}
|
|
2043
|
+
}
|
|
2044
|
+
]
|
|
2045
|
+
},
|
|
2046
|
+
"openpets/polar": {
|
|
2047
|
+
"name": "openpets/polar",
|
|
2048
|
+
"description": "Polar API integration for OpenCode - manage products, customers, and orders",
|
|
2049
|
+
"keywords": [
|
|
2050
|
+
"opencode",
|
|
2051
|
+
"plugin",
|
|
2052
|
+
"polar",
|
|
2053
|
+
"payments",
|
|
2054
|
+
"products",
|
|
2055
|
+
"orders"
|
|
2056
|
+
],
|
|
2057
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/polar",
|
|
2058
|
+
"title": "Polar",
|
|
2059
|
+
"homepage": "https://polar.sh",
|
|
2060
|
+
"envVariables": {
|
|
2061
|
+
"required": [
|
|
2062
|
+
{
|
|
2063
|
+
"name": "POLAR_TOKEN",
|
|
2064
|
+
"description": "API token from your Polar account for authentication",
|
|
2065
|
+
"provider": "polar",
|
|
2066
|
+
"priority": 1
|
|
2067
|
+
},
|
|
2068
|
+
{
|
|
2069
|
+
"name": "POLAR_ORG_ID",
|
|
2070
|
+
"description": "Your Polar organization ID or slug",
|
|
2071
|
+
"provider": "polar",
|
|
2072
|
+
"priority": 2
|
|
2073
|
+
}
|
|
2074
|
+
],
|
|
2075
|
+
"optional": []
|
|
2076
|
+
},
|
|
2077
|
+
"queries": [
|
|
2078
|
+
"list all polar products",
|
|
2079
|
+
"get all polar customers",
|
|
2080
|
+
"show all polar orders",
|
|
2081
|
+
"get all polar subscriptions"
|
|
2082
|
+
],
|
|
2083
|
+
"scenarios": {
|
|
2084
|
+
"product-management": [
|
|
2085
|
+
"list all polar products",
|
|
2086
|
+
"get all polar organizations",
|
|
2087
|
+
"show all polar benefits",
|
|
2088
|
+
"get all polar discounts"
|
|
2089
|
+
],
|
|
2090
|
+
"order-workflow": [
|
|
2091
|
+
"get all polar orders",
|
|
2092
|
+
"get all polar subscriptions",
|
|
2093
|
+
"get all polar customers",
|
|
2094
|
+
"show all polar webhooks"
|
|
2095
|
+
]
|
|
2096
|
+
},
|
|
2097
|
+
"tools": [
|
|
2098
|
+
{
|
|
2099
|
+
"name": "polar-get-credentials-documentation",
|
|
2100
|
+
"description": "Get information about where to obtain Polar API credentials",
|
|
2101
|
+
"schema": {
|
|
2102
|
+
"type": "object",
|
|
2103
|
+
"properties": {}
|
|
2104
|
+
}
|
|
2105
|
+
},
|
|
2106
|
+
{
|
|
2107
|
+
"name": "POLAR_TOKEN",
|
|
2108
|
+
"description": "API token from your Polar account for authentication",
|
|
2109
|
+
"schema": {
|
|
2110
|
+
"type": "object",
|
|
2111
|
+
"properties": {}
|
|
2112
|
+
}
|
|
2113
|
+
},
|
|
2114
|
+
{
|
|
2115
|
+
"name": "POLAR_ORG_ID",
|
|
2116
|
+
"description": "Your Polar organization ID or slug",
|
|
2117
|
+
"schema": {
|
|
2118
|
+
"type": "object",
|
|
2119
|
+
"properties": {}
|
|
2120
|
+
}
|
|
2121
|
+
}
|
|
2122
|
+
]
|
|
2123
|
+
},
|
|
2124
|
+
"openpets/postgres": {
|
|
2125
|
+
"name": "openpets/postgres",
|
|
2126
|
+
"description": "PostgreSQL integration for OpenCode - execute queries, analyze performance, and manage database health",
|
|
2127
|
+
"keywords": [
|
|
2128
|
+
"opencode",
|
|
2129
|
+
"plugin",
|
|
2130
|
+
"postgres",
|
|
2131
|
+
"postgresql",
|
|
2132
|
+
"database",
|
|
2133
|
+
"sql"
|
|
2134
|
+
],
|
|
2135
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/postgres",
|
|
2136
|
+
"title": "PostgreSQL",
|
|
2137
|
+
"homepage": "https://postgresql.org",
|
|
2138
|
+
"envVariables": {
|
|
2139
|
+
"required": [
|
|
2140
|
+
{
|
|
2141
|
+
"name": "DATABASE_URL",
|
|
2142
|
+
"description": "PostgreSQL connection string (format: postgresql://user:password@host:port/database)",
|
|
2143
|
+
"provider": "PostgreSQL",
|
|
2144
|
+
"priority": 1
|
|
2145
|
+
}
|
|
2146
|
+
],
|
|
2147
|
+
"optional": [
|
|
2148
|
+
{
|
|
2149
|
+
"name": "PG_HOST",
|
|
2150
|
+
"description": "PostgreSQL host (overrides DATABASE_URL host)",
|
|
2151
|
+
"provider": "PostgreSQL",
|
|
2152
|
+
"priority": 2
|
|
2153
|
+
},
|
|
2154
|
+
{
|
|
2155
|
+
"name": "PG_PORT",
|
|
2156
|
+
"description": "PostgreSQL port (overrides DATABASE_URL port)",
|
|
2157
|
+
"provider": "PostgreSQL",
|
|
2158
|
+
"priority": 2
|
|
2159
|
+
},
|
|
2160
|
+
{
|
|
2161
|
+
"name": "PG_USER",
|
|
2162
|
+
"description": "PostgreSQL username (overrides DATABASE_URL user)",
|
|
2163
|
+
"provider": "PostgreSQL",
|
|
2164
|
+
"priority": 2
|
|
2165
|
+
},
|
|
2166
|
+
{
|
|
2167
|
+
"name": "PG_PASSWORD",
|
|
2168
|
+
"description": "PostgreSQL password (overrides DATABASE_URL password)",
|
|
2169
|
+
"provider": "PostgreSQL",
|
|
2170
|
+
"priority": 2
|
|
2171
|
+
},
|
|
2172
|
+
{
|
|
2173
|
+
"name": "PG_DATABASE",
|
|
2174
|
+
"description": "PostgreSQL database name (overrides DATABASE_URL database)",
|
|
2175
|
+
"provider": "PostgreSQL",
|
|
2176
|
+
"priority": 2
|
|
2177
|
+
},
|
|
2178
|
+
{
|
|
2179
|
+
"name": "PG_SSL",
|
|
2180
|
+
"description": "Enable SSL connection (true/false)",
|
|
2181
|
+
"provider": "PostgreSQL",
|
|
2182
|
+
"priority": 3
|
|
2183
|
+
}
|
|
2184
|
+
]
|
|
2185
|
+
},
|
|
2186
|
+
"queries": [
|
|
2187
|
+
"list all database schemas",
|
|
2188
|
+
"list all tables in the public schema",
|
|
2189
|
+
"show details of the users table",
|
|
2190
|
+
"execute SELECT version()",
|
|
2191
|
+
"list all database branches excluding system schemas",
|
|
2192
|
+
"create a table called test_users with columns: id serial primary key, email varchar(255), created_at timestamp",
|
|
2193
|
+
"create a development branch copying from public schema",
|
|
2194
|
+
"compare dev_branch and public schemas",
|
|
2195
|
+
"analyze database health",
|
|
2196
|
+
"show top 10 slowest queries"
|
|
2197
|
+
],
|
|
2198
|
+
"scenarios": {
|
|
2199
|
+
"basic-query": [
|
|
2200
|
+
"list all database schemas",
|
|
2201
|
+
"list all tables in the public schema",
|
|
2202
|
+
"show the structure of a table in public schema",
|
|
2203
|
+
"execute SELECT current_database()"
|
|
2204
|
+
],
|
|
2205
|
+
"performance-analysis": [
|
|
2206
|
+
"analyze database health",
|
|
2207
|
+
"show connection utilization",
|
|
2208
|
+
"check cache hit rates",
|
|
2209
|
+
"find unused indexes",
|
|
2210
|
+
"show top 10 slowest queries"
|
|
2211
|
+
],
|
|
2212
|
+
"branch-workflow": [
|
|
2213
|
+
"list all database branches",
|
|
2214
|
+
"create a branch called dev_test copying from public",
|
|
2215
|
+
"create a table products in dev_test with columns: id serial, name varchar(200), price decimal(10,2)",
|
|
2216
|
+
"compare dev_test and public schemas",
|
|
2217
|
+
"list tables in dev_test schema",
|
|
2218
|
+
"delete branch dev_test"
|
|
2219
|
+
],
|
|
2220
|
+
"table-management": [
|
|
2221
|
+
"create a table orders with columns: id serial primary key, user_id integer, total decimal(10,2), status varchar(20)",
|
|
2222
|
+
"add column notes text to table orders",
|
|
2223
|
+
"show details of the orders table",
|
|
2224
|
+
"copy table orders to orders_backup",
|
|
2225
|
+
"truncate table orders_backup",
|
|
2226
|
+
"drop table orders_backup"
|
|
2227
|
+
],
|
|
2228
|
+
"advanced-branching": [
|
|
2229
|
+
"create branch staging copying from public with data",
|
|
2230
|
+
"create table new_feature in staging with columns: id serial, data jsonb, created_at timestamp default now()",
|
|
2231
|
+
"list all tables in staging schema",
|
|
2232
|
+
"compare staging and public schemas",
|
|
2233
|
+
"merge staging to public with skip strategy",
|
|
2234
|
+
"delete branch staging"
|
|
2235
|
+
],
|
|
2236
|
+
"schema-exploration": [
|
|
2237
|
+
"list all schemas with their owners",
|
|
2238
|
+
"list all tables in public schema",
|
|
2239
|
+
"list all views in public schema",
|
|
2240
|
+
"list installed PostgreSQL extensions",
|
|
2241
|
+
"show detailed structure of a specific table"
|
|
2242
|
+
],
|
|
2243
|
+
"health-monitoring": [
|
|
2244
|
+
"analyze overall database health",
|
|
2245
|
+
"check for duplicate indexes",
|
|
2246
|
+
"find unused indexes",
|
|
2247
|
+
"check vacuum health",
|
|
2248
|
+
"analyze table bloat",
|
|
2249
|
+
"show connection statistics"
|
|
2250
|
+
]
|
|
2251
|
+
},
|
|
2252
|
+
"tools": [
|
|
2253
|
+
{
|
|
2254
|
+
"name": "postgres-list-schemas",
|
|
2255
|
+
"description": "List all database schemas in the PostgreSQL instance, including schema owner and type (System/User).",
|
|
2256
|
+
"schema": {
|
|
2257
|
+
"type": "object",
|
|
2258
|
+
"properties": {}
|
|
2259
|
+
}
|
|
2260
|
+
},
|
|
2261
|
+
{
|
|
2262
|
+
"name": "postgres-list-objects",
|
|
2263
|
+
"description": "List database objects (tables, views, sequences, or extensions) within a specified schema.",
|
|
2264
|
+
"schema": {
|
|
2265
|
+
"type": "object",
|
|
2266
|
+
"properties": {
|
|
2267
|
+
"schema": {
|
|
2268
|
+
"type": "string",
|
|
2269
|
+
"description": "Schema name to list objects from"
|
|
2270
|
+
},
|
|
2271
|
+
"type": {
|
|
2272
|
+
"type": "string",
|
|
2273
|
+
"optional": true
|
|
2274
|
+
}
|
|
2275
|
+
}
|
|
2276
|
+
}
|
|
2277
|
+
},
|
|
2278
|
+
{
|
|
2279
|
+
"name": "postgres-get-object-details",
|
|
2280
|
+
"description": "Get detailed information about a specific database object, including columns, constraints, and indexes for tables/views.",
|
|
2281
|
+
"schema": {
|
|
2282
|
+
"type": "object",
|
|
2283
|
+
"properties": {
|
|
2284
|
+
"schema": {
|
|
2285
|
+
"type": "string",
|
|
2286
|
+
"description": "Schema name"
|
|
2287
|
+
},
|
|
2288
|
+
"name": {
|
|
2289
|
+
"type": "string",
|
|
2290
|
+
"description": "Object name"
|
|
2291
|
+
},
|
|
2292
|
+
"type": {
|
|
2293
|
+
"type": "string",
|
|
2294
|
+
"optional": true
|
|
2295
|
+
}
|
|
2296
|
+
}
|
|
2297
|
+
}
|
|
2298
|
+
},
|
|
2299
|
+
{
|
|
2300
|
+
"name": "postgres-execute-sql",
|
|
2301
|
+
"description": "Execute a SQL query against the PostgreSQL database. Returns query results for SELECT statements, or execution status for other statements.",
|
|
2302
|
+
"schema": {
|
|
2303
|
+
"type": "object",
|
|
2304
|
+
"properties": {
|
|
2305
|
+
"sql": {
|
|
2306
|
+
"type": "string",
|
|
2307
|
+
"description": "SQL query to execute"
|
|
2308
|
+
}
|
|
2309
|
+
}
|
|
2310
|
+
}
|
|
2311
|
+
},
|
|
2312
|
+
{
|
|
2313
|
+
"name": "postgres-explain-query",
|
|
2314
|
+
"description": "Get the query execution plan for a SQL query, showing how PostgreSQL will execute it with detailed cost estimates.",
|
|
2315
|
+
"schema": {
|
|
2316
|
+
"type": "object",
|
|
2317
|
+
"properties": {
|
|
2318
|
+
"sql": {
|
|
2319
|
+
"type": "string",
|
|
2320
|
+
"description": "SQL query to explain"
|
|
2321
|
+
},
|
|
2322
|
+
"analyze": {
|
|
2323
|
+
"type": "boolean",
|
|
2324
|
+
"optional": true,
|
|
2325
|
+
"description": "When true, actually runs the query to show real execution statistics (default: false)"
|
|
2326
|
+
}
|
|
2327
|
+
}
|
|
2328
|
+
}
|
|
2329
|
+
},
|
|
2330
|
+
{
|
|
2331
|
+
"name": "postgres-get-top-queries",
|
|
2332
|
+
"description": "Get the slowest or most resource-intensive queries from pg_stat_statements extension. Requires pg_stat_statements to be installed and enabled.",
|
|
2333
|
+
"schema": {
|
|
2334
|
+
"type": "object",
|
|
2335
|
+
"properties": {
|
|
2336
|
+
"sortBy": {
|
|
2337
|
+
"type": "string",
|
|
2338
|
+
"optional": true
|
|
2339
|
+
},
|
|
2340
|
+
"limit": {
|
|
2341
|
+
"type": "number",
|
|
2342
|
+
"optional": true,
|
|
2343
|
+
"description": "Number of queries to return (default: 10)"
|
|
2344
|
+
}
|
|
2345
|
+
}
|
|
2346
|
+
}
|
|
2347
|
+
},
|
|
2348
|
+
{
|
|
2349
|
+
"name": "postgres-analyze-health",
|
|
2350
|
+
"description": "Analyze database health including index health, connection utilization, buffer cache hit rates, vacuum health, and more.",
|
|
2351
|
+
"schema": {
|
|
2352
|
+
"type": "object",
|
|
2353
|
+
"properties": {
|
|
2354
|
+
"checks": {
|
|
2355
|
+
"type": "string",
|
|
2356
|
+
"optional": true
|
|
2357
|
+
}
|
|
2358
|
+
}
|
|
2359
|
+
}
|
|
2360
|
+
}
|
|
2361
|
+
]
|
|
2362
|
+
},
|
|
2363
|
+
"openpets/posthog": {
|
|
2364
|
+
"name": "openpets/posthog",
|
|
2365
|
+
"description": "PostHog plugin for OpenCode - comprehensive analytics, feature flags, and event tracking",
|
|
2366
|
+
"keywords": [
|
|
2367
|
+
"opencode",
|
|
2368
|
+
"plugin",
|
|
2369
|
+
"posthog",
|
|
2370
|
+
"analytics",
|
|
2371
|
+
"feature-flags",
|
|
2372
|
+
"events",
|
|
2373
|
+
"tracking",
|
|
2374
|
+
"insights"
|
|
2375
|
+
],
|
|
2376
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/posthog",
|
|
2377
|
+
"title": "PostHog",
|
|
2378
|
+
"homepage": "https://posthog.com",
|
|
2379
|
+
"envVariables": {
|
|
2380
|
+
"required": [
|
|
2381
|
+
{
|
|
2382
|
+
"name": "POSTHOG_HOST",
|
|
2383
|
+
"description": "PostHog instance URL (e.g., https://app.posthog.com or your self-hosted URL)",
|
|
2384
|
+
"provider": "PostHog",
|
|
2385
|
+
"priority": 1
|
|
2386
|
+
},
|
|
2387
|
+
{
|
|
2388
|
+
"name": "POSTHOG_API_KEY",
|
|
2389
|
+
"description": "PostHog Personal API Key for authentication",
|
|
2390
|
+
"provider": "PostHog",
|
|
2391
|
+
"priority": 1
|
|
2392
|
+
}
|
|
2393
|
+
],
|
|
2394
|
+
"optional": [
|
|
2395
|
+
{
|
|
2396
|
+
"name": "POSTHOG_PROJECT_API_KEY",
|
|
2397
|
+
"description": "PostHog Project API Key for capturing events (required for event capture)",
|
|
2398
|
+
"provider": "PostHog",
|
|
2399
|
+
"priority": 2
|
|
2400
|
+
}
|
|
2401
|
+
]
|
|
2402
|
+
},
|
|
2403
|
+
"queries": [
|
|
2404
|
+
"check posthog status",
|
|
2405
|
+
"list feature flags",
|
|
2406
|
+
"get project info"
|
|
2407
|
+
],
|
|
2408
|
+
"scenarios": {
|
|
2409
|
+
"basic-info": [
|
|
2410
|
+
"check posthog status",
|
|
2411
|
+
"get project info",
|
|
2412
|
+
"list feature flags"
|
|
2413
|
+
]
|
|
2414
|
+
},
|
|
2415
|
+
"tools": [
|
|
2416
|
+
{
|
|
2417
|
+
"name": "posthog-status",
|
|
2418
|
+
"description": "Check PostHog connection and configuration status",
|
|
2419
|
+
"schema": {
|
|
2420
|
+
"type": "object",
|
|
2421
|
+
"properties": {}
|
|
2422
|
+
}
|
|
2423
|
+
},
|
|
2424
|
+
{
|
|
2425
|
+
"name": "posthog-get-project-info",
|
|
2426
|
+
"description": "Get information about the current PostHog project",
|
|
2427
|
+
"schema": {
|
|
2428
|
+
"type": "object",
|
|
2429
|
+
"properties": {}
|
|
2430
|
+
}
|
|
2431
|
+
},
|
|
2432
|
+
{
|
|
2433
|
+
"name": "posthog-list-feature-flags",
|
|
2434
|
+
"description": "List all feature flags in the project",
|
|
2435
|
+
"schema": {
|
|
2436
|
+
"type": "object",
|
|
2437
|
+
"properties": {}
|
|
2438
|
+
}
|
|
2439
|
+
},
|
|
2440
|
+
{
|
|
2441
|
+
"name": "posthog-get-events",
|
|
2442
|
+
"description": "Get recent events from PostHog with optional limit and offset",
|
|
2443
|
+
"schema": {
|
|
2444
|
+
"type": "object",
|
|
2445
|
+
"properties": {
|
|
2446
|
+
"limit": {
|
|
2447
|
+
"type": "number",
|
|
2448
|
+
"optional": true,
|
|
2449
|
+
"description": "Maximum number of events to return (default: 10)"
|
|
2450
|
+
},
|
|
2451
|
+
"offset": {
|
|
2452
|
+
"type": "number",
|
|
2453
|
+
"optional": true,
|
|
2454
|
+
"description": "Number of events to skip (default: 0)"
|
|
2455
|
+
}
|
|
2456
|
+
}
|
|
2457
|
+
}
|
|
2458
|
+
},
|
|
2459
|
+
{
|
|
2460
|
+
"name": "posthog-get-persons",
|
|
2461
|
+
"description": "Get persons (users) from PostHog with optional limit and offset",
|
|
2462
|
+
"schema": {
|
|
2463
|
+
"type": "object",
|
|
2464
|
+
"properties": {
|
|
2465
|
+
"limit": {
|
|
2466
|
+
"type": "number",
|
|
2467
|
+
"optional": true,
|
|
2468
|
+
"description": "Maximum number of persons to return (default: 10)"
|
|
2469
|
+
},
|
|
2470
|
+
"offset": {
|
|
2471
|
+
"type": "number",
|
|
2472
|
+
"optional": true,
|
|
2473
|
+
"description": "Number of persons to skip (default: 0)"
|
|
2474
|
+
}
|
|
2475
|
+
}
|
|
2476
|
+
}
|
|
2477
|
+
}
|
|
2478
|
+
]
|
|
2479
|
+
},
|
|
2480
|
+
"openpets/reddit": {
|
|
2481
|
+
"name": "openpets/reddit",
|
|
2482
|
+
"description": "Reddit plugin for OpenCode - navigate subreddit communities and get trending stories",
|
|
2483
|
+
"keywords": [
|
|
2484
|
+
"opencode",
|
|
2485
|
+
"plugin",
|
|
2486
|
+
"reddit",
|
|
2487
|
+
"social-media",
|
|
2488
|
+
"content"
|
|
2489
|
+
],
|
|
2490
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/reddit",
|
|
2491
|
+
"title": "Reddit",
|
|
2492
|
+
"homepage": "https://reddit.com",
|
|
2493
|
+
"envVariables": {
|
|
2494
|
+
"required": [
|
|
2495
|
+
{
|
|
2496
|
+
"name": "REDDIT_CLIENT_ID",
|
|
2497
|
+
"description": "Reddit application client ID from https://www.reddit.com/prefs/apps",
|
|
2498
|
+
"provider": "Reddit",
|
|
2499
|
+
"priority": 1
|
|
2500
|
+
},
|
|
2501
|
+
{
|
|
2502
|
+
"name": "REDDIT_CLIENT_SECRET",
|
|
2503
|
+
"description": "Reddit application client secret",
|
|
2504
|
+
"provider": "Reddit",
|
|
2505
|
+
"priority": 1
|
|
2506
|
+
},
|
|
2507
|
+
{
|
|
2508
|
+
"name": "REDDIT_REFRESH_TOKEN",
|
|
2509
|
+
"description": "Reddit OAuth refresh token",
|
|
2510
|
+
"provider": "Reddit",
|
|
2511
|
+
"priority": 1
|
|
2512
|
+
}
|
|
2513
|
+
],
|
|
2514
|
+
"optional": [
|
|
2515
|
+
{
|
|
2516
|
+
"name": "REDDIT_USER_AGENT",
|
|
2517
|
+
"description": "Custom user agent string (default: 'openpets-reddit-plugin/1.0.0')",
|
|
2518
|
+
"provider": "Reddit",
|
|
2519
|
+
"priority": 2
|
|
2520
|
+
}
|
|
2521
|
+
]
|
|
2522
|
+
},
|
|
2523
|
+
"queries": [
|
|
2524
|
+
"get hot posts from r/programming",
|
|
2525
|
+
"fetch trending posts from r/technology with 20 results",
|
|
2526
|
+
"get post content for post ID abc123",
|
|
2527
|
+
"show me hot posts from r/AskReddit"
|
|
2528
|
+
],
|
|
2529
|
+
"scenarios": {
|
|
2530
|
+
"browse-subreddits": [
|
|
2531
|
+
"get hot posts from r/programming",
|
|
2532
|
+
"fetch trending posts from r/technology with 15 results",
|
|
2533
|
+
"get hot posts from r/AskReddit with 5 results"
|
|
2534
|
+
],
|
|
2535
|
+
"deep-dive": [
|
|
2536
|
+
"get hot posts from r/programming with 10 results",
|
|
2537
|
+
"get post content for the first post ID",
|
|
2538
|
+
"get post content with 50 comments and depth 5"
|
|
2539
|
+
]
|
|
2540
|
+
},
|
|
2541
|
+
"tools": [
|
|
2542
|
+
{
|
|
2543
|
+
"name": "fetch-reddit-hot-threads",
|
|
2544
|
+
"description": "Fetch hot threads from a subreddit",
|
|
2545
|
+
"schema": {
|
|
2546
|
+
"type": "object",
|
|
2547
|
+
"properties": {
|
|
2548
|
+
"subreddit": {
|
|
2549
|
+
"type": "string",
|
|
2550
|
+
"description": "Name of the subreddit (without r/ prefix)"
|
|
2551
|
+
},
|
|
2552
|
+
"limit": {
|
|
2553
|
+
"type": "number",
|
|
2554
|
+
"optional": true,
|
|
2555
|
+
"description": "Number of posts to fetch (default: 10)"
|
|
2556
|
+
}
|
|
2557
|
+
}
|
|
2558
|
+
}
|
|
2559
|
+
}
|
|
2560
|
+
]
|
|
2561
|
+
},
|
|
2562
|
+
"openpets/slack": {
|
|
2563
|
+
"name": "openpets/slack",
|
|
2564
|
+
"description": "Slack integration plugin for OpenCode - search channels, read messages, and post to Slack",
|
|
2565
|
+
"keywords": [
|
|
2566
|
+
"opencode",
|
|
2567
|
+
"plugin",
|
|
2568
|
+
"slack",
|
|
2569
|
+
"messaging",
|
|
2570
|
+
"collaboration",
|
|
2571
|
+
"channels"
|
|
2572
|
+
],
|
|
2573
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/slack",
|
|
2574
|
+
"title": "Slack",
|
|
2575
|
+
"homepage": "https://slack.com",
|
|
2576
|
+
"envVariables": {
|
|
2577
|
+
"required": [
|
|
2578
|
+
{
|
|
2579
|
+
"name": "SLACK_TOKEN",
|
|
2580
|
+
"description": "Slack OAuth token (xoxp-...) OR use SLACK_XOXC_TOKEN + SLACK_XOXD_TOKEN for stealth mode",
|
|
2581
|
+
"provider": "Slack",
|
|
2582
|
+
"priority": 1
|
|
2583
|
+
}
|
|
2584
|
+
],
|
|
2585
|
+
"optional": [
|
|
2586
|
+
{
|
|
2587
|
+
"name": "SLACK_XOXC_TOKEN",
|
|
2588
|
+
"description": "Slack browser token (xoxc-...) for stealth mode authentication",
|
|
2589
|
+
"provider": "Slack",
|
|
2590
|
+
"priority": 2
|
|
2591
|
+
},
|
|
2592
|
+
{
|
|
2593
|
+
"name": "SLACK_XOXD_TOKEN",
|
|
2594
|
+
"description": "Slack browser cookie (xoxd-...) for stealth mode authentication",
|
|
2595
|
+
"provider": "Slack",
|
|
2596
|
+
"priority": 2
|
|
2597
|
+
},
|
|
2598
|
+
{
|
|
2599
|
+
"name": "DEFAULT_MESSAGE_LIMIT",
|
|
2600
|
+
"description": "Default number of messages to retrieve (default: 20)",
|
|
2601
|
+
"provider": "Configuration",
|
|
2602
|
+
"priority": 3
|
|
2603
|
+
},
|
|
2604
|
+
{
|
|
2605
|
+
"name": "DEFAULT_CHANNEL_LIMIT",
|
|
2606
|
+
"description": "Default number of channels to list (default: 100)",
|
|
2607
|
+
"provider": "Configuration",
|
|
2608
|
+
"priority": 3
|
|
2609
|
+
},
|
|
2610
|
+
{
|
|
2611
|
+
"name": "SLACK_ENABLE_POSTING",
|
|
2612
|
+
"description": "Enable message posting: 'true' for all channels or comma-separated channel IDs",
|
|
2613
|
+
"provider": "Configuration",
|
|
2614
|
+
"priority": 4
|
|
2615
|
+
},
|
|
2616
|
+
{
|
|
2617
|
+
"name": "LOG_LEVEL",
|
|
2618
|
+
"description": "Logging level: debug, info, warn, error (default: info)",
|
|
2619
|
+
"provider": "Configuration",
|
|
2620
|
+
"priority": 5
|
|
2621
|
+
}
|
|
2622
|
+
]
|
|
2623
|
+
},
|
|
2624
|
+
"queries": [
|
|
2625
|
+
"list slack channels",
|
|
2626
|
+
"search messages in #general",
|
|
2627
|
+
"get recent messages from #engineering",
|
|
2628
|
+
"find messages from @username"
|
|
2629
|
+
],
|
|
2630
|
+
"scenarios": {
|
|
2631
|
+
"channel-management": [
|
|
2632
|
+
"list slack channels",
|
|
2633
|
+
"search for public channels",
|
|
2634
|
+
"find DMs and private channels"
|
|
2635
|
+
],
|
|
2636
|
+
"message-search": [
|
|
2637
|
+
"search messages in #general",
|
|
2638
|
+
"find messages containing 'meeting'",
|
|
2639
|
+
"search messages from last week"
|
|
2640
|
+
],
|
|
2641
|
+
"message-reading": [
|
|
2642
|
+
"get recent messages from #engineering",
|
|
2643
|
+
"read thread replies",
|
|
2644
|
+
"get channel history"
|
|
2645
|
+
]
|
|
2646
|
+
}
|
|
2647
|
+
},
|
|
2648
|
+
"openpets/social": {
|
|
2649
|
+
"name": "openpets/social",
|
|
2650
|
+
"description": "Social media feed manager for OpenCode - aggregates content from Reddit and other social platforms",
|
|
2651
|
+
"keywords": [
|
|
2652
|
+
"opencode",
|
|
2653
|
+
"plugin",
|
|
2654
|
+
"social",
|
|
2655
|
+
"reddit",
|
|
2656
|
+
"feed",
|
|
2657
|
+
"content",
|
|
2658
|
+
"aggregator"
|
|
2659
|
+
],
|
|
2660
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/social",
|
|
2661
|
+
"title": "Social",
|
|
2662
|
+
"icon": "📱",
|
|
2663
|
+
"envVariables": {
|
|
2664
|
+
"required": [
|
|
2665
|
+
{
|
|
2666
|
+
"name": "REDDIT_CLIENT_ID",
|
|
2667
|
+
"description": "Reddit application client ID",
|
|
2668
|
+
"provider": "Reddit",
|
|
2669
|
+
"priority": 1,
|
|
2670
|
+
"setupUrl": "https://www.reddit.com/prefs/apps"
|
|
2671
|
+
},
|
|
2672
|
+
{
|
|
2673
|
+
"name": "REDDIT_CLIENT_SECRET",
|
|
2674
|
+
"description": "Reddit application client secret",
|
|
2675
|
+
"provider": "Reddit",
|
|
2676
|
+
"priority": 1,
|
|
2677
|
+
"setupUrl": "https://www.reddit.com/prefs/apps"
|
|
2678
|
+
},
|
|
2679
|
+
{
|
|
2680
|
+
"name": "REDDIT_REFRESH_TOKEN",
|
|
2681
|
+
"description": "Reddit refresh token for API access",
|
|
2682
|
+
"provider": "Reddit",
|
|
2683
|
+
"priority": 1,
|
|
2684
|
+
"setupUrl": "https://www.reddit.com/prefs/apps"
|
|
2685
|
+
}
|
|
2686
|
+
],
|
|
2687
|
+
"optional": [
|
|
2688
|
+
{
|
|
2689
|
+
"name": "DEFAULT_POST_LIMIT",
|
|
2690
|
+
"description": "Default number of posts to fetch (default: 10)",
|
|
2691
|
+
"provider": "Configuration",
|
|
2692
|
+
"priority": 5
|
|
2693
|
+
},
|
|
2694
|
+
{
|
|
2695
|
+
"name": "DEFAULT_COMMENT_LIMIT",
|
|
2696
|
+
"description": "Default number of comments to fetch (default: 20)",
|
|
2697
|
+
"provider": "Configuration",
|
|
2698
|
+
"priority": 5
|
|
2699
|
+
},
|
|
2700
|
+
{
|
|
2701
|
+
"name": "LOG_LEVEL",
|
|
2702
|
+
"description": "Logging level: debug, info, warn, error (default: info)",
|
|
2703
|
+
"provider": "Configuration",
|
|
2704
|
+
"priority": 5
|
|
2705
|
+
}
|
|
2706
|
+
]
|
|
2707
|
+
},
|
|
2708
|
+
"queries": [
|
|
2709
|
+
"reddit-fetch-hot-threads from 'programming' with limit 5",
|
|
2710
|
+
"reddit-fetch-post-content for 'abc123'",
|
|
2711
|
+
"social-feed-summary for subreddits ['technology', 'MachineLearning']",
|
|
2712
|
+
"social-search for 'typescript' with limit 10"
|
|
2713
|
+
],
|
|
2714
|
+
"scenarios": {
|
|
2715
|
+
"reddit-browsing": [
|
|
2716
|
+
"reddit-fetch-hot-threads from 'programming' with limit 5",
|
|
2717
|
+
"reddit-fetch-post-content for 'top_post_id'",
|
|
2718
|
+
"social-feed-summary for subreddits ['technology', 'programming']"
|
|
2719
|
+
],
|
|
2720
|
+
"content-discovery": [
|
|
2721
|
+
"social-search for 'machine learning' with limit 15",
|
|
2722
|
+
"social-feed-summary for subreddits ['MachineLearning', 'datascience']",
|
|
2723
|
+
"reddit-fetch-hot-threads from 'all' with limit 20"
|
|
2724
|
+
],
|
|
2725
|
+
"tech-news": [
|
|
2726
|
+
"reddit-fetch-hot-threads from 'technology' with limit 10",
|
|
2727
|
+
"social-search for 'AI' with limit 8",
|
|
2728
|
+
"social-feed-summary for subreddits ['programming', 'technology', 'MachineLearning']"
|
|
2729
|
+
],
|
|
2730
|
+
"integration-test": [
|
|
2731
|
+
"reddit-fetch-hot-threads from 'test' with limit 3",
|
|
2732
|
+
"social-feed-summary for subreddits ['test']",
|
|
2733
|
+
"social-search for 'test' with limit 5"
|
|
2734
|
+
]
|
|
2735
|
+
},
|
|
2736
|
+
"tools": [
|
|
2737
|
+
{
|
|
2738
|
+
"name": "reddit-fetch-hot-threads",
|
|
2739
|
+
"description": "Fetch hot threads from a subreddit",
|
|
2740
|
+
"schema": {
|
|
2741
|
+
"type": "object",
|
|
2742
|
+
"properties": {
|
|
2743
|
+
"subreddit": {
|
|
2744
|
+
"type": "string",
|
|
2745
|
+
"description": "Name of the subreddit"
|
|
2746
|
+
},
|
|
2747
|
+
"limit": {
|
|
2748
|
+
"type": "number",
|
|
2749
|
+
"optional": true,
|
|
2750
|
+
"description": "Number of posts to fetch"
|
|
2751
|
+
}
|
|
2752
|
+
}
|
|
2753
|
+
}
|
|
2754
|
+
},
|
|
2755
|
+
{
|
|
2756
|
+
"name": "reddit-fetch-post-content",
|
|
2757
|
+
"description": "Fetch detailed content of a specific Reddit post with comments",
|
|
2758
|
+
"schema": {
|
|
2759
|
+
"type": "object",
|
|
2760
|
+
"properties": {
|
|
2761
|
+
"post_id": {
|
|
2762
|
+
"type": "string",
|
|
2763
|
+
"description": "Reddit post ID"
|
|
2764
|
+
},
|
|
2765
|
+
"comment_limit": {
|
|
2766
|
+
"type": "number",
|
|
2767
|
+
"optional": true,
|
|
2768
|
+
"description": "Number of comments to fetch"
|
|
2769
|
+
}
|
|
2770
|
+
}
|
|
2771
|
+
}
|
|
2772
|
+
},
|
|
2773
|
+
{
|
|
2774
|
+
"name": "social-feed-summary",
|
|
2775
|
+
"description": "Get a summary of trending content across social platforms",
|
|
2776
|
+
"schema": {
|
|
2777
|
+
"type": "object",
|
|
2778
|
+
"properties": {
|
|
2779
|
+
"platforms": {
|
|
2780
|
+
"type": "string",
|
|
2781
|
+
"enum": [
|
|
2782
|
+
"reddit"
|
|
2783
|
+
],
|
|
2784
|
+
"optional": true,
|
|
2785
|
+
"description": "Social platforms to include"
|
|
2786
|
+
},
|
|
2787
|
+
"subreddits": {
|
|
2788
|
+
"type": "string",
|
|
2789
|
+
"optional": true,
|
|
2790
|
+
"description": "Subreddits to fetch from"
|
|
2791
|
+
},
|
|
2792
|
+
"limit": {
|
|
2793
|
+
"type": "number",
|
|
2794
|
+
"optional": true,
|
|
2795
|
+
"description": "Posts per subreddit"
|
|
2796
|
+
}
|
|
2797
|
+
}
|
|
2798
|
+
}
|
|
2799
|
+
},
|
|
2800
|
+
{
|
|
2801
|
+
"name": "social-search",
|
|
2802
|
+
"description": "Search for content across social platforms",
|
|
2803
|
+
"schema": {
|
|
2804
|
+
"type": "object",
|
|
2805
|
+
"properties": {
|
|
2806
|
+
"query": {
|
|
2807
|
+
"type": "string",
|
|
2808
|
+
"description": "Search query"
|
|
2809
|
+
},
|
|
2810
|
+
"platforms": {
|
|
2811
|
+
"type": "string",
|
|
2812
|
+
"enum": [
|
|
2813
|
+
"reddit"
|
|
2814
|
+
],
|
|
2815
|
+
"optional": true,
|
|
2816
|
+
"description": "Platforms to search"
|
|
2817
|
+
},
|
|
2818
|
+
"limit": {
|
|
2819
|
+
"type": "number",
|
|
2820
|
+
"optional": true,
|
|
2821
|
+
"description": "Results per platform"
|
|
2822
|
+
}
|
|
2823
|
+
}
|
|
2824
|
+
}
|
|
2825
|
+
}
|
|
2826
|
+
]
|
|
2827
|
+
},
|
|
2828
|
+
"openpets/tiktok": {
|
|
2829
|
+
"name": "openpets/tiktok",
|
|
2830
|
+
"description": "TikTok plugin for OpenCode - Search and analyze trending videos around specific topics using Playwright web scraping",
|
|
2831
|
+
"keywords": [
|
|
2832
|
+
"opencode",
|
|
2833
|
+
"plugin",
|
|
2834
|
+
"tiktok",
|
|
2835
|
+
"trending",
|
|
2836
|
+
"videos",
|
|
2837
|
+
"social-media",
|
|
2838
|
+
"web-scraping",
|
|
2839
|
+
"playwright"
|
|
2840
|
+
],
|
|
2841
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/titkok",
|
|
2842
|
+
"title": "TikTok",
|
|
2843
|
+
"homepage": "https://www.tiktok.com",
|
|
2844
|
+
"envVariables": {
|
|
2845
|
+
"optional": []
|
|
2846
|
+
},
|
|
2847
|
+
"queries": [
|
|
2848
|
+
"search tiktok for cooking videos",
|
|
2849
|
+
"find trending tiktok videos about fitness",
|
|
2850
|
+
"get tiktok video details for https://www.tiktok.com/@user/video/123456",
|
|
2851
|
+
"analyze trending hashtags for travel on tiktok",
|
|
2852
|
+
"get trending music on tiktok",
|
|
2853
|
+
"get comments from a tiktok video",
|
|
2854
|
+
"analyze tiktok user profile for @username",
|
|
2855
|
+
"download tiktok video from url",
|
|
2856
|
+
"track fitness trend over time on tiktok"
|
|
2857
|
+
],
|
|
2858
|
+
"scenarios": {
|
|
2859
|
+
"trending-search": [
|
|
2860
|
+
"search tiktok for cooking videos",
|
|
2861
|
+
"find trending tiktok videos about fitness"
|
|
2862
|
+
],
|
|
2863
|
+
"hashtag-analysis": [
|
|
2864
|
+
"analyze trending hashtags for travel on tiktok"
|
|
2865
|
+
],
|
|
2866
|
+
"user-analysis": [
|
|
2867
|
+
"analyze tiktok user profile for @username",
|
|
2868
|
+
"get comments from their recent videos"
|
|
2869
|
+
],
|
|
2870
|
+
"trend-tracking": [
|
|
2871
|
+
"track fitness trend over time on tiktok"
|
|
2872
|
+
]
|
|
2873
|
+
},
|
|
2874
|
+
"tools": [
|
|
2875
|
+
{
|
|
2876
|
+
"name": "search-trending-videos",
|
|
2877
|
+
"description": "Search for trending TikTok videos around a specific topic or hashtag using web scraping",
|
|
2878
|
+
"schema": {
|
|
2879
|
+
"type": "object",
|
|
2880
|
+
"properties": {}
|
|
2881
|
+
}
|
|
2882
|
+
},
|
|
2883
|
+
{
|
|
2884
|
+
"name": "get-video-details",
|
|
2885
|
+
"description": "Get detailed information about a specific TikTok video by URL",
|
|
2886
|
+
"schema": {
|
|
2887
|
+
"type": "object",
|
|
2888
|
+
"properties": {}
|
|
2889
|
+
}
|
|
2890
|
+
},
|
|
2891
|
+
{
|
|
2892
|
+
"name": "analyze-trending-hashtags",
|
|
2893
|
+
"description": "Search for videos on a topic and analyze which hashtags are most commonly used",
|
|
2894
|
+
"schema": {
|
|
2895
|
+
"type": "object",
|
|
2896
|
+
"properties": {}
|
|
2897
|
+
}
|
|
2898
|
+
},
|
|
2899
|
+
{
|
|
2900
|
+
"name": "get-trending-music",
|
|
2901
|
+
"description": "Get a list of trending music and sounds on TikTok",
|
|
2902
|
+
"schema": {
|
|
2903
|
+
"type": "object",
|
|
2904
|
+
"properties": {}
|
|
2905
|
+
}
|
|
2906
|
+
},
|
|
2907
|
+
{
|
|
2908
|
+
"name": "get-video-comments",
|
|
2909
|
+
"description": "Scrape comments from a TikTok video including author, text, likes, and timestamps",
|
|
2910
|
+
"schema": {
|
|
2911
|
+
"type": "object",
|
|
2912
|
+
"properties": {}
|
|
2913
|
+
}
|
|
2914
|
+
},
|
|
2915
|
+
{
|
|
2916
|
+
"name": "get-user-profile",
|
|
2917
|
+
"description": "Analyze a TikTok user",
|
|
2918
|
+
"schema": {
|
|
2919
|
+
"type": "object",
|
|
2920
|
+
"properties": {}
|
|
2921
|
+
}
|
|
2922
|
+
},
|
|
2923
|
+
{
|
|
2924
|
+
"name": "download-video",
|
|
2925
|
+
"description": "Download a TikTok video to disk and return the file path (note: rate limiting protection active)",
|
|
2926
|
+
"schema": {
|
|
2927
|
+
"type": "object",
|
|
2928
|
+
"properties": {}
|
|
2929
|
+
}
|
|
2930
|
+
},
|
|
2931
|
+
{
|
|
2932
|
+
"name": "track-trend-over-time",
|
|
2933
|
+
"description": "Track how a topic trends over time by taking multiple samples and analyzing engagement patterns",
|
|
2934
|
+
"schema": {
|
|
2935
|
+
"type": "object",
|
|
2936
|
+
"properties": {}
|
|
2937
|
+
}
|
|
2938
|
+
}
|
|
2939
|
+
]
|
|
2940
|
+
},
|
|
2941
|
+
"openpets/trader": {
|
|
2942
|
+
"name": "openpets/trader",
|
|
2943
|
+
"description": "Alpaca Trading API plugin for OpenCode - stock trading, portfolio management, and market data",
|
|
2944
|
+
"keywords": [
|
|
2945
|
+
"opencode",
|
|
2946
|
+
"plugin",
|
|
2947
|
+
"trading",
|
|
2948
|
+
"alpaca",
|
|
2949
|
+
"stocks",
|
|
2950
|
+
"market-data"
|
|
2951
|
+
],
|
|
2952
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/trader",
|
|
2953
|
+
"title": "Trading",
|
|
2954
|
+
"icon": "📈",
|
|
2955
|
+
"envVariables": {
|
|
2956
|
+
"required": [
|
|
2957
|
+
{
|
|
2958
|
+
"name": "ALPACA_API_KEY",
|
|
2959
|
+
"description": "Alpaca API key from https://app.alpaca.markets/",
|
|
2960
|
+
"provider": "Alpaca",
|
|
2961
|
+
"priority": 1
|
|
2962
|
+
},
|
|
2963
|
+
{
|
|
2964
|
+
"name": "ALPACA_SECRET_KEY",
|
|
2965
|
+
"description": "Alpaca secret key from https://app.alpaca.markets/",
|
|
2966
|
+
"provider": "Alpaca",
|
|
2967
|
+
"priority": 1
|
|
2968
|
+
}
|
|
2969
|
+
],
|
|
2970
|
+
"optional": [
|
|
2971
|
+
{
|
|
2972
|
+
"name": "ALPACA_PAPER_TRADE",
|
|
2973
|
+
"description": "Use paper trading (true) or live trading (false). Default: true",
|
|
2974
|
+
"provider": "Alpaca",
|
|
2975
|
+
"priority": 2
|
|
2976
|
+
}
|
|
2977
|
+
]
|
|
2978
|
+
},
|
|
2979
|
+
"queries": [
|
|
2980
|
+
"get account status",
|
|
2981
|
+
"search for AAPL stock",
|
|
2982
|
+
"buy 100 shares of TSLA",
|
|
2983
|
+
"get current positions"
|
|
2984
|
+
],
|
|
2985
|
+
"scenarios": {
|
|
2986
|
+
"account-management": [
|
|
2987
|
+
"get account status",
|
|
2988
|
+
"get current positions",
|
|
2989
|
+
"get recent orders"
|
|
2990
|
+
],
|
|
2991
|
+
"trading": [
|
|
2992
|
+
"search for GOOGL stock",
|
|
2993
|
+
"buy 50 shares of AAPL",
|
|
2994
|
+
"sell 10 shares of TSLA"
|
|
2995
|
+
]
|
|
2996
|
+
},
|
|
2997
|
+
"tools": [
|
|
2998
|
+
{
|
|
2999
|
+
"name": "get-account-status",
|
|
3000
|
+
"description": "Get Alpaca account status including buying power, cash, portfolio value, and positions",
|
|
3001
|
+
"schema": {
|
|
3002
|
+
"type": "object",
|
|
3003
|
+
"properties": {}
|
|
3004
|
+
}
|
|
3005
|
+
},
|
|
3006
|
+
{
|
|
3007
|
+
"name": "search-stock",
|
|
3008
|
+
"description": "Search for stock information including latest price, bars, and asset details",
|
|
3009
|
+
"schema": {
|
|
3010
|
+
"type": "object",
|
|
3011
|
+
"properties": {
|
|
3012
|
+
"symbol": {
|
|
3013
|
+
"type": "string",
|
|
3014
|
+
"description": "Stock symbol to search for (e.g., AAPL, GOOGL, TSLA)"
|
|
3015
|
+
}
|
|
3016
|
+
}
|
|
3017
|
+
}
|
|
3018
|
+
},
|
|
3019
|
+
{
|
|
3020
|
+
"name": "create-trade",
|
|
3021
|
+
"description": "Create a buy or sell order for a stock",
|
|
3022
|
+
"schema": {
|
|
3023
|
+
"type": "object",
|
|
3024
|
+
"properties": {
|
|
3025
|
+
"symbol": {
|
|
3026
|
+
"type": "string",
|
|
3027
|
+
"description": "Stock symbol (e.g., AAPL, GOOGL, TSLA)"
|
|
3028
|
+
},
|
|
3029
|
+
"side": {
|
|
3030
|
+
"type": "string",
|
|
3031
|
+
"enum": [
|
|
3032
|
+
"buy",
|
|
3033
|
+
"sell"
|
|
3034
|
+
],
|
|
3035
|
+
"description": "Order side: buy or sell"
|
|
3036
|
+
},
|
|
3037
|
+
"quantity": {
|
|
3038
|
+
"type": "number",
|
|
3039
|
+
"optional": true,
|
|
3040
|
+
"description": "Number of shares to trade (use either quantity or notional)"
|
|
3041
|
+
},
|
|
3042
|
+
"notional": {
|
|
3043
|
+
"type": "number",
|
|
3044
|
+
"optional": true,
|
|
3045
|
+
"description": "Dollar amount to trade (for fractional shares)"
|
|
3046
|
+
},
|
|
3047
|
+
"type": {
|
|
3048
|
+
"type": "string",
|
|
3049
|
+
"enum": [
|
|
3050
|
+
"market",
|
|
3051
|
+
"limit"
|
|
3052
|
+
],
|
|
3053
|
+
"description": "Order type"
|
|
3054
|
+
},
|
|
3055
|
+
"limit_price": {
|
|
3056
|
+
"type": "number",
|
|
3057
|
+
"optional": true,
|
|
3058
|
+
"description": "Limit price (required for limit orders)"
|
|
3059
|
+
}
|
|
3060
|
+
}
|
|
3061
|
+
}
|
|
3062
|
+
}
|
|
3063
|
+
]
|
|
3064
|
+
},
|
|
3065
|
+
"openpets/wise": {
|
|
3066
|
+
"name": "openpets/wise",
|
|
3067
|
+
"description": "Wise API client for fetching transactions and account data",
|
|
3068
|
+
"keywords": [
|
|
3069
|
+
"opencode",
|
|
3070
|
+
"plugin",
|
|
3071
|
+
"wise",
|
|
3072
|
+
"api",
|
|
3073
|
+
"transactions",
|
|
3074
|
+
"finance"
|
|
3075
|
+
],
|
|
3076
|
+
"source_code_url": "https://github.com/raggle-ai/pets/tree/main/pets/wise",
|
|
3077
|
+
"title": "Wise",
|
|
3078
|
+
"homepage": "https://wise.com",
|
|
3079
|
+
"envVariables": {
|
|
3080
|
+
"required": [
|
|
3081
|
+
{
|
|
3082
|
+
"name": "WISE_API_TOKEN",
|
|
3083
|
+
"description": "Your Wise API token from https://wise.com/your-account/integrations-and-tools/api-tokens",
|
|
3084
|
+
"provider": "Wise",
|
|
3085
|
+
"priority": 1
|
|
3086
|
+
}
|
|
3087
|
+
],
|
|
3088
|
+
"optional": [
|
|
3089
|
+
{
|
|
3090
|
+
"name": "WISE_PROFILE_ID",
|
|
3091
|
+
"description": "Your Wise profile ID (can be retrieved using getProfiles()). Setting this allows methods to work without specifying profileId parameter.",
|
|
3092
|
+
"provider": "Wise",
|
|
3093
|
+
"priority": 2
|
|
3094
|
+
},
|
|
3095
|
+
{
|
|
3096
|
+
"name": "WISE_SANDBOX",
|
|
3097
|
+
"description": "Set to 'true' to use the Wise sandbox environment for testing (default: false)",
|
|
3098
|
+
"provider": "Wise",
|
|
3099
|
+
"priority": 3
|
|
3100
|
+
}
|
|
3101
|
+
]
|
|
3102
|
+
},
|
|
3103
|
+
"queries": [
|
|
3104
|
+
"list all transactions",
|
|
3105
|
+
"show my account balances",
|
|
3106
|
+
"get exchange rate from USD to EUR",
|
|
3107
|
+
"show spending summary for last month"
|
|
3108
|
+
],
|
|
3109
|
+
"scenarios": {
|
|
3110
|
+
"transaction-management": [
|
|
3111
|
+
"list all recent transactions",
|
|
3112
|
+
"get transaction details for ID 12345",
|
|
3113
|
+
"search for transactions with merchant name",
|
|
3114
|
+
"show transactions for last 30 days"
|
|
3115
|
+
],
|
|
3116
|
+
"balance-workflow": [
|
|
3117
|
+
"show all account balances",
|
|
3118
|
+
"get balance for EUR account",
|
|
3119
|
+
"check total available funds",
|
|
3120
|
+
"view balance conversion options"
|
|
3121
|
+
],
|
|
3122
|
+
"exchange-rates": [
|
|
3123
|
+
"get current exchange rate from USD to EUR",
|
|
3124
|
+
"create quote for converting 1000 USD to GBP",
|
|
3125
|
+
"check exchange rates for multiple currencies",
|
|
3126
|
+
"compare rates between different currency pairs"
|
|
3127
|
+
]
|
|
3128
|
+
},
|
|
3129
|
+
"tools": [
|
|
3130
|
+
{
|
|
3131
|
+
"name": "get-profiles",
|
|
3132
|
+
"description": "Get all Wise profiles associated with the API token",
|
|
3133
|
+
"schema": {
|
|
3134
|
+
"type": "object",
|
|
3135
|
+
"properties": {}
|
|
3136
|
+
}
|
|
3137
|
+
},
|
|
3138
|
+
{
|
|
3139
|
+
"name": "get-balances",
|
|
3140
|
+
"description": "Get account balances for a Wise profile",
|
|
3141
|
+
"schema": {
|
|
3142
|
+
"type": "object",
|
|
3143
|
+
"properties": {}
|
|
3144
|
+
}
|
|
3145
|
+
},
|
|
3146
|
+
{
|
|
3147
|
+
"name": "get-transactions",
|
|
3148
|
+
"description": "Get transactions for a Wise profile with optional filters",
|
|
3149
|
+
"schema": {
|
|
3150
|
+
"type": "object",
|
|
3151
|
+
"properties": {}
|
|
3152
|
+
}
|
|
3153
|
+
},
|
|
3154
|
+
{
|
|
3155
|
+
"name": "get-exchange-rate",
|
|
3156
|
+
"description": "Get current exchange rate between two currencies",
|
|
3157
|
+
"schema": {
|
|
3158
|
+
"type": "object",
|
|
3159
|
+
"properties": {}
|
|
3160
|
+
}
|
|
3161
|
+
},
|
|
3162
|
+
{
|
|
3163
|
+
"name": "get-spending-summary",
|
|
3164
|
+
"description": "Get spending summary with breakdown by category, month, or counterparty",
|
|
3165
|
+
"schema": {
|
|
3166
|
+
"type": "object",
|
|
3167
|
+
"properties": {}
|
|
3168
|
+
}
|
|
3169
|
+
}
|
|
3170
|
+
]
|
|
3171
|
+
}
|
|
3172
|
+
}
|