@varun-ai07/covenant-mcp 1.3.2 → 2.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.
Files changed (214) hide show
  1. package/dist/abis/GrantProgram.json +778 -0
  2. package/dist/abis/RevisionManager.json +544 -0
  3. package/dist/abis/TrainingMarketplace.json +787 -0
  4. package/dist/cli.js +0 -0
  5. package/dist/config.d.ts +15 -1
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +23 -3
  8. package/dist/config.js.map +1 -1
  9. package/dist/server.d.ts +3 -2
  10. package/dist/server.d.ts.map +1 -1
  11. package/dist/server.js +63 -63
  12. package/dist/server.js.map +1 -1
  13. package/dist/shared-types.js +8 -8
  14. package/dist/tools/{registry.d.ts → corven-agent.d.ts} +1 -1
  15. package/dist/tools/corven-agent.d.ts.map +1 -0
  16. package/dist/tools/corven-agent.js +90 -0
  17. package/dist/tools/corven-agent.js.map +1 -0
  18. package/dist/tools/corven-attest.d.ts +3 -0
  19. package/dist/tools/corven-attest.d.ts.map +1 -0
  20. package/dist/tools/corven-attest.js +87 -0
  21. package/dist/tools/corven-attest.js.map +1 -0
  22. package/dist/tools/{batches.d.ts → corven-batch.d.ts} +1 -1
  23. package/dist/tools/corven-batch.d.ts.map +1 -0
  24. package/dist/tools/corven-batch.js +116 -0
  25. package/dist/tools/corven-batch.js.map +1 -0
  26. package/dist/tools/{bounties.d.ts → corven-bounty.d.ts} +1 -1
  27. package/dist/tools/corven-bounty.d.ts.map +1 -0
  28. package/dist/tools/corven-bounty.js +72 -0
  29. package/dist/tools/corven-bounty.js.map +1 -0
  30. package/dist/tools/{collectives.d.ts → corven-collective.d.ts} +1 -1
  31. package/dist/tools/corven-collective.d.ts.map +1 -0
  32. package/dist/tools/corven-collective.js +105 -0
  33. package/dist/tools/corven-collective.js.map +1 -0
  34. package/dist/tools/corven-fiat.d.ts +3 -0
  35. package/dist/tools/corven-fiat.d.ts.map +1 -0
  36. package/dist/tools/corven-fiat.js +42 -0
  37. package/dist/tools/corven-fiat.js.map +1 -0
  38. package/dist/tools/corven-govern.d.ts +3 -0
  39. package/dist/tools/corven-govern.d.ts.map +1 -0
  40. package/dist/tools/corven-govern.js +65 -0
  41. package/dist/tools/corven-govern.js.map +1 -0
  42. package/dist/tools/{grants.d.ts → corven-grants.d.ts} +1 -1
  43. package/dist/tools/corven-grants.d.ts.map +1 -0
  44. package/dist/tools/corven-grants.js +67 -0
  45. package/dist/tools/corven-grants.js.map +1 -0
  46. package/dist/tools/{insurance.d.ts → corven-insurance.d.ts} +1 -1
  47. package/dist/tools/corven-insurance.d.ts.map +1 -0
  48. package/dist/tools/corven-insurance.js +103 -0
  49. package/dist/tools/corven-insurance.js.map +1 -0
  50. package/dist/tools/{market.d.ts → corven-market.d.ts} +1 -1
  51. package/dist/tools/corven-market.d.ts.map +1 -0
  52. package/dist/tools/corven-market.js +113 -0
  53. package/dist/tools/corven-market.js.map +1 -0
  54. package/dist/tools/corven-match.d.ts +3 -0
  55. package/dist/tools/corven-match.d.ts.map +1 -0
  56. package/dist/tools/corven-match.js +235 -0
  57. package/dist/tools/corven-match.js.map +1 -0
  58. package/dist/tools/corven-message.d.ts +3 -0
  59. package/dist/tools/corven-message.d.ts.map +1 -0
  60. package/dist/tools/corven-message.js +82 -0
  61. package/dist/tools/corven-message.js.map +1 -0
  62. package/dist/tools/corven-multi.d.ts +3 -0
  63. package/dist/tools/corven-multi.d.ts.map +1 -0
  64. package/dist/tools/corven-multi.js +197 -0
  65. package/dist/tools/corven-multi.js.map +1 -0
  66. package/dist/tools/corven-reputation.d.ts +3 -0
  67. package/dist/tools/corven-reputation.d.ts.map +1 -0
  68. package/dist/tools/corven-reputation.js +126 -0
  69. package/dist/tools/corven-reputation.js.map +1 -0
  70. package/dist/tools/{revisions.d.ts → corven-revision.d.ts} +1 -1
  71. package/dist/tools/corven-revision.d.ts.map +1 -0
  72. package/dist/tools/corven-revision.js +73 -0
  73. package/dist/tools/corven-revision.js.map +1 -0
  74. package/dist/tools/{router.d.ts → corven-router.d.ts} +1 -1
  75. package/dist/tools/corven-router.d.ts.map +1 -0
  76. package/dist/tools/corven-router.js +116 -0
  77. package/dist/tools/corven-router.js.map +1 -0
  78. package/dist/tools/corven-stats.d.ts +3 -0
  79. package/dist/tools/corven-stats.d.ts.map +1 -0
  80. package/dist/tools/corven-stats.js +97 -0
  81. package/dist/tools/corven-stats.js.map +1 -0
  82. package/dist/tools/corven-stream.d.ts +3 -0
  83. package/dist/tools/corven-stream.d.ts.map +1 -0
  84. package/dist/tools/corven-stream.js +197 -0
  85. package/dist/tools/corven-stream.js.map +1 -0
  86. package/dist/tools/corven-task.d.ts +3 -0
  87. package/dist/tools/corven-task.d.ts.map +1 -0
  88. package/dist/tools/corven-task.js +105 -0
  89. package/dist/tools/corven-task.js.map +1 -0
  90. package/dist/tools/{training.d.ts → corven-training.d.ts} +1 -1
  91. package/dist/tools/corven-training.d.ts.map +1 -0
  92. package/dist/tools/corven-training.js +73 -0
  93. package/dist/tools/corven-training.js.map +1 -0
  94. package/dist/tools/corven-verify.d.ts +3 -0
  95. package/dist/tools/corven-verify.d.ts.map +1 -0
  96. package/dist/tools/corven-verify.js +149 -0
  97. package/dist/tools/corven-verify.js.map +1 -0
  98. package/dist/tools/corven-wallet.d.ts +3 -0
  99. package/dist/tools/corven-wallet.d.ts.map +1 -0
  100. package/dist/tools/corven-wallet.js +235 -0
  101. package/dist/tools/corven-wallet.js.map +1 -0
  102. package/dist/tools/covenant-help.d.ts.map +1 -1
  103. package/dist/tools/covenant-help.js +88 -312
  104. package/dist/tools/covenant-help.js.map +1 -1
  105. package/dist/tools/disputes.d.ts.map +1 -1
  106. package/dist/tools/disputes.js +26 -0
  107. package/dist/tools/disputes.js.map +1 -1
  108. package/dist/types.d.ts +2 -0
  109. package/dist/types.d.ts.map +1 -1
  110. package/package.json +1 -1
  111. package/dist/abis/v2/DisputeResolution.json +0 -493
  112. package/dist/abis/v2/InsurancePool.json +0 -645
  113. package/dist/tools/account-abstraction.d.ts +0 -3
  114. package/dist/tools/account-abstraction.d.ts.map +0 -1
  115. package/dist/tools/account-abstraction.js +0 -364
  116. package/dist/tools/account-abstraction.js.map +0 -1
  117. package/dist/tools/batches.d.ts.map +0 -1
  118. package/dist/tools/batches.js +0 -231
  119. package/dist/tools/batches.js.map +0 -1
  120. package/dist/tools/bounties.d.ts.map +0 -1
  121. package/dist/tools/bounties.js +0 -304
  122. package/dist/tools/bounties.js.map +0 -1
  123. package/dist/tools/bridge.d.ts +0 -3
  124. package/dist/tools/bridge.d.ts.map +0 -1
  125. package/dist/tools/bridge.js +0 -190
  126. package/dist/tools/bridge.js.map +0 -1
  127. package/dist/tools/collectives.d.ts.map +0 -1
  128. package/dist/tools/collectives.js +0 -249
  129. package/dist/tools/collectives.js.map +0 -1
  130. package/dist/tools/cross-chain.d.ts +0 -3
  131. package/dist/tools/cross-chain.d.ts.map +0 -1
  132. package/dist/tools/cross-chain.js +0 -77
  133. package/dist/tools/cross-chain.js.map +0 -1
  134. package/dist/tools/escrow.d.ts +0 -3
  135. package/dist/tools/escrow.d.ts.map +0 -1
  136. package/dist/tools/escrow.js +0 -606
  137. package/dist/tools/escrow.js.map +0 -1
  138. package/dist/tools/fiat-onramp.d.ts +0 -3
  139. package/dist/tools/fiat-onramp.d.ts.map +0 -1
  140. package/dist/tools/fiat-onramp.js +0 -108
  141. package/dist/tools/fiat-onramp.js.map +0 -1
  142. package/dist/tools/governance.d.ts +0 -3
  143. package/dist/tools/governance.d.ts.map +0 -1
  144. package/dist/tools/governance.js +0 -271
  145. package/dist/tools/governance.js.map +0 -1
  146. package/dist/tools/grants.d.ts.map +0 -1
  147. package/dist/tools/grants.js +0 -269
  148. package/dist/tools/grants.js.map +0 -1
  149. package/dist/tools/insurance.d.ts.map +0 -1
  150. package/dist/tools/insurance.js +0 -271
  151. package/dist/tools/insurance.js.map +0 -1
  152. package/dist/tools/market.d.ts.map +0 -1
  153. package/dist/tools/market.js +0 -393
  154. package/dist/tools/market.js.map +0 -1
  155. package/dist/tools/matching.d.ts +0 -3
  156. package/dist/tools/matching.d.ts.map +0 -1
  157. package/dist/tools/matching.js +0 -233
  158. package/dist/tools/matching.js.map +0 -1
  159. package/dist/tools/messaging.d.ts +0 -3
  160. package/dist/tools/messaging.d.ts.map +0 -1
  161. package/dist/tools/messaging.js +0 -159
  162. package/dist/tools/messaging.js.map +0 -1
  163. package/dist/tools/multi-token.d.ts +0 -3
  164. package/dist/tools/multi-token.d.ts.map +0 -1
  165. package/dist/tools/multi-token.js +0 -274
  166. package/dist/tools/multi-token.js.map +0 -1
  167. package/dist/tools/offchain-coordinator.d.ts +0 -3
  168. package/dist/tools/offchain-coordinator.d.ts.map +0 -1
  169. package/dist/tools/offchain-coordinator.js +0 -436
  170. package/dist/tools/offchain-coordinator.js.map +0 -1
  171. package/dist/tools/protocol.d.ts +0 -3
  172. package/dist/tools/protocol.d.ts.map +0 -1
  173. package/dist/tools/protocol.js +0 -127
  174. package/dist/tools/protocol.js.map +0 -1
  175. package/dist/tools/receipts.d.ts +0 -3
  176. package/dist/tools/receipts.d.ts.map +0 -1
  177. package/dist/tools/receipts.js +0 -147
  178. package/dist/tools/receipts.js.map +0 -1
  179. package/dist/tools/registry.d.ts.map +0 -1
  180. package/dist/tools/registry.js +0 -245
  181. package/dist/tools/registry.js.map +0 -1
  182. package/dist/tools/reputation-vc.d.ts +0 -3
  183. package/dist/tools/reputation-vc.d.ts.map +0 -1
  184. package/dist/tools/reputation-vc.js +0 -438
  185. package/dist/tools/reputation-vc.js.map +0 -1
  186. package/dist/tools/revisions.d.ts.map +0 -1
  187. package/dist/tools/revisions.js +0 -108
  188. package/dist/tools/revisions.js.map +0 -1
  189. package/dist/tools/router.d.ts.map +0 -1
  190. package/dist/tools/router.js +0 -104
  191. package/dist/tools/router.js.map +0 -1
  192. package/dist/tools/streaming.d.ts +0 -3
  193. package/dist/tools/streaming.d.ts.map +0 -1
  194. package/dist/tools/streaming.js +0 -350
  195. package/dist/tools/streaming.js.map +0 -1
  196. package/dist/tools/templates.d.ts +0 -3
  197. package/dist/tools/templates.d.ts.map +0 -1
  198. package/dist/tools/templates.js +0 -392
  199. package/dist/tools/templates.js.map +0 -1
  200. package/dist/tools/training.d.ts.map +0 -1
  201. package/dist/tools/training.js +0 -304
  202. package/dist/tools/training.js.map +0 -1
  203. package/dist/tools/v2-settlement.d.ts +0 -3
  204. package/dist/tools/v2-settlement.d.ts.map +0 -1
  205. package/dist/tools/v2-settlement.js +0 -226
  206. package/dist/tools/v2-settlement.js.map +0 -1
  207. package/dist/tools/verification.d.ts +0 -3
  208. package/dist/tools/verification.d.ts.map +0 -1
  209. package/dist/tools/verification.js +0 -215
  210. package/dist/tools/verification.js.map +0 -1
  211. package/dist/tools/verify-deep.d.ts +0 -3
  212. package/dist/tools/verify-deep.d.ts.map +0 -1
  213. package/dist/tools/verify-deep.js +0 -125
  214. package/dist/tools/verify-deep.js.map +0 -1
@@ -1,436 +0,0 @@
1
- /**
2
- * Offchain Coordination Layer
3
- *
4
- * All coordination that doesn't need onchain settlement:
5
- * - Agent profiles (signed by wallet, stored offchain)
6
- * - Smart matching (offchain algorithm using onchain reputation)
7
- * - Messaging (encrypted, offchain)
8
- * - Task templates (offchain)
9
- * - Collective coordination (Merkle root anchor)
10
- * - Marketplace discovery (offchain indexer)
11
- *
12
- * This is the "maximum coordination offchain" layer that pairs
13
- * with the minimal v2 settlement contracts.
14
- */
15
- import { z } from "zod";
16
- import { keccak256, toBytes } from "viem";
17
- import { loadAbi, CONTRACTS, getAccount } from "../config.js";
18
- import { readContract } from "../handlers/wallet.js";
19
- import { formatReadResult, formatError } from "../handlers/transactions.js";
20
- import { ethAddress } from "../lib/schemaHelpers.js";
21
- import { parseContractError, formatStructuredError } from "../lib/formatResponse.js";
22
- const REGISTRY_ABI = loadAbi("AgentRegistry");
23
- // In-memory stores (production: IPFS + database)
24
- const profileStore = new Map();
25
- const templateStore = new Map();
26
- const listingStore = new Map();
27
- // ─── Built-in Templates ─────────────────────────────────────
28
- const BUILT_IN_TEMPLATES = [
29
- {
30
- id: "code-review",
31
- name: "Code Review",
32
- description: "Thorough code review with actionable feedback",
33
- category: "development",
34
- parameters: { language: "string", repoUrl: "string", scope: "string" },
35
- pricing: { base: "0.005", multiplier: 1.5 },
36
- verificationChecks: ["output_not_empty", "has_issues", "has_suggestions"],
37
- },
38
- {
39
- id: "security-audit",
40
- name: "Security Audit",
41
- description: "Security vulnerability assessment",
42
- category: "security",
43
- parameters: { target: "string", depth: "string", standards: "string[]" },
44
- pricing: { base: "0.02", multiplier: 2.0 },
45
- verificationChecks: ["output_not_empty", "has_vulnerabilities", "has_remediation"],
46
- },
47
- {
48
- id: "data-analysis",
49
- name: "Data Analysis",
50
- description: "Analyze dataset and produce insights",
51
- category: "data",
52
- parameters: { datasetUrl: "string", questions: "string[]" },
53
- pricing: { base: "0.008", multiplier: 1.2 },
54
- verificationChecks: ["output_not_empty", "answers_questions", "has_visualizations"],
55
- },
56
- {
57
- id: "api-development",
58
- name: "API Development",
59
- description: "Build REST/GraphQL API endpoints",
60
- category: "development",
61
- parameters: { spec: "string", framework: "string", testsRequired: "boolean" },
62
- pricing: { base: "0.015", multiplier: 1.8 },
63
- verificationChecks: ["output_not_empty", "has_endpoints", "has_tests"],
64
- },
65
- {
66
- id: "documentation",
67
- name: "Documentation",
68
- description: "Generate technical documentation",
69
- category: "writing",
70
- parameters: { source: "string", format: "string", audience: "string" },
71
- pricing: { base: "0.003", multiplier: 1.0 },
72
- verificationChecks: ["output_not_empty", "has_sections", "has_examples"],
73
- },
74
- ];
75
- // Initialize templates
76
- BUILT_IN_TEMPLATES.forEach(t => templateStore.set(t.id, t));
77
- function calculateMatchScore(requirements, agent) {
78
- const reasons = [];
79
- let score = 0;
80
- // Capability match (40% weight)
81
- const matchedCaps = requirements.capabilities.filter(c => agent.capabilities.includes(c));
82
- const capScore = requirements.capabilities.length > 0
83
- ? matchedCaps.length / requirements.capabilities.length
84
- : 0;
85
- score += capScore * 0.4;
86
- if (matchedCaps.length > 0)
87
- reasons.push(`${matchedCaps.length}/${requirements.capabilities.length} capabilities matched`);
88
- // Reputation score (30% weight)
89
- const repScore = agent.reputation / 1000;
90
- score += repScore * 0.3;
91
- if (agent.reputation >= 800)
92
- reasons.push("High reputation agent");
93
- // Experience score (20% weight)
94
- const totalTasks = agent.tasksCompleted + agent.tasksFailed;
95
- const expScore = totalTasks > 0 ? Math.min(totalTasks / 20, 1) : 0;
96
- score += expScore * 0.2;
97
- if (agent.tasksCompleted >= 10)
98
- reasons.push(`${agent.tasksCompleted} tasks completed`);
99
- // Stake score (10% weight)
100
- const stake = parseFloat(agent.stakedAmount);
101
- const stakeScore = Math.min(stake / 0.1, 1);
102
- score += stakeScore * 0.1;
103
- return { score, reasons };
104
- }
105
- // ─── Input Schemas ───────────────────────────────────────────
106
- const profileUpdateSchema = z.object({
107
- name: z.string().min(1).max(100),
108
- bio: z.string().max(500).optional(),
109
- website: z.string().url().optional(),
110
- capabilities: z.array(z.string()).max(20),
111
- tags: z.array(z.string()).max(10).optional(),
112
- avatarUrl: z.string().url().optional(),
113
- socialLinks: z.record(z.string(), z.string()).optional(),
114
- });
115
- const matchingSchema = z.object({
116
- capabilities: z.array(z.string()).min(1),
117
- budget: z.string().optional(),
118
- priority: z.enum(["low", "medium", "high", "urgent"]).optional(),
119
- topN: z.number().int().min(1).max(20).optional(),
120
- });
121
- const messagingSchema = z.object({
122
- to: ethAddress,
123
- content: z.string().min(1).max(5000),
124
- taskId: z.number().optional(),
125
- messageType: z.enum(["general", "proposal", "question", "update"]).optional(),
126
- });
127
- const marketplaceSchema = z.object({
128
- capabilities: z.array(z.string()).optional(),
129
- minReputation: z.number().int().min(0).max(1000).optional(),
130
- maxRate: z.string().optional(),
131
- availability: z.enum(["available", "busy", "offline"]).optional(),
132
- sortBy: z.enum(["reputation", "rate", "tasks"]).optional(),
133
- });
134
- // ─── Tool Registration ───────────────────────────────────────
135
- export function registerOffchainCoordinatorTools(server) {
136
- // ──────────────────────────────────────────────────────────
137
- // corven_profile_update
138
- // ──────────────────────────────────────────────────────────
139
- server.registerTool("corven_profile_update", {
140
- title: "Update Agent Profile",
141
- description: "Update offchain agent profile. Profile data is signed by wallet " +
142
- "and stored offchain (IPFS in production). No gas cost.\n" +
143
- "USE WHEN: An agent wants to enrich its public profile with bio, website, avatar, social links, or refined capability tags.\n" +
144
- "REQUIRES: Wallet configured (PRIVATE_KEY set). Agent should be registered on-chain via corven_register_agent first.\n" +
145
- "RETURNS: Confirmation with address, name, capabilities, and updatedAt timestamp.\n" +
146
- "COMES BEFORE: corven_match_agents, corven_marketplace_list (richer profiles score higher in matching).\n" +
147
- "COMES AFTER: corven_register_agent (on-chain identity must exist first).\n" +
148
- "NOTE: Zero gas cost. Data is signed by wallet and stored in-memory (IPFS in production).",
149
- inputSchema: {
150
- name: z.string().describe("Display name"),
151
- bio: z.string().optional().describe("Agent bio (max 500 chars)"),
152
- website: z.string().optional().describe("Website URL"),
153
- capabilities: z.array(z.string()).describe("Capability tags"),
154
- tags: z.array(z.string()).optional().describe("Additional tags"),
155
- avatarUrl: z.string().optional().describe("Avatar image URL"),
156
- socialLinks: z.record(z.string(), z.string()).optional().describe("Social media links"),
157
- },
158
- }, async (params) => {
159
- try {
160
- const parsed = profileUpdateSchema.safeParse(params);
161
- if (!parsed.success)
162
- return formatError(parsed.error);
163
- const account = getAccount();
164
- if (!account)
165
- return formatError(new Error("No wallet configured."));
166
- const profile = {
167
- address: account,
168
- name: parsed.data.name,
169
- bio: parsed.data.bio || "",
170
- website: parsed.data.website || "",
171
- capabilities: parsed.data.capabilities,
172
- tags: parsed.data.tags || [],
173
- avatarUrl: parsed.data.avatarUrl || "",
174
- socialLinks: parsed.data.socialLinks || {},
175
- updatedAt: Math.floor(Date.now() / 1000),
176
- };
177
- profileStore.set(account.toLowerCase(), profile);
178
- return formatReadResult({
179
- address: account,
180
- name: profile.name,
181
- capabilities: profile.capabilities,
182
- updatedAt: new Date(profile.updatedAt * 1000).toISOString(),
183
- note: "Profile stored offchain. No gas consumed.",
184
- }, "Profile Updated");
185
- }
186
- catch (e) {
187
- const parsed = parseContractError(e);
188
- return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
189
- }
190
- });
191
- // ──────────────────────────────────────────────────────────
192
- // corven_profile_get
193
- // ──────────────────────────────────────────────────────────
194
- server.registerTool("corven_profile_get", {
195
- title: "Get Agent Profile",
196
- description: "Get offchain profile for an agent. Combines onchain data with offchain profile.\n" +
197
- "USE WHEN: You need a complete view of an agent — both on-chain reputation/stake and off-chain bio/website/social.\n" +
198
- "REQUIRES: Valid Ethereum address. Agent may or may not be registered on-chain (returns partial data if not).\n" +
199
- "RETURNS: Object with address, onchain data (reputation, isActive, tasksCompleted, stakedAmount), and offchain profile (name, bio, website, capabilities, tags, avatarUrl, socialLinks).\n" +
200
- "COMES BEFORE: Hiring decisions, task assignment, or messaging.\n" +
201
- "COMES AFTER: corven_register_agent and corven_profile_update.\n" +
202
- "NOTE: Returns onchain data even if no offchain profile exists (shows 'No offchain profile set').",
203
- inputSchema: {
204
- address: ethAddress,
205
- },
206
- }, async (params) => {
207
- try {
208
- const address = params.address.toLowerCase();
209
- // Get onchain data
210
- const onchainData = await readContract(CONTRACTS.AgentRegistry, REGISTRY_ABI, "getAgent", [address]).catch(() => null);
211
- // Get offchain profile
212
- const profile = profileStore.get(address);
213
- const onchain = onchainData;
214
- return formatReadResult({
215
- address,
216
- onchain: onchain ? {
217
- reputation: onchain[2]?.toString(),
218
- isActive: onchain[3] === 1,
219
- tasksCompleted: onchain[4]?.toString(),
220
- stakedAmount: onchain[6]?.toString(),
221
- } : "Not registered onchain",
222
- offchain: profile || "No offchain profile set",
223
- }, "Agent Profile");
224
- }
225
- catch (e) {
226
- const parsed = parseContractError(e);
227
- return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
228
- }
229
- });
230
- // ──────────────────────────────────────────────────────────
231
- // corven_templates_list
232
- // ──────────────────────────────────────────────────────────
233
- server.registerTool("corven_templates_list", {
234
- title: "List Task Templates",
235
- description: "List available task templates for quick task creation.\n" +
236
- "USE WHEN: You want to browse pre-built task templates (code-review, security-audit, data-analysis, api-development, documentation) to speed up task creation.\n" +
237
- "REQUIRES: None. Built-in templates are always available.\n" +
238
- "RETURNS: Array of templates with id, name, description, category, and basePrice.\n" +
239
- "COMES BEFORE: corven_create_task (use a template's pricing and verificationChecks as a starting point).\n" +
240
- "COMES AFTER: Nothing — standalone read.",
241
- inputSchema: {
242
- category: z.string().optional().describe("Filter by category"),
243
- },
244
- }, async (params) => {
245
- try {
246
- const category = params.category;
247
- let templates = Array.from(templateStore.values());
248
- if (category) {
249
- templates = templates.filter(t => t.category === category);
250
- }
251
- return formatReadResult({
252
- count: templates.length,
253
- templates: templates.map(t => ({
254
- id: t.id,
255
- name: t.name,
256
- description: t.description,
257
- category: t.category,
258
- basePrice: `${t.pricing.base} ETH`,
259
- })),
260
- }, "Task Templates");
261
- }
262
- catch (e) {
263
- const parsed = parseContractError(e);
264
- return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
265
- }
266
- });
267
- // ──────────────────────────────────────────────────────────
268
- // corven_message_send
269
- // ──────────────────────────────────────────────────────────
270
- server.registerTool("corven_message_send", {
271
- title: "Send Message",
272
- description: "Send an offchain message to another agent. Messages are signed " +
273
- "by sender's wallet. No gas cost.\n" +
274
- "USE WHEN: You need to communicate with another agent — send a proposal, ask a question, or provide a status update.\n" +
275
- "REQUIRES: Wallet configured (PRIVATE_KEY set). Recipient address must be valid.\n" +
276
- "RETURNS: Message ID (keccak256 hash), sender, recipient, type, and timestamp.\n" +
277
- "COMES BEFORE: Task negotiation or collaborative work.\n" +
278
- "COMES AFTER: corven_find_workers or corven_match_agents (you found an agent to message).\n" +
279
- "NOTE: Zero gas cost. Messages are signed with sender's wallet. In production: encrypted with ECDH, stored on IPFS.",
280
- inputSchema: {
281
- to: ethAddress,
282
- content: z.string().describe("Message content"),
283
- taskId: z.number().optional().describe("Related task ID"),
284
- messageType: z.enum(["general", "proposal", "question", "update"]).optional(),
285
- },
286
- }, async (params) => {
287
- try {
288
- const parsed = messagingSchema.safeParse(params);
289
- if (!parsed.success)
290
- return formatError(parsed.error);
291
- const account = getAccount();
292
- if (!account)
293
- return formatError(new Error("No wallet configured."));
294
- const message = {
295
- from: account,
296
- to: parsed.data.to,
297
- content: parsed.data.content,
298
- taskId: parsed.data.taskId,
299
- messageType: parsed.data.messageType || "general",
300
- timestamp: Math.floor(Date.now() / 1000),
301
- id: keccak256(toBytes(`${account}-${parsed.data.to}-${Date.now()}`)),
302
- };
303
- // In production: encrypt with recipient's public key, store on IPFS
304
- return formatReadResult({
305
- messageId: message.id,
306
- from: account,
307
- to: parsed.data.to,
308
- type: message.messageType,
309
- timestamp: new Date(message.timestamp * 1000).toISOString(),
310
- note: "Message stored offchain. In production: encrypted with ECDH, stored on IPFS.",
311
- }, "Message Sent");
312
- }
313
- catch (e) {
314
- const parsed = parseContractError(e);
315
- return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
316
- }
317
- });
318
- // ──────────────────────────────────────────────────────────
319
- // corven_marketplace_list
320
- // ──────────────────────────────────────────────────────────
321
- server.registerTool("corven_marketplace_list", {
322
- title: "Marketplace Discovery",
323
- description: "Search the agent marketplace. Combines onchain reputation " +
324
- "with offchain profiles for discovery.\n" +
325
- "USE WHEN: You want to browse the agent marketplace — filter by capabilities, reputation, rate, or availability.\n" +
326
- "REQUIRES: At least one agent with a marketplace listing (corven_marketplace_register).\n" +
327
- "RETURNS: Filtered and sorted listings with address, capabilities, hourlyRate, availability, completedTasks, reputation, and featured status.\n" +
328
- "COMES BEFORE: corven_create_task or corven_message_send (hire or message a discovered agent).\n" +
329
- "COMES AFTER: corven_marketplace_register (agents must register their listings first).\n" +
330
- "NOTE: In-memory store. Use corven_find_workers for on-chain capability search.",
331
- inputSchema: {
332
- capabilities: z.array(z.string()).optional().describe("Required capabilities"),
333
- minReputation: z.number().optional().describe("Minimum reputation (0-1000)"),
334
- maxRate: z.string().optional().describe("Max hourly rate in ETH"),
335
- availability: z.enum(["available", "busy", "offline"]).optional(),
336
- sortBy: z.enum(["reputation", "rate", "tasks"]).optional(),
337
- },
338
- }, async (params) => {
339
- try {
340
- const parsed = marketplaceSchema.safeParse(params);
341
- if (!parsed.success)
342
- return formatError(parsed.error);
343
- const { capabilities, minReputation, sortBy } = parsed.data;
344
- let listings = Array.from(profileStore.entries()).map(([addr, profile]) => ({
345
- address: addr,
346
- name: profile.name,
347
- capabilities: profile.capabilities,
348
- reputation: 0,
349
- tasksCompleted: 0,
350
- }));
351
- // Enrich with onchain data
352
- for (let i = 0; i < listings.length; i++) {
353
- try {
354
- const data = await readContract(CONTRACTS.AgentRegistry, REGISTRY_ABI, "getAgent", [listings[i].address]).catch(() => null);
355
- if (data) {
356
- const d = data;
357
- listings[i].reputation = Number(d[2]);
358
- listings[i].tasksCompleted = Number(d[4]);
359
- }
360
- }
361
- catch {
362
- continue;
363
- }
364
- }
365
- // Apply filters
366
- if (capabilities && capabilities.length > 0) {
367
- listings = listings.filter(l => capabilities.some(c => l.capabilities.includes(c)));
368
- }
369
- if (minReputation) {
370
- listings = listings.filter(l => l.reputation >= minReputation);
371
- }
372
- // Sort
373
- if (sortBy === "reputation") {
374
- listings.sort((a, b) => b.reputation - a.reputation);
375
- }
376
- else if (sortBy === "tasks") {
377
- listings.sort((a, b) => b.tasksCompleted - a.tasksCompleted);
378
- }
379
- return formatReadResult({
380
- total: listings.length,
381
- filters: { capabilities, minReputation, sortBy },
382
- listings: listings.slice(0, 20).map((l, i) => `#${i + 1} ${l.name} (${l.address.slice(0, 10)}...) | Rep: ${l.reputation} | Tasks: ${l.tasksCompleted} | Caps: ${l.capabilities.join(", ")}`).join("\n") || "No agents found",
383
- }, "Marketplace Results");
384
- }
385
- catch (e) {
386
- const parsed = parseContractError(e);
387
- return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
388
- }
389
- });
390
- // ──────────────────────────────────────────────────────────
391
- // corven_collective_propose
392
- // ──────────────────────────────────────────────────────────
393
- server.registerTool("corven_collective_propose", {
394
- title: "Propose Collective Task",
395
- description: "Propose a task for collective execution. Uses offchain coordination " +
396
- "with Merkle root anchor for deliverables.\n" +
397
- "USE WHEN: You want to propose a collaborative task to a group of agents before committing on-chain.\n" +
398
- "REQUIRES: Wallet configured. At least one agent address in the agents array.\n" +
399
- "RETURNS: Proposal hash (keccak256), task description, estimated payment, required capabilities, and participant list.\n" +
400
- "COMES BEFORE: corven_create_batch or corven_create_collective (convert proposal to on-chain action).\n" +
401
- "COMES AFTER: Nothing — this is the offchain planning step.",
402
- inputSchema: {
403
- title: z.string().describe("Task title"),
404
- description: z.string().describe("Task description"),
405
- requiredCapabilities: z.array(z.string()).describe("Required capabilities"),
406
- maxMembers: z.number().int().min(2).max(50).describe("Max collective size"),
407
- paymentPerMember: z.string().describe("Payment per member in ETH"),
408
- },
409
- }, async (params) => {
410
- try {
411
- const account = getAccount();
412
- if (!account)
413
- return formatError(new Error("No wallet configured."));
414
- const proposal = {
415
- proposer: account,
416
- title: params.title,
417
- description: params.description,
418
- requiredCapabilities: params.requiredCapabilities,
419
- maxMembers: params.maxMembers,
420
- paymentPerMember: params.paymentPerMember,
421
- createdAt: Math.floor(Date.now() / 1000),
422
- status: "open",
423
- };
424
- // In production: store on IPFS, anchor Merkle root onchain
425
- return formatReadResult({
426
- proposal,
427
- note: "Proposal created offchain. In production: stored on IPFS, Merkle root anchored onchain via AgentCollective.",
428
- }, "Collective Proposal");
429
- }
430
- catch (e) {
431
- const parsed = parseContractError(e);
432
- return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
433
- }
434
- });
435
- }
436
- //# sourceMappingURL=offchain-coordinator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"offchain-coordinator.js","sourceRoot":"","sources":["../../src/tools/offchain-coordinator.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- export declare function registerProtocolTools(server: McpServer): void;
3
- //# sourceMappingURL=protocol.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/tools/protocol.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgJ7D"}
@@ -1,127 +0,0 @@
1
- /**
2
- * Protocol-wide MCP Tools
3
- *
4
- * get_stats — Aggregate protocol statistics
5
- * get_leaderboard — Top agents by reputation
6
- */
7
- import { z } from "zod";
8
- import { formatEther } from "viem";
9
- import { loadAbi, CONTRACTS } from "../config.js";
10
- import { readContract } from "../handlers/wallet.js";
11
- import { formatReadResult, formatError } from "../handlers/transactions.js";
12
- import { parseContractError, formatStructuredError } from "../lib/formatResponse.js";
13
- const registryAbi = loadAbi("AgentRegistry");
14
- const escrowAbi = loadAbi("TaskEscrow");
15
- // Input validation schemas
16
- const getStatsSchema = z.object({}); // No parameters
17
- const getLeaderboardSchema = z.object({
18
- limit: z.number().int().min(1).max(50).optional().default(10)
19
- });
20
- export function registerProtocolTools(server) {
21
- // ──────────────────────────────────────────────────────────────
22
- // get_stats
23
- // ──────────────────────────────────────────────────────────────
24
- server.registerTool("corven_get_stats", {
25
- title: "Protocol Statistics",
26
- description: "Get aggregate COVENANT protocol stats: total agents, tasks created, " +
27
- "tasks completed, total volume, fees collected, and active agents.\n" +
28
- "USE WHEN: You need a high-level overview of protocol health, activity level, or growth metrics.\n" +
29
- "REQUIRES: None. Read-only query against AgentRegistry and TaskEscrow contracts.\n" +
30
- "RETURNS: Object with totalAgents, totalTasks, and totalFeesEth.\n" +
31
- "COMES BEFORE: corven_get_leaderboard (use stats to decide if leaderboard is worth querying).\n" +
32
- "COMES AFTER: Nothing — this is a standalone read.",
33
- inputSchema: {},
34
- }, async () => {
35
- try {
36
- // Validate input (no parameters for get_stats)
37
- const validationResult = getStatsSchema.safeParse({});
38
- if (!validationResult.success) {
39
- return formatError(new Error(`Invalid input: ${validationResult.error.issues.map((e) => e.message).join(", ")}`));
40
- }
41
- // Fetch stats from both contracts in parallel
42
- const [totalAgents, totalTasks, accumulatedFees] = await Promise.all([
43
- readContract(CONTRACTS.AgentRegistry, registryAbi, "agentCount", []),
44
- readContract(CONTRACTS.TaskEscrow, escrowAbi, "taskCounter", []),
45
- readContract(CONTRACTS.TaskEscrow, escrowAbi, "accumulatedFees", []),
46
- ]);
47
- const stats = {
48
- totalAgents: Number(totalAgents),
49
- totalTasks: Number(totalTasks),
50
- totalFeesEth: formatEther(accumulatedFees),
51
- };
52
- return formatReadResult(stats, "COVENANT Protocol Statistics");
53
- }
54
- catch (e) {
55
- const parsed = parseContractError(e);
56
- return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
57
- }
58
- });
59
- // ──────────────────────────────────────────────────────────────
60
- // get_leaderboard
61
- // ──────────────────────────────────────────────────────────────
62
- server.registerTool("corven_get_leaderboard", {
63
- title: "Agent Leaderboard",
64
- description: "Retrieve the top N agents ranked by reputation score. " +
65
- "Returns agent address, name, reputation, tasks completed/failed, and stake.\n" +
66
- "USE WHEN: You want to discover the highest-reputation agents on the protocol, compare agents, or populate a leaderboard UI.\n" +
67
- "REQUIRES: At least one registered agent on AgentRegistry. Returns empty list if none exist.\n" +
68
- "RETURNS: Array of agents sorted by reputation (desc) with rank, address, name, reputation, tasksCompleted, tasksFailed, stakedEth, and capabilities.\n" +
69
- "COMES BEFORE: corven_get_agent (drill down into a specific agent from the leaderboard).\n" +
70
- "COMES AFTER: Nothing — standalone read. Optionally follow with corven_find_workers for capability-specific search.",
71
- inputSchema: {
72
- limit: z
73
- .number()
74
- .optional()
75
- .describe("Number of top agents to return (default 10, max 50)"),
76
- },
77
- }, async ({ limit }) => {
78
- try {
79
- // Validate input
80
- const validationResult = getLeaderboardSchema.safeParse({ limit });
81
- if (!validationResult.success) {
82
- return formatError(new Error(`Invalid input: ${validationResult.error.issues.map((e) => e.message).join(", ")}`));
83
- }
84
- const { limit: validatedLimit } = validationResult.data;
85
- const topN = Math.min(validatedLimit ?? 10, 50);
86
- // Get total agent count
87
- const totalAgents = Number(await readContract(CONTRACTS.AgentRegistry, registryAbi, "agentCount", []));
88
- if (totalAgents === 0) {
89
- return formatReadResult({ agents: [], totalAgents: 0 }, "No registered agents yet");
90
- }
91
- // Fetch all agents (the contract stores addresses, we iterate)
92
- // getAgentByIndex is the pattern used by the leaderboard frontend
93
- const agents = [];
94
- const count = Math.min(totalAgents, 200); // safety cap
95
- const agentPromises = [];
96
- for (let i = 0; i < count; i++) {
97
- agentPromises.push(readContract(CONTRACTS.AgentRegistry, registryAbi, "getAgentByIndex", [BigInt(i)]).catch(() => null) // skip if index doesn't exist
98
- );
99
- }
100
- const results = await Promise.all(agentPromises);
101
- for (const agent of results) {
102
- if (agent && agent.isActive) {
103
- agents.push(agent);
104
- }
105
- }
106
- // Sort by reputation descending
107
- agents.sort((a, b) => Number(b.reputation ?? 0) - Number(a.reputation ?? 0));
108
- // Take top N
109
- const topAgents = agents.slice(0, topN).map((a, i) => ({
110
- rank: i + 1,
111
- address: a.addr ?? a.address ?? "unknown",
112
- name: a.name,
113
- reputation: Number(a.reputation),
114
- tasksCompleted: Number(a.tasksCompleted ?? 0),
115
- tasksFailed: Number(a.tasksFailed ?? 0),
116
- stakedEth: formatEther(a.stakedAmount ?? 0n),
117
- capabilities: a.capabilities ?? [],
118
- }));
119
- return formatReadResult({ totalAgents, showing: topAgents.length, agents: topAgents }, "COVENANT Agent Leaderboard");
120
- }
121
- catch (e) {
122
- const parsed = parseContractError(e);
123
- return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
124
- }
125
- });
126
- }
127
- //# sourceMappingURL=protocol.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/tools/protocol.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- export declare function registerReceiptTools(server: McpServer): void;
3
- //# sourceMappingURL=receipts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"receipts.d.ts","sourceRoot":"","sources":["../../src/tools/receipts.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2J5D"}