keith-apis-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| RAPIDAPI_KEY | Yes | Your RapidAPI key used to authenticate requests to all of the hosted APIs. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| fetch_url_as_markdownA | Fetch a public web page and return its main content as clean Markdown (navigation, ads and boilerplate removed), with the title and metadata. Use it to read an article or docs page for summarising, quoting or RAG. Respects robots.txt. |
| html_to_markdownA | Convert HTML you already have into clean Markdown of its main content. Nothing is fetched. |
| get_link_previewB | Get a link preview for a URL: title, description, canonical URL, images, favicon, site name, Open Graph and Twitter card tags. |
| generate_og_imageA | Render a 1200x630 PNG Open Graph (og:image) share image from a title, for link previews on X, LinkedIn, Facebook, Slack and Discord. Returns the image. |
| parse_job_postingA | Parse a job ad into structured fields: normalized title, seniority, job function, remote type and allowed regions, salary (min/max, currency, annualised), years of experience, skills and flags. |
| parse_job_postings_batchB | Parse 1 to 20 job postings in one call; results come back in the same order. |
| parse_resumeA | Parse a resume into structured JSON: contact details, current title, seniority, job function, experience, education and skills. Give either the text or a local file path (PDF with a text layer, DOCX or TXT, max 5 MB; no OCR). Nothing is stored. |
| match_resume_to_jobA | Score how well a resume fits a job posting, 0-100, with a breakdown (skills, seniority, job function, experience, location) and the matched and missing skills. |
| rate_matchesA | Compute player skill ratings from match results with OpenSkill, Glicko-2 or Elo. Handles 1v1, teams, free-for-alls and draws. Stateless: pass earlier ratings back in as players to continue. |
| predict_matchB | Predict each team's win probability and the match quality (how even it is) from current ratings. |
| list_rating_algorithmsA | List the supported rating algorithms and their tunable parameters with defaults and ranges. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Within each domain cluster the tools are clearly distinct: parse_job_posting vs parse_job_postings_batch (single vs batch), fetch_url_as_markdown vs html_to_markdown (fetch vs local convert), rate_matches vs predict_match. The only mild confusion is fetch_url_as_markdown vs html_to_markdown, but descriptions clarify that one fetches and one doesn't.
Almost all tools use snake_case verb_noun phrasing (parse_resume, get_link_preview, generate_og_image, match_resume_to_job). Minor deviations are noun-first names like html_to_markdown, but overall the convention is predictable and readable.
11 tools is a well-scoped count and each tool earns its place within its own cluster. The issue is not the number but the unrelatedness of the clusters, so the count itself is reasonable.
The recruiting pipeline (parse resume, parse job posting, batch, match) and the web-content cluster (fetch, convert, preview, OG image) are fairly complete, and the ratings trio is self-contained. However, the server is a grab-bag of three unrelated domains with no tool bridging them, making overall 'purpose' coverage hard to assess and leaving each domain somewhat shallow.