@dominusnode/gemini-functions 1.0.0

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/functions.json ADDED
@@ -0,0 +1,377 @@
1
+ [
2
+ {
3
+ "name": "dominusnode_proxied_fetch",
4
+ "description": "Make an HTTP request through DomiNode's rotating proxy network. Routes traffic through datacenter ($3/GB) or residential ($5/GB) proxies with optional geo-targeting. Useful for accessing geo-restricted content, avoiding IP blocks, or web scraping. Private/internal IPs and sanctioned countries (CU, IR, KP, RU, SY) are blocked.",
5
+ "parameters": {
6
+ "type": "OBJECT",
7
+ "properties": {
8
+ "url": {
9
+ "type": "STRING",
10
+ "description": "The URL to fetch. Must be http:// or https://. Private/internal IPs (10.x, 172.16-31.x, 192.168.x, 127.x, localhost) and non-standard IP representations (hex, octal, decimal) are blocked for SSRF prevention."
11
+ },
12
+ "method": {
13
+ "type": "STRING",
14
+ "description": "HTTP method to use for the request. Only read-only methods are permitted. One of: GET, HEAD, OPTIONS. Defaults to GET."
15
+ },
16
+ "country": {
17
+ "type": "STRING",
18
+ "description": "Two-letter ISO 3166-1 alpha-2 country code for geo-targeting (e.g., 'US', 'GB', 'DE', 'JP'). Supported countries: US, GB, DE, FR, JP, BR, AU, CA, IN, NL, SG, KR. Sanctioned countries (CU, IR, KP, RU, SY) are blocked."
19
+ },
20
+ "proxy_type": {
21
+ "type": "STRING",
22
+ "description": "Proxy type. One of: dc, residential. 'dc' (datacenter, $3/GB, fastest, suitable for most scraping) or 'residential' ($5/GB, uses real ISP IPs, hardest to detect/block). Defaults to dc."
23
+ },
24
+ "headers": {
25
+ "type": "OBJECT",
26
+ "description": "Optional HTTP headers as key-value string pairs. Security-sensitive headers (Host, Connection, Content-Length, Transfer-Encoding, Proxy-Authorization, Authorization, User-Agent) are stripped to prevent injection."
27
+ }
28
+ },
29
+ "required": ["url"]
30
+ }
31
+ },
32
+ {
33
+ "name": "dominusnode_check_balance",
34
+ "description": "Check the current wallet balance for the authenticated DomiNode account. Returns balance in cents and USD, currency, and last top-up timestamp. The wallet uses a prepaid model -- top up first, then usage is debited automatically.",
35
+ "parameters": {
36
+ "type": "OBJECT",
37
+ "properties": {},
38
+ "required": []
39
+ }
40
+ },
41
+ {
42
+ "name": "dominusnode_check_usage",
43
+ "description": "Check proxy usage statistics for the authenticated DomiNode account. Returns total bytes transferred, total cost, and request count for the specified period. Useful for monitoring bandwidth consumption and spending.",
44
+ "parameters": {
45
+ "type": "OBJECT",
46
+ "properties": {
47
+ "period": {
48
+ "type": "STRING",
49
+ "description": "Time period to query. One of: day (last 24 hours), week (last 7 days), month (last 30 days). Defaults to month."
50
+ }
51
+ },
52
+ "required": []
53
+ }
54
+ },
55
+ {
56
+ "name": "dominusnode_get_proxy_config",
57
+ "description": "Get DomiNode proxy endpoint configuration and supported features. Returns HTTP and SOCKS5 proxy connection details, list of supported countries for geo-targeting, blocked/sanctioned countries, and geo-targeting capabilities. Use this to discover available proxy endpoints before making proxied requests.",
58
+ "parameters": {
59
+ "type": "OBJECT",
60
+ "properties": {},
61
+ "required": []
62
+ }
63
+ },
64
+ {
65
+ "name": "dominusnode_list_sessions",
66
+ "description": "List all currently active proxy sessions for the authenticated DomiNode account. Returns session IDs, start times, and status. Useful for monitoring concurrent connections and debugging active proxy usage.",
67
+ "parameters": {
68
+ "type": "OBJECT",
69
+ "properties": {},
70
+ "required": []
71
+ }
72
+ },
73
+ {
74
+ "name": "dominusnode_create_agentic_wallet",
75
+ "description": "Create a new agentic wallet (sub-wallet) for an AI agent. Agentic wallets are server-side custodial sub-wallets with per-transaction spending limits, funded from the main wallet. They allow you to give AI agents controlled access to proxy bandwidth without exposing the main wallet. Maximum balance per agentic wallet is $10,000.00 (1,000,000 cents).",
76
+ "parameters": {
77
+ "type": "OBJECT",
78
+ "properties": {
79
+ "label": {
80
+ "type": "STRING",
81
+ "description": "Human-readable label for the agentic wallet (e.g., 'scraper-bot-1', 'research-agent'). Used for identification in listings and logs. Must be 1-100 characters, alphanumeric with hyphens and underscores."
82
+ },
83
+ "spending_limit_cents": {
84
+ "type": "INTEGER",
85
+ "description": "Per-transaction spending limit in cents. Controls the maximum amount that can be debited in a single proxy session. Must be a positive integer (minimum 1), no greater than 2,147,483,647. Example: 500 = $5.00 limit per transaction."
86
+ },
87
+ "daily_limit_cents": {
88
+ "type": "INTEGER",
89
+ "description": "Optional daily spending budget in cents (resets midnight UTC). Must be between 1 and 1,000,000. Omit to not set a daily limit."
90
+ },
91
+ "allowed_domains": {
92
+ "type": "ARRAY",
93
+ "description": "Optional domain allowlist for proxy requests. Only these domains will be accessible. Maximum 100 entries, each must be a valid domain name with at most 253 characters.",
94
+ "items": { "type": "STRING" }
95
+ }
96
+ },
97
+ "required": ["label", "spending_limit_cents"]
98
+ }
99
+ },
100
+ {
101
+ "name": "dominusnode_fund_agentic_wallet",
102
+ "description": "Fund an agentic wallet by transferring balance from the main wallet. The amount is debited from your main wallet and credited to the specified agentic wallet. Maximum agentic wallet balance is $10,000.00 (1,000,000 cents). Main wallet must have sufficient balance.",
103
+ "parameters": {
104
+ "type": "OBJECT",
105
+ "properties": {
106
+ "wallet_id": {
107
+ "type": "STRING",
108
+ "description": "The UUID of the agentic wallet to fund. Obtain this from dominusnode_create_agentic_wallet or by listing agentic wallets."
109
+ },
110
+ "amount_cents": {
111
+ "type": "INTEGER",
112
+ "description": "Amount to transfer in cents. Must be a positive integer, no greater than 2,147,483,647. Example: 1000 = $10.00. The agentic wallet's resulting balance cannot exceed $10,000.00 (1,000,000 cents)."
113
+ }
114
+ },
115
+ "required": ["wallet_id", "amount_cents"]
116
+ }
117
+ },
118
+ {
119
+ "name": "dominusnode_agentic_wallet_balance",
120
+ "description": "Check the balance and details of a specific agentic wallet. Returns the wallet ID, label, balance in cents, spending limit, status (active/frozen), and creation timestamp.",
121
+ "parameters": {
122
+ "type": "OBJECT",
123
+ "properties": {
124
+ "wallet_id": {
125
+ "type": "STRING",
126
+ "description": "The UUID of the agentic wallet to query. Obtain this from dominusnode_create_agentic_wallet or by listing agentic wallets."
127
+ }
128
+ },
129
+ "required": ["wallet_id"]
130
+ }
131
+ },
132
+ {
133
+ "name": "dominusnode_list_agentic_wallets",
134
+ "description": "List all agentic wallets (sub-wallets) associated with your account. Returns wallet IDs, labels, balances, spending limits, and status (active/frozen) for each.",
135
+ "parameters": {
136
+ "type": "OBJECT",
137
+ "properties": {},
138
+ "required": []
139
+ }
140
+ },
141
+ {
142
+ "name": "dominusnode_agentic_transactions",
143
+ "description": "Get transaction history for a specific agentic wallet. Shows funding, proxy usage charges, and refunds.",
144
+ "parameters": {
145
+ "type": "OBJECT",
146
+ "properties": {
147
+ "wallet_id": {
148
+ "type": "STRING",
149
+ "description": "The UUID of the agentic wallet to query."
150
+ },
151
+ "limit": {
152
+ "type": "INTEGER",
153
+ "description": "Number of transactions to return. Must be between 1 and 100. Defaults to 20."
154
+ }
155
+ },
156
+ "required": ["wallet_id"]
157
+ }
158
+ },
159
+ {
160
+ "name": "dominusnode_freeze_agentic_wallet",
161
+ "description": "Freeze an agentic wallet to temporarily disable it. Frozen wallets cannot be used for proxy billing until unfrozen. The balance is preserved. Useful for pausing an agent's spending.",
162
+ "parameters": {
163
+ "type": "OBJECT",
164
+ "properties": {
165
+ "wallet_id": {
166
+ "type": "STRING",
167
+ "description": "The UUID of the agentic wallet to freeze."
168
+ }
169
+ },
170
+ "required": ["wallet_id"]
171
+ }
172
+ },
173
+ {
174
+ "name": "dominusnode_unfreeze_agentic_wallet",
175
+ "description": "Unfreeze a previously frozen agentic wallet to re-enable it for proxy billing. The balance and spending limit are preserved.",
176
+ "parameters": {
177
+ "type": "OBJECT",
178
+ "properties": {
179
+ "wallet_id": {
180
+ "type": "STRING",
181
+ "description": "The UUID of the agentic wallet to unfreeze."
182
+ }
183
+ },
184
+ "required": ["wallet_id"]
185
+ }
186
+ },
187
+ {
188
+ "name": "dominusnode_delete_agentic_wallet",
189
+ "description": "Delete an agentic wallet permanently. Any remaining balance is automatically refunded to the main wallet. Cannot delete frozen wallets (unfreeze first). Transaction history is removed.",
190
+ "parameters": {
191
+ "type": "OBJECT",
192
+ "properties": {
193
+ "wallet_id": {
194
+ "type": "STRING",
195
+ "description": "The UUID of the agentic wallet to delete."
196
+ }
197
+ },
198
+ "required": ["wallet_id"]
199
+ }
200
+ },
201
+ {
202
+ "name": "dominusnode_update_wallet_policy",
203
+ "description": "Update the policy of an agentic wallet. Sets or clears the daily budget cap and/or domain allowlist for an existing agentic wallet. Pass null to clear a field. At least one of daily_limit_cents or allowed_domains must be provided.",
204
+ "parameters": {
205
+ "type": "OBJECT",
206
+ "properties": {
207
+ "wallet_id": {
208
+ "type": "STRING",
209
+ "description": "The UUID of the agentic wallet to update. Obtain this from dominusnode_create_agentic_wallet or by listing agentic wallets."
210
+ },
211
+ "daily_limit_cents": {
212
+ "type": "INTEGER",
213
+ "description": "Daily spending budget in cents (1-1,000,000). Pass null to clear the daily limit. Resets at midnight UTC."
214
+ },
215
+ "allowed_domains": {
216
+ "type": "ARRAY",
217
+ "description": "Domain allowlist for proxy requests. Pass null to clear the allowlist. Maximum 100 entries, each must be a valid domain name with at most 253 characters.",
218
+ "items": { "type": "STRING" }
219
+ }
220
+ },
221
+ "required": ["wallet_id"]
222
+ }
223
+ },
224
+ {
225
+ "name": "dominusnode_create_team",
226
+ "description": "Create a new team for shared proxy billing. Teams have a shared wallet and can have multiple members with different roles (owner, admin, member). Team API keys bill against the team wallet. Requires email verification.",
227
+ "parameters": {
228
+ "type": "OBJECT",
229
+ "properties": {
230
+ "name": {
231
+ "type": "STRING",
232
+ "description": "Team name. Must be between 1 and 100 characters."
233
+ },
234
+ "max_members": {
235
+ "type": "INTEGER",
236
+ "description": "Maximum number of team members. Must be between 1 and 100. Leave unset for no limit."
237
+ }
238
+ },
239
+ "required": ["name"]
240
+ }
241
+ },
242
+ {
243
+ "name": "dominusnode_list_teams",
244
+ "description": "List all teams you belong to, including your role in each team, the team balance, and member count. Returns teams where you are owner, admin, or member.",
245
+ "parameters": {
246
+ "type": "OBJECT",
247
+ "properties": {},
248
+ "required": []
249
+ }
250
+ },
251
+ {
252
+ "name": "dominusnode_team_details",
253
+ "description": "Get detailed information about a specific team including balance, member count, settings, and your role. Requires team membership.",
254
+ "parameters": {
255
+ "type": "OBJECT",
256
+ "properties": {
257
+ "team_id": {
258
+ "type": "STRING",
259
+ "description": "The UUID of the team to query."
260
+ }
261
+ },
262
+ "required": ["team_id"]
263
+ }
264
+ },
265
+ {
266
+ "name": "dominusnode_team_fund",
267
+ "description": "Transfer funds from your personal wallet to a team wallet. Only team owners and admins can fund. Requires email verification.",
268
+ "parameters": {
269
+ "type": "OBJECT",
270
+ "properties": {
271
+ "team_id": {
272
+ "type": "STRING",
273
+ "description": "The UUID of the team to fund."
274
+ },
275
+ "amount_cents": {
276
+ "type": "INTEGER",
277
+ "description": "Amount to transfer in cents. Must be between 100 ($1) and 1,000,000 ($10,000)."
278
+ }
279
+ },
280
+ "required": ["team_id", "amount_cents"]
281
+ }
282
+ },
283
+ {
284
+ "name": "dominusnode_team_create_key",
285
+ "description": "Create a shared API key for a team. All proxy usage with this key bills against the team wallet. Only team owners and admins can create keys. The full key is shown only once. Requires email verification.",
286
+ "parameters": {
287
+ "type": "OBJECT",
288
+ "properties": {
289
+ "team_id": {
290
+ "type": "STRING",
291
+ "description": "The UUID of the team."
292
+ },
293
+ "label": {
294
+ "type": "STRING",
295
+ "description": "Descriptive label for the API key (e.g., 'production', 'staging'). Must be between 1 and 100 characters."
296
+ }
297
+ },
298
+ "required": ["team_id", "label"]
299
+ }
300
+ },
301
+ {
302
+ "name": "dominusnode_team_usage",
303
+ "description": "Get the team wallet transaction history including funding, proxy usage charges, and refunds. Requires team membership.",
304
+ "parameters": {
305
+ "type": "OBJECT",
306
+ "properties": {
307
+ "team_id": {
308
+ "type": "STRING",
309
+ "description": "The UUID of the team."
310
+ },
311
+ "limit": {
312
+ "type": "INTEGER",
313
+ "description": "Number of transactions to return. Must be between 1 and 100. Defaults to 20."
314
+ }
315
+ },
316
+ "required": ["team_id"]
317
+ }
318
+ },
319
+ {
320
+ "name": "dominusnode_update_team",
321
+ "description": "Update a team's settings. Only team owners and admins can update. You can change the team name and/or maximum member count.",
322
+ "parameters": {
323
+ "type": "OBJECT",
324
+ "properties": {
325
+ "team_id": {
326
+ "type": "STRING",
327
+ "description": "The UUID of the team to update."
328
+ },
329
+ "name": {
330
+ "type": "STRING",
331
+ "description": "New team name. Must be between 1 and 100 characters. Omit to keep current name."
332
+ },
333
+ "max_members": {
334
+ "type": "INTEGER",
335
+ "description": "New maximum number of team members. Must be between 1 and 100. Omit to keep current limit."
336
+ }
337
+ },
338
+ "required": ["team_id"]
339
+ }
340
+ },
341
+ {
342
+ "name": "dominusnode_update_team_member_role",
343
+ "description": "Update a team member's role. Only team owners and admins can change roles. Cannot change the owner's role. Valid roles are 'member' and 'admin'.",
344
+ "parameters": {
345
+ "type": "OBJECT",
346
+ "properties": {
347
+ "team_id": {
348
+ "type": "STRING",
349
+ "description": "The UUID of the team."
350
+ },
351
+ "user_id": {
352
+ "type": "STRING",
353
+ "description": "The UUID of the team member whose role to change."
354
+ },
355
+ "role": {
356
+ "type": "STRING",
357
+ "description": "The new role for the team member. One of: member, admin."
358
+ }
359
+ },
360
+ "required": ["team_id", "user_id", "role"]
361
+ }
362
+ },
363
+ {
364
+ "name": "dominusnode_topup_paypal",
365
+ "description": "Create a PayPal wallet top-up session. Initiates a PayPal payment for the specified amount to add funds to your DomiNode wallet. Returns a PayPal approval URL to complete the payment.",
366
+ "parameters": {
367
+ "type": "OBJECT",
368
+ "properties": {
369
+ "amount_cents": {
370
+ "type": "INTEGER",
371
+ "description": "Amount to top up in cents. Must be a positive integer, no greater than 2,147,483,647. Example: 1000 = $10.00."
372
+ }
373
+ },
374
+ "required": ["amount_cents"]
375
+ }
376
+ }
377
+ ]
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@dominusnode/gemini-functions",
3
+ "version": "1.0.0",
4
+ "description": "DomiNode function declarations and handlers for Google Gemini / Vertex AI",
5
+ "main": "dist/handler.js",
6
+ "types": "dist/handler.d.ts",
7
+ "type": "module",
8
+ "files": ["dist/", "functions.json", "README.md", "LICENSE"],
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "test": "vitest run",
12
+ "test:watch": "vitest",
13
+ "test:py": "python -m pytest test_handler.py -v"
14
+ },
15
+ "keywords": ["dominusnode", "gemini", "vertex-ai", "proxy", "function-calling"],
16
+ "license": "MIT",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "https://github.com/Dominus-Node/dominusnode"
20
+ },
21
+ "engines": {
22
+ "node": ">=18.0.0"
23
+ },
24
+ "devDependencies": {
25
+ "vitest": "^3.0.0",
26
+ "typescript": "^5.7.0",
27
+ "@types/node": "^22.0.0"
28
+ }
29
+ }