haraj-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HARAJ_JWT | Yes | Your haraj.com.sa JWT token, copied from the 'authorization' header (starts with 'Bearer eyJ...') of a GraphQL request while logged in. | |
| HARAJ_MCP_ENV | No | Optional path to a custom .env file containing HARAJ_JWT and LAST_REQUEST_ID. Defaults to '.env' in the server's working directory. | |
| LAST_REQUEST_ID | Yes | The 'lastRequestId' header value copied from the same haraj.com.sa GraphQL request used to obtain HARAJ_JWT. |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| fetch_feedA | Fetch the post feed for a tag (the homepage + category pages). Required: tag (Arabic category name like 'حراج السيارات' or 'حراج الأجهزة'). Optional: city (Arabic region like 'الشرقيه'), cities (list of regions), page (default 0), limit (default 21), before_update_date (Unix seconds cursor — pass the last item's updateDate to get the next page), only_with_image (default true), only_with_video (default false), order_main_by_post_id (default false), full (return full Post objects, default false = compact). Returns {count, has_next_page, view_options, posts}. |
| promoted_postsB | Fetch the promoted-post carousel for a tag. Required: tag. Optional: city. Returns {count, posts}. |
| related_tagsA | Cities-with-counts for a given tag — powers the city-filter chips on tag pages. Required: tag. Optional: city. Returns [{tag, count, city}]. |
| is_following_tagA | True/false whether the authenticated user follows |
| searchA | Search haraj by keyword. Required: keyword. Optional: cities (list), city, tag, tags (list), page, limit, only_with_image (default true), only_with_video (default false), hide_show_rooms (default false), order_by_post_id (default false), during_date ('1days'|'3days'|'1week'|'1months'), near ('@lat,lon' e.g. '@26.4336,50.1116'), full (default false = compact). Returns {keyword, count, has_next_page, view_options, posts}. |
| get_post_detailsA | Fetch a post + 3 related groups (similar posts in the same tag/city, similar images, related offers). This is the canonical 'fetch by id' — there is no direct getById operation in the GraphQL API. Required: post_id. full (default true = full similarPosts response). |
| post_like_infoC | {is_like, total, is_following} for a post. Required: post_id. |
| commentsA | Comment list for a post. Required: post_id. Optional: page, oldest_first (default true). |
| userB | Full user profile (rating, followers, location history, badges). Pass either username (URL-encoded Arabic works) or user_id. rating_summary_only (default false) returns just the rating block. |
| is_following_userA | True/false whether the authenticated user follows |
| notesC | User notifications (the bell icon). set_read (default false) marks them as read on the server. |
| sellers_listB | Sellers for a tag (used by real-estate / business / investment pages). Required: tags (list of Arabic tag names). |
| locker_shipment_offerB | {offerId, isEligible, price} for a post's Locker shipping option. Required: post_id. |
| post_contactD | {contactText, contactMobile, shouldEnableWhatsApp} for a post. Required: post_id. |
| follow_userC | Follow (or unfollow) a user. Required: username. Returns the new is_following state. |
| search_suggestA | Live search-box autocomplete. Returns the top 10 suggestions for a typed prefix. Required: prefix (e.g. 'شاشة'). Optional: tag. |
| trending_keywordsA | Top trending search terms over the last N days. range_in_days (default 7). Returns [{keyword, score}]. |
| outgoing_buy_requestsC | 'Buy with confidence' (وساطة) escrow requests the user has placed. Optional: page (default 0). |
| user_mention_suggestionsA | Recent @-mention candidates for the comment / DM composer. Returns [{userId, username, handler}]. |
| live_streamsA | Currently-open haraj live shopping streams. Non-GraphQL REST endpoint. Returns [{id, title, cover_url, streamer, num_messages, num_viewers, started_at}]. limit (default 40; the server caps it). |
| check_authA | Verify the JWT and lastRequestId in .env are still valid. Returns {ok, expires_at, seconds_remaining, user_id} or {ok: false, error} if the JWT is missing or expired. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/bibo242/Haraj-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server