Skip to main content
Glama

get_posts

Retrieve posts from a specified band group in BAND, enabling users to access group content and manage post data through the Band API.

Instructions

Get posts from a specific band in BAND.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
afterNofor paging
band_keyYesband identifier
limitNonumber of posts to load. min: 1, max: 100, default: 20
localeNoRegion and languageja_JP

Implementation Reference

  • The core handler function that implements the logic for the 'get_posts' tool. It resolves the band key, constructs API parameters, fetches posts from the BAND API endpoint '/v2/band/posts', and returns the formatted response.
    export async function handleToolCall(
      band_key: string | undefined,
      locale?: string,
      after?: string,
      limit?: number,
      url?: string
    ) {
      let resolvedBandKey = band_key ? band_key.trim() : undefined;
      if ((!resolvedBandKey || resolvedBandKey.length === 0) && url) {
        const parsed = parseBandUrl(url);
        resolvedBandKey = parsed.bandKey;
      }
    
      if (!resolvedBandKey) {
        throw new Error("Either band_key or a valid BAND url must be provided.");
      }
    
      const resolvedLocale = locale && locale.trim().length > 0 ? locale : "ja_JP";
    
      const params: Record<string, unknown> = {
        band_key: resolvedBandKey,
        locale: resolvedLocale,
      };
      if (after) (params as Record<string, unknown>).after = after;
      if (limit) (params as Record<string, unknown>).limit = limit;
    
      const postsData = await bandApiClient.get<PostsResponse>(
        "/v2/band/posts",
        params
      );
      return {
        content: [
          {
            type: "text",
            text: JSON.stringify(postsData, null, 2),
          },
        ],
      };
    }
  • Defines the ToolDefinition for 'get_posts', including name, description, detailed inputSchema (with parameters like band_key or url, pagination), and outputSchema (result_code, paging, list of posts with photos, authors, etc.).
    export const ToolDefinition: Tool = {
      name: "get_posts",
      description: "Get posts from a specific band in BAND.",
      inputSchema: {
        type: "object",
        properties: {
          band_key: {
            type: "string",
            title: "Band Key",
            description: "band identifier",
          },
          locale: {
            type: "string",
            default: "ja_JP",
            title: "Locale",
            description: "Region and language",
          },
          after: {
            type: "string",
            title: "After",
            description: "for paging",
          },
          limit: {
            type: "number",
            title: "Limit",
            default: 20,
            description: "number of posts to load. min: 1, max: 100, default: 20",
          },
          url: {
            type: "string",
            title: "Band URL",
            description:
              "Full BAND URL to the band page (e.g., https://band.us/band/{band_key}).",
          },
        },
        anyOf: [
          { required: ["band_key"] },
          { required: ["url"] },
        ],
      },
      outputSchema: {
        type: "object",
        properties: {
          result_code: {
            type: "number",
            description: "Result code",
          },
          result_data: {
            type: "object",
            description: "Result data",
            properties: {
              paging: {
                type: "object",
                description: "Paging information",
                properties: {
                  previous_params: {
                    type: ["object", "null"],
                    description: "Previous page parameters",
                  },
                  next_params: {
                    type: ["object", "null"],
                    description: "Next page parameters",
                  },
                },
              },
              items: {
                type: "array",
                description: "List of posts",
                items: {
                  type: "object",
                  properties: {
                    content: {
                      type: "string",
                      description: "post content",
                    },
                    post_key: {
                      type: "string",
                      description: "post identifier",
                    },
                    created_at: {
                      type: "number",
                      description: "created time",
                    },
                    photos: {
                      type: "array",
                      description: "post photos",
                      items: {
                        type: "object",
                        properties: {
                          width: {
                            type: "number",
                            description: "photo width",
                          },
                          height: {
                            type: "number",
                            description: "photo height",
                          },
                          photo_key: {
                            type: "string",
                            description: "photo identifier",
                          },
                          photo_album_key: {
                            type: ["string", "null"],
                            description: "photo album identifier",
                          },
                          author: {
                            type: "object",
                            description: "photo author",
                            properties: {
                              name: {
                                type: "string",
                                description: "author name",
                              },
                              description: {
                                type: "string",
                                description: "author description",
                              },
                              profile_image_url: {
                                type: "string",
                                description: "author profile image url",
                              },
                            },
                          },
                          url: {
                            type: "string",
                            description: "photo url",
                          },
                          comment_count: {
                            type: "number",
                            description: "photo comment count",
                          },
                          emotion_count: {
                            type: "number",
                            description: "photo emotion count",
                          },
                          created_at: {
                            type: "number",
                            description: "photo created time",
                          },
                          is_video_thumbnail: {
                            type: "boolean",
                            description: "is video thumbnail",
                          },
                        },
                      },
                    },
                    comment_count: {
                      type: "number",
                      description: "post comment count",
                    },
                    author: {
                      type: "object",
                      description: "post author",
                      properties: {
                        name: {
                          type: "string",
                          description: "author name",
                        },
                        description: {
                          type: "string",
                          description: "author description",
                        },
                        profile_image_url: {
                          type: "string",
                          description: "author profile image url",
                        },
                      },
                    },
                  },
                },
              },
            },
          },
        },
        required: ["result_code", "result_data"],
      },
    };
  • src/tools.ts:38-45 (registration)
    Registers the dispatch for 'get_posts' tool in the central handleToolCall switch statement, routing calls to posts.handleToolCall with argument parsing.
    case "get_posts":
      return posts.handleToolCall(
        a.band_key as string | undefined,
        a.locale as string | undefined,
        a.after as string | undefined,
        a.limit as number | undefined,
        a.url as string | undefined
      );
  • src/tools.ts:15-28 (registration)
    Registers the 'get_posts' ToolDefinition (via posts.ToolDefinition) in the array of all available band tools.
    export const bandTools: Tool[] = [
      profile.ToolDefinition,
      bands.ToolDefinition,
      posts.ToolDefinition,
      post.ToolDefinition,
      comments.ToolDefinition,
      permissions.ToolDefinition,
      albums.ToolDefinition,
      photos.ToolDefinition,
      writeComment.ToolDefinition,
      writePost.ToolDefinition,
      removePost.ToolDefinition,
      removeComment.ToolDefinition,
    ];

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/kanghouchao/band-mcp-server'

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