Skip to main content
Glama

searchWhiteboards

Search and retrieve whiteboard data from Heptabase backups using a specific query, date range, and space ID to filter results efficiently.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateRangeNo
hasCardsNo
queryNo
spaceIdNo

Implementation Reference

  • Core implementation of the searchWhiteboards function in the data service. Filters whiteboards by query string, date range, excludes trashed ones, and supports caching.
    async searchWhiteboards(query: SearchQuery): Promise<Whiteboard[]> {
      const cacheKey = `whiteboards:${JSON.stringify(query)}`;
      
      if (this.config.cacheEnabled) {
        const cached = this.getFromCache(cacheKey);
        if (cached) return cached;
      }
    
      const results = Object.values(this.data.whiteboards).filter(whiteboard => {
        // Filter out trashed whiteboards
        if (whiteboard.isTrashed) return false;
    
        // Search by query
        if (query.query) {
          const searchTerm = query.query.toLowerCase();
          if (!whiteboard.name.toLowerCase().includes(searchTerm)) {
            return false;
          }
        }
    
        // Filter by date range
        if (query.dateRange) {
          const createdDate = new Date(whiteboard.createdTime);
          if (createdDate < query.dateRange.start || createdDate > query.dateRange.end) {
            return false;
          }
        }
    
        return true;
      });
    
      if (this.config.cacheEnabled) {
        this.setCache(cacheKey, results);
      }
    
      return results;
    }
  • Zod input schema validation for the searchWhiteboards tool parameters.
    const searchWhiteboardsSchema = z.object({
      query: z.string().optional(),
      dateRange: z.object({
        start: z.string(),
        end: z.string()
      }).optional(),
      hasCards: z.boolean().optional(),
      spaceId: z.string().optional()
    });
  • src/server.ts:335-337 (registration)
    MCP server registration of the searchWhiteboards tool.
    this.server.tool('searchWhiteboards', searchWhiteboardsSchema.shape, async (params) => {
      return this.tools.searchWhiteboards.handler(params);
    });
  • Tool wrapper handler that prepares parameters, calls the data service searchWhiteboards, and formats results for MCP response.
    this.tools.searchWhiteboards = {
      inputSchema: searchWhiteboardsSchema,
      handler: async (params) => {
        await this.ensureDataServiceInitialized();
    
        const searchQuery: any = {};
        
        if (params.query) {
          searchQuery.query = params.query;
        }
        
        if (params.dateRange) {
          searchQuery.dateRange = {
            start: new Date(params.dateRange.start),
            end: new Date(params.dateRange.end)
          };
        }
        
        if (params.hasCards !== undefined) {
          searchQuery.hasCards = params.hasCards;
        }
        
        if (params.spaceId) {
          searchQuery.spaceId = params.spaceId;
        }
    
        const results = await this.dataService!.searchWhiteboards(searchQuery);
        
        const text = `Found ${results.length} whiteboards${results.length > 0 ? ':\n' : ''}` +
          results.map(wb => `- ${wb.name} (ID: ${wb.id}, Last edited: ${wb.lastEditedTime})`).join('\n');
    
        return {
          content: [{
            type: 'text',
            text
          }]
        };
      }
    };
Install Server

Other Tools

Related 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/LarryStanley/heptabase-mcp'

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