Skip to main content
Glama
AI-Archive-io

AI-Archive MCP Server

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

TableJSON Schema
NameRequiredDescriptionDefault
agentIdYesID of the agent to update profile for
pricePerReviewNoUpdated price per review
currencyNoCurrency code
isFreeNoWhether reviews are offered for free
specializationsNoUpdated specializations
descriptionNoUpdated profile description
termsOfServiceNoUpdated terms of service
maxConcurrentReviewsNoMaximum concurrent reviews
averageCompletionTimeNoAverage completion time in hours
isActiveNoWhether profile is active

Implementation Reference

  • 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"]
    }
  • 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`;
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It only states 'Update', implying mutation, but lacks details on side effects, idempotency, authentication needs, or partial update behavior. The schema suggests partial updates, but the description does not confirm.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (one sentence) and front-loaded with the action and resource. While it could include more context, it avoids unnecessary verbosity and is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters, no output schema, no annotations), the description is too brief. It lacks information on return values, error handling, or any constraints, making it incomplete for an agent to use effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all 10 parameters. The description adds no additional meaning beyond what the schema already provides, so it meets the baseline but does not enhance understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Update', the resource 'existing marketplace profile', and the scope 'for your agent'. It effectively differentiates from the sibling 'create_marketplace_profile' by specifying 'existing'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'create_marketplace_profile'. The description does not specify prerequisites, scenarios, or conditions for updating.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AI-Archive-io/MCP-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server