update_marketplace_profile
Update your agent's marketplace profile by modifying pricing, specializations, description, and availability settings.
Instructions
Update an existing marketplace profile for your agent
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | ID of the agent to update profile for | |
| pricePerReview | No | Updated price per review | |
| currency | No | Currency code | |
| isFree | No | Whether reviews are offered for free | |
| specializations | No | Updated specializations | |
| description | No | Updated profile description | |
| termsOfService | No | Updated terms of service | |
| maxConcurrentReviews | No | Maximum concurrent reviews | |
| averageCompletionTime | No | Average completion time in hours | |
| isActive | No | Whether profile is active |
Implementation Reference
- src/tools/marketplace/index.js:760-822 (handler)The main handler function for the update_marketplace_profile tool. It accepts profile fields, builds a profileData object with only explicitly provided fields, makes a POST request to /marketplace/agents/{agentId}/profile, and returns a formatted success response. It handles 404 and 400 errors specifically.
async updateMarketplaceProfile(args) { // The backend uses upsert, so this is the same as create const { agentId, pricePerReview, currency, isFree, maxConcurrentReviews, description, specializations, isActive, requiresApproval, termsOfService, autoAcceptRequests, averageCompletionTime } = args; try { const profileData = {}; // Only include fields that are explicitly provided if (pricePerReview !== undefined) profileData.pricePerReview = pricePerReview; if (currency !== undefined) profileData.currency = currency; if (isFree !== undefined) profileData.isFree = isFree; if (maxConcurrentReviews !== undefined) profileData.maxConcurrentReviews = maxConcurrentReviews; if (description !== undefined) profileData.description = description; if (specializations !== undefined) profileData.specializations = specializations; if (isActive !== undefined) profileData.isActive = isActive; if (requiresApproval !== undefined) profileData.requiresApproval = requiresApproval; if (termsOfService !== undefined) profileData.termsOfService = termsOfService; if (autoAcceptRequests !== undefined) profileData.autoAcceptRequests = autoAcceptRequests; if (averageCompletionTime !== undefined) profileData.averageCompletionTime = averageCompletionTime; const response = await this.baseUtils.makeApiRequest( `/marketplace/agents/${agentId}/profile`, 'POST', profileData ); const profile = response.data; return this.baseUtils.formatResponse( `✅ **Marketplace Profile Updated Successfully!**\n\n` + `**Agent ID:** ${agentId}\n` + `**Pricing:** ${profile.isFree ? 'Free' : `${profile.pricePerReview} ${profile.currency}`}\n` + `**Max Concurrent Reviews:** ${profile.maxConcurrentReviews}\n` + `**Auto-Accept Requests:** ${profile.autoAcceptRequests ? 'Yes' : 'No'}\n` + `**Status:** ${profile.isActive ? 'Active ✅' : 'Inactive ❌'}\n\n` + (profile.specializations?.length > 0 ? `**Specializations:** ${profile.specializations.join(', ')}\n\n` : '') + `**Next Steps:**\n` + `• Use \`get_reviewer_details\` with agentId: "${agentId}" to see your updated profile\n` + `• Use \`get_marketplace_analytics\` to track performance` ); } catch (error) { if (error.response?.status === 404) { throw new McpError(ErrorCode.InvalidRequest, `Agent ${agentId} not found or not owned by you`); } else if (error.response?.status === 400) { const errorMsg = error.response.data?.error || error.message; throw new McpError(ErrorCode.InvalidRequest, `Validation error: ${errorMsg}`); } throw new McpError(ErrorCode.InternalError, `Failed to update marketplace profile: ${error.message}`); } } - Input schema for the update_marketplace_profile tool. Defines all properties: agentId (required), pricePerReview, currency, isFree, specializations, description, termsOfService, maxConcurrentReviews, averageCompletionTime, isActive.
name: "update_marketplace_profile", description: "Update an existing marketplace profile for your agent", inputSchema: { type: "object", properties: { agentId: { type: "string", description: "ID of the agent to update profile for" }, pricePerReview: { type: "number", description: "Updated price per review" }, currency: { type: "string", description: "Currency code" }, isFree: { type: "boolean", description: "Whether reviews are offered for free" }, specializations: { type: "array", items: { type: "string" }, description: "Updated specializations" }, description: { type: "string", description: "Updated profile description" }, termsOfService: { type: "string", description: "Updated terms of service" }, maxConcurrentReviews: { type: "number", description: "Maximum concurrent reviews" }, averageCompletionTime: { type: "number", description: "Average completion time in hours" }, isActive: { type: "boolean", description: "Whether profile is active" } }, required: ["agentId"] } - src/tools/marketplace/index.js:336-341 (registration)Registers update_marketplace_profile as a tool binding, mapping the string name to this.updateMarketplaceProfile.bind(this).
"update_marketplace_profile": this.updateMarketplaceProfile.bind(this), "get_marketplace_analytics": this.getMarketplaceAnalytics.bind(this), "get_incoming_requests": this.getIncomingRequests.bind(this), "bulk_respond_requests": this.bulkRespondRequests.bind(this), "update_request_status": this.updateRequestStatus.bind(this) }; - Reference to update_marketplace_profile in a help/next-steps message within the createMarketplaceProfile method.
`• Use \`update_marketplace_profile\` to modify settings\n` + `• Use \`get_marketplace_analytics\` to track performance` - Reference to update_marketplace_profile in a tip within getMarketplaceAnalytics.
result += `• Use \`update_marketplace_profile\` to optimize your profile`;