get_rate_limits
Get rate limits and plan details for any AI tool—requests per minute, tokens per day, context window per plan tier.
Instructions
Get rate limits and plan details for any AI tool — requests per minute, tokens per day, context window, and more by plan tier.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Tool slug — e.g. "cursor", "github-copilot", "chatgpt", "claude" |
Implementation Reference
- src/index.ts:44-45 (schema)Type definitions for Plan and LimitRow used by get_rate_limits — Plan includes name, price_usd, and limits array of LimitRow objects (key, value, unit, notes).
interface LimitRow { key: string; value: string; unit: string | null; notes: string | null } interface Plan { name: string; price_usd: number | null; limits: LimitRow[] } - src/index.ts:192-224 (handler)Handler function for the 'get_rate_limits' tool. Fetches rate limits and plan details for a given tool slug from /tools/{slug}/limits API, formats plan names, prices, and limits into a text response.
server.tool( 'get_rate_limits', 'Get rate limits and plan details for any AI tool — requests per minute, tokens per day, context window, and more by plan tier.', { slug: z.string().describe('Tool slug — e.g. "cursor", "github-copilot", "chatgpt", "claude"') }, async ({ slug }) => { const d = await fetchJSON<{ tool: { slug: string; name: string; vendor: string }; plans: Plan[] }>( `/tools/${slug}/limits` ) if (!d.plans.length) { return { content: [{ type: 'text' as const, text: `No plan/limit data found for ${d.tool.name}.` }] } } const lines = [`**${d.tool.name}** plan limits:\n`] for (const plan of d.plans) { const price = plan.price_usd === 0 ? 'Free' : plan.price_usd !== null ? `$${plan.price_usd}/mo` : 'Custom' lines.push(`### ${plan.name} (${price})`) if (plan.limits.length === 0) { lines.push(' No limit data available') } else { for (const l of plan.limits) { const unit = l.unit ? ` ${l.unit}` : '' const note = l.notes ? ` — ${l.notes}` : '' lines.push(` • ${l.key}: ${l.value}${unit}${note}`) } } lines.push('') } lines.push(`Full details: https://tickerr.ai/limits/${slug}`) return { content: [{ type: 'text' as const, text: lines.join('\n') }] } } ) - src/index.ts:192-224 (registration)Registration of the 'get_rate_limits' tool via server.tool() with a Zod schema requiring a 'slug' string parameter describing the tool slug.
server.tool( 'get_rate_limits', 'Get rate limits and plan details for any AI tool — requests per minute, tokens per day, context window, and more by plan tier.', { slug: z.string().describe('Tool slug — e.g. "cursor", "github-copilot", "chatgpt", "claude"') }, async ({ slug }) => { const d = await fetchJSON<{ tool: { slug: string; name: string; vendor: string }; plans: Plan[] }>( `/tools/${slug}/limits` ) if (!d.plans.length) { return { content: [{ type: 'text' as const, text: `No plan/limit data found for ${d.tool.name}.` }] } } const lines = [`**${d.tool.name}** plan limits:\n`] for (const plan of d.plans) { const price = plan.price_usd === 0 ? 'Free' : plan.price_usd !== null ? `$${plan.price_usd}/mo` : 'Custom' lines.push(`### ${plan.name} (${price})`) if (plan.limits.length === 0) { lines.push(' No limit data available') } else { for (const l of plan.limits) { const unit = l.unit ? ` ${l.unit}` : '' const note = l.notes ? ` — ${l.notes}` : '' lines.push(` • ${l.key}: ${l.value}${unit}${note}`) } } lines.push('') } lines.push(`Full details: https://tickerr.ai/limits/${slug}`) return { content: [{ type: 'text' as const, text: lines.join('\n') }] } } )