@framers/agentos-ext-domain-porkbun 0.1.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.
Files changed (42) hide show
  1. package/LICENSE +98 -0
  2. package/dist/PorkbunService.d.ts +119 -0
  3. package/dist/PorkbunService.d.ts.map +1 -0
  4. package/dist/PorkbunService.js +224 -0
  5. package/dist/PorkbunService.js.map +1 -0
  6. package/dist/index.d.ts +43 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +76 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/tools/configureDns.d.ts +75 -0
  11. package/dist/tools/configureDns.d.ts.map +1 -0
  12. package/dist/tools/configureDns.js +91 -0
  13. package/dist/tools/configureDns.js.map +1 -0
  14. package/dist/tools/listDomains.d.ts +26 -0
  15. package/dist/tools/listDomains.d.ts.map +1 -0
  16. package/dist/tools/listDomains.js +32 -0
  17. package/dist/tools/listDomains.js.map +1 -0
  18. package/dist/tools/registerDomain.d.ts +89 -0
  19. package/dist/tools/registerDomain.d.ts.map +1 -0
  20. package/dist/tools/registerDomain.js +58 -0
  21. package/dist/tools/registerDomain.js.map +1 -0
  22. package/dist/tools/searchDomain.d.ts +34 -0
  23. package/dist/tools/searchDomain.d.ts.map +1 -0
  24. package/dist/tools/searchDomain.js +34 -0
  25. package/dist/tools/searchDomain.js.map +1 -0
  26. package/dist/tools/transferDomain.d.ts +39 -0
  27. package/dist/tools/transferDomain.d.ts.map +1 -0
  28. package/dist/tools/transferDomain.js +35 -0
  29. package/dist/tools/transferDomain.js.map +1 -0
  30. package/manifest.json +33 -0
  31. package/package.json +65 -0
  32. package/src/PorkbunService.ts +327 -0
  33. package/src/index.ts +133 -0
  34. package/src/tools/configureDns.ts +114 -0
  35. package/src/tools/listDomains.ts +33 -0
  36. package/src/tools/registerDomain.ts +74 -0
  37. package/src/tools/searchDomain.ts +39 -0
  38. package/src/tools/transferDomain.ts +41 -0
  39. package/test/PorkbunService.test.ts +434 -0
  40. package/test/index.test.ts +50 -0
  41. package/test/tools.test.ts +399 -0
  42. package/tsconfig.json +22 -0
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @fileoverview PorkbunConfigureDnsTool — manage DNS records for a Porkbun domain.
3
+ */
4
+ import type { PorkbunService, DnsRecord } from '../PorkbunService.js';
5
+ export interface ConfigureDnsInput {
6
+ domain: string;
7
+ action?: 'add' | 'remove' | 'list' | 'update';
8
+ recordId?: string;
9
+ type?: 'A' | 'AAAA' | 'CNAME' | 'TXT' | 'MX' | 'NS' | 'SRV' | 'TLSA' | 'CAA' | 'ALIAS';
10
+ name?: string;
11
+ content?: string;
12
+ ttl?: string;
13
+ prio?: string;
14
+ }
15
+ export declare class PorkbunConfigureDnsTool {
16
+ private service;
17
+ readonly id = "porkbunConfigureDns";
18
+ readonly name = "porkbunConfigureDns";
19
+ readonly displayName = "Configure DNS Records";
20
+ readonly description = "Manage DNS records for a domain on Porkbun. Supports adding, removing, listing, and updating records of type A, AAAA, CNAME, TXT, MX, NS, SRV, TLSA, CAA, and ALIAS.";
21
+ readonly category = "domain";
22
+ readonly version = "0.1.0";
23
+ readonly hasSideEffects = true;
24
+ readonly inputSchema: {
25
+ type: "object";
26
+ properties: {
27
+ domain: {
28
+ type: string;
29
+ description: string;
30
+ };
31
+ action: {
32
+ type: string;
33
+ enum: string[];
34
+ description: string;
35
+ };
36
+ recordId: {
37
+ type: string;
38
+ description: string;
39
+ };
40
+ type: {
41
+ type: string;
42
+ enum: string[];
43
+ description: string;
44
+ };
45
+ name: {
46
+ type: string;
47
+ description: string;
48
+ };
49
+ content: {
50
+ type: string;
51
+ description: string;
52
+ };
53
+ ttl: {
54
+ type: string;
55
+ description: string;
56
+ };
57
+ prio: {
58
+ type: string;
59
+ description: string;
60
+ };
61
+ };
62
+ required: string[];
63
+ };
64
+ constructor(service: PorkbunService);
65
+ execute(args: ConfigureDnsInput): Promise<{
66
+ success: boolean;
67
+ data?: DnsRecord[] | DnsRecord | {
68
+ id: string;
69
+ } | {
70
+ deleted: boolean;
71
+ };
72
+ error?: string;
73
+ }>;
74
+ }
75
+ //# sourceMappingURL=configureDns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configureDns.d.ts","sourceRoot":"","sources":["../../src/tools/configureDns.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,GAAG,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;IACvF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,uBAAuB;IA4BtB,OAAO,CAAC,OAAO;IA3B3B,QAAQ,CAAC,EAAE,yBAAyB;IACpC,QAAQ,CAAC,IAAI,yBAAyB;IACtC,QAAQ,CAAC,WAAW,2BAA2B;IAC/C,QAAQ,CAAC,WAAW,0KAA0K;IAC9L,QAAQ,CAAC,QAAQ,YAAY;IAC7B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAE/B,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiBlB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAC9C,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;QACvE,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CA6DH"}
@@ -0,0 +1,91 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @fileoverview PorkbunConfigureDnsTool — manage DNS records for a Porkbun domain.
4
+ */
5
+ export class PorkbunConfigureDnsTool {
6
+ service;
7
+ id = 'porkbunConfigureDns';
8
+ name = 'porkbunConfigureDns';
9
+ displayName = 'Configure DNS Records';
10
+ description = 'Manage DNS records for a domain on Porkbun. Supports adding, removing, listing, and updating records of type A, AAAA, CNAME, TXT, MX, NS, SRV, TLSA, CAA, and ALIAS.';
11
+ category = 'domain';
12
+ version = '0.1.0';
13
+ hasSideEffects = true;
14
+ inputSchema = {
15
+ type: 'object',
16
+ properties: {
17
+ domain: { type: 'string', description: 'The domain name (e.g. "example.com")' },
18
+ action: { type: 'string', enum: ['add', 'remove', 'list', 'update'], description: 'Action to perform (default: list)' },
19
+ recordId: { type: 'string', description: 'The DNS record ID (required for remove and update actions)' },
20
+ type: {
21
+ type: 'string',
22
+ enum: ['A', 'AAAA', 'CNAME', 'TXT', 'MX', 'NS', 'SRV', 'TLSA', 'CAA', 'ALIAS'],
23
+ description: 'DNS record type (required for add action)',
24
+ },
25
+ name: { type: 'string', description: 'Subdomain or record name (e.g. "www", "mail"). Empty string or omit for root domain.' },
26
+ content: { type: 'string', description: 'Record value/content (e.g. IP address, hostname, TXT value)' },
27
+ ttl: { type: 'string', description: 'Time to live in seconds (default: "300")' },
28
+ prio: { type: 'string', description: 'Priority (required for MX records, optional for others)' },
29
+ },
30
+ required: ['domain'],
31
+ };
32
+ constructor(service) {
33
+ this.service = service;
34
+ }
35
+ async execute(args) {
36
+ try {
37
+ const action = args.action ?? 'list';
38
+ switch (action) {
39
+ case 'list': {
40
+ const records = await this.service.listDnsRecords(args.domain);
41
+ return { success: true, data: records };
42
+ }
43
+ case 'add': {
44
+ if (!args.type) {
45
+ return { success: false, error: 'Record type is required for the "add" action. Provide one of: A, AAAA, CNAME, TXT, MX, NS, SRV, TLSA, CAA, ALIAS.' };
46
+ }
47
+ if (!args.content) {
48
+ return { success: false, error: 'Record content is required for the "add" action (e.g. IP address, hostname, TXT value).' };
49
+ }
50
+ const created = await this.service.createDnsRecord(args.domain, {
51
+ name: args.name,
52
+ type: args.type,
53
+ content: args.content,
54
+ ttl: args.ttl,
55
+ prio: args.prio,
56
+ });
57
+ return { success: true, data: created };
58
+ }
59
+ case 'remove': {
60
+ if (!args.recordId) {
61
+ return { success: false, error: 'Record ID is required for the "remove" action. Use action "list" first to find the record ID.' };
62
+ }
63
+ await this.service.deleteDnsRecord(args.domain, args.recordId);
64
+ return { success: true, data: { deleted: true } };
65
+ }
66
+ case 'update': {
67
+ if (!args.recordId) {
68
+ return { success: false, error: 'Record ID is required for the "update" action. Use action "list" first to find the record ID.' };
69
+ }
70
+ await this.service.editDnsRecord(args.domain, args.recordId, {
71
+ name: args.name,
72
+ type: args.type,
73
+ content: args.content,
74
+ ttl: args.ttl,
75
+ prio: args.prio,
76
+ });
77
+ // Return the updated records for the domain so the caller can confirm
78
+ const records = await this.service.listDnsRecords(args.domain);
79
+ const updated = records.find(r => r.id === args.recordId);
80
+ return { success: true, data: updated ?? records };
81
+ }
82
+ default:
83
+ return { success: false, error: `Unknown action: "${action}". Use one of: add, remove, list, update.` };
84
+ }
85
+ }
86
+ catch (err) {
87
+ return { success: false, error: err.message };
88
+ }
89
+ }
90
+ }
91
+ //# sourceMappingURL=configureDns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configureDns.js","sourceRoot":"","sources":["../../src/tools/configureDns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @fileoverview PorkbunListDomainsTool — list all domains owned by the Porkbun account.
3
+ */
4
+ import type { PorkbunService, OwnedDomain } from '../PorkbunService.js';
5
+ export declare class PorkbunListDomainsTool {
6
+ private service;
7
+ readonly id = "porkbunListDomains";
8
+ readonly name = "porkbunListDomains";
9
+ readonly displayName = "List Owned Domains";
10
+ readonly description = "List all domains owned by the connected Porkbun account. Shows domain name, status, TLD, creation and expiry dates, security lock, WHOIS privacy, and auto-renew settings.";
11
+ readonly category = "domain";
12
+ readonly version = "0.1.0";
13
+ readonly hasSideEffects = false;
14
+ readonly inputSchema: {
15
+ type: "object";
16
+ properties: {};
17
+ required: string[];
18
+ };
19
+ constructor(service: PorkbunService);
20
+ execute(_args: Record<string, never>): Promise<{
21
+ success: boolean;
22
+ data?: OwnedDomain[];
23
+ error?: string;
24
+ }>;
25
+ }
26
+ //# sourceMappingURL=listDomains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listDomains.d.ts","sourceRoot":"","sources":["../../src/tools/listDomains.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExE,qBAAa,sBAAsB;IAerB,OAAO,CAAC,OAAO;IAd3B,QAAQ,CAAC,EAAE,wBAAwB;IACnC,QAAQ,CAAC,IAAI,wBAAwB;IACrC,QAAQ,CAAC,WAAW,wBAAwB;IAC5C,QAAQ,CAAC,WAAW,gLAAgL;IACpM,QAAQ,CAAC,QAAQ,YAAY;IAC7B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,SAAS;IAEhC,QAAQ,CAAC,WAAW;;;kBAGF,MAAM,EAAE;MACxB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAQjH"}
@@ -0,0 +1,32 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @fileoverview PorkbunListDomainsTool — list all domains owned by the Porkbun account.
4
+ */
5
+ export class PorkbunListDomainsTool {
6
+ service;
7
+ id = 'porkbunListDomains';
8
+ name = 'porkbunListDomains';
9
+ displayName = 'List Owned Domains';
10
+ description = 'List all domains owned by the connected Porkbun account. Shows domain name, status, TLD, creation and expiry dates, security lock, WHOIS privacy, and auto-renew settings.';
11
+ category = 'domain';
12
+ version = '0.1.0';
13
+ hasSideEffects = false;
14
+ inputSchema = {
15
+ type: 'object',
16
+ properties: {},
17
+ required: [],
18
+ };
19
+ constructor(service) {
20
+ this.service = service;
21
+ }
22
+ async execute(_args) {
23
+ try {
24
+ const domains = await this.service.listDomains();
25
+ return { success: true, data: domains };
26
+ }
27
+ catch (err) {
28
+ return { success: false, error: err.message };
29
+ }
30
+ }
31
+ }
32
+ //# sourceMappingURL=listDomains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listDomains.js","sourceRoot":"","sources":["../../src/tools/listDomains.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;GAEG;AAIH,MAAM,OAAO,sBAAsB;IAeb;IAdX,EAAE,GAAG,oBAAoB,CAAC;IAC1B,IAAI,GAAG,oBAAoB,CAAC;IAC5B,WAAW,GAAG,oBAAoB,CAAC;IACnC,WAAW,GAAG,4KAA4K,CAAC;IAC3L,QAAQ,GAAG,QAAQ,CAAC;IACpB,OAAO,GAAG,OAAO,CAAC;IAClB,cAAc,GAAG,KAAK,CAAC;IAEvB,WAAW,GAAG;QACrB,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAc;KACzB,CAAC;IAEF,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,KAA4B;QACxC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * @fileoverview PorkbunRegisterDomainTool — register (purchase) a domain through Porkbun.
3
+ */
4
+ import type { PorkbunService, RegisterDomainResult } from '../PorkbunService.js';
5
+ export interface RegisterDomainInput {
6
+ domain: string;
7
+ years?: number;
8
+ firstName?: string;
9
+ lastName?: string;
10
+ email?: string;
11
+ phone?: string;
12
+ city?: string;
13
+ state?: string;
14
+ zip?: string;
15
+ country?: string;
16
+ organization?: string;
17
+ address?: string;
18
+ }
19
+ export declare class PorkbunRegisterDomainTool {
20
+ private service;
21
+ readonly id = "porkbunRegisterDomain";
22
+ readonly name = "porkbunRegisterDomain";
23
+ readonly displayName = "Register Domain";
24
+ readonly description = "Register and purchase a domain through Porkbun. WARNING: This is a REAL PURCHASE that will charge the payment method on file in the connected Porkbun account. The domain will be registered for the specified number of years (default: 1). Contact fields are optional \u2014 Porkbun uses account defaults if omitted.";
25
+ readonly category = "domain";
26
+ readonly version = "0.1.0";
27
+ readonly hasSideEffects = true;
28
+ readonly inputSchema: {
29
+ type: "object";
30
+ properties: {
31
+ domain: {
32
+ type: string;
33
+ description: string;
34
+ };
35
+ years: {
36
+ type: string;
37
+ description: string;
38
+ };
39
+ firstName: {
40
+ type: string;
41
+ description: string;
42
+ };
43
+ lastName: {
44
+ type: string;
45
+ description: string;
46
+ };
47
+ email: {
48
+ type: string;
49
+ description: string;
50
+ };
51
+ phone: {
52
+ type: string;
53
+ description: string;
54
+ };
55
+ city: {
56
+ type: string;
57
+ description: string;
58
+ };
59
+ state: {
60
+ type: string;
61
+ description: string;
62
+ };
63
+ zip: {
64
+ type: string;
65
+ description: string;
66
+ };
67
+ country: {
68
+ type: string;
69
+ description: string;
70
+ };
71
+ organization: {
72
+ type: string;
73
+ description: string;
74
+ };
75
+ address: {
76
+ type: string;
77
+ description: string;
78
+ };
79
+ };
80
+ required: string[];
81
+ };
82
+ constructor(service: PorkbunService);
83
+ execute(args: RegisterDomainInput): Promise<{
84
+ success: boolean;
85
+ data?: RegisterDomainResult;
86
+ error?: string;
87
+ }>;
88
+ }
89
+ //# sourceMappingURL=registerDomain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerDomain.d.ts","sourceRoot":"","sources":["../../src/tools/registerDomain.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,yBAAyB;IA4BxB,OAAO,CAAC,OAAO;IA3B3B,QAAQ,CAAC,EAAE,2BAA2B;IACtC,QAAQ,CAAC,IAAI,2BAA2B;IACxC,QAAQ,CAAC,WAAW,qBAAqB;IACzC,QAAQ,CAAC,WAAW,+TAA0T;IAC9U,QAAQ,CAAC,QAAQ,YAAY;IAC7B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAE/B,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiBlB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,oBAAoB,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAqBrH"}
@@ -0,0 +1,58 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @fileoverview PorkbunRegisterDomainTool — register (purchase) a domain through Porkbun.
4
+ */
5
+ export class PorkbunRegisterDomainTool {
6
+ service;
7
+ id = 'porkbunRegisterDomain';
8
+ name = 'porkbunRegisterDomain';
9
+ displayName = 'Register Domain';
10
+ description = 'Register and purchase a domain through Porkbun. WARNING: This is a REAL PURCHASE that will charge the payment method on file in the connected Porkbun account. The domain will be registered for the specified number of years (default: 1). Contact fields are optional — Porkbun uses account defaults if omitted.';
11
+ category = 'domain';
12
+ version = '0.1.0';
13
+ hasSideEffects = true;
14
+ inputSchema = {
15
+ type: 'object',
16
+ properties: {
17
+ domain: { type: 'string', description: 'The domain name to register (e.g. "example.com")' },
18
+ years: { type: 'number', description: 'Number of years to register (default: 1, max: 10)' },
19
+ firstName: { type: 'string', description: 'Registrant first name (uses account default if omitted)' },
20
+ lastName: { type: 'string', description: 'Registrant last name (uses account default if omitted)' },
21
+ email: { type: 'string', description: 'Registrant email (uses account default if omitted)' },
22
+ phone: { type: 'string', description: 'Registrant phone number (uses account default if omitted)' },
23
+ city: { type: 'string', description: 'Registrant city (uses account default if omitted)' },
24
+ state: { type: 'string', description: 'Registrant state/province (uses account default if omitted)' },
25
+ zip: { type: 'string', description: 'Registrant postal code (uses account default if omitted)' },
26
+ country: { type: 'string', description: 'Registrant country code, e.g. "US" (uses account default if omitted)' },
27
+ organization: { type: 'string', description: 'Registrant organization (optional)' },
28
+ address: { type: 'string', description: 'Registrant street address (uses account default if omitted)' },
29
+ },
30
+ required: ['domain'],
31
+ };
32
+ constructor(service) {
33
+ this.service = service;
34
+ }
35
+ async execute(args) {
36
+ try {
37
+ const result = await this.service.registerDomain({
38
+ domain: args.domain,
39
+ years: args.years,
40
+ firstName: args.firstName,
41
+ lastName: args.lastName,
42
+ email: args.email,
43
+ phone: args.phone,
44
+ city: args.city,
45
+ state: args.state,
46
+ zip: args.zip,
47
+ country: args.country,
48
+ organization: args.organization,
49
+ address: args.address,
50
+ });
51
+ return { success: true, data: result };
52
+ }
53
+ catch (err) {
54
+ return { success: false, error: err.message };
55
+ }
56
+ }
57
+ }
58
+ //# sourceMappingURL=registerDomain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerDomain.js","sourceRoot":"","sources":["../../src/tools/registerDomain.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;GAEG;AAmBH,MAAM,OAAO,yBAAyB;IA4BhB;IA3BX,EAAE,GAAG,uBAAuB,CAAC;IAC7B,IAAI,GAAG,uBAAuB,CAAC;IAC/B,WAAW,GAAG,iBAAiB,CAAC;IAChC,WAAW,GAAG,sTAAsT,CAAC;IACrU,QAAQ,GAAG,QAAQ,CAAC;IACpB,OAAO,GAAG,OAAO,CAAC;IAClB,cAAc,GAAG,IAAI,CAAC;IAEtB,WAAW,GAAG;QACrB,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kDAAkD,EAAE;YAC3F,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAE;YAC3F,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yDAAyD,EAAE;YACrG,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wDAAwD,EAAE;YACnG,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oDAAoD,EAAE;YAC5F,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2DAA2D,EAAE;YACnG,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAE;YAC1F,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6DAA6D,EAAE;YACrG,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0DAA0D,EAAE;YAChG,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sEAAsE,EAAE;YAChH,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE;YACnF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6DAA6D,EAAE;SACxG;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC;IAEF,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAyB;QACrC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;gBAC/C,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @fileoverview PorkbunSearchDomainTool — check domain availability and get pricing.
3
+ */
4
+ import type { PorkbunService, DomainAvailability } from '../PorkbunService.js';
5
+ export interface SearchDomainInput {
6
+ domain: string;
7
+ }
8
+ export declare class PorkbunSearchDomainTool {
9
+ private service;
10
+ readonly id = "porkbunSearchDomain";
11
+ readonly name = "porkbunSearchDomain";
12
+ readonly displayName = "Search Domain Availability";
13
+ readonly description = "Check if a domain name is available for registration on Porkbun and retrieve pricing information. Provide the full domain including TLD (e.g. \"example.com\", \"mysite.dev\").";
14
+ readonly category = "domain";
15
+ readonly version = "0.1.0";
16
+ readonly hasSideEffects = false;
17
+ readonly inputSchema: {
18
+ type: "object";
19
+ properties: {
20
+ domain: {
21
+ type: string;
22
+ description: string;
23
+ };
24
+ };
25
+ required: string[];
26
+ };
27
+ constructor(service: PorkbunService);
28
+ execute(args: SearchDomainInput): Promise<{
29
+ success: boolean;
30
+ data?: DomainAvailability;
31
+ error?: string;
32
+ }>;
33
+ }
34
+ //# sourceMappingURL=searchDomain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchDomain.d.ts","sourceRoot":"","sources":["../../src/tools/searchDomain.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,uBAAuB;IAiBtB,OAAO,CAAC,OAAO;IAhB3B,QAAQ,CAAC,EAAE,yBAAyB;IACpC,QAAQ,CAAC,IAAI,yBAAyB;IACtC,QAAQ,CAAC,WAAW,gCAAgC;IACpD,QAAQ,CAAC,WAAW,qLAAiL;IACrM,QAAQ,CAAC,QAAQ,YAAY;IAC7B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,SAAS;IAEhC,QAAQ,CAAC,WAAW;;;;;;;;;MAMlB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAQjH"}
@@ -0,0 +1,34 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @fileoverview PorkbunSearchDomainTool — check domain availability and get pricing.
4
+ */
5
+ export class PorkbunSearchDomainTool {
6
+ service;
7
+ id = 'porkbunSearchDomain';
8
+ name = 'porkbunSearchDomain';
9
+ displayName = 'Search Domain Availability';
10
+ description = 'Check if a domain name is available for registration on Porkbun and retrieve pricing information. Provide the full domain including TLD (e.g. "example.com", "mysite.dev").';
11
+ category = 'domain';
12
+ version = '0.1.0';
13
+ hasSideEffects = false;
14
+ inputSchema = {
15
+ type: 'object',
16
+ properties: {
17
+ domain: { type: 'string', description: 'The domain name to check (e.g. "example.com", "coolsite.dev")' },
18
+ },
19
+ required: ['domain'],
20
+ };
21
+ constructor(service) {
22
+ this.service = service;
23
+ }
24
+ async execute(args) {
25
+ try {
26
+ const result = await this.service.checkAvailability(args.domain);
27
+ return { success: true, data: result };
28
+ }
29
+ catch (err) {
30
+ return { success: false, error: err.message };
31
+ }
32
+ }
33
+ }
34
+ //# sourceMappingURL=searchDomain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchDomain.js","sourceRoot":"","sources":["../../src/tools/searchDomain.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;GAEG;AAQH,MAAM,OAAO,uBAAuB;IAiBd;IAhBX,EAAE,GAAG,qBAAqB,CAAC;IAC3B,IAAI,GAAG,qBAAqB,CAAC;IAC7B,WAAW,GAAG,4BAA4B,CAAC;IAC3C,WAAW,GAAG,6KAA6K,CAAC;IAC5L,QAAQ,GAAG,QAAQ,CAAC;IACpB,OAAO,GAAG,OAAO,CAAC;IAClB,cAAc,GAAG,KAAK,CAAC;IAEvB,WAAW,GAAG;QACrB,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+DAA+D,EAAE;SACzG;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC;IAEF,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAuB;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @fileoverview PorkbunTransferDomainTool — initiate a domain transfer to Porkbun.
3
+ */
4
+ import type { PorkbunService, TransferDomainResult } from '../PorkbunService.js';
5
+ export interface TransferDomainInput {
6
+ domain: string;
7
+ authCode: string;
8
+ }
9
+ export declare class PorkbunTransferDomainTool {
10
+ private service;
11
+ readonly id = "porkbunTransferDomain";
12
+ readonly name = "porkbunTransferDomain";
13
+ readonly displayName = "Transfer Domain";
14
+ readonly description = "Initiate a domain transfer to Porkbun from another registrar. Requires the domain name and the authorization/EPP code from the current registrar. The domain must be unlocked at the current registrar before transferring.";
15
+ readonly category = "domain";
16
+ readonly version = "0.1.0";
17
+ readonly hasSideEffects = true;
18
+ readonly inputSchema: {
19
+ type: "object";
20
+ properties: {
21
+ domain: {
22
+ type: string;
23
+ description: string;
24
+ };
25
+ authCode: {
26
+ type: string;
27
+ description: string;
28
+ };
29
+ };
30
+ required: string[];
31
+ };
32
+ constructor(service: PorkbunService);
33
+ execute(args: TransferDomainInput): Promise<{
34
+ success: boolean;
35
+ data?: TransferDomainResult;
36
+ error?: string;
37
+ }>;
38
+ }
39
+ //# sourceMappingURL=transferDomain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferDomain.d.ts","sourceRoot":"","sources":["../../src/tools/transferDomain.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,yBAAyB;IAkBxB,OAAO,CAAC,OAAO;IAjB3B,QAAQ,CAAC,EAAE,2BAA2B;IACtC,QAAQ,CAAC,IAAI,2BAA2B;IACxC,QAAQ,CAAC,WAAW,qBAAqB;IACzC,QAAQ,CAAC,WAAW,iOAAiO;IACrP,QAAQ,CAAC,QAAQ,YAAY;IAC7B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAE/B,QAAQ,CAAC,WAAW;;;;;;;;;;;;;MAOlB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,oBAAoB,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAQrH"}
@@ -0,0 +1,35 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * @fileoverview PorkbunTransferDomainTool — initiate a domain transfer to Porkbun.
4
+ */
5
+ export class PorkbunTransferDomainTool {
6
+ service;
7
+ id = 'porkbunTransferDomain';
8
+ name = 'porkbunTransferDomain';
9
+ displayName = 'Transfer Domain';
10
+ description = 'Initiate a domain transfer to Porkbun from another registrar. Requires the domain name and the authorization/EPP code from the current registrar. The domain must be unlocked at the current registrar before transferring.';
11
+ category = 'domain';
12
+ version = '0.1.0';
13
+ hasSideEffects = true;
14
+ inputSchema = {
15
+ type: 'object',
16
+ properties: {
17
+ domain: { type: 'string', description: 'The domain name to transfer (e.g. "example.com")' },
18
+ authCode: { type: 'string', description: 'The authorization/EPP code from the current registrar (required to authorize the transfer)' },
19
+ },
20
+ required: ['domain', 'authCode'],
21
+ };
22
+ constructor(service) {
23
+ this.service = service;
24
+ }
25
+ async execute(args) {
26
+ try {
27
+ const result = await this.service.transferDomain(args.domain, args.authCode);
28
+ return { success: true, data: result };
29
+ }
30
+ catch (err) {
31
+ return { success: false, error: err.message };
32
+ }
33
+ }
34
+ }
35
+ //# sourceMappingURL=transferDomain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferDomain.js","sourceRoot":"","sources":["../../src/tools/transferDomain.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;GAEG;AASH,MAAM,OAAO,yBAAyB;IAkBhB;IAjBX,EAAE,GAAG,uBAAuB,CAAC;IAC7B,IAAI,GAAG,uBAAuB,CAAC;IAC/B,WAAW,GAAG,iBAAiB,CAAC;IAChC,WAAW,GAAG,6NAA6N,CAAC;IAC5O,QAAQ,GAAG,QAAQ,CAAC;IACpB,OAAO,GAAG,OAAO,CAAC;IAClB,cAAc,GAAG,IAAI,CAAC;IAEtB,WAAW,GAAG;QACrB,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kDAAkD,EAAE;YAC3F,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4FAA4F,EAAE;SACxI;QACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;KACjC,CAAC;IAEF,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAyB;QACrC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF"}
package/manifest.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "$schema": "https://agentos.sh/schemas/extension-manifest-v1.json",
3
+ "id": "com.framers.domains.porkbun",
4
+ "name": "Porkbun Domain Registrar",
5
+ "version": "0.1.0",
6
+ "description": "Search, register, and manage domains through Porkbun. Configure DNS records (A, AAAA, CNAME, TXT, MX, NS), list owned domains, and initiate domain transfers via the Porkbun API v3.",
7
+ "author": {
8
+ "name": "Frame.dev",
9
+ "email": "support@frame.dev",
10
+ "url": "https://github.com/framersai"
11
+ },
12
+ "license": "MIT",
13
+ "keywords": ["domain", "porkbun", "registrar", "dns", "nameserver", "transfer"],
14
+ "agentosVersion": "^2.0.0",
15
+ "categories": ["tool", "domain"],
16
+ "platforms": [],
17
+ "sdk": "none",
18
+ "extensions": [
19
+ { "kind": "tool", "id": "porkbunSearchDomain", "displayName": "Search Domain Availability", "entry": "./dist/tools/searchDomain.js" },
20
+ { "kind": "tool", "id": "porkbunRegisterDomain", "displayName": "Register Domain", "entry": "./dist/tools/registerDomain.js" },
21
+ { "kind": "tool", "id": "porkbunListDomains", "displayName": "List Owned Domains", "entry": "./dist/tools/listDomains.js" },
22
+ { "kind": "tool", "id": "porkbunConfigureDns", "displayName": "Configure DNS Records", "entry": "./dist/tools/configureDns.js" },
23
+ { "kind": "tool", "id": "porkbunTransferDomain", "displayName": "Transfer Domain", "entry": "./dist/tools/transferDomain.js" }
24
+ ],
25
+ "requiredSecrets": ["porkbun.apiKey", "porkbun.secretApiKey"],
26
+ "features": [
27
+ "Check domain availability and pricing across all TLDs",
28
+ "Register and purchase domains directly from Porkbun",
29
+ "Full DNS record management (A, AAAA, CNAME, TXT, MX, NS)",
30
+ "List and inspect all owned domains",
31
+ "Initiate domain transfers to Porkbun"
32
+ ]
33
+ }