Skip to main content
Glama

get_stay_reviews

Retrieve hotel reviews and ratings for a specific accommodation to inform booking decisions. Supports pagination for browsing multiple reviews.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
stay_idYesDuffel stay/hotel ID (e.g., acc_0000AWr2VsUNIF1Vl91xg0)
afterNoPagination cursor: after
beforeNoPagination cursor: before
limitNoMax reviews to return (1-200)

Implementation Reference

  • The MCP tool handler function that receives parameters, calls the DuffelStaysClient.getStayReviews method, formats the response as MCP content, and handles errors.
    async (params: StayReviewRequest) => { try { const response = await staysClient.getStayReviews(params); return { content: [ { type: 'text', text: JSON.stringify(response, null, 2) } ] }; } catch (error) { console.error(`Error fetching stay reviews: ${error}`); throw error; } }
  • Zod schema defining the input shape for the get_stay_reviews tool, including stay_id and pagination parameters.
    export const stayReviewSchema = z.object({ stay_id: z.string().describe('Duffel stay/hotel ID (e.g., acc_0000AWr2VsUNIF1Vl91xg0)'), after: z.string().optional().describe('Pagination cursor: after'), before: z.string().optional().describe('Pagination cursor: before'), limit: z.number().int().min(1).max(200).optional().describe('Max reviews to return (1-200)'), });
  • src/server.ts:205-224 (registration)
    Registration of the 'get_stay_reviews' tool on the MCP server, specifying name, input schema, and handler function.
    server.tool( 'get_stay_reviews', stayReviewSchema.shape, async (params: StayReviewRequest) => { try { const response = await staysClient.getStayReviews(params); return { content: [ { type: 'text', text: JSON.stringify(response, null, 2) } ] }; } catch (error) { console.error(`Error fetching stay reviews: ${error}`); throw error; } } );
  • Helper method in DuffelStaysClient that makes the API call to Duffel's stays reviews endpoint and processes the response.
    async getStayReviews(params: StayReviewRequest): Promise<StayReviewResponse> { const { stay_id, after, before, limit } = params; const query: Record<string, string | number> = {}; if (after) query.after = after; if (before) query.before = before; if (limit) query.limit = limit; const response = await this.client.get(`/accommodation/${stay_id}/reviews`, { params: query, headers: { 'Duffel-Version': 'v2' } }); const meta = response.data.meta || {}; const reviews = (response.data.data?.reviews || []).map((r: any) => ({ text: r.text, score: r.score, reviewer_name: r.reviewer_name, created_at: r.created_at, })); return { meta, reviews }; }

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/AkekaratP/flights-mcp-ts'

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