Skip to main content
Glama
stampchain-io

Stampchain MCP Server

Official

get_recent_stamps

Retrieve recently created Bitcoin stamps to monitor new blockchain-based digital assets and track emerging collections.

Instructions

Retrieve the most recently created Bitcoin stamps

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of recent stamps to retrieve

Implementation Reference

  • Handler function implementing the get_recent_stamps tool logic. Validates input, calls searchStamps API with DESC sort order and specified limit, formats and returns list of recent stamps.
    public async execute(
      params: GetRecentStampsParams,
      context?: ToolContext
    ): Promise<ToolResponse> {
      try {
        context?.logger?.info('Executing get_recent_stamps tool', { params });
    
        // Validate parameters
        const validatedParams = this.validateParams(params);
    
        // Get recent stamps by searching with sort order DESC
        const queryParams = {
          sort_order: 'DESC' as const,
          page: 1,
          page_size: validatedParams.limit,
        };
    
        // Use API client from context if available, otherwise use instance client
        const client = context?.apiClient || this.apiClient;
    
        const stamps: Stamp[] = await client.searchStamps(queryParams);
    
        if (!stamps || stamps.length === 0) {
          return textResponse('No recent stamps found');
        }
    
        // Create a summary of recent stamps
        const lines = [`${stamps.length} Most Recent Stamps:`];
        lines.push('---');
    
        stamps.forEach((stamp, index) => {
          lines.push(`${index + 1}. Stamp #${stamp.stamp}`);
          lines.push(`   Block: ${stamp.block_index}`);
          lines.push(`   Creator: ${stamp.creator}`);
          lines.push(`   Type: ${stamp.ident}`);
          lines.push(`   CPID: ${stamp.cpid}`);
          if (stamp.floorPrice) {
            lines.push(`   Floor Price: ${stamp.floorPrice} BTC`);
          }
          lines.push('');
        });
    
        return textResponse(lines.join('\n'));
      } catch (error) {
        context?.logger?.error('Error executing get_recent_stamps tool', { error });
    
        if (error instanceof ValidationError) {
          throw error;
        }
    
        if (error instanceof ToolExecutionError) {
          throw error;
        }
    
        // Pass through the original error message for API errors
        if (error instanceof Error) {
          throw new ToolExecutionError(error.message, this.name, error);
        }
    
        throw new ToolExecutionError('Failed to retrieve recent stamps', this.name, error);
      }
  • Zod schema for input parameters of get_recent_stamps tool, defining optional limit (1-100, default 20).
    export const GetRecentStampsParamsSchema = z.object({
      limit: z.number().int().min(1).max(100).optional().default(20),
    });
    
    export type GetRecentStampsParams = z.infer<typeof GetRecentStampsParamsSchema>;
  • Registration of GetRecentStampsTool class in the stampTools export object.
    export const stampTools = {
      get_stamp: GetStampTool,
      search_stamps: SearchStampsTool,
      get_recent_stamps: GetRecentStampsTool,
      get_recent_sales: GetRecentSalesTool,
      get_market_data: GetMarketDataTool,
      get_stamp_market_data: GetStampMarketDataTool,
    };
  • Factory function createStampTools instantiates GetRecentStampsTool and registers it in the tools map.
    export function createStampTools(apiClient?: StampchainClient) {
      return {
        get_stamp: new GetStampTool(apiClient),
        search_stamps: new SearchStampsTool(apiClient),
        get_recent_stamps: new GetRecentStampsTool(apiClient),
        get_recent_sales: new GetRecentSalesTool(apiClient),
        get_market_data: new GetMarketDataTool(apiClient),
        get_stamp_market_data: new GetStampMarketDataTool(apiClient),
      };
    }
  • Tool name listed in getAvailableToolNames() for discovery and in toolMetadata.
        'get_recent_stamps',
        'get_recent_sales',
        'get_market_data',
        'get_stamp_market_data',
    
        // Collection tools
        'get_collection',
        'search_collections',
    
        // Token tools
        'get_token_info',
        'search_tokens',
    
        // Analysis tools
        'analyze_stamp_code',
        'get_stamp_dependencies',
        'analyze_stamp_patterns',
      ];
    }
    
    /**
     * Tool metadata for discovery
     */
    export const toolMetadata = {
      stamps: {
        category: 'Bitcoin Stamps',
        description: 'Tools for querying and searching Bitcoin stamps',
        tools: [
          'get_stamp',
          'search_stamps',
          'get_recent_stamps',
  • Supporting API client method getRecentStamps (though tool uses searchStamps directly).
    async getRecentStamps(limit: number = 20): Promise<Stamp[]> {
      const params: StampQueryParams = {
        limit,
      };
      const response = await this.client.get<StampListResponse>('/stamps', { params });
      return response.data.data;
    }

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/stampchain-io/stampchain-mcp'

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